Hi Leute,
kann mir jemand schreiben, wie ich einer Einheit, die vom Spawn-Info erstellt, wird Sachen mitgeben kann? Das soll so aussehen, wie zum Beispiel die Kiwis auf den Kiwi-Jagd-Zufallsinseln, die Münzen dabei haben.
Ich verwende die Extension mod 0.3.2
Folgende Lösung funktioniert zwar, ich würde aber eher die Lösung weiter unten empfehlen:
Mit on:spawn kannst du beim Tageswechsel (wenn neue Tiere erscheinen) gucken, ob ein Tier direkt beim Spawn-Info gespawnt ist. Mit loop geht man dabei alle Tiere des Typs durch und guckt mit inrange nach, ob diese direkt beim Spawn-Info sind. (Reichweite/Range von 5 oder so ist da eine gute Wahl.)
Hier nun eine Lösung, die viel weniger störanfällig ist, dabei aber etwas mehr Aufwand darstellt:
Ich persönlich würde mir ein eigenes Script dafür schreiben, die Tiere spawnen zu lassen und ihnen dann die Items geben.
Dabei würde das Script bei on:changeday ausgeführt und erst mal mit count_inrange nachgucken, wie viele Tiere des bestimmten Typs in der Nähe des Infos sind. Dann würde ich mit create ein Tier erstellen (die ID speichern!) und dieses dann mit setat an die Position des Infos setzen.
Ab hier sind die Wege für beide Lösungen gleich. Wir haben jetzt die ID der Einheit, die gespawnt wurde. Wieder mit create würde ich dann ein Item erstellen und dies mit store in dem Tier lagern. Sobald es dann getötet wird, kann man das Item an sich nehmen.
Das war jetzt eine recht komplizierte Erklärung. Sie ist schon etwas schwieriger zu programmieren. Solltest du also ein Problem dabei haben oder einfach nur irgendwas nicht richtig verstehen: Frag ruhig! Wir helfen dir gerne. (Allerdings mögen es manche Leute nicht, wenn direkt die Antwort als Script geschrieben wird. Besser ist es da, wenn du erst mal selbst etwas versuchst und dann wir dir bei manchen Sachen helfen.)
bei dem ersten weg wird es wohl (soweit ich das sehe) hauptsächlich 2 mögliche störfaktoren geben:
der erste ist, dass eine unit des betroffenen typs, die schon vorher vorhanden war, zufällig in das gebiet des infos läuft, dann mitgezählt wird und dementsprechend nochmal ne extra-ladung goldmünzen verpasst bekommt (oder was auch immer du einlagerst).
das zweite problem wäre, dass der spawn-radius des infos größer ist, als bei der inrange-abfrage überprüft wird, weshalb auch ein pauschaler wert wie 5 wahrscheinlich nicht so toll wäre, sondern besser der gleiche radius, den das spawn-info hat.
das trifft natürlich nur zu, wenn das spawn-info intern die unit direkt an eine zufällige stelle innerhalb des radius setzt und nicht erst die unit im zentrum spawnt und sie dann umpositioniert.
falls übrigens bei ALLEN units dieses typs etwas eingelagert werden soll, sobald sie spawnen (und nicht nur bei einigen), dann wäre die sache sogar noch einfacher, als von Nova beschrieben:
in diesem fall müsstest du lediglich on:load per def_extend bei dem entsprechenden typ ein script anhängen, das du beispielsweise in einen textcontainer packst.
in diesem script müsste dann wiederum nur on:spawn mit create das item erstellt und mit store bei der unit selbst eingelagert werden.
@ Hurri04: Ich hätte auch den von dir als letztes beschriebenen Weg genommen, aber es wurde ja speziell von den Spawn-Infos gesprochen, da habe ich das jetzt nicht erwähnt.
OK. Das hört sich ziemlich hart an, ich bin jetzt nicht der große Script-Schreiber, ich werde trotzdem mal den letzten Weg probieren, wenn mein Computer wieder verfügbar ist ich melde mich dann, falls ich noch Probleme kriege, falls nicht schon mal vielen Dank!