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 204148 mal)

Orge

  • Newbie
  • *
  • Beiträge: 196
Re: Fragen zum Scripting
« Antwort #690 am: November 24, 2012, 18:50:33 Nachmittag »

Hm, also dein erstes Script sieht eigentlich ganz ok aus...probiers doch vielleicht mal so:
Code: (text) [Auswählen]
  1. on:use {
  2. if(playergotitem(92)==0) {
  3. skipevent;    // hier kann anstelle von "skipevent;" auch "skip;" stehen, vielleicht geht es damit
  4. }else{
  5. event "toggle";
  6. }


und für das Schiff/Boot probiere doch auch mal sowas ähnliches:
Code: (text) [Auswählen]
  1. on:use {
  2. if(playergotitem(92)==0) {
  3. skipevent;    // hier kann anstelle von "skipevent;" wieder "skip;" stehen
  4. }
  5. }

Hoffentlich klappt das :D

Und keine Sorge, für solche Fragen gibts doch den Thread hier ;)
« 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 #691 am: November 24, 2012, 19:44:12 Nachmittag »

Also erstmal danke für die schnelle Antwort :D

Also das mit der Türe hat fast geklappt, ich musste statt ner 0 eine 1 reinschreiben, dann ging es ;)

Das mit dem Schiff funktioniert jedoch so nicht, ich kann es immer benutzen, egal mit oder ohne Schlüssel.
Habe getestet mit Skip oder Skipevent machte keinen Unterschied, sowie mit ner 0 oder 1.

und dann wäre da eine kleine Frage, wozu dient dieses "else" gerade bei der Türe??  xD
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

yrevey

  • Newbie
  • *
  • Beiträge: 3
Re: Fragen zum Scripting
« Antwort #692 am: November 24, 2012, 19:53:33 Nachmittag »

okay, das mit dem "else" war iwie selbsterklärend :P
jetzt weiß ich es haha
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Orge

  • Newbie
  • *
  • Beiträge: 196
Re: Fragen zum Scripting
« Antwort #693 am: November 24, 2012, 20:12:31 Nachmittag »

also das mit dem Script ist echt seltsam...normal sollte die Tür, wenn du anstelle der 0 eine 1 schreibst, eben mit Schlüssel nicht aufgehen, da er das on:use-event überspringt (deswegen "skip;"), wenn das "if(playergotitem(92)==1) zutrifft, der Spieler also nen Schlüssel dabeihat.
Echt seltsam  O_O
« 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.

yrevey

  • Newbie
  • *
  • Beiträge: 3
Tor mit einem Schlüssel öffnen /Schiff nur mit Schlüssel fah
« Antwort #694 am: November 24, 2012, 20:28:19 Nachmittag »

Ich habe den Fehler jetzt herausgefunden!

Ich ging einfach mal davon aus, dass die Türe evtl. ein eigenes Script enthält, daher bin ich das erstmal umgangen, denn es kam mir immer seltsam vor, dass wenn die Türe auch zu war und ich keinen Schlüssel hatte, trotzdem ein Tür-öffnen-Geräusch kam.

sprich hab ich am Anfang  die Variable bei on:start "locked" auf 1 gesetzt und zwar so:

Code: (text) [Auswählen]
  1. on:start {
  2. $locked=1;
  3. }
  4.  
  5. on:use {
  6. if(playergotitem(92)==0) {
  7. skipevent;
  8. }else{
  9. event "toggle";
  10. }
  11. }

so funktioniert es dann :D




EDIT:

Ich habe es nun auch hinbekommen, wie man ein Schiff mit einem Schlüssel benutzt, und ohne nicht.
man gibt bei seinem Schiff/Boot in dem Script ein:

Code: (text) [Auswählen]
  1. on:start {
  2. $owner=0;
  3. }
  4.  
  5. on:use {
  6. if(playergotitem(92)>0) {
  7. $owner=1;
  8. }elseif ($owner==0)
  9. }
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

gothicmaster8888

  • Newbie
  • *
  • Beiträge: 164
Re: Fragen zum Scripting
« Antwort #695 am: Januar 14, 2013, 18:50:20 Nachmittag »

id=481
name=Schmelzofen
group=forge
icon=gfxforgeiconsSchmelzofen_ohne.bmp
model=gfxforgeSchmelzofen_ohne.b3d
health=500
scale=1.5
mat=stone
script=start
on:use {
   local $x, $y, $z, $yaw;
   local $melt, $id1, $id2, $use_m, $schmelzofen_unit, $schmelzofen_object;
   $x=getx("self");
   $z=getz("self");
   $y=gety("self");
   $yaw=getyaw("self");
   if($melt==0) {
      if((getplayerweapon()==121) && (count_stored("unit",1,121)>=1)) {
         freestored "unit",1,121,1;
         msg "Gut, jetzt muss ich nur noch Feuer machen.";
         $melt=1;
      }
      else {
         msg "Ich brauche Kohle um ein Feuer zu entzünden.";
         speech "negative";
      }
   }
   elseif($melt==1) {
      if((getplayerweapon()==22) && (count_stored("unit",1,22)>=2)) {
         msg "Jetzt kann ich das Eisen reinlegen.";
         $id1=create("info",30,$x,$z);
         addstate "info",$id1,"eternalfire";
         rpos "info",$id1,"self",10,10,"self",$yaw,"self";
         $melt=2;
      } elseif((getplayerweapon()==111) && (count_stored("unit",1,111)>=1)) {
         msg "Jetzt kann ich das Eisen reinlegen.";
         $id1=create("info",30,$x,$z);
         addstate "info",$id1,"eternalfire";
         rpos "info",$id1,"self",10,10,"self",$yaw,"self";
         $melt=2;
      } else {
         msg "Ich brauche 2 Feuersteine oder eine Fackel um Feuer zu machen.";
         speech "negative";
      }
   }
   elseif($melt==2) {
      if ((getplayerweapon()==124) && (count_stored("unit",1,124)>=1)) {
         freestored "unit",1,223,1;
         model "gfx/forge/Schmelzofen_leer.b3d";
         scale 1,1,1;
         $melt=3;
      }
      else {
         msg "Ich brauche eine Form ...";
         speech "negative";
      }
   }
   elseif($melt==3) {
      if((getplayerweapon()==85) && (count_stored("unit",1,85)>=1)) {      
         $id2=create("info",30,$x,$z);
         rpos "info",$id2,"self",40,-10,"self",$yaw,"self";
         addstate "info",$id2,"smoke";
         freestored "unit",1,85,1;
           $schmelzofen_unit=create("unit",50,$x,$z);
           setrot "unit",$schmelzofen_unit,"self",$yaw,"self";
           alpha 0,"object",currentid();
         timer "self",25000,1,"melt1";
         $use_m=1;
         $melt=4;
      } else {
         msg "Ich muss erst Eisen in den Schmelzofen legen.";
         speech "negative";
      }
   }

   if($use_m==1) {
      msg "Ich muss warten, bis das Eisen geschmolzen ist.";
      speech "negative";
   }
   elseif($use_m==2) {
      $schmelzofen_object=currentid();
      setlocal "unit",$schmelzofen_unit,$schmelzofen_object,$schmelzofen_object;
      animate $schmelzofen_unit,1,24,0.05,3;
      $use_m=3;
   }
   elseif($use_m==3) {
      msg "Heiß!!!";
   }
   elseif($use_m==4) {
      find 125,1;
      model "gfx/forge/Schmelzofen_ohne.b3d";
      scale 1,1,1;
      $melt=3;
      $use_m=0;
   }
}

on:melt1 {
   $use_m=2;
}

on:melt2 {
   model "gfx/forge/Schmelzofen_fluessig.b3d";
     alpha 1,"object",currentid();
   scale 1,1,1;
   free "unit",$schmelzofen_unit;
   timer "self",12000,1,"melt3";
   free "info",$id2;
   $id2=create("info",30,$x,$z);
   rpos "info",$id2,"self",10,-45,"self",$yaw,"self";
   addstate "info",$id2,"smoke";   
}

on:melt3 {
   model "gfx/forge/Schmelzofen_hart.b3d";
   scale 1,1,1;
   freetimers "self";
   free "info",$id2;
   $use_m=4;
}

on:changeday {
   if($melt==0) {
      $melt=0;
   }
   else {
      $melt=1;
   }
   free "info",$id1;
   free "info",$id2;
   free "unit",$schmelzofen;
   $use_m=0;
}

on:load {
   îf (($melt==3) && ($use_m!=0)) {
      model "gfx/forge/Schmelzofen_leer.b3d";
      scale 1,1,1;
   } elseif (($melt==3) && ($use_m==0)) {
      model "gfx/forge/Schmelzofen_ohne.b3d";
      scale 1,1,1;      
   }
}
script=end



-------------------------------------------------------------------------------------------------------------------------
der Schmelzofen erzeugt jedes mal einen Einboren der mich mit Pfeilen beschießt also Unit 50, was muss ich ändern damit ich die gehärtet Form bekomme?
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Kiwi Töter

  • Global Moderator
  • Newbie
  • *****
  • Beiträge: 131
Re: Fragen zum Scripting
« Antwort #696 am: Januar 14, 2013, 20:48:48 Nachmittag »

Im bereich
Code: (text) [Auswählen]
  1. elseif($melt==3) {
  2. if((getplayerweapon()==85) && (count_stored("unit",1,85)>=1)) { 
  3. $id2=create("info",30,$x,$z);
  4. rpos "info",$id2,"self",40,-10,"self",$yaw,"self";
  5. addstate "info",$id2,"smoke";
  6. freestored "unit",1,85,1;
  7. $schmelzofen_unit=create("unit",50,$x,$z);
  8. setrot "unit",$schmelzofen_unit,"self",$yaw,"self";
  9. alpha 0,"object",currentid();
  10. timer "self",25000,1,"melt1";
  11. $use_m=1;
  12. $melt=4;
macht die Zeile
Code: (text) [Auswählen]
  1. $schmelzofen_unit=create("unit",50,$x,$z);
dass die Einheit mit der ID 50 erzeugt wird( und $schmelzofen_unit festgelegt wird) . In der Forge Mod ist die unit 50 teil der Schmelz-Animation(soweit ich weiß) und in der Ext-mod der Eingeborene  mit Bogen.
Wenn man die forge Mod wirklich kommpelett übernehmen will, müsste man in allen Deffinitionsscripts die IDs ändern und das wäre eine Menge Arbeit!
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

gothicmaster8888

  • Newbie
  • *
  • Beiträge: 164
Re: Fragen zum Scripting
« Antwort #697 am: Januar 14, 2013, 21:20:10 Nachmittag »

also ohne de Animationen könnte ich leben sieht dann zwar nicht toll aus aber es würde immerhin funktionieren.
« Letzte Änderung: Januar 01, 1970, 01:00:00 Vormittag von Guest »
Gespeichert

Ramokthan

  • Newbie
  • *
  • Beiträge: 2
Antw:Fragen zum Scripting
« Antwort #698 am: Dezember 01, 2013, 21:21:34 Nachmittag »

Servus

Ich bin neu hier, und ich habe ne Frage zum Scripting.
Es geht um folgendes:

Ich möchte mir das spiel selber genießbarer machen, dazu gehört auch das beseitigen von ein paar Bugs, das wo ich grade dran bin ist das dropstored Script (von Paddi)

Das funktioniert einfach nur kurz nach dem Laden, sobald amn aber mal nicht erfolgreich geschüttelt hat oder andere Items aufgeleden hat bleiben die Früchte Stur auf dem Baum egal wieviel man schüttelt.

Da ich nicht auf den Kopp gefallen bin habe ich mal analysiert woran es liegt, weiß es mittlerweile, habe aber zuwenig Kenntniss vom Framework um es zu fixen.

Also, die Ursache ist, dass das dropstored Script noch mit Werten von $class und $id belegt ist die nicht von dem aufrufenden Objekt stammen, in meinem Testfall war das die Id vom Baum vorher. Da sind jedoch keine Früchte mehr drauf, also bricht das Script ab (getstored = 0, logisch).
Wie also werden diese Variablen übergeben, bzw. wenn sie global sind, wie werden sie gesetzt?
Beim onuse vom Baum werden zwar welche gesetzt aber das dropstored script hat dann immer noch die alten Werte die sich auch nie wieder ändern egal wieviel verschiedene Bäume man danach noch schüttelt bzw "used". Helfen tut hier nur ein Reload.

Vll kann mir einer von euch auf die Sprunge helfen oder es fixen, Fehleranalyse habe ich ja nu gegeben denke ich.

Grüßle.
Gespeichert

Kruzschev

  • Newbie
  • *
  • Beiträge: 6
Antw:Fragen zum Scripting
« Antwort #699 am: Dezember 01, 2013, 23:29:20 Nachmittag »

Versuch mal die Fruchtbäume mit Steinschleudern zu schießen und dann schütteln das sollte die Früchte zum runterfallen bringen

Über die Skript Problematik weiß ich selber wenig
Gespeichert

Ramokthan

  • Newbie
  • *
  • Beiträge: 2
Antw:Fragen zum Scripting
« Antwort #700 am: Dezember 02, 2013, 13:30:46 Nachmittag »

Dann wären wir wieder bei nem Workaround...

Momentan schieße ich sie mit speeren runter oder mach eben kurz vor der Ernte nen reload, aber es nervt nunmal und da ich dachte dass dass eh mit scripten geregelt ist und ich denke dass ich mich damit auskenne versuche ich das zu fixen.

Nur eben scheint mir das ganze ein Problem des Frameworks zu sein bzw meines Unverständnisses davon.

Oder gibts vll. irgendwo den Source Code damit ich mir von der Funktionsweise n Bild machen kann?

Die Scriptingdokumentation ist auf jedenfall viel zu mangelhaft, und sogar teilweise falsch, um damit effektiv arbeiten zu können.

Btw.:
Jemand nen Plan wei man die Performanceprobleme in den griff kriegt bzw gibts da vll ne lösung für?

Wenn ich meine Lager anvisiere geht meine FPS von 30 auf 2-3 FPS in die Knie und dabei spiele ich schon auf minimalsten Grafikeinstellungen (mit nem doch relativ guten PC, zumindest kommt der mit Crysis 3 klar, mit Stranded allerdings nicht o_O)
« Letzte Änderung: Dezember 02, 2013, 13:35:08 Nachmittag von Ramokthan »
Gespeichert

bridgettuttle

  • Newbie
  • *
  • Beiträge: 2
Antw:Fragen zum Scripting
« Antwort #701 am: Dezember 08, 2013, 09:19:36 Vormittag »

wow, wenn ich eure Dialoge so lese schlackern mir die Ohren, da ich nur spielen und ned scripten kann :) Kleine Bitte an alle die da so fleißig werkeln: Ladet mal welche von euren maps hoch, denn auf den Zufallsmaps spielen iss mir auf Dauer recht langeweilig, vielleicht gehts anderen auch so. Die meißten bereits hochgeladenen Maps hab ich schon durch. Würde mich sehr freuen :))))

Lg bridgettuttle
Gespeichert