Andere Spiele > The Fall

Mod-Tagebuch

(1/15) > >>

Torka:
Hallo liebe Gamer,

da ich nun "The Fall" fast zu Ende gespielt habe, sind mir für das Spiel so ein paar Ideen gekommen. Diese würde ich gern auf den einzelnen Karten umsetzten.
Da ich aber schon genau so oft geskriptet habe wie Agnes vielleicht Fleisch gegessen hat, bin ich gespannt ob es was wird.
Für das Spiel gibt es einen Editor und ein beiliegendes Mod-Tutorial, welche die Entwickler der Reloaded Version (1.10.1) gesponsert haben.
Sicher ist der Editor etwas gewöhnungsbedürftig und das Tutorial erscheint mir auch etwas kryptisch, da sich einige Sachen von den im Spiel verwendeten Skripten unterscheiden.

Dennoch sind ein paar hübsche Sachen möglich. Recht herzlichen Dank an Lexx für seine Infos an dieser Stelle, er hat ja schon Mods und seine Demo-Map für "The Fall" hier vorgestellt, welche mir zum Verständnis der Skripte geholfen haben.   
In diesem Thread würde ich gern alle gemachten Erkenntnisse sammeln. Wer also Lust und Muße hat, kann gern seine Mod-Erfahrungen hier hineinschreiben.

Alles beginnt immer mit einer Vorstellung oder Idee von etwas... und diese ist die bestehenden Karten ein wenig zu verändern.

Bei "The Fall" waren das folgende:

1. Im Laufe des Spiels ist eine Sammlernatur mehr mit Itemmanagement beschäftigt, als mit Spielen. Trotz aller Kofferräume der 5 Autos fing man an auch noch irgendwelche kleinen Sammelecken anzulegen :). Inventar vergrößern ?

2. Die Werte der Items, wie z.B. die 2 kg schwere Glühbirne oder die angefertigten Halsketten, welche meist billiger waren als die Ausgangsmaterialien, etwas realistischer zu verändern. Das selbe Spiel bei den Waffen. Werte verändern?

3. Die versiegenden Wasserquellen hätten ruhig etwas mehr Wasserportionen haben können. Auch ein paar mehr Quellen hinzufügen, z. B. in ausgetrockneten Seen, Flüssen ?

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.

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.

6. Ein wenig mehr Benzin im Spiel wäre nett und Bienenwachs in den Stöcken.

7. Da und dort könnte man auch noch ein wenig Items in die Kisten stopfen oder die Arztpraxis mit Medikamenten ausstatten, wie z. B. die verlassene medizinische Station in Copper Hill.

8. Das Platzieren eines Autos an eine bestimmte Stelle wäre auch nicht schlecht oder ein Seekercamp. Warum sollen die Typen nur immer die Rastenden angreifen, einfach mal den Spieß umdrehen.

9. Die Bereicherung der Karten mit einzelnen Objekten wäre sicher auch ganz nett.

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.


Mal schauen was draus wird :) und wann mich das Moddingfieber verlässt ;).   
                           

Lexx:

--- Quote ---1. Im Laufe des Spiels ist eine Sammlernatur mehr mit Itemmanagement beschäftigt, als mit Spielen. Trotz aller Kofferräume der 5 Autos fing man an auch noch irendwelche kleinen Sammelecken anzulegen Smiley. Inventar vergrößern ?
--- End quote ---

Wage zu bezweifeln, dass das möglich ist.


--- Quote ---2. Die Werte der Items, wie z.B. die 2 kg schwere Glühbirne oder die angefertigten Halsketten, welche meist billiger waren als die Ausgangsmaterialien. Das selbe Spiel bei den Waffen. Werte verändern?

3. Die versiegenden Wasserquellen hätten ruhig etwas mehr Wasserportionen haben können. Auch ein paar mehr Quellen hinzufügen, z. B. in ausgetrockneten Seen, Flüssen ?
--- End quote ---

Beides sollte sehr einfach zu bewerkstelligen sein. Die Item-Attribute befinden sich alle in den entsprechenden Python-Scripten. Die Wasserquellen werden - afaik - in den jeweiligen Zonen-Scripte behandelt. Ich bin mir gerade nicht sicher, ob die Wassermenge eingestellt werden kann, es ist aber kein Problem, weitere Quellen hinzuzufügen.


--- Quote ---6. Ein wenig mehr Benzin im Spiel wäre nett und Bienenwachs in den Stöcken.
--- End quote ---

Das Problem hier ist imo, dass beides nicht respawnt. Kein Händler ändert übers Spiel das Warenangebot. Das sollte angepasst werden.

Torka:
Vorab erst einmal zum "Werkzeug".

Ein Packprogramm (z.B.: 7.zip) ist notwendig, um die komprimierten Dateien im The Fall-Ordner zu entpacken. Alle Karten befinden sich in zones.ubn, die Skripte in scripts.ubn.
Jede Karte ist einer Zone gleichgestellt, z.B. das GNO-HQ entspricht Zone1. In jedem Zonenordner befinden sich wiederum eine Anzahl von Python-Dateien (npc.py, zone_1.py, const.py....) und eine Zip-Datei.
Letztere beinhaltet die Karte, welche im Map-Editor geladen werden kann.

Besagter Map-Editor ist ja schon dabei und kann über das Startmenü des Spiels geöffnet werden. Dann kann man unter FILE / OPEN die einzelnen Zonen-Ordner anwählen und da die Zip-Datei laden - je nach Rechner kann das schon etwas dauern.
Wenn nun die Karte geladen wurde mit STrg+A oder unter VIEW / FREE CAMERA die Kameraperspektive deutlich verbessern - dann wie gewohnt navigieren.
Am linken Rand finden sich z.B. viele aufgelistete Objekt, welche man platzieren kann,  z.B. OBJEKTE / PLAKATE UND SCHILDER / Stopschild. Unter VIEW / SHOW OBJEKT INFO kann man sich die Koordinaten oder die ID des Objekts ansehen. Dies ist echt wichtig für das Skripten dann.

Die Python-Skripte waren mir erst ein vollkommenes Rätsel - diese kann man mit dem Texteditor öffnen und man wird von eine Zeilenflut erschlagen. Hmm, habe dann einen Python-Skripteditor namens  Wing IDE 101 3.2 gefunden und mit jenem sehen die PY-Dateien schon wesentlicher benutzerfreundlich, aber immer noch rätselhaft aus (ist halt mein erster Kontakt mit Python).

Die im Weiteren geschilderten Erfahrungen stammen nun aus diesen Skripten - der Map-Editor kann zum visuellen Verständnis und als Koordinatenquelle dienen.

Die veränderten Skripte werden nur bei bei einem Neustart des Spiels wirksam, also frühere Savegames funktionieren nicht. (Danke Lexx)

Damit komme ich auch schon zum ersten großen Problem - die Startkarte ist das GNO-HQ (Zone1). Diese zu verändern macht Spaß, aber was ist, wenn man die Schattenbasis (Zone8) modifizieren möchte. Muß man dann alle Karten bis dahin spielen bevor man seine winzige Skriptänderung kontrollieren kann - was für ein Albtraum.
Man muss es nicht. Nach schon fast genervten Durchstöbern der Skripte ist mir im Ordner scripts die "global_defines.py" aufgefallen und da am Anfang steht eine wichtige Zeile:


--- Code: ---# which zone to load on campaign start
ENTRY_ZONE = "zones\\zone_1\\zone_1"
--- End code ---


Wenn man nun z.B. die zone_1 durch zone_8 ersetzt:


--- Code: ---# which zone to load on campaign start
ENTRY_ZONE = "zones\\zone_8\\zone_8
--- End code ---

! SPEICHERN !
beginnt jedes neu gestartete Spiel z.B. in der Schattenbasis. Der Charakter ist dann zwar ziemlich mittellos in Unterwäsche, aber zum Testen reicht es.

Erstes Problem gelöst  #party

Die zweite Alternative ist mit dem Konsolenbefehl (F11) import debug; debug.cheat("map") alle Karten frei zu schalten.

Falls man mal eine Datei versaut, die Orginaldateien sind ja immer noch in den gepackten UBN-Dateien enthalten.

Torka:

--- Quote ---1. Im Laufe des Spiels ist eine Sammlernatur mehr mit Itemmanagement beschäftigt, als mit Spielen. Trotz aller Kofferräume der 5 Autos fing man an auch noch irgendwelche kleinen Sammelecken anzulegen :). Inventar vergrößern ?
--- End quote ---

Wie könnte man diese Idee verwirklichen?

Option A

Man fügt einfach noch ein Fahrzeug in das Spiel ein, am besten den Radpanzer, der hat den größten Kofferraum (48 Slots), der Humvee und Pickups einen mittleren (35 Slots) und der Buggy (24), den kleinsten.
Siehe weiter unten im Thread.

Option B

Man erweitert die Slotanzahl aller Fahrzeuge ebenfalls auf 48 Slots. Unter scripts / itemdata / vehicles.py findet am die Eigenschaften der Fahrzeuge:


--- Code: ---create_vehicle_type(typeid='SET_BUGGY')
objects.set_attribute(object='SET_BUGGY', attribute="name", value=globaltext.SET_BUGGY_NAME)
.
.
.
objects.set_attribute(object='SET_BUGGY', attribute="inventory_slots", value=24)
--- End code ---

Den markierten Wert in objects.set_attribute(object='SET_BUGGY', attribute="inventory_slots", value=24) einfach auf 48 ändern und schon passen in den Buggy doppelt so viele Sachen rein  :aiee

Option C

In der Geschichte der ganzen Patchorgie dieses Spiels habe ich gelesen, dass das Stapeln von Objekten (Munition, Nahrungsmittel, Medipacks) nicht so richtig möglich war. Ab irgendeiner Patchversion hatten die Entwickler aber eine "Stapelbarkeit" eingebaut.

In der Datei scripts / itemdata / items.py stehen die Eigenschaften der Gegenstände:


--- Code: ---create_item_type(typeid='SET_NORMAL_CLOTHES_1')
objects.set_attribute(object='SET_NORMAL_CLOTHES_1', attribute="name", value=globaltext.SET_NORMAL_CLOTHES_1_NAME)
objects.set_attribute(object='SET_NORMAL_CLOTHES_1', attribute="hint", value=globaltext.SET_NORMAL_CLOTHES_1_HINT)
objects.set_attribute(object='SET_NORMAL_CLOTHES_1', attribute="resourceui", value='RES_ITEM65X32_MISCITEM_NORMAL_CLOTHES_1')
objects.set_attribute(object='SET_NORMAL_CLOTHES_1', attribute="resource3d", value='RES3D_NORMAL_CLOTHES_1')
objects.set_attribute(object='SET_NORMAL_CLOTHES_1', attribute="value", value=5.00)
objects.set_attribute(object='SET_NORMAL_CLOTHES_1', attribute="weight", value=2.50)
objects.set_attribute(object='SET_NORMAL_CLOTHES_1', attribute="stacking", value=1)
objects.set_attribute(object='SET_NORMAL_CLOTHES_1', attribute="armor", value=1)
objects.set_attribute(object='SET_NORMAL_CLOTHES_1', attribute="occupied_slots", value=["clothes"])   

--- End code ---

Der Wert der Stapelbarkeit (stacking) kann nun erhöht werden - im Moment am Testen  ::).

Habe den Wert von 1 auf 2 erhöht und es funktioniert wunderbar.

objects.set_attribute(object='SET_NORMAL_CLOTHES_1', attribute="stacking", value=2)

Nach diesem Prinzip können so wesentlich mehr Objekte aufgenommen werden, bei Munition - warum den nur 10, vielleicht 50 oder 100 Packungen.
Das Gute ist, der limitierende Faktor im Inventar der Personen ist nun das Gewicht und nicht mehr die Slotanzahl. Bei den Kofferräumen der Fahrzeuge ist das Gewicht ja egal, also nie wieder mehrerer Munitionsstapel im Auto verbrauchen, sondern nur einen Slot besetzen.  :)


--- Quote ---2. Die Werte der Items, wie z.B. die 2 kg schwere Glühbirne oder die angefertigten Halsketten, welche meist billiger waren als die Ausgangsmaterialien. Das selbe Spiel bei den Waffen. Werte verändern?
--- End quote ---

Funktioniert nach ähnlichem Prinzip wie oben beschrieben, ein Wert wird verändert.  #lachen#

Wir nehmen mein Lieblingsbeispiel - das VERY_NICE_BRACELET (Sehr schöne Armband), zu finden in der Datei scripts / itemdata / items.py


--- Code: ---create_item_type(typeid='SET_VERY_NICE_BRACELET')
objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="name", value=globaltext.SET_VERY_NICE_BRACELET_NAME)
objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="hint", value=globaltext.SET_VERY_NICE_BRACELET_HINT)
objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="resourceui", value='RES_ITEM65X32_MISCITEM_VERY_NICE_BRACELET')
objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="resource3d", value='RES3D_VERY_NICE_BRACELET')
objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="value", value=8.0)
objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="weight", value=0.4)
objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="stacking", value=1)
objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="combine_xp", value=75)
objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="item_combination", value={
"difficulty_assemble" : 75,
"combination_list" : [['SET_SHORT_LEATHER_STRING', 'SET_BEAR_CLAW', 'SET_BEAR_TEETH'],
['SET_SHORT_LEATHER_STRING', 'SET_TIGER_CLAW', 'SET_TIGER_TEETH'],
['SET_SHORT_LEATHER_STRING', 'SET_WOLF_CLAW', 'SET_WOLF_TEETH'],
['SET_SHORT_LEATHER_STRING', 'SET_HYENA_CLAW', 'SET_HYENA_TEETH'],
['SET_SHORT_LEATHER_STRING', 'SET_WILD_DOG_CLAW', 'SET_WILD_DOG_TEETH']]})

--- End code ---

Es ist ein kombinierter Gegenstand und besitzt ursprünglich einen Preis von 8. Na toll - die Zähne und die Klauen kann man für je 5 verscherbeln und die Lederschnur für 1, sollte eigentlich 11 ergeben und da ist noch nicht mal eine Wertsteigerung dabei. Es scheint als ob Kunsthandwerk nicht ganz so geschätzt wird.  :neien

Also ich bin für mindestens 12.  #thumbsup

objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="value", value=12.0)

und nur nochmal zur Übung, in den Slot passen doch mehr Armbänder rein  ::)

objects.set_attribute(object='SET_VERY_NICE_BRACELET', attribute="stacking", value=50)

Die Werte für die Waffen stehen in der Datei scripts / itemdata / weapons.py.

Der Phantasie sind dann wieder keine Grenzen gesetzt, `ne Anaconda mit ordentlich Durchschlag oder die Reichweite der Armbrust erhöhen  :angel:

Torka:

--- Quote ---3. Die versiegenden Wasserquellen hätten ruhig etwas mehr Wasserportionen haben können. Auch ein paar mehr Quellen hinzufügen, z. B. in ausgetrockneten Seen, Flüssen?

--- End quote ---

Die auf fast jeder Karte (Zone) zu findenden Wasserquellen sind im Zonenordner X in der Datei zone_X.py verankert. Das wäre z.B. für das GNO-HQ (Zone1): zones / zone_1 / zone_1.py

Fast am Anfang der Datei (Zeile 84 im  Wing IDE 101 3.2) steht:


--- Code: ---def initWaterResources():
water.set_water_source(345.3,476.7,4)
#water.set_water_source(258.3,264.6,2)
water.set_water_source(419.5,349.8,3)
--- End code ---

d.h. es gibt 2 Wasserquellen, die so gefunden werden können. Ein # deaktiviert immer die jeweilige Zeile für das Spiel, deswegen stehen auch die Kommentare in den Skripten hinter #.
Ich habe zum Testen einfach mal # entfernt und festgestellt, das nun eine 3. Quelle nördlich des Übungsgeländes gefunden werden kann, welche 2 l hergibt.
So könnten nun im Skript unter den bestehenden Quellen noch mehr eingefügt werden, wobei die x- und y-Koordinaten aus dem Map-Editor gelesen werden können.

water.set_water_source(x-Koordinate,y-Koordinate, Literzahl der Quelle)

Man kann auch alle bestehenden Quellen einfach mit einem höheren Wasservolumen ausstatten, z.B. aus

water.set_water_source(419.5,349.8,3) wird dann water.set_water_source(419.5,349.8,30)

Navigation

[0] Message Index

[#] Next page

Go to full version