German Scripting - Fragen/Probleme

6,780 replies
Goto Page
To the start Previous 1 2 ... 200 201 202 ... 339 340 Next To the start
31.07.08 08:28:57 pm
Up
humer
User
Offline Off
du kannst s2 cmd addscript oder s2 cmd extendscript benutzen um ein script zu verändern.
31.07.08 08:45:21 pm
Up
Nekros
User
Offline Off
Gast has written:
Wenn man den befehl "freescript" benutzt, kann man dann irgendwie machen, dass es nur einen Teil des Scripts löscht, und nicht alles?


Hallo Gast,

meines Wissens nach, geht das nicht, aber ich würde an deiner Stelle einfach eine Variable benutzten oder den Befehl skip oder skipevent, damit kann man entweder den gesamten Rest des Scripts übersprigen oder nur das eine Event.
Also mit if würde das dann ca. so aussehen:
Code:
1
2
3
4
5
6
7
8
9
10
on:hit {      //deinscript
     ...
     ...
     if ($deinevariable==0) {      //Der Teil wird übersprungen
          ...
          ...
     }     //hier gehts weiter
     ...
     ...
}

statt freescript nimmste dann einfach $deinevariable++;
Und das mit der Mauer macht man denk ich so
Code:
1
2
$waffe = getplayerweapon;
if ($waffe==0) {damage "unit", 1, X}

X ist der betrag den du an Lebensenergie abziehen möchtest.
Du kannst das Script in jede Mauer schreiben, aber wahrscheinlich gibt es auch n globales Event wenn der Spiele irgendetwas trifft ich kenns zumindest noch nicht.

Beide Scripts sind noch ungetestet
Wer anderen eine Bratwurst brät, hat ein Bratwurstbratgerät.IMG:http://s5.directupload.net/images/user/080719/temp/e5g8ca2b.jpg
01.08.08 10:37:21 am
Up
Cryp18Struct
User
Offline Off
Nekros has written:
Code:
1
2
$waffe = getplayerweapon; 
if ($waffe==0) {damage "unit", 1, X}


Hier fehlen die Klammern hinter s2 cmd getplayerweapon.

@Gast
Nicht direkt, aber kannst du das Script mit s2 cmd freescript löschen und danach mit dem bereits erwähnten s2 cmd extendscript oder s2 cmd addscript ein anderes Script anhängen, um diesen Effekt zu erzielen.
01.08.08 11:30:49 am
Up
Gela
User
Offline Off
Hallo,
ich wüsste gern, ob es eine Möglichkeit gibt, mittels eines Scriptes herauszufinden, ob der Spieler etwas im Rucksack hat.

Ich möchte gern etwas aus dem Rucksack löschen, und dann eine Meldung ausgeben - was aber nur Sinn macht, wenn der Spieler überhaupt etwas im Rucksack hat - und zwar ganz egal, was es ist.

Also nicht einzelne Item-Abfragen wie: if playergotitem xxx, sondern wirklich global.

Vielleicht über eine Variable oder über Zählung, oder wie auch immer....

Geht das? Oder hat jemand eine Idee, wie man es hinbasteln könnte?

Wäre für Tipps dankbar - Lieber Gruß Gela
"Feigling!" schrie Potter zu Severus Snape. Jahre später zu seinem Sohn: "Albus Severus. Du bist nach 2 Schulleitern von Hogwarts benannt. Einer davon war ein Slytherin, und er war wahrscheinlich der mutigste Mann, den ich je kannte!" Expelliarmus!
01.08.08 11:38:12 am
Up
Nova
User
Offline Off
Versteh ich jetzt nicht ganz. Wenn du gucken möchtest ob der Spieler ein spezielles Item im Rucksack hat ist playergotitem doch optimal.


Wenn du wissen willst ob der Spieler überhaupt irgendein Item trägt ist s2 cmd count_stored mit "unit" und 1 zu gebrauchen.
Hexenverbrennung, Inquisition, Kreuzzüge... Wir wissen, wie man feiert! - Ihre Kirche
01.08.08 11:53:58 am
Up
Gela
User
Offline Off
Nova has written:
Versteh ich jetzt nicht ganz. Wenn du gucken möchtest ob der Spieler ein spezielles Item im Rucksack hat ist playergotitem doch optimal.


Wenn du wissen willst ob der Spieler überhaupt irgendein Item trägt ist s2 cmd count_stored mit "unit" und 1 zu gebrauchen.


zu 1: Nova, ich sagte ja, ich will eben kein spezielles Item nachschauen.

zu 2: Aber s2 cmd count_stored scheint gut zu sein - wenn du jetzt noch nett wärest, mir zu sagen, wie ich es schreiben muss.
Ich habe count_stored noch nie benutzt, und wie man es anwendet steht in der Referenz ja leider auch nicht

Die Bedingung muss sein: Wenn der Spieler etwas im Rucksack hat, egal was es ist, sollen alle Items im Rucksack gelöscht werden.

Kannst du mir dazu die richtige Syntax des Scriptes geben?
Du weißt ja, ich bin Anfängerin...

Lieber Gruß - Gela
"Feigling!" schrie Potter zu Severus Snape. Jahre später zu seinem Sohn: "Albus Severus. Du bist nach 2 Schulleitern von Hogwarts benannt. Einer davon war ein Slytherin, und er war wahrscheinlich der mutigste Mann, den ich je kannte!" Expelliarmus!
01.08.08 11:59:30 am
Up
Cryp18Struct
User
Offline Off
Code:
1
2
3
4
5
if( count_stored( "unit", 1 ) > 0 ){
     // Hat der Spieler ( unit 1 ) mehr als 0 Items im Inventar ?
     freestored "unit", 1, "all";
     // Alle Items die der Spieler eingelagert hat löschen
}


Muss natürlich noch in ein passendes Event gepackt werden.

Lies dir am besten die Befehlsreferenz duch, die meisten Befehle sind recht gut erklärt.
01.08.08 12:05:16 pm
Up
Gela
User
Offline Off
Cryp18Struct has written:
Code:
1
2
3
4
5
if( count_stored( "unit", 1 ) > 0 ){
     // Hat der Spieler ( unit 1 ) mehr als 0 Items im Inventar ?
     freestored "unit", 1, "all";
     // Alle Items die der Spieler eingelagert hat löschen
}


Muss natürlich noch in ein passendes Event gepackt werden.

Lies dir am besten die Befehlsreferenz duch, die meisten Befehle sind recht gut erklärt.


Danke dir Cryp - die Befehle mögen manchmal halbwegs verständlich sein .. - aber meine Kenntnisse, sie in ein funtionierendes Script zu verwandeln gehen eher gegen "null"

Noch mal: danke sehr, ich werde es ausprobieren, und hoffe, es klappt

Lieber Gruß - Gela

Edit: es klappt - super - danke sehr - LG Gela
edited 1×, last 01.08.08 12:21:18 pm
"Feigling!" schrie Potter zu Severus Snape. Jahre später zu seinem Sohn: "Albus Severus. Du bist nach 2 Schulleitern von Hogwarts benannt. Einer davon war ein Slytherin, und er war wahrscheinlich der mutigste Mann, den ich je kannte!" Expelliarmus!
01.08.08 12:10:33 pm
Up
Guest
tut mir leid, wenn ich mich zu dumm anstelle, aber ich habs nochmal vesucht und jetzt zeigt er immer nur an, das die kiste leer ist:

Code:
1
2
3
4
5
6
7
8
9
on:use {
       $zeugs==1;
       if ($zeugs==1) { 
       find 100;
       $zeugs--1;
       }else{          
       msg "leer" [,3];
       } 
}
01.08.08 12:16:49 pm
Up
ohaz
User
Offline Off
$zeugs==1;

da ist ein = zu viel!
wenn man variablen deklariert wird nur ein = verwendet.
wenn man nachschauen will, ob eine variable einen bestimmten wert hat ==

mit deinem Skript wird nun die Variable $zeugs nie definiert, daher ist sie "", also leer.
https://ohaz.engineer - Software Engineering
01.08.08 12:18:58 pm
Up
Cryp18Struct
User
Offline Off
@Gast
Die erste Zeile ist doppelt falsch:
•     Für Variablenzuweisungen wird nur ein Gleichheitszeichen verwendet.
•     Allerding ist es auch unsinnig $zeugs an dieser Stelle auf 1 zu setzen,
      in dem Fall würde die Kiste immer als voll erkannt werden.

[edit] $zeugs--1 geht auch nicht. Entweder $zeugs-- oder $zeugs -= 1;

Parameter in eckigen klammern werden entweder komplett weggelassen oder ohne eckigen Klammern notiert.

Für die Scriptinggrundlagen: http://stranded.unrealsoftware.de/s2_scripting1.php

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
on:start{
     local $zeugs;
     $zeugs = 0;
}

on:use{
     local $zeugs;
     if( $zeugs == 1 ){
          find 100;
          $zeugs--;
     }else{
          msg "leer", 3;
     }
}

[/edit]
01.08.08 07:51:45 pm
Up
Guest
oh, dass ich "$zeugs--1" geschrieben hab, ist mir garnicht aufgefallen. ich arbeite sonst auch nicht groß mit variablen... danke auf jeden fall für dass script!
01.08.08 07:59:46 pm
Up
AdidasOFC1
BANNED
Offline Off
Gast has written:
ich arbeite sonst auch nicht groß mit variablen...

Das solltest du schleunigst ändern! Variablen sind in Stranded 2 und in allen anderen Scripting- und Programmiersprachen das wichtigste überhaupt... Ohne Variablen kannst du kein bisschen Dynamik in deine Scripts bringen und überhaupt nicht viel machen!!!11eins
Ban reason: Hijacked account /DC
02.08.08 03:53:38 pm
Up
Uglynator
User
Offline Off
Ich kapiere das nicht immer wennn ich im spiel(^ dm execute script) eingebe: setskill "Anpflanzen" 800
funzt es net was mach ich falsch (ich bin ABSOLUTER neuling in sachen scripts)
02.08.08 06:41:26 pm
Up
Nova
User
Offline Off
Das kommt weil die Skills in Englisch gespeichert werden, aber dennoch in deutsch angezeigt.

Versuchs mal so:
Code:
1
incskill "plant", [X], "Anpflanzen";

Für [X] setzt du eine Zahl ein, also in deinem Fall:
Code:
1
incskill "plant", 800, "Anpflanzen";


Ich hoffe ich konnte dir helfen.
edited 2×, last 02.08.08 07:12:18 pm
Hexenverbrennung, Inquisition, Kreuzzüge... Wir wissen, wie man feiert! - Ihre Kirche
02.08.08 07:07:29 pm
Up
Guest
ah, gut das gerade was zum thema skills gepostet wird, denn ich hab da leider auch ein problem:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
on:start {
setskill "hit" ,0, "Schlagen";
}

on:hit {
incskill "hit" ,1, "Schlagen";
$hitskill=skillvalue("hit");
if ($hitskill==2) {event "hitskillplus", "global";}
}

on:hitskillplus {
msg "Skills verbessert!",1;
play "fx_spell.wav";
player_damage 5;
}


igendwie klappt da nicht, dass ich den skill verbessere, und außerdem wüsste ich gerne, was ich machen muss, damit ich die verschiedenen Skillstufen im charaktermenü anzeigen kann (z.B.: Anplflanzen: 50 - Beerenbusch-Anpflanzer)
02.08.08 07:12:49 pm
Up
Royal Flash
User
Offline Off
bei den script

on:hit {
incskill "hit" ,1, "Schlagen";
$hitskill=skillvalue("hit");
if ($hitskill==2) {event "hitskillplus", "global";}
}
}     <= muss noch ne klammer hin wegen den if.
02.08.08 07:15:06 pm
Up
Nova
User
Offline Off
Nein, Royal Flash, Gast hat die If-Abfrage bereits in der selben Zeile beendet, daher ist das schon richtig.



Was passiert denn genau? Kriegst du eine Fehlermeldung oder wie?

Wo hast du das Script denn rein geschrieben?
Hexenverbrennung, Inquisition, Kreuzzüge... Wir wissen, wie man feiert! - Ihre Kirche
02.08.08 07:37:18 pm
Up
AdidasOFC1
BANNED
Offline Off
wahrscheinlich passiert gar nichts, weil das event "hit" gar nicht wirklich ausgelöst wird. es handelt sich nämlich um ein lokales event, d.h. es wird nur bei den geschlagenen modellen ausgelöst.
eine lösung wäre, jedem objekt, bei dem es skill-upgrades geben soll, folgende zeile anzuhängen:

on:hit {event "iskill_hit","global"; }

und dann das on:hit in deinem script zu on:iskill_hit abzuändern (so ist es auch in s2ext gemacht)


zu deinem 2. problem:
wenn du den skill im charaktermenü anklickst, wird das globale event "skill_SKILLNAME" ausgeführt.
d.h. der passende script wäre z.B.

on:skill_hit { msgbox "Skill Info","sys/skillinfos/hit.inf"; }

dementsprechend muss aber auch eine hin.inf in /sys/skillinfos liegen, die ähnlich aufgebaut ist wie die anderen dateien dort.
das !* (für * eine zahl) steht jeweils für eine schriftart. !4 ist z.b. die grüne.
Ban reason: Hijacked account /DC
02.08.08 07:40:30 pm
Up
Nova
User
Offline Off
Soweit habe ich auch schon gedacht, nur wusste ich nicht das das Script im Globalen Script, daher wollte ich nachfragen.

Kleiner Tipp: Benenne den Skill besser um, wer weiß ob es da zu Kompatibilitätsproblemen kommt, da "hit" ja öffters vom Programm benutzt wird...
Hexenverbrennung, Inquisition, Kreuzzüge... Wir wissen, wie man feiert! - Ihre Kirche
To the start Previous 1 2 ... 200 201 202 ... 339 340 Next To the start