Andere Spiele > The Fall

Mod-Tagebuch

<< < (2/15) > >>

Lexx:
Wenn du in der on_map_load() Prozedur einer Zone folgende Zeile hinzufügst:


--- Code: ---import debug; debug.cheat("pickinfo")
--- Ende Code ---

Aktivierst du den Debug-Mode "Pickinfo". Wenn du damit im Spiel auf eine Stelle klickst, werden dir die Koordinaten angezeigt. Damit kannst du ohne viel und unnützes herumprobieren entsprechende Koordinaten bekommen.

Torka:
Das habe ich doch gleich mal ausprobiert und es erleichtert die Arbeit enorm, da auch noch gleich die IDs angezeigt werden. DANKE  #thumbsup
Ich hatte im Mod-Tutorial davon gelesen, bin aber nicht recht schlau daraus geworden. COOL - Jetzt funzt es  :D.

Bin da auch noch auf eine Reihe von cheats gestoßen, welche man in die Console eingeben kann:
Bei nochmaligen Eingeben werden die cheats wieder ausgeschaltet.

import debug; debug.cheat("teleport") - transportiert den char über das Kontext-Menü (ein T in einem Kreis)  zu der Stelle des Mauszeigers - nur Superman reist jetzt schneller

import debug; debug.cheat("map")   - schaltet alle Karten frei und man kann überall hinreisen - noch bevor man bei Wesley war

import debug; debug.cheat("mad_skillz") - damit kann man munter in der ID-Card alle Attribute und Fähigkeiten verändern - zum Testen aller Talente ideal  #yay

import debug; debug.cheat("endless ammo")  - endlos Munition, wer es mag

import debug; debug.cheat("endless gas")  - endlos Treibstoff, so kann man dann das Benzinproblem auf unrealistische Weise auch lösen  :-\

import debug; debug.cheat("immortal") - der typische  "Ich kann nicht sterben Modus"

import debug; debug.cheat("unlock_all")  - öfnnet alle verschlossenen Kisten und Safes auf der Karte

import debug; debug.cheat("no_fatigue")  - chars werden nicht müde und brauchen nicht rasten

import debug; debug.cheat("no raid") - chars werden nicht mehr überfallen bei der Rast

import debug; debug.cheat("region")  - zeigt bestimmte Regionen an, z.B. Trigger

import debug; debug.cheat("tile")  - zeigt die Kollisionsmodelle der Objekte an - nützlich

Wer mehr Konsolenbefehle sehen will - einfach import debug; debug.cheat("help") eingeben - dann erscheinen noch mehr

Torka:
Zurück zu Idee 4


--- Zitat ---4. Den gesamten Tierbestand etwas mehr aufpeppen, in New Safford kann man sich der Kühe als Nahrungsquelle noch bedienen, bei fast allen anderen funktioniert das nicht mehr, abgesehen von den Kamikazeminenkühen in Bowie Village

--- Ende Zitat ---


Normalsterbliche Tiere

In jedem Zonenordner gibt es eine Pythondatei namens npc.py. In dieser sind nicht nur alle NPCs definiert sondern auch die Tiere. Mit dem Wing IDE 101 3.2 also z.B. aus Zone 3 (Bowie Village) die npc.py geöffnet und man findet am Anfang:



--- Code: ---system.create_animal(id="KUH_1", type=ANIMAL_COW, party="ANIMALS", x = 256.33, y = 445.68)
objects.set_immortal_state("KUH_1", True)
system.create_animal(id="KUH_2", type=ANIMAL_COW, party="ANIMALS", x = 256.03, y = 432.96)
#objects.set_immortal_state("KUH_2", True)
objects.set_direction('KUH_2', 160)
system.create_animal(id="KUH_3", type=ANIMAL_COW, party="ANIMALS", x = 253.17, y = 439.44)
objects.set_immortal_state("KUH_3", True)
objects.set_direction('KUH_3', 90)
system.create_animal(id="KUH_4", type=ANIMAL_COW, party="ANIMALS", x = 256.69, y = 441.15)
objects.set_immortal_state("KUH_4", True)
system.create_animal(id="KUH_5", type=ANIMAL_COW, party="ANIMALS", x = 264.58, y = 437.24)
objects.set_immortal_state("KUH_5", True)
objects.set_direction('KUH_3', 180)
--- Ende Code ---


Dies sind die 5 Kühe in der Farm. Die Zeile objects.set_immortal_state("KUH_1", True) verhindert, das Erlegen der Tiere.
Wenn man davor ein # setzt, können die Tiere sterben. Also im Beipiel ist Kuh 1 unsterblich und Kuh 2 nicht.
Stirbt diese aber, erscheint sie nicht wieder auf der Karte - sie ist definitiv tot, anders bei den nur periodisch auftauchenden Tieren (gespawnte Wölfe z.B. zwischen 22 und 6 Uhr) welche nach einer Weile wieder erscheinen.

Die Unsterblichkeitseigenschaft kann man nutzen, wenn man einfach Tiere zur Dekoration verwenden möchte. 

Witzigerweise haben die Entwickler in Bowie Village auch drei Schweine eingebaut, sie aber deaktiviert :) 

Fortsetzung folgt..........jetzt

Respawnte Tiere
Bei den gespawnten Tieren ist es ein wenig komplizierter. Es sind mindestens 4 Pythondateien beteiligt.

Unter script / spawnanimals.py finden man am Anfang eine Liste aller Zonen (Karten), in denen die Tiere immer wieder erscheinen.


--- Code: ---SPAWN_ANIMAL_ZONES = ['zone_1.zone_1'
,'zone_2.zone_2'
,'zone_3.zone_3'
,'zone_4.zone_4'
,'zone_5.zone_5'
,'zone_6.zone_6'
,'zone_7.zone_7'                  
#,'zone_8.zone_8' #Kein Tier
#,'zone_9.zone_9' #Kein Tier, data().SpawnAnimals anders benutzt!
#,'zone_10.zone_10' #Kein Tier
,'zzone_1.zzone_1'
,'zzone_2.zzone_2'
#,'zzone_3.zzone_3'
,'zzone_4.zzone_4'
#,'zzone_5.zzone_5'
#,'zzone_6.zzone_6'
#,'zzone_7.zzone_7'
#,'zzone_8.zzone_8'
,'zzone_9.zzone_9'
#,'zzone_10.zzone_10' # Bunker
#,'sqzone_1.sqzone_1' # kein Tier
,'sqzone_2.sqzone_2'
#,'sqzone_3.sqzone_3'
#,'sqzone_4.sqzone_4'
#,'sqzone_5.sqzone_5'
]

TIME_TO_RETURN_FROM_GRAVE = time("72:00:00")
--- Ende Code ---

Einige Zonen sind mit # deaktiviert. Die restlichen aktiviert. Gerade wenn man auf einer noch deaktivierten Karte zusätzliche gespawnte Tiere erscheinen lassen möchte, erscheinen sie halt nicht, weil in dieser Datei ein # davor steht. Also Zone einfach hier aktivieren und es funktioniert. 

TIME_TO_RETURN_FROM_GRAVE = time("72:00:00")

Diese Zeile gibt an, dass nach dem ein gespawntes Tier erlegt wurde, es nach 72 Spielstunden wieder an seinem Ort erscheint.


Alle gespawnten Tiere sind dann wieder in den Pythonskripten der einzelnen Zonenordnern definiert.
Im wesentlichen sind das dann drei beteiligte Dateien, die const.py,die npc.py und zone_X.py

In Zone 1(GNO_HQ) der zone_1 / const.py steht dann ziemlich im letzten Drittel:


--- Code: ---def init_data():
.
.
.
    ### Fuer Spawn-Animals ###
data().Timer_SpawnTimeChecker = 666
data().Timervalue_SpawnTimeChecker = 10 * 60 * 1000.0 * hour_real_to_game
data().SpawnAnimalsSpawned = False
data().SpawnAnimals = ["WOLF_S_LEAD","WOLF_S_1","WOLF_S_2","WOLF_S_3"]
--- Ende Code ---

Wenn man weite Tiere auf der Karte spawnen möchte, müssen die Namen (z.B. "WOLF_S_4") dann auch in die eckigen Klammern in dieser Zeile gesetzt werden.


Die Lokation und die Eigenschaften der gespanten Tiere findet man wieder in der zone_1 / npc.py.


--- Code: ---## Initialisiert die Tiere der Zone
def initAnimals():
system.create_animal(id="WOLF_S_LEAD", type=ANIMAL_WOLF, party="ANIMALS", x=291.5, y=572.5, direction=90)
system.create_animal(id="WOLF_S_1", type=ANIMAL_WOLF, party="ANIMALS", x=292.0, y=576.0, direction=60)
system.create_animal(id="WOLF_S_2", type=ANIMAL_WOLF, party="ANIMALS", x=288.5, y=573.0, direction=120)
system.create_animal(id="WOLF_S_3", type=ANIMAL_WOLF, party="ANIMALS", x=287.5, y=576.0, direction=120)
objects.set_attribute('WOLF_S_LEAD', 'level', 1)
objects.set_attribute('WOLF_S_1', 'level', 1)
objects.set_attribute('WOLF_S_2', 'level', 1)
objects.set_attribute('WOLF_S_3', 'level', 1)
--- Ende Code ---

Je höher das Level der Tiere, desto mehr Lebenspunkte haben sie.


--- Code: ---## Spawnanimals sind feindlich und erstmal inactiv
for animal in data().SpawnAnimals:
objects.set_attribute(animal,"foes", ["UISPIELER"])
objects.set_active_state(animal,INACTIVE)
--- Ende Code ---

Die Tiere werden durch objects.set_attribute(animal,"foes", ["UISPIELER"]) mit einem "feindlichen" Verhalten (Raubtiere greifen an, Beutetiere flüchten) versehen.



In der zone_1 / zone_1.py findet man das definierte Zeitintervall für den Respawn der 4 Tiere auf der GNO-Karte

--- Code: ---def on_timer(id):
.
.
.
        if (id == data().Timer_SpawnTimeChecker):
clock = system.get_mission_time().get_day_time()
if (clock >= time("06:00:00") and clock < time("22:00:00")):
spawnanimals.spawnAnimals(INACTIVE)
else:
spawnanimals.spawnAnimals(ACTIVE)
system.notify_timer(data().Timer_SpawnTimeChecker,data().Timervalue_SpawnTimeChecker)
--- Ende Code ---
Diese 4 Wölfe erscheinen von 22 bis 6 Uhr westlich des Eingangs zum GNO-HQ.


Ein zweites Beispiel ist das Zeitintervall des Respawns der Tiere auf der Konvoi-Karte, zu finden in der sqzone_2 / sqzone_2.py :

--- Code: ---def on_timer(id):
if (id == data().Timer_SpawnTimeChecker):
clock = system.get_mission_time().get_day_time()
if (clock < time("16:00:00") or clock > time("23:00:00")):
spawnanimals.spawnAnimals(INACTIVE)
else:
spawnanimals.spawnAnimals(ACTIVE)
system.notify_timer(data().Timer_SpawnTimeChecker,data().Timervalue_SpawnTimeChecker)
--- Ende Code ---
Andere Schreibweise, Tiere sind von 16.00 bis 23.00 Uhr auf der Karte zu finden.

Torka:

--- Zitat ---5. Die Bonuspunkte für das Erlegen von Gegnern war mir auch schleierhaft, für einen "Bergtiger", der ja eigentlich ein Puma (Berglöwe) ist gibt`s 3 Punkte für einen Bären 0,5.

--- Ende Zitat ---

Das Bonuswertesystem befindet sich am Ende der Datei scipts / global_difines.py


--- Code: ---# kill_types for id card stats & weapon accustomisation
kill_type_list = ["DESERT_MONKS", "RAT_SKULLS", "SEEKER","INDIANS","NOMADS", "SHADOWS", "GNO_SOLDIERS", "MISC_NPCS", "UNKNOWN_NPCS",
"WOLF", "BEAR", "WARG", "TIGER", "WILDDOG", "PEACEFUL_ANIMALS", "UNKNOWN_ANIMALS"]

kill_points = {                          

"DESERT_MONKS":                    3,
"RAT_SKULLS":            3,
"SEEKER":    2,
"INDIANS":    2,
"NOMADS":    2,
"SHADOWS":                          4,
"GNO_SOLDIERS":            5,
"MISC_NPCS":                  1,
"UNKNOWN_NPCS":                     3,
"WOLF":                   0.2,
"BEAR":                   0.5, 
"WARG":                            4,
"TIGER":           3,
"WILDDOG":                         0.1,
"PEACEFUL_ANIMALS":                 0,
"UNKNOWN_ANIMALS":           0.2,

              }

--- Ende Code ---

Die Werte hinter den Zielgruppen beziehen sich auf die Punkte, welche man für das Eliminieren eines Ziels bekommt.
Nun kann man abschätzen und wählen, ob man die Bärenjagd nicht etwas mehr belohnt, also den Wert z.B. von 0.5 auf 3 erhöht.


Diese "Killpoints" werden gesammelt und je nach der Höhe der "Gesamtkillpoints" werden Bonuspunkte auf alle Fähigkeiten addiert.
Die Skilltabelle findet sich in scripts / skill_tables.py am Ende:


--- Code: ---def get_reputation_bonus_per_killpoints(killpoints):
"""Returns the reputation skill point bonus for the given amount of killpoints.
"""
if killpoints < 25: return 0
elif killpoints < 50: return 1
elif killpoints < 100: return 1
elif killpoints < 150: return 2
elif killpoints < 250: return 2
elif killpoints < 500: return 3
elif killpoints < 1000: return 4
else: return 5


def get_reputation_description(killpoints):
"""Returns the reputation description for the given amount of killpoints.
"""
if killpoints < 25: return globaltext.MISSION_IDCARD_REPUTATION_DESC_0
elif killpoints < 50: return globaltext.MISSION_IDCARD_REPUTATION_DESC_1
elif killpoints < 100: return globaltext.MISSION_IDCARD_REPUTATION_DESC_2
elif killpoints < 150: return globaltext.MISSION_IDCARD_REPUTATION_DESC_3
elif killpoints < 250: return globaltext.MISSION_IDCARD_REPUTATION_DESC_4
elif killpoints < 500: return globaltext.MISSION_IDCARD_REPUTATION_DESC_5
elif killpoints < 1000: return globaltext.MISSION_IDCARD_REPUTATION_DESC_6
else: return globaltext.MISSION_IDCARD_REPUTATION_DESC_7

--- Ende Code ---

Für die Benutzung einer bestimmten Waffe oder Waffentyps gibt es Bonuspunkte, diese steigen nach der Anzahl der eliminierten Ziele.


--- Code: ---"""Returns skill bonus for being accustomed to this weapon/weapon type.

Parameters:
        id_kills   - Number of kills with this weapon.
        type_kills - Number of kills with this weapon_type.
"""
if id_kills <= 9: id_bonus = 0                                            # Sehr ungewohnte Waffe
elif id_kills <= 29: id_bonus = 5                                         # Ungewohnte Waffe
elif id_kills <= 59: id_bonus = 10                                        # Vertraute Waffe
elif id_kills <= 99: id_bonus = 15                                        # Sehr vertraute Waffe
else: id_bonus = 20                                                      # Lieblingswaffe
if type_kills <= 9: type_bonus = 0
elif type_kills <= 29: type_bonus = 0
elif type_kills <= 59: type_bonus = 5
elif type_kills <= 99: type_bonus = 10
else: type_bonus = 15
return max(id_bonus, type_bonus)

--- Ende Code ---

Torka:

--- Zitat ---10. Das Hinzufügen von neuen NPC mit Tagesabläufen eventuell, an Missionen will ich mal noch gar nicht denken, da das für mich noch weit hinter dem Horizont liegt.                          

--- Ende Zitat ---

Es entspricht zwar nicht der Reihenfolge der Ideenpunkte, aber da die Sache so gut funktioniert, schreib ich sie gleich mal auf.
In der shedules.py von Zone 1 (GNO-HQ) habe ich gerade ein nicht aktiviertes Skript des Ausbilders gefunden. In dieser Datei, welche auch in jedem Zonenordner zu finden ist, werden die Tagesabläufe der NPCs definiert.
Ein wenig dran herum gespielt und es zum Laufen gebracht.


--- Code: ---"DRILL_INSTRUCTOR" : ( # der Ausbilder
##################
{ #TA1: Tutorial nicht genommen:
S_CONDITION  : lambda: data().training_activated and not data().training_done,
"00:00:00" : { #
S_START  : [],
S_LOOP   : [turn_to_object("ALTER_EGO")]},                                                                 .
},{ #TA2: nach dem Tutorial:
"00:30:00" : { # Schlafen                                                            
S_START  : [goto(460.25, 346.90),
    enter_building('BUILDING_1883'),
    lay_down_to_sleep('THE FALL_BUILDING_3965')],
S_LOOP   : [sleep()]},
"04:30:00" : { # Warten
S_START  : [leave_building('BUILDING_1883'),
    goto(320.8,326.6),
    turn_to_direction(global_defines.DIR_EAST)],
S_LOOP   : []},
"21:00:00" : { # Trainigsparcours laufen
S_START  : [],
S_LOOP   : [patrol(((297.0,353.0),(309.0,343.0),(309.0,293.0),(292.0,293.0)))]},
"00:00:00" : { # Warten
S_START  : [goto(320.8,326.6),
    turn_to_direction(global_defines.DIR_EAST)],
S_LOOP   : []}
}),

--- Ende Code ---

Bisher stand er auch nach dem Training blöd in der Sonne oder halt unter dem Mond. Jetzt gönnt er sich mal einen kleinen Lauf und geht schlafen. Mal schauen ob man ihn zum Essen bewegen kann :).

;D Es funktioniert - ab 4:30 Uhr ESSEN FASSEN!  ;D



--- Code: ---"DRILL_INSTRUCTOR" : ( # der Ausbilder
##################
{ #TA1: Tutorial nicht genommen:
S_CONDITION  : lambda: data().training_activated and not data().training_done,
"00:00:00" : { #
S_START  : [],
S_LOOP   : [turn_to_object("ALTER_EGO")]},
},{ #TA2: nach dem Tutorial:
"00:30:00" : { # Schlafen
S_START  : [goto(460.25, 346.90),
    enter_building('BUILDING_1883'),
    lay_down_to_sleep('THE FALL_BUILDING_3965')],
S_LOOP   : [sleep()]},
"04:30:00" : { # Essen und Trinken
S_START  : [leave_building('BUILDING_1883'),
    goto_dummy("BUILDING_867","dmyp_001"), sit_down_on_bench()],
S_LOOP   : sit_eat_drink_on_bench},
"06:30:00" : { # Warten
S_START  : [goto(320.8,326.6),
    turn_to_direction(global_defines.DIR_EAST)],
S_LOOP   : []},
"21:00:00" : { # Trainigsparcours laufen
S_START  : [],
S_LOOP   : [patrol(((297.0,353.0),(309.0,343.0),(309.0,293.0),(292.0,293.0)))]},
"00:00:00" : { # Warten
S_START  : [goto(320.8,326.6),
    turn_to_direction(global_defines.DIR_EAST)],
S_LOOP   : []}
}),

--- Ende Code ---

Jede Tätigkeit hat so ihre eigene Schleife, die solange durchläuft, bis das Zeitintervall abgelaufen ist. So steht der Ausbilder 4:30 Uhr auf und läuft zum Feuer, setzt sich auf eine Bank und isst bis 6:30 Uhr. Wow, wenn man bedenkt wie viele NPCs einen Tagesablauf haben, ist das schon eine Leistung. Ist ein wenig wie im Film, "...laufe dahin, mache das...."  #lachen#

Bei Gelegenheit werde ich hier in dem Beitrag mehr von solchen Aktivitätsschleifen auflisten, dann kann man nach dem Baukastenprinzip die Wastelands mit NPCs beleben   #hand :aiee
Alle Uhrzeiten, Koordinaten, (Namen und Dialoge) und Objekt IDs sind Beispiele und können durch andere ersetzt werden.


"22:00:00" : { # auf Bank sitzen, Gitarre spielen
      S_START  : [goto_dummy("BUILDING_2145","dmyp_002"),         Jede Bank hat 3 Plätze (vor der Bank stehend von links nach rechts) dmyp_001, dmyp_002, dmyp_003!
            play_guitar_on_bench()],
      S_LOOP   : [play_guitar_on_bench()]},

"22:30:00" : { # auf Bank sitzen, Flöte spielen
      S_DIALOG : "NPC_JON_T_006",
      S_START  : [goto_dummy("BUILDING_866","dmyp_003"),          Jede Bank hat 3 Plätze (vor der Bank stehend von links nach rechts) dmyp_001, dmyp_002, dmyp_003!
               sit_down_on_bench()],
      S_LOOP   : [play_fluit_on_bench()]},

"06:30:00" : { # auf Bank sitzen, Buch lesen
      S_START  : [goto_dummy("BUILDING_866","dmyp_003"),          Jede Bank hat 3 Plätze (vor der Bank stehend von links nach rechts) dmyp_001, dmyp_002, dmyp_003!
               sit_down_on_bench()],
      S_LOOP   : [read_book_on_bench()]},

"21:30:00" : { # Holz hacken
      S_START  : [goto_dummy("BUILDING_2108","dmyp_001"), start_chop_wood()],
      S_LOOP   : [chop_wood()]},

"15:00:00" : { # Schippen
      S_START  : [goto_dummy("BUILDING_1788","dmyp_001"), start_shovel_sand()],
      S_LOOP   : [shovel_sand()]},

"06:00:00" : { # Loch graben
      S_START  : [goto_dummy("BUILDING_1788","dmyp_001"), start_dig_hole()],
      S_LOOP   : [dig_hole()]},

"06:00:00" : { # Muskelaufbautraining
      S_START  : [goto(503.9,442.9),
            turn_to_direction(global_defines.DIR_WEST),
            make_push_up()],
      S_LOOP   : [make_push_up()]},

"12:00:00" : { # ueber Kasten buecken
      S_START  : [goto_object('BUILDING_5906'),
             turn_to_object('BUILDING_5906')],
      S_LOOP   : [lambda char: character.play_animation(char, 'CM_KNIEND_GESTE_AMBIENT_WAFFENLOS')]},

"11:30:00" : { # Feuer sitzen, Braten
      S_DIALOG : "NPC_MASON_T_003",
      S_START  : [goto_dummy("BUILDING_868","dmyp_005"),        Jedes mittlere Lagerfeuer hat mind. 9 Plätze, wenn nicht mehr  dmyp_001, ... dmyp_009!
               sit_down_to_cook()],
      S_LOOP   : [cook()]},

"19:00:00" : { # Feuer sitzen, Essen
      S_START  : [goto_dummy("BUILDING_868","dmyp_005"),        Jedes mittlere Lagerfeuer hat mind. 9 Plätze, wenn nicht mehr  dmyp_001, ... dmyp_009!
               sit_down_on_ground()],
      S_LOOP   : [sit_on_ground(actions = ['eat', 'drink'])]},

"21:00:00" : { # an dem Ort tanzen
      S_START  : [goto(489.34, 383.82),
               turn_to_direction(data().DIR_SOUTH_EAST)],
      S_LOOP   : [dance()]},

Und Ich jetzt - Kino gehen  #party

"15:00:00" : { # Patrouille
      S_START  : [],
      S_LOOP   : [patrol(((313.0,456.0),(252.0,458.0),(248.0,391.0),(309.0,389.0),(312.0,436.0),(311.0,437.0)))]}

"08:00:00" : { # Bewachen
      S_START  : [goto(311.0,437.0), turn_to_direction(global_defines.DIR_EAST)],
      S_LOOP   : []},

"23:15:00" : { # in der Pampa sitzen
      S_START  : [goto((432.83, 502.11)),
               turn_to_direction(data().DIR_NORTH),
               sit_down_on_ground()],
      S_LOOP   : [sit_on_ground()]},

"11:30:000" : { # Sandkasten spielen
      S_DIALOG : "NPC_KIKI_T_003",               Im Kiki-Tagesablauf gibt es 4 mal das Sandkastenspiel als Schleife, die sich nur durch die Dialoge unterscheiden!
      S_START  : [stepto(514.01, 385.94),         Der Sandkasten kann wegen des Kollisionsmodells sonst nicht begannen werden, also "stepto"-Befehl.
            turn_to_direction(data().DIR_WEST),
            sit_down_on_ground()],
      S_LOOP   : [sit_on_ground()]},

"15:00:00" : { # Gwehrschießen
      S_START  : [goto(523.65,560.64), turn_to_direction(45),
               start_hunt()],
      S_LOOP   : [hunt()]},                                  Das nächste Zeitintervall sollte mit dem Befehl [end_hunt()] beginnen, da sonst die Waffe noch in der Hand ist. 

"04:00:00" : { # Schießen beendet + am Ort stehen
      S_START  : [end_hunt()] + [goto(443.9,284.5)],
      S_LOOP   : [stand()]},

"19:30:00" : { # Waffe reinigen
      S_DIALOG : "NPC_FRANK_T_005",
      S_START  : [goto(459.9,266.7), turn_to_direction(global_defines.DIR_SOUTH_EAST),
            start_clean_weapon(),
            lambda c: checked_weapon_equip(c)],
      S_LOOP   : [clean_weapon()]},

"06:30:00" : { # Waffen reinigen
      S_DIALOG : "NPC_FAITH_T_002",                                           Viele NPCs haben in den einzelnen Tätigkeitsintervallen unterschiedliche Dialoge, wenn sie angesprochen werden!
                                                                                                     Ich habe diese in den Beispielen meist rausgenommen, aber das wäre die Stelle.
      S_START  : [goto(490.15, 406.16),
               turn_to_direction(data().DIR_NORTH),
               start_clean_weapon()],
      S_LOOP   : [clean_weapon()]},

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln