示例#1
0
def main():
    mod = Module(r'/home/tweek/nwn/modules/DH WIP 2.mod')
    #mod = Module('../events_demo.mod')

    areas = []

    for area in mod.areas:
        a_name = area.are['Name'].to_dict()['value']['0']
        a_dict = {
                'name': a_name,
                'waypoints': []
                }

        for w in area.waypoints:
            a_dict['waypoints'].append(w.tag)

        areas.append(a_dict)

    output_data(areas)
示例#2
0
def main():
    mod = Module(r'/home/tweek/nwn/modules/DH WIP 2.mod')
    #mod = Module('../events_demo.mod')

    areas = []

    for area in mod.areas:
        a_name = area.are['Name'].to_dict()['value']['0']
        a_dict = {
            'name': a_name,
            'scripts': [],
            'doors': [],
            'placeables': [],
            'triggers': []
        }

        s_list = area.scripts.all()
        for s in s_list:
            event = dir(Event)[s[0]]
            s_name = s[1]
            a_dict['scripts'].append((event, s_name))

        for d in area.doors:
            d_data = get_data(d)
            if d_data:
                a_dict['doors'].append(d_data)

        for p in area.placeables:
            p_data = get_data(p)
            if p_data:
                a_dict['placeables'].append(p_data)

        for t in area.triggers:
            t_data = get_data(t)
            if t_data:
                a_dict['triggers'].append(t_data)

        areas.append(a_dict)

    output_data(areas)
示例#3
0
from pynwn.creature import Creature

def check_vars(obj):
    for var, val in obj.vars.string.list():
        try:
            x = int(val)
            print ("    %s: Variable %s (%s) is convertable to int!" % (obj.resref, var, val))
            continue # continue since if it's convertible to int it will also convert to float.
        except:
            pass

        try:
            x = float(val)
            print("    %s: Variable %s (%s) is convertable to float!" % (obj.resref, var, val))
        except:
            pass

if __name__ == '__main__':
    mod = Module('test.mod')

    print("Checking blueprints...")
    for obj in chain(mod.glob('*.ut[cdeimptw]'), mod.areas):
        check_vars(obj)

    print("\nChecking instances...")
    for area in mod.areas:
        for obj in chain(area.creatures, area.doors, area.placeables,
                         area.triggers, area.stores, area.encounters,
                         area.waypoints, area.items):
            check_vars(obj)
示例#4
0
    for var, val in obj.vars.string.list():
        try:
            x = int(val)
            print("    %s: Variable %s (%s) is convertable to int!" %
                  (obj.resref, var, val))
            continue  # continue since if it's convertible to int it will also convert to float.
        except:
            pass

        try:
            x = float(val)
            print("    %s: Variable %s (%s) is convertable to float!" %
                  (obj.resref, var, val))
        except:
            pass


if __name__ == '__main__':
    mod = Module('test.mod')

    print("Checking blueprints...")
    for obj in chain(mod.glob('*.ut[cdeimptw]'), mod.areas):
        check_vars(obj)

    print("\nChecking instances...")
    for area in mod.areas:
        for obj in chain(area.creatures, area.doors, area.placeables,
                         area.triggers, area.stores, area.encounters,
                         area.waypoints, area.items):
            check_vars(obj)
示例#5
0
        res = res + '\n'
        return res.rjust(justify + len(res))

    def node_to_str(node, level):
        result = fmt(node.get_text(0), level)
        for ptr in node.pointers:
            node = ptr.get_node(ptr.index)
            # Make sure the dialog pointer isn't a link or else
            # there would be an infinite loop.
            if not ptr.is_link:
                level += 1
                result += node_to_str(node, level)
                level -= 1
            else:
                # Add extra indent for links...
                result += fmt(node.get_text(0), level + 1, True)
        return result

    result = ''
    for start in [s.index for s in dlg.starts]:
        result += node_to_str(dlg.entries[start], 0)

    return result

if __name__ == '__main__':
    mod = Module('test.mod')

    for dlg in mod.glob('*.dlg'):
        print(dlg.resref)
        print(dialog_to_str(dlg), '\n\n')
示例#6
0
# what wonky.  Type 'h' at the command prompt to get options
# for correcting wor

import enchant
import enchant.checker
from enchant.checker.CmdLineChecker import CmdLineChecker

from pynwn.module import Module

if __name__ == '__main__':
    # Using US english dictionary.
    chkr = enchant.checker.SpellChecker('en_US')
    cmdln = CmdLineChecker()
    cmdln.set_checker(chkr)

    mod = Module('test.mod')

    for dlg in mod.glob('*.dlg'):
        print(dlg.resref)
        for n in dlg.entries:
            if n.get_text(0) is None or len(n.get_text(0)) == 0:
                continue

            print n.get_text(0)
            chkr.set_text(n.get_text(0))
            cmdln.run()
            n.set_text(0, chkr.get_text())

        for n in dlg.replies:
            if n.get_text(0) is None or len(n.get_text(0)) == 0:
                continue
示例#7
0
#!/usr/bin/env python

# This is just little test of using PyDot and Graphviz (both are required)
# to graph a modules areas, might be possible to do something fun with it.
# This probably won't run without some modifications...

from pynwn.module import Module
import pprint
import pydot

if __name__ == '__main__':
    mod = Module('test.mod')

    links = {}
    tags  = {}
    
    for area in mod.areas:
        links[area.resref] = []
        for trig in area.triggers:
            tags[trig.tag] = (area.resref, trig.position)
            if len(trig.linked_to):
                links[area.resref].append(trig.linked_to)

        for door in area.doors:
            tags[door.tag] = (area.resref, door.position)
            if len(door.linked_to):
                links[area.resref].append(door.linked_to)

        for way in area.waypoints:
            tags[way.tag] = (area.resref, way.position)
            if len(way.linked_to):