Forum
Stranded II Scripts Scripting - Fragen/Probleme 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:
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
on:hit { 	//deinscript 	... 	... 	if ($deinevariable==0) { 	//Der Teil wird übersprungen 		... 		... 	}	//hier gehts weiter 	... 	... }
Und das mit der Mauer macht man denk ich so
1
2
2
$waffe = getplayerweapon; if ($waffe==0) {damage "unit", 1, X}
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
Nekros has written
1
2
2
$waffe = getplayerweapon; if ($waffe==0) {damage "unit", 1, X}
Hier fehlen die Klammern hinter getplayerweapon.
@Gast
Nicht direkt, aber kannst du das Script mit freescript löschen und danach mit dem bereits erwähnten extendscript oder addscript ein anderes Script anhängen, um diesen Effekt zu erzielen.
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
Wenn du wissen willst ob der Spieler überhaupt irgendein Item trägt ist count_stored mit "unit" und 1 zu gebrauchen.
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 count_stored mit "unit" und 1 zu gebrauchen.
Wenn du wissen willst ob der Spieler überhaupt irgendein Item trägt ist count_stored mit "unit" und 1 zu gebrauchen.
zu 1: Nova, ich sagte ja, ich will eben kein spezielles Item nachschauen.
zu 2: Aber 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
1
2
3
4
5
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.
Cryp18Struct has written
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.
1
2
3
4
5
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
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
on:use { 	 $zeugs==1; 	 if ($zeugs==1) { 	 find 100; 	 $zeugs--1; 	 }else{		 	 msg "leer" [,3]; 	 } }
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.
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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; 	} }
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
funzt es net was mach ich falsch (ich bin ABSOLUTER neuling in sachen scripts)
Versuchs mal so:
1
incskill "plant", [X], "Anpflanzen";
1
incskill "plant", 800, "Anpflanzen";
Ich hoffe ich konnte dir helfen.
edited 2×, last 02.08.08 07:12:18 pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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)
on:hit {
incskill "hit" ,1, "Schlagen";
$hitskill=skillvalue("hit");
if ($hitskill==2) {event "hitskillplus", "global";}
}
} <= muss noch ne klammer hin wegen den if.
Was passiert denn genau? Kriegst du eine Fehlermeldung oder wie?
Wo hast du das Script denn rein geschrieben?
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.
Kleiner Tipp: Benenne den Skill besser um, wer weiß ob es da zu Kompatibilitätsproblemen kommt, da "hit" ja öffters vom Programm benutzt wird...