Forum

> > Stranded II > Scripts > Scripting - Fragen/Probleme
Forums overviewStranded II overview Scripts overviewLog in to reply

German Scripting - Fragen/Probleme

6,780 replies
Page
To the start Previous 1 212 13 14339 340 Next To the start

old Re: Scripting - Fragen/Probleme

bizzl
User Off Offline

Quote
sag mal, dc, wie kann man eigentlich nen anderen mod laden?
gibts da nen startparameter für, oder haste das noch nicht eingebaut?

old Re: Scripting - Fragen/Probleme

HW
User Off Offline

Quote
@DC:
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.
Oder geht das schon mit
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
on:create {
          if (getstored("unit",1,150)==currentid()) { } else {
	     model "gfx/rolle.b3d";
          }
}
Es kommt beim Kreieren die Fehlermeldung Expression " begins with an unexpected operator.
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

old Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Quote
Ja on:attack1 und on:attack2 aber das weisst du ja schon jetzt.
Wollte dir nur wieder die Möglichkeit geben auch hier posten zu können...

old Re: Scripting - Fragen/Probleme

Lord Horazont
User Off Offline

Quote
Stört es, wenn in den Kombinations-Definitionen auch noch was drin steht wie
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

old Re: Scripting - Fragen/Probleme

bizzl
User Off Offline

Quote
Warum nimmste nicht einfach sensitive Comments?
Sowas nutzt Delphi auch, für die Compilerschalter.
Du könntest zbsp #!NAME=Hammer nehmen.

old Re: Scripting - Fragen/Probleme

Lord Horazont
User Off Offline

Quote
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

old Re: Scripting - Fragen/Probleme

bizzl
User Off Offline

Quote
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


dann teste doch beim killen auf Zeilen, die mit #! beginnen, und ignoriere sie:
1
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;
Wobei code das TStrings ist, in das du den code geladen hast (zbsp SynEdit1.lines).

old Re: Scripting - Fragen/Probleme

HW
User Off Offline

Quote
Das Problem ist, dass Horazonts Definitionseditor genau wie die Definitionsengine von S2 Kommentare ignoriert. Bei S2 werden ja nie Definitionen abgespeichert, daher hat man da kein Problem damit. Aber Horazont muss da die Kommentare sowie ihre Position zwischenspeichern, damit sie beim endgültigen Speichern in die Datei geschrieben wird.

"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.

old Re: Scripting - Fragen/Probleme

bizzl
User Off Offline

Quote
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.

old Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Quote
Stranded II springt nur auf Zeilen an, welche mindestens ein "=" haben und NICHT mit "#" beginnen. Alle anderen versucht es zu verarbeiten und wenn das nicht klappt beendet es auch mit einer Fehlermeldung.
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.

old Re: Scripting - Fragen/Probleme

Lord Horazont
User Off Offline

Quote
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.


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
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!!

old Re: Scripting - Fragen/Probleme

bizzl
User Off Offline

Quote
ich zerlege die daten objektweise, zumindest bei den objects, units, item, buildings und combis, und intern wird jeder block einzeln gehandlet.
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.

old Re: Scripting - Fragen/Probleme

HW
User Off Offline

Quote
Endlich ist es wieder so weit. Endlich kann ich wieder hier meine Fragen schreiben. Endlich! Muhahahaha!
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
on:create {
	     model "gfx/rolle.b3d";
}
Früher hat das wunderbar funktioniert, jetzt aber nicht mehr. Es erscheint eine Memory Access Violation bei jedem Start einer Karte, die einen Feuerballzauber beinhaltet.

Ü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

old Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Quote
Huch bei dem model Befehl hat sich ein Fehler eingeschlichen den ich nun behoben habe.

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.

old Re: Scripting - Fragen/Probleme

HW
User Off Offline

Quote
Was die Pfeile angeht, habe ich es mal ohne die Spur versucht: Es sieht durch die Spur einfach nur so aus, als ob sie seitlich zur Flugrichtung geneigt wären. Ist also auch weiter kein Problem.

old Re: Scripting - Fragen/Probleme

Lord Horazont
User Off Offline

Quote
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.


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

old Re: Scripting - Fragen/Probleme

bizzl
User Off Offline

Quote
erstmal ontopic:
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)

old Re: Scripting - Fragen/Probleme

Lord Horazont
User Off Offline

Quote
Soll das heißen, dass man keine Mods mit Leerzeichen erstellen kann? Das wäre in der Tat nicht gerade Praktisch... Aber es gibt kein Problem, was man nicht lösen kann....

@bizzl:
Ne Explode-Routine hab ich mir schon selbst geschrieben (wie auch sonst...)
Ich habe keine Mail im Postfach....

Gruß Lord Horazont

old Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Quote
Man kann Mods mit Leerzeichen laden aber selbstverständlich müssen die dann in Anführungszeichen gehauen werden.

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.
To the start Previous 1 212 13 14339 340 Next To the start
Log in to reply Scripts overviewStranded II overviewForums overview