s2ext

Bitte logg dich ein oder registriere dich.

Einloggen mit Benutzername, Passwort und Sitzungslänge
Erweiterte Suche  

Neuigkeiten:

Fehler und Spammer oder Probleme beim Login hier melden.

Autor Thema: Fragen zum Scripting  (Gelesen 180100 mal)

Orge

  • Newbie
  • *
  • Beiträge: 196
Re: Fragen zum Scripting
« Antwort #675 am: August 27, 2012, 19:31:42 Nachmittag »

Zu Beginn musst du wissen, dass du dieses Script entweder
a) In die Definition des Items (also in Objects_buildings.inf oder so) schreibst, oder
b) Zu einem Einbaum, welcher mit dem Editor schon auf der Karte platziert ist.

Da der Spieler den Einbaum aber wohl selbst bauen muss, geht Möglichkeit b) nicht, von da her muss es nach Möglichkeit a) gehen.


Der Script dazu ist relativ schnell gemacht.
Einfach beim Einbaum mit dazuschreiben ( der Text hinter den "//" ist nur zur Info da):
Code: (text) [Auswählen]
  1. on:changeday {    // Changeday wird jeden Tag um 24 Uhr ausgelöst, ist also die "wenn der Tag vorbei ist"-Variante. (Wobei man da eigentlich auch immer schläft)
  2.                           // ansonsten nimm einfach on:sleep
  3. kill "self";          // Diese Zeile zerstört den Einbaum.
  4. }
  5.  
Soll der Einbaum eine gewisse Anzahl an Tagen stabil bleiben, kommt noch eine if-Abfrage hinzu:
Code: (text) [Auswählen]
  1. on:changeday {
  2. local "$Tage";         // Eine Variable für die Anzahl an Tagen wird eingeführt
  3. if ($Tage==5) {     // Ist der Wert der Variable gleich 5? -> 5 entspricht der Anzahl an Tagen (bzw. changedays), bis der Einbaum zerstört wird
  4. kill "self";
  5. }else{
  6. $Tage++;            // Wenn der Wert ungleich 5 ist, so wird er um 1 erhöht.
  7. }
  8. }
  9.  

Hab das jetzt nicht getestet, sollte aber funktionieren ;)

Hoffe, damit ist dir geholfen.

Liebe Grüße
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Bitte, benutzt Satzzeichen! Auf eine Frage, die niemand versteht, gibts wohl keine Antwort.

chrmoe

  • Newbie
  • *
  • Beiträge: 12
Re: Fragen zum Scripting
« Antwort #676 am: August 27, 2012, 20:42:17 Nachmittag »

Danke  :hooray: ,
auf meiner Karte ist man am Anfang nämlich noch ein Stück weg von der Insel im Meer und muss sich aus den Trümmern des Schiffs, dass gegen einen Felsen gefahren ist ein Floß zusammenbauen, weil im Wasser Haie sind und man deshalb nicht hinüberschwimmen kann. Da der Spieler aber noch kein "Skill" zum Floßbau hat soll es dann bald kaputt gehen.

Habe noch eine Frage  :mrgreen:
Kann man auch irgendwie Timer benutzen, also dass zb. nach 30sec etwas passiert? - habs herausgefunden
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Anonymous

  • Newbie
  • *
  • Beiträge: 1.610
Re: Fragen zum Scripting
« Antwort #677 am: August 28, 2012, 09:33:57 Vormittag »

Wie kann man bei einem Objekt (im meinem Fall die "Baustelle (151)") verhindern, dass irgendein script ausgeführt wird, dass nicht in dem Objekt steht. Wenn ich die Baustelle jetzt benutze wird immer irgendein Script ausgefüht das ich dort garnicht reingeschieben habe. Soll aber nur bei der einen Baustelle so sein, die ich mit dem Editor platziert habe.
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Orge

  • Newbie
  • *
  • Beiträge: 196
Re: Fragen zum Scripting
« Antwort #678 am: August 28, 2012, 10:29:42 Vormittag »

schau mal, ob das hier das Richtige für dich ist.
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Bitte, benutzt Satzzeichen! Auf eine Frage, die niemand versteht, gibts wohl keine Antwort.

Anonymous

  • Newbie
  • *
  • Beiträge: 1.610
Re: Fragen zum Scripting
« Antwort #679 am: August 28, 2012, 11:20:59 Vormittag »

Danke, die Seite kenne ich, aber wenn ich eine Baustelle hiermit erstelle:
Code: (text) [Auswählen]
  1. on:trigger {
  2.     local "$triggered";
  3.     if($triggered==0) {
  4.         $triggered++;
  5.         play "modsS2Extsfxspeechbuildingsite2.ogg";
  6.         local "$itemid";
  7.         $itemid=create ("object", 151, -3860, -3760);
  8.         addscript "object", $itemid, 10;
  9.         free "self";
  10.     }
  11. }
  12.  
dann wird zwar das Script das ich geadded habe auch ausgeführt, wenn man die Baustelle benutzt, aber das Spiel will immer irgendetwas aus der "Buildinginfos" Datei laden, was zu einem Error führt:
Zitat
ERROR: unable to load external script 'scriptsbuildinginfo.s2s'
aber ich möchte nicht dass die Baustelle, wenn man sie benutzt irgend ein externes Script lädt, sondern dass einfach nur das passiert was ich reingeschrieben habe.
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Orge

  • Newbie
  • *
  • Beiträge: 196
Re: Fragen zum Scripting
« Antwort #680 am: August 28, 2012, 11:54:46 Vormittag »

Hm, also diese "buildinginfos"-Datei gibts ja nicht mal...kein Wunder, das Stranded abstürzt, wenn es die laden will  :shock:


Probiers mal so:
Code: (text) [Auswählen]
  1.        on:trigger {
  2.                 play "buildingsite2.ogg";
  3.                 local "$itemid";
  4.                 $itemid=create ("object", 151, -3860, -3760);
  5.                 addscript "object", $itemid, 10;
  6.                 free "self";
  7.                 stoptrigger ID;                      // Als ID bitte die ID des Triggers
  8.                 skip;
  9.         }
  10.          
  11.  

Hoffe, das klappt so.

Liebe Grüße
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Bitte, benutzt Satzzeichen! Auf eine Frage, die niemand versteht, gibts wohl keine Antwort.

chrmoe

  • Newbie
  • *
  • Beiträge: 12
Re: Fragen zum Scripting
« Antwort #681 am: August 28, 2012, 12:15:32 Nachmittag »

Hmm ich habe jetzt mal zum Test eine neue Insel erstellt, mir mit "unlockbuildings" alle Gebäude freigeschalten und siehe da, auch hier bingt die "Wasser-Baustelle" für Einbaum etc. einen Error hervor, wenn man sie ohne etwas in der Hand benutzt.
Scheint irgend ein Fehler in der Objekt-Definition oder so zu sein.
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Orge

  • Newbie
  • *
  • Beiträge: 196
Re: Fragen zum Scripting
« Antwort #682 am: August 28, 2012, 12:23:13 Nachmittag »

Es gibt ja dieses Bausystem, dass man nicht mehr für jedes Item einzeln mit dem Hammer klicken muss, sondern einfach die Baustelle benutzt und dann "Alle Items aus der Umgebung für diese Baustelle nutzen" anklickt. Vermutlich funktioniert dies bei der Wasser-Baustelle nicht richtig. Müsste also in der Baustellen-Objektdefinition abstellbar sein.
Füge doch bei der Baustelle noch das hinzu:

on:use { skipevent; }
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Bitte, benutzt Satzzeichen! Auf eine Frage, die niemand versteht, gibts wohl keine Antwort.

chrmoe

  • Newbie
  • *
  • Beiträge: 12
Re: Fragen zum Scripting
« Antwort #683 am: August 28, 2012, 12:40:24 Nachmittag »

"skipevent" funktioniert bei mir leider nicht, aber wenn ich
Code: (text) [Auswählen]
  1. on:load {
  2. def_free "object", 151;
  3. }
benutze würde es funtionieren, doch dann kann man die Wasserbaustelle mit dem Hammer auch nicht mehr benutzen. Zumindest ist damit sicher, dass der Fehler in der Objektdefinition liegen müsste.

Edit: Habe jetzt den Fehler lokalisiert, müsste in "S2Extsysobjects_buildings.inf" in Zeile 245 - 260 sein, da dort diese nicht vohandene Datei geladen wird.
Edit: Habe den Fehler gefixt, indem ich in der genannten Datei die "on:use" Zeilen (245-260) der Wasserbaustelle ein wenig an die der normalen angepasst habe, d.h. ein paar Zeilen, die bei der normalen Baustelle auskommentiert waren, auch bei der Wasserbaustelle auskommentiert.
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

snthss

  • Newbie
  • *
  • Beiträge: 4
Re: Fragen zum Scripting
« Antwort #684 am: November 14, 2012, 14:22:28 Nachmittag »

Hey!

Hoffe ein paar Leute sind hier noch aktiv, da ich gerade an einer großen Map arbeite aber als blutiger Anfänger öfter mal Dinge erfragen müsste. Im Moment ringe ich mit einem simplen Gebiets-Trigger script  :@ (was hat es eigentlich mit dem Fuchs auf sich?).

Also folgendes möchte ich: Beim Betreten eines bestimmten Gebiets soll ein bereits existierender Tagebucheintrag um einen Text erweitert werden. Mehr nicht. Das Problem ist nun, dass das script endlos ausgeführt wird, solange ich im Gebiet stehe. Mit stroptrigger ID hat es nicht funktioniert und jetzt gerade dachte ich ich hätte den passenden command gefunden: free "self" aber der Fehler besteht weiterhin. Folgendes steht in meinem script:

Code: (text) [Auswählen]
  1. on:trigger {
  2.             extendentry "Was zum..." [,"11"];
  3.             free "self";

"Was zum..." ist der Titel des bestehenden Tagebucheintrags, "11" ist die iD vom Textcontainer. Alternativ habe ich es auch mit stoptrigger 9 anstelle von free "self" probiert (9 ist halt die ID vom Gebiets-trigger). Das Ergebnis ist nun dass im Sekundentakt der Text an den Tagebucheintrag angehangen wird, inklusive Script Error: Expecting Semicolon. Wo steckt denn jetzt der Fehler drin?

Vielen Dank im Vorraus!
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Orge

  • Newbie
  • *
  • Beiträge: 196
Re: Fragen zum Scripting
« Antwort #685 am: November 14, 2012, 19:58:17 Nachmittag »

also eigentlich sollte stoptrigger schon klappen...
Bei deinem Script...die eckigen Klammern können schon mal weg, die sind in den Unrealsoftware-Befehlsbeschreibungen nur enthalten, wenn ein Parameter (in deinem Fall das "11") möglich, aber nicht zwingend erforderlich ist. Beispielsweise kann man ja
Code: (text) [Auswählen]
  1. msg "Fantastisch!",4,1000;
schreiben, um als Anzeigedauer 1000ms zu erhalten.
Code: (text) [Auswählen]
  1. msg "Fantastisch!",4;
ist auch möglich, es wird dann die Standard-Anzeigedauer 3000ms verwendet.

Von da her sollte ein
Code: (text) [Auswählen]
  1. on:trigger {
  2. extendentry "Was zum...","11";
  3. stoptrigger 9;
  4. }
eigentlich klappen.
Eine weniger elegante, aber sichere Lösung ist eine if-Abfrage:
Code: (text) [Auswählen]
  1. on:trigger {
  2. if ($trigger_9==0) {
  3. extendentry "Was zum...","11";
  4. $trigger_9++;
  5. }
  6. }

Das funktioniert auch, verbraucht aber (unwesentlich) mehr Rechenleistung, da die Abfrage immer (alle 2 sec oder so) gestartet wird, solange sich der Spieler im betreffenden Trigger aufhält, auch wenn der Tagebucheintrag schon längst vorhanden ist.
Hoffe, das hilft dir weiter :)
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Bitte, benutzt Satzzeichen! Auf eine Frage, die niemand versteht, gibts wohl keine Antwort.

snthss

  • Newbie
  • *
  • Beiträge: 4
Re: Fragen zum Scripting
« Antwort #686 am: November 15, 2012, 12:32:48 Nachmittag »

Ah, danke :). Die Klammern waren wohl das Problem. Läuft jetzt so wie es soll.

Andere Frage: Ist es möglich einen neuen Tagebucheintrag zu erstellen ohne das ingame das Tagebuch sofort aufpoppt? Ich möchte nur, dass der Spieler über eine msg über den neuen Eintrag informiert wird, das Tagebuch soll ihm aber nicht ins Gesicht springen ^^. Ginge mit extendentry, aber es soll ja ein ganz neuer Eintrag sein...

Ach und wegen den Spawn scripten: Bei Anzahl/Max bin ich mir nicht ganz sicher wie ich das deuten soll... Wenn ich jetzt Anzahl: 1, Max: 3 und Tage: 2 eingebe und als Einheit Affe nehme... Heißt dass jetzt, dass sobald die Maximale Anzahl nicht mehr gegeben ist, alle 2 Tage ein Affe spawnt, bis MAX erreicht ist? Oder heißt das, dass wenn im Radius 1 oder weniger Affen zu finden sind, dass nach 2 Tagen die maximale Anzahl an Einheiten spawnt?

Danke und bis später :).

-edit-
Gibt es eine Möglichkeit im Editor durch die Wasseroberfläche hindurchzuschauen? Das würde das Platzieren von Fischen und Haien ungemein vereinfachen.
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Orge

  • Newbie
  • *
  • Beiträge: 196
Re: Fragen zum Scripting
« Antwort #687 am: November 15, 2012, 13:48:59 Nachmittag »

Also zum Tagebuch kann ich dir leider nichts sagen :(

Zum Spawn: Deine erste Theorie trifft zu. "Anzahl" entspricht der Menge an Units, die alle x Tage (bzw. bei "on:changeday") spawnen, bis zur Max(imalanzahl).

Im Editor direkt glaube ich nicht, aber öffne mal die game.ini und schau, ob du das ne Variable "wateralpha" oder sowas findest. Ein "alpha"-Wert gibt immer die Transparenz eines Objektes etc. an. Stellst du diese nun auf maximal (100 oder 1.0, entweder halt prozentual oder dezimal), so wird das betreffende Objekt durchsichtig bzw. unsichtbar. :)

btw: Deine Map kann ich gerne mal testen, wenn du willst. Ausprobieren werd ich sie auf jeden Fall, wenn du fertig bist ;)
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert
Bitte, benutzt Satzzeichen! Auf eine Frage, die niemand versteht, gibts wohl keine Antwort.

snthss

  • Newbie
  • *
  • Beiträge: 4
Re: Fragen zum Scripting
« Antwort #688 am: November 16, 2012, 15:14:57 Nachmittag »

Gut, dann muss ich mal eben die spawnpunkte fixen ^^.

Alpha-wert... Ja das klingelt irgendwas in Bezug auf meine GIMP experimente. In der game.inf steht dieser Wert auf 0.7. So sehe ich das Wasser auch ingame, im Editor ist es halt komplett undurchsichtig (ärgerlich).

Hast noch eine PM... Sonst fang ich noch an den Thread hier hemmungslos zu spammen.
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Anonymous

  • Newbie
  • *
  • Beiträge: 1.610
Mit Schlüssel Tor öffnen & Mit Schlüssel Schiff fahren könne
« Antwort #689 am: November 24, 2012, 14:53:57 Nachmittag »

So ich bin ziemlich neu beim Scripten und Teste erst noch rum.

Wo ich jetzt gerade hänge ist zum 1.

Was muss ich im Script eingeben dass das Tor sich nur öffnet mit einem Schlüssel (z.b. Objekt92) und ohne Schlüssel lässt sich es nicht öffnen.
wenn ich da z.b. eingebe beim Tor (Objekt293)

on:use {
if (playergotitem(92)>=1) {
event "toggle"; }
}

dann geht das Tor ohne Schlüssel auf und zu, aber mit nichtmehr.

Und wo ich ganz ratlos bin, ist wie man ein Schiff/Boot nur Nutzen kann, wenn man den Schlüssel hat, sonst ist es gesperrt.

PS: Nimmt mir es nicht Übel, ich bin erst 2 Tage dran und bin noch nicht ganz drin in der Sache.
Und ja ich hab die ganze Tutorials durchgelesen.

Danke für Antworten :D
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert