Forum
Stranded II Scripts Scripting - Fragen/Problemegibts da nen startparameter für, oder haste das noch nicht eingebaut?
1. Du hattest doch vor, Events einzufügen, die ausgelöst werden, wenn man eine Waffe benutzt. Ich hätte diese Events gern so bald wie möglich, da einige zentrale Sachen der Mod von S2.tk davon abhängen.
2. Könntest du einen Befehl hinzufügen, der bei einem Item prüft, ob dieses sich im Inventar des Spielers befindet? Also etwa so (Skript bei einem Item):
1
if (*befehldenichwill*("unit",1,currentid())==1) { blabla; } //Befehl gibt 1 aus, wenn das Item mit der über den 3. Parameter angegebenen ID in dem Objekt/Unit etc., das über die ersten beiden Parameter angegeben wurde, eingelagert ist.
1
if (getstored("unit",1,*ID des Itemtyps, bei dem das Skript gerade ausgeführt wir*)==currentid()) { blabla; }
Edit: Habs mal selbst versucht:
1
2
3
4
5
2
3
4
5
on:create { if (getstored("unit",1,150)==currentid()) { } else { 	 model "gfx/rolle.b3d"; } }
Dann kommen noch paar Zeilen, die ich aber nicht einfüge.
Sowohl das Item mit der ID 150 (gerade das Item, bei dem das Skript ausgeführt wird.) als auch gfx/rolle.b3d existieren.
Was ist da falsch?
Erklärung der Bedeutung dieses Skripts:
Ich will für alle Items eines Typs das Erscheinungsbild auf der Welt ändern, ohne die Definition dafür zu ändern (habe gute Gründe dafür - sehr gute!!!). Wenn das Item jedoch eingelagert ist, ergibt es einen Skriptfehler. Daher will ich, bevor ich das Modell ändere, prüfen, ob es eingelagert ist.
Edit²: Habe vergessen, dass Skriptfehler im Spiel einfach ignoriert werden und das Skript nicht ausgeführt wird, wenn man nicht im Debugmodus ist. Daher ist das Problem gelöst. Aber diese Fehlerausgabe im Debugmodus nervt in diesem Fall. Naja, muss ich wohl durchhalten.
Die erste Frage steht nach wie vor offen.
edited 5×, last 30.01.06 02:54:07 pm
Wollte dir nur wieder die Möglichkeit geben auch hier posten zu können...
1
name=Hammer
Weil das wäre zur Idendifikation besser, wenn man keine Comments hat (hat man ja auch nicht, wenn man meinen Definition-Editor verwendet ^^)
Gruß Lord Horazont
Sowas nutzt Delphi auch, für die Compilerschalter.
Du könntest zbsp #!NAME=Hammer nehmen.
Gruß Lord Horazont
Lord Horazont has written
Nee. Geht net so einfach. Der DefEdit killt alle Zeilen, die mit # anfangen. Oder ich müsste das so machen, dass der das Teil dann vorläufig mit in die Eigenschaften kopiert und dann beim Speichern wieder als Commen saved... Das wäre vielleicht eine Idee... Allerdings müsste ich dafür ein gutes Stück Code umkrempeln *kotz*... Ich werds versuchen.
Gruß Lord Horazont
Gruß Lord Horazont
dann teste doch beim killen auf Zeilen, die mit #! beginnen, und ignoriere sie:
1
2
3
4
2
3
4
for i:=Code.Count-1 downto 0 do begin if (Code[i][1]='#') and (Code[i][2]<>'!') then Code.Delete(i); end;
"Beim Killen" ist sicherlich ein falscher Ausdruck, da Horazont's Editor sicherlich nicht aktiv killt, sondern einfach beim Lesen und damit auch beim Speichern ignoriert.
Ansonsten mein Tipp an Horazont:
Comments während der Arbeit ignorieren, nicht beim lesen.
Ich weiß ja net wie du es genau machst, aber bei mir läuft sogar die "sprengung" teilweise comment-gesteuert.
Wenn man also einfach:
"blubb" als Zeile reinschreibt ist es auch egal. Aber sobald ein = drin ist muss es eine gültige Eigenschaft mit passendem Wert sein.
bizzl has written
Wenn mich net alles täuscht arbeitet er vermutlich immer noch mit dem Simplen LoadFromFile, welches kein parsing übernehmen kann.
Ansonsten mein Tipp an Horazont:
Comments während der Arbeit ignorieren, nicht beim lesen.
Ich weiß ja net wie du es genau machst, aber bei mir läuft sogar die "sprengung" teilweise comment-gesteuert.
Ansonsten mein Tipp an Horazont:
Comments während der Arbeit ignorieren, nicht beim lesen.
Ich weiß ja net wie du es genau machst, aber bei mir läuft sogar die "sprengung" teilweise comment-gesteuert.
Ich habe eine eigene Lade-Routine geschrieben, Zeilen, die mit # beginnen werden garnicht erst mit in die Listbox übernommen. Habe das aber jetzt anders gelöst:
1
2
3
4
2
3
4
if (Pos('#', Line) <> 1) or (Pos('#!', Line) = 1)) then begin Krass Code zum übernehmen in ListBox!! end;
Was meinst du mit "Sprengung"??
Gruß Lord Horazont
P.S.
Streitet euch nicht über code, den ihr nicht kennt!!
dazu müssen aber die daten erst in einzelne teile "gesprengt" werden.
Ich baue gerne parser dieser art, da sie einfach sind.
der term "sprengen" rührt daher, das ich dafür meist (hier nicht) die methode explode auf einen string anwende.
Jetzt mal zum eigentlichen Problem:
Ich habe für die Mod von Stranded2.tk einen Feuerball als Item erstellt. Er soll als aufnehmbares Item das Modell einer Zauberspruchrolle haben, aber als Wurfmunition (Behaviour Spear) das Modell des Feuerballs haben (wir können ja keine Sprites nehmen).
Dafür habe ich folgenden Code benutzt:
1
2
3
2
3
on:create { 	 model "gfx/rolle.b3d"; }
Übrigens gibt es da etwas, was schon lange stört:
Die Flugbahn der Munition bei Fernkampfwaffen. Die Pfeile z.B. fliegen seitlich zur Flugrichtung und rotieren auch entlang dieser. Das sollte man mal ändern.
edited 1×, last 05.03.06 05:18:13 pm
Das mit den Pfeilen verstehe ich nicht. Also bei mir sind sie genau in Flugrichtung gedreht und rotieren um die eigene Achse. So wie es sein soll.
bizzl has written
Ich baue gerne parser dieser art, da sie einfach sind.
der term "sprengen" rührt daher, das ich dafür meist (hier nicht) die methode explode auf einen string anwende.
der term "sprengen" rührt daher, das ich dafür meist (hier nicht) die methode explode auf einen string anwende.
Explode?? (Ich weiss das ist jetzt ein bissl (oder bizzl ^^) offtopic) Gibts sowas? Ich dachte das wär nur für PHP...
Gruß Lord Horazont
juhu, ich weiß jetzt wie man mods lädt! Aber mir ist folgendes aufgefallen:
Wenn man einen nicht vorhanden Mod angibt, lädt S2 den standard mod. Wenn man einen vorhanden angibt, und lässt die quotes weg, kommt ein mav (zumindest bei mir). Es ist nicht weiter tragisch, aber komisch.
Und folgendes zu Scripts:
Ab und zu, wenn ich eine Palme fälle (Test.s2 , die palme direkt hinter der weißen säule) dann kommt ein scriptfehler, und es heißt, das es Objekt 73 nicht gibt.
ich hab die falschdeklaration aber nirgends gefunden. Und es kommt auch nur manchmal.
@Lord Horazont: es gibt Explodes für jede Sprache. Bei Delphi ist bloss keins in den Standardunits mit drin. Das muss man sich selber schreiben, oder sich aus dem inet ne unit mit der Explode-Routine besorgen.
Ich schicks dir zu wenn du willst. wollte dir ja auch die highlighter schicken. Das kommt dann heute nachmittag an (hoffentlich)
@bizzl:
Ne Explode-Routine hab ich mir schon selbst geschrieben (wie auch sonst...)
Ich habe keine Mail im Postfach....
Gruß Lord Horazont
Zeige mal bitte die Kommandozeile mit der du SII startest, so dass ein Fehler kommt.
Und ja, wenn du eine nichtexistente Mod lädst, läd SII automatisch Stranded II. Das ist beabsichtigt so.
Wenn du die Konsole mit ^ öffnest und nach oben scrollst (Bild hoch Taste oder Mausrad) siehst du dann auch die entsprechende Fehlermeldung.