Waffen, Werkzeug und Tränke einlagern

Du hast den perfekten Techtree ausgearbeitet oder im LevelEditor eine tolle Karte gebastelt? Nur hier rein damit.
Benutzeravatar
Chris1231
Zwerg
Zwerg
Beiträge: 226
Registriert: Do 20. Sep 2012, 17:31
Kontaktdaten:

Re: Waffen, Werkzeug und Tränke einlagern

Beitrag von Chris1231 »

hallo zusammen,
es klingt so als ob du kein neues spiel gestartet hast.
wenn man was in den skripts ändert, muss man neues spiel starten.
wiggles macht wie eine kopie von einigen skripts und legt diese in eine art speicher ab, dies geschied beim starten des spiels.
aber wenn man nun ein neues spiel startet, wird ein abbild mit in den speicherstand gepackt.

wenn man nun ein skript ändert, läd das spiel zu beginn die änderung, doch öffnet man nun einen alten spielstand, stehen da ein teil der alten skripts.

das kann eine ursache dafür sein, dass zwar der techtree da ist(also das symbol zum einlagern) aber der befehl zum ausführen ist im spielstand gespeichert.

willst du das austesten, kannst du im techtree das lager beim lagerfeuer einfügen, und für ein baumstamm bauen.
so kannst du schnell alle änderungen austesten

habe eine änderung im skript vorgenommen.

Code: Alles auswählen

def_class _Nahrung_einlagern 						service material 1 {} {}
def_class _Kisten_einlagern 						service material 1 {} {}
def_class _Pilze_einlagern 							service material 1 {} {}
def_class _Rohmineralien_einlagern 					service material 1 {} {}
def_class _Mineralien_einlagern 					service material 1 {} {}
def_class _Waffen_Werkzeug_und_Traenke_einlagern	service material 1 {} {}
mehr dazu im ersten post
Aktuelles Projekt
Wiggles NextGen
Windeln wechseln :D
zed2000
Hamster
Hamster
Beiträge: 52
Registriert: Mi 25. Feb 2015, 02:02

Re: Waffen, Werkzeug und Tränke einlagern

Beitrag von zed2000 »

Bei mir hat das Einlagern der zusätzlichen Sachen nicht funktioniert, weil nicht danach gesucht wurde.
Zunächst einmal muss man alles so bearbeiten, wie Chris es beschrieben hat http://wiggles.ruka.at/forum/viewtopic. ... 0&t=27#p46. (Danke an Chris, dass du das entdeckt und hier gepostet hattest)

Dann habe ich bei mir (ungefähr Zeile 110) folgendes ersetzt:

1. Auskommentieren von

Code: Alles auswählen

set classes "Grillpilz Grillhamster Pilzbrot Raupensuppe Raupenschleimkuchen Gourmetsuppe Hamstershake Bier Pilzstamm Pilzhut Eisenerz Golderz Kristallerz Eisen Gold Kristall Stein Kohle"
2.und Ersetzen durch

Code: Alles auswählen

 set classes [get_classes_to_store]
Dadurch liest man die zu Lagernden Itemklassen durch eine Funktion ein und muss nicht nochmal die jetzt auskommentierte Liste bearbeiten.

EDIT: Der Mod sollte bei einem neuen Spiel funktionieren. Bei einem bereits gestarteten Spiel hat es bei mir dazu geführt, dass alle Erfindungen vergessen wurden. So wie in beschrieben http://wiggles.ruka.at/forum/viewtopic. ... &t=27#p682, musste bei mir nicht nur Waffen_Werkzeuge_und_Traenke_einlagern erst erfunden werden, sondern andere Sachen wie Barbetrieb (was generell erfunden ist). Das merkte ich, wie ich neue Gebäude produziert habe. Also am bestem bei einem neuen Spiel ausprobieren (Es sei denn jemand findet einen Workaround :) )
Stony
Beiträge: 6
Registriert: Mo 26. Jan 2015, 02:11

Re: Waffen, Werkzeug und Tränke einlagern

Beitrag von Stony »

Sers, das mit dem einlagern funzt gut, leider werden keine Keulen, Zweihandäxte oder Presslufthämmer eingelagert ... haben die intern ne andere Bezeichnung? (Zweihandaxt ist im Script via Streitaxt geführt .. was auch nicht klappt)

Jemand ne Idee

Grüße
zed2000
Hamster
Hamster
Beiträge: 52
Registriert: Mi 25. Feb 2015, 02:02

Re: Waffen, Werkzeug und Tränke einlagern

Beitrag von zed2000 »

Die Bezeichnungen sind soweit mir bekannt, wie folgt:

Code: Alles auswählen

Steinschleuder PfeilUndBogen Buechse
Schild Schild_1 Schild_2 Metallschild Schild_3 Kristallschild Schild_unq_1 Schild_unq_2 Drachenschuppe
Keule Dolch_2 Axt_1 Schwert_1 Axt_unq_1 Schwert Axt_3 Schwert_4  Axt_unq_3
Streitaxt Schwert_2 Axt_2 Axt_unq_2 Schwert_3 Lichtschwert Axt_4 Axt_unq_4
Amulett_1 Amulett_2 Amulett_3
Reithamster Hoverboard Kristallstrahl Kettensaege Presslufthammer
Kleiner_Heiltrank Heiltrank Grosser_Heiltrank Pilzschnaps Liebestrank Unverwundbarkeitstrank
Unsichtbarkeitstrank Jungbrunnentrank Fruchtbarkeitstrank Wiederbelebung 
  • Steinschleuder, Pfeil und Bogen, Büchse
  • Holzschild, Beschlagenes Holzschild, Blechschild, Metallschild, Verzierter Metallschild, Kristallschild, Prallab, Smaragdaxt, Drachenschuppe
  • Keule, Stichling, kleine Streitaxt, Machete, Smaragdaxt, Schwert, Große Streitaxt, Säbel, Haudrauf,
  • Zweihandaxt, Flammenschwert, Streitaxt, Tutnichweh, Breitschwert, Lichtschwert, Henkerschreck, Drachenspalter,
  • Reithamster, Hoverboard, Kristallstrahl, Kettensäge, Presslufthammer,
  • Kleiner Heiltrank, Heiltrank, Grosser Heiltrank, Pilzschnaps, Liebestrank, Unverwundbarkeitstrank,
  • Unsichtbarkeitstrank, Trank der Jugend, Fruchtbarkeitstrank, Wiederbelebung
Du kannst mal in der Konsole nach den Items suchen:

Code: Alles auswählen

obj_query 0 -flagpos storable -flagneg {contained locked instore}  -class {Keule Streitaxt Presslufthammer} -visibility playervisible -owner 0 -alloc -1
Wenn die zurückgegebene Liste ziemlich leer ist, dann wird das Lager die Items auch nicht einlagern.
Du kannst über

Code: Alles auswählen

get_objclass $id
herausfinden um welches Item es sich handelt. $id ist dabei eine der zurückgegebenen Zahlen.

Folgende Vermutung:
Wenn du in der Konsole das eingibst (ohne flagpos storable)

Code: Alles auswählen

obj_query 0 -flagneg {contained locked instore}  -class {Keule Streitaxt Presslufthammer} -visibility playervisible -owner 0 -alloc -1
Findest du dann alle Items?
Wenn du mal

Code: Alles auswählen

get_storable $id
für alle Zahlen in der Konsole ausführst, sollte als Ergebnis in der Konsole immer ne 1 erscheinen. Bei mir erscheint nämlich bei Keulen und Streitäxten eine 0, d.h. das Lager wird sie nie einlagern. Das wär dann wohl ein Bug.
Zuletzt geändert von zed2000 am Mi 1. Apr 2015, 22:10, insgesamt 1-mal geändert.
Stony
Beiträge: 6
Registriert: Mo 26. Jan 2015, 02:11

Re: Waffen, Werkzeug und Tränke einlagern

Beitrag von Stony »

jup gibt mir auch immer ne 0 ... würde ja bedeutet das die Gegenstände irgendwo bei der Zuweisung ihrer Eigenschaften schon die "Lagerbarkeit" nicht bekommen...
zed2000
Hamster
Hamster
Beiträge: 52
Registriert: Mi 25. Feb 2015, 02:02

Re: Waffen, Werkzeug und Tränke einlagern

Beitrag von zed2000 »

Ja, den meisten Waffen fehlt dann diese Eigenschaft. Super, dass du den Fehler bemerkt hast :)

Man kann es natürlich fixen:

Editiere die Datei "Wiggles\Data\Scripts\init\animinit.tcl"

Man fügt Folgende Zeile ein der Funktion SetWeaponClasses (ca. Zeilen 360 bis 380):

Code: Alles auswählen

set_storable this 1
Ungefähr bei Zeile 377.

Also sollte letzlich das dastehen:

Code: Alles auswählen

proc SetWeaponClasses {objclasslist} {
	foreach objclass $objclasslist {
		set classname [lindex $objclass 0]
		set animlist [lindex $objclass 1]
		def_class $classname metal tool 0 {} "
			call scripts/misc/animclassinit.tcl
			set classanimlist \{$animlist\}
			set animname \[lindex \$classanimlist 0\]
			class_defaultanim \${animname}.standard
			class_physic 1
			class_viewinfog 1
			method is_weapon {} {}
			method destroy {} { del this }
			obj_init \"
				set_selectable 	this 1
				set_hoverable 	this 1
				set_storable  this 1
			\"
		"
	}
}
Das fügt den neu erzeugten Waffen die Eigenschaft der Lagerbarkeit hinzu. Für die bereits existenten Waffen müsste man in der Console für jede Waffe jeweils

Code: Alles auswählen

set_storable $id 1
eintippen.
Oder man erspart sich die Arbeit und schreibt einen kleinen Hack in "Wiggles\Data\Scripts\classes\work\lager.tcl". Man fügt eine kleine Erweiterung ein, die den Waffen, die man lagern möchte nachträglich die Eigenschaft der Lagerbarkeit hinzufügt. Und zwar erweitert man die Funktion "handle_event evt_timer_search" ab. Der Anfang sieht dann insgesamt so aus:

Code: Alles auswählen

    handle_event evt_timer_search {
		global items_list old_items_list storable_items_list store_range
//    	log "lager.tcl: Event evt_timer_search"

		
		set classes [get_classes_to_store]
		if {[llength $classes] > 0} {
			set items [obj_query this "-flagneg {instore} -type tool -class \{$classes\} -owner \{[get_owner this] -1\} -alloc -1"]
			foreach item $items {
				if {[get_storable $item] == 0} {
					set_storable $item 1
				}
			}
		}
		
		validate_store_content
Hinweis: validate_store_content ist die erste Zeile die man nicht mehr ändert.
Stony
Beiträge: 6
Registriert: Mo 26. Jan 2015, 02:11

Re: Waffen, Werkzeug und Tränke einlagern

Beitrag von Stony »

Servus,
nu hauts hin, endlich ... wenn sich jetzt noch ne Lösung für die Holzkiepen findet ;)

Er lagert diese ja zumindest ein ... auch wenn sie dann verschwinden.

Das müsste doch dann ein Problem mit validate_store_content (in der lager.tcl) darstellen oder eine andere Routine entfernt die Kiepen weil sie scheinbar benutzt sind?

Edit: Ok, hab da was entdeckt: Keulen klappen mit den Änderungen, Zweihandäxte und Presslufthämmer auch ABER nur wenn sie per Konsole abgelegt werden können die Zwerge sie nehmen, werden sie produziert oder abgelegt dann rennt der Zwerg zu dem Item aber immer nach hinten in der Höhle klettert die Wand leicht hoch, kann es nicht aufnehmen. Aber die Items würden sogesehn eingelagert werden...die Frage ist warum hat der Zwerg für die 2 Items diese fehlerhaften Koordinaten.
zed2000
Hamster
Hamster
Beiträge: 52
Registriert: Mi 25. Feb 2015, 02:02

Re: Waffen, Werkzeug und Tränke einlagern

Beitrag von zed2000 »

Zu den Holzkiepen, wüsst ich auch nichts, die werden an eine andere Position weggebeamt.

Dass die Zwerge an der Wand hochklettern, liegt wohl an einem fehlerhaften Pathfinder in der Wiggles.exe. Das ist also mit TCL-Scripten nicht behebbar.
Sobald ein Objekt seinen Positionsvektor nicht unterhalb des Bodenlevels hat, wird der Zielvektor, wohin der Zwerg laufen will lieber gegen die Höhlenwand projeziert anstatt auf den Boden. Also krabbelt der Zwerg die Wand hoch. (Das wird natürlich in WNG alles besser).

Probier mal in "Wiggles\Data\Scripts\classes\zwerg\z_work_prod.tcl" die folgende Zeile zu dieser abzuändern (ca. Zeile 1115)

Code: Alles auswählen

tasklist_add this "state_disable this; walk_action \"-target \{[get_posbottom $next_item]\} \" {state_enable this}"
get_pos wurde durch get_posbottom ersetzt. Ich weiß leider nicht, ob das dann andere Items beim Einlagern stören wird, z.B Pilzstämme.
Stony
Beiträge: 6
Registriert: Mo 26. Jan 2015, 02:11

Re: Waffen, Werkzeug und Tränke einlagern

Beitrag von Stony »

Nach ersten Tests siehts so aus als ob das klappt, Presslufthammer und Zweihandaxt wird eingelagert, mit den anderen Items klappt das auch ... was ich gerade nicht testen kann sind Items wie Steine die in der Höhlendecke hängen.

Edit: Das klappt scheinbar auch :)
Benutzeravatar
Chris1231
Zwerg
Zwerg
Beiträge: 226
Registriert: Do 20. Sep 2012, 17:31
Kontaktdaten:

Re: Waffen, Werkzeug und Tränke einlagern

Beitrag von Chris1231 »

Hallo zusammen, hab mitbekommen das ihr versucht habt holzkiepen zu lagern.
Kann dazu schon sagen das es nicht Funktionieren wird.
Hatte das Problem auch.

Falls ihr doch eine Lösung findet, wäre ich erfreut.


Das Problem mit den items die von der decke hängen hab ich auch, aber die wiggles kommen da nicht hin.
Was macht ihr da
Aktuelles Projekt
Wiggles NextGen
Windeln wechseln :D
Antworten