Forum

> > Stranded II > Scripts > Scripting - Fragen/Probleme
Forums overviewStranded II overview Scripts overviewLog in to reply

German Scripting - Fragen/Probleme

6,780 replies
Page
To the start Previous 1 2185 186 187339 340 Next To the start

old Re: Scripting - Fragen/Probleme

dragoana
User Off Offline

Quote
Versuch es mit dem Script:
1
2
3
4
5
6
7
8
9
10
11
on:start {
	timer "object", 1, 500, 0;
}
on:timer {
	scantarget(1000);
	if((targetclass()==1) && (targetid()==1)) {
		msg "gefunden";			
	} else { 
		msg "nicht gefunden";
	} 
}

old Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Quote
Schnapsidee, ich danke dir!

Edit: Wie kann ich nun self einbauen, damit ich mehrere Objekte diesen Script aus einer Datei laden können, der ohne extra Veränderungen funktioniert?

[n]Edit2:[/b] Noch ein Problem: Jetzt funktioniert es nur beim Felsen mit der ID 1 in der Map. Aber ich hätt gerne, dass bei ALLEN Felsen mit der ID 1 der Script audgeführt wird. :S Exestiert schon ein Objekt auf der Map mit der ID 1, geht gar nichts mehr.
edited 3×, last 12.07.08 03:12:43 pm

old Re: Scripting - Fragen/Probleme

dragoana
User Off Offline

Quote
Das kannst du ja mit s2 cmd def_extend an die Definition der Felsen anhängen. Sollte so aussehen, falls ich verstanden hatte was du meinst
1
2
3
4
5
6
7
8
9
10
11
on:start {
	timer "self", 500, 0; 
} 
on:timer { 
	scantarget(1000); 
	if((targetclass()==currentclass()) && (targetid()==currentid())) { 
		[i]Script[/i]	 
	  } else { 
		[i]Script[/i]	
	  } 
}

Edit: ok wenn du es mit def_extend machst:
führst du das beim event on:start aus, werden die Timer bei den Felsen nicht gestartet, weil dann bereits on:start vorbei ist. Also sollte danach noch ein Event aufgerufen werden:
Global Map Script:
1
2
3
on:start { 
def_extend "object",1,Textcontainer-ID;
event "starttimers","global";
In dem Textcontainer:
1
2
3
4
on:starttimers { 
	  timer "self", 500, 0; 
} 
on:timer { ... obiges script...}
edited 1×, last 12.07.08 03:20:20 pm

old Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Quote
Ein weiteres Mal danke ich dir!

Jetzt nurnoch ein Schönheitsfehler:
Im Script ist jetzt das Event "use" drin. Aber ich kann den Felsen schon benutzen ohne den Felsen im Zielkreuz zu haben. Wenn man das noch ändern könnte, wär alles perfekt.

old Re: Scripting - Fragen/Probleme

dragoana
User Off Offline

Quote
Schön wenn das geholfen hat;)
Ich glaub man kann das mit dem Use nicht ändern. Aber wenn man den Felsen benutzen will, wird der Spieler eher direkt auf den Felsen zielen als haarscharf daran vorbei^^

old Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Quote
Jetzt vorerst das letzte.
1
2
3
on:load {
	def_extend "target_script.txt", sys\scripts;
}
Wie muss der Befehl aussehen, damit dieser funktioniert?
edited 1×, last 12.07.08 03:35:46 pm

old Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Quote
Hat mir nicht geholfen. Was soll ich denn unter "Klasse" und ID eingeben, wenn ich eine Textdatei lade?

Edit:
1
2
3
on:load {
	def_extend "self", self, "target_script.s2s";		
}
S2 has written
>ERROR: Unable to load externel script 'target_color.s2s'

>SCRIPT ERROR:
>'target_script.s2s' is no valid text source
>Use either an info or a text source

>Script: Object 2 (Palme type 1)
>Event: load
>Row: 3
>Col: 44
>Script: def_extend "self", self, "target_script.s2s";
edited 2×, last 12.07.08 03:53:23 pm

old Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Quote
Der Befehl erweitert die Defintion eines Objekts. Und natürlich musst auch auch das Objekt angeben dessen Definition erweitert werden soll. Woher soll SII sonst wissen was du überhaupt erweitern willst?
Dafür die Klasse und die ID (Achtung: hier die ID aus der Definition angeben!). Der letzte Parameter gibt dann die Datei an welche das Script enthält.

Wo das Script steht ist egal. Bei welchem Objekt die Definition erweitert wird, wird nur über die Parameter festgelegt!

Außerdem kann ein Befehl nicht funktionieren, wenn du einfach die Parameter aus der Beschreibung ignorierst und andere benutzt so wie es dir passt

old Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Quote
Ja, der Fehler war, dass er ein 2. self benötigte. Daher meine Unsicherheit, da mir gesagt wurde, dass ein "self" bereits reicht. Das er die zu erweiternen Definition kennen muss ist mir klar.

Aber leider will er meine txt nicht lesen. Auch nicht als s2s Datei.

old Re: Scripting - Fragen/Probleme

dragoana
User Off Offline

Quote
1
2
3
on:load { 
def_extend "object",TYP,"sys/scripts/target_script.txt"; 
}
Bei TYP musst du noch die Zahl reinschreiben, die du siehst, wenn du mit der Maus über dem Felsauswahlbutton bleibst, mit dem du im Editor links auswählen kannst was du platzieren willst.

Und ich hab gerade gemerkt, dass on:start selbst auch dann nicht bei den Felsen ausgeführt wird, wenn man def_extend schon bei on:load ausführt.

old Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Quote
Schnapsidee has written
Und ich hab gerade gemerkt, dass on:start selbst auch dann nicht bei den Felsen ausgeführt wird, wenn man def_extend schon bei on:load ausführt.

Ja, ist mir gerade auch aufgefallen.
1
2
3
4
5
on:load {
	$class=currentclass();
	$id=currentid();
	def_extend "$class", $id, "sys/scripts/target_script.s2s";		
}
Anscheinend funktioniert def_extend. Aber wie Schnapsidee schon gesagt hat, wird der enthaltene Script nicht ausgeführt.

old Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Quote
wie eben schon gesagt sind 2 self falsch. und zwar IMMER. der id parameter fällt weg wenn du bei klasse "self" eingibst. weil mit dem "self" weiß ja SII schon, was du meinst!
außerdem funktioniert das "self" auch nicht bei jeder "Klasse",ID-Parameter-Kombination. bei den definitions-befehlen musst du z.B. sehr aufpassen, da die Definitions-ID erwartet wird, nicht die ID des Objekts auf der Map! Also darfst du bei dem Befehl kein "self" benutzen!

nochwas grundlegendes: ob du anführungszeichen um etwas machen musst oder nicht hängt einzig allein davon ab, was es ist:
Zahlen: KEINE anführungszeichen
Texte: Anführungszeichen
also 123, NICHT "123"
und "self", NICHT self
vermutlich ist hier die sache mit den anführungszeichen in der befehlsreferenz etwas verwirrend. sie zeigen nur, dass man einen text angeben KANN bzw. dass NORMALERWEISE eine zahl (ohne anführungszeichen) erwartet wird. OB man die anführungszeichen setzt oder nicht hängt aber wie gesagt ausschließlich davon ab, was man tatsächlich hinschreibt. zahl oder text.

edit:
wegen dem extend problem und on:start nicht ausführen (was eine ziemlich heikle sache ist):
dafür gibt es das event on:preload (habe ich blöderweise bei s2 cmd on nicht aufgeführt...). ich glaube damit könnte es gehen. aber du müsstest dein script mit def_extend dann auch in das map script schreiben, da das event preload vor dem laden der objekte (und ihrer scripts) ausgeführt wird.
edited 3×, last 12.07.08 04:18:10 pm

old Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Quote
Vielen Dank für die kurze Erklärung, DC.

Weiterhin funktioniert der obige Script nicht.

Edit: So richtig?
1
2
3
4
5
on:preload {
	$class=currentclass();
	$id=currentid();
	def_extend $class, $id, "sys/scripts/target_color.s2s";		
}
Wenn ja, dann geht er nicht im Script EINER Palme auf der Map.

old Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Quote
DC has written
bei den definitions-befehlen musst du z.B. sehr aufpassen, da die Definitions-ID erwartet wird, nicht die ID des Objekts auf der Map! Also darfst du bei dem Befehl kein "self" benutzen!

• definitions id / typ id: die ID die ein objekt in den inf dateien bekommt. jeder objektTYP hat eine eigene ID

• (map) id: die id die ein objekt auf der map hat. jedes objekt auf der map hat eine einzigartige id die kein anderes objekt seiner klasse hat.

dazwischen muss man unbedingt unterscheiden. da du die definition verändern willst und diese mit dem objektTYPEN verbunden ist und nicht mit einem einzelnen objekt, musst du wie gesagt die defintions id bzw. typ id aus der inf datei nehmen, oder wie schnapsidee sagte die id die angezeigt wird, wenn man im editor bei der objektliste auf ein objekt zeigt.

"self" oder currentid() liefern NICHT die typ/definitions id! du kannst sie also in diesem fall nicht benutzen.

Außerdem sollst du das script in das MAP SCRIPT schreiben wenn du preload benutzt. und im mapscript können die current-befehle überhaupt nicht funktionieren!

old Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Quote
Okay, alles läuft. Leider darf ich die ganze Sache verwerfen, da S2 bei schon mehr als 10 Objekten wegen dem timer laggt. Schade eingentlich.

old Re: Scripting - Fragen/Probleme

Gela
User Off Offline

Quote
davidsung has written
Okay, alles läuft. Leider darf ich die ganze Sache verwerfen, da S2 bei schon mehr als 10 Objekten wegen dem timer laggt. Schade eingentlich.


Was heißt das? S2 "laggt"? Mein Englisch ist nicht das Beste, sorry

Gruß Gela

old Re: Scripting - Fragen/Probleme

Gela
User Off Offline

Quote
davidsung has written
lag > die Verzögerung
to lag > verzögern
eingedeutscht (Umgangssprachlich) laggen


ah, danke, wusste nicht, dass "laggen" eingedeutscht ist - muss mal im Duden nachschauen ...

Danke für die Info

LG Gela

old Re: Scripting - Fragen/Probleme

Aniza
User Off Offline

Quote
Gela has written
Kann ich einen Spieler langsamer machen, ohne dass er gleich einen Beinbruch hat oder dass oben eine Verletzung angezeigt wird?
Und natürlich auch schneller, ohne dass er einen Trank der Hast getrunken hätte?
Edit: player_speed habe ich gesehen, aber das funktionierte irgendwie nicht...


Doch, es geht (ich habe es mal mit schneller probiert), wenn man es so macht:

Ins globale Script schreibt man:

1
2
3
on:start {
$player_speed=2.5;
}

Das ist die Normalgeschwindigkeit.

Zum Event1 (ich habe 2 Gebietstrigger genommen) kommt:

1
2
3
4
5
6
on:trigger {
	 if ($player_speed<10) {
	 $player_speed+=7.5;
	 player_speed $player_speed; 
  }
}

Jetzt rast der Spieler durch die Gegend. Die Werte sind natürlich austauschbar, beispielsweise statt 10 eine 4 und statt 8 eine 2. Habe sie hier nur so hoch angesetzt, damit man beim Testen den Unterschied auch sieht.

Im 2.Trigger (beispielsweise am Ziel) erhält der Spieler seine Normalgeschwindigzeit zurück:
1
2
3
4
5
6
on:trigger {
	 if ($player_speed>2.5) {
	 $player_speed-=7.5;
	 player_speed $player_speed; 
  }
}

So kann man ihn auch langsamer machen, etwa mit:
if ($player_speed>2) {$player_speed-=2.0; player_speed $player_speed; }

Liebe Grüße Aniza

Edit: Werte korrigiert.
edited 3×, last 12.07.08 06:54:35 pm
To the start Previous 1 2185 186 187339 340 Next To the start
Log in to reply Scripts overviewStranded II overviewForums overview