Forum

> > Stranded II > Scripts > Scripting - Fragen/Probleme
ForenübersichtStranded II-Übersicht Scripts-ÜbersichtEinloggen, um zu antworten

Deutsch Scripting - Fragen/Probleme

6.780 Antworten
Seite
Zum Anfang Vorherige 1 2200 201 202339 340 Nächste Zum Anfang

alt Re: Scripting - Fragen/Probleme

Nekros
User Off Offline

Zitieren
Gast hat geschrieben
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
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
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

alt Items in Rucksack abfragen

Gela
User Off Offline

Zitieren
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

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

Gela
User Off Offline

Zitieren
Nova hat geschrieben
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

alt Re: Scripting - Fragen/Probleme

Cryp18Struct
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

Gela
User Off Offline

Zitieren
Cryp18Struct hat geschrieben
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
1× editiert, zuletzt 01.08.08 12:21:18

alt Re: Scripting - Fragen/Probleme

Gast

Zitieren
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:

1
2
3
4
5
6
7
8
9
on:use {
	  $zeugs==1;
	  if ($zeugs==1) { 
	  find 100;
	  $zeugs--1;
	  }else{		
	  msg "leer" [,3];
	  } 
}

alt Re: Scripting - Fragen/Probleme

ohaz
User Off Offline

Zitieren
$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.

alt Re: Scripting - Fragen/Probleme

Cryp18Struct
User Off Offline

Zitieren
@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

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]

alt Re: Scripting - Fragen/Probleme

Gast

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

alt Re: Scripting - Fragen/Probleme

AdidasOFC1
BANNED Off Offline

Zitieren
Gast hat geschrieben
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

alt Re: Scripting - Fragen/Probleme

Uglynator
User Off Offline

Zitieren
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)

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Das kommt weil die Skills in Englisch gespeichert werden, aber dennoch in deutsch angezeigt.

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

Ich hoffe ich konnte dir helfen.
2× editiert, zuletzt 02.08.08 19:12:18

alt Re: Scripting - Fragen/Probleme

Gast

Zitieren
ah, gut das gerade was zum thema skills gepostet wird, denn ich hab da leider auch ein problem:

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)

alt Re: Scripting - Fragen/Probleme

Royal Flash
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
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?

alt Re: Scripting - Fragen/Probleme

AdidasOFC1
BANNED Off Offline

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

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
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...
Zum Anfang Vorherige 1 2200 201 202339 340 Nächste Zum Anfang
Einloggen, um zu antworten Scripts-ÜbersichtStranded II-ÜbersichtForenübersicht