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 2185 186 187339 340 Nächste Zum Anfang

alt Re: Scripting - Fragen/Probleme

dragoana
User Off Offline

Zitieren
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";
	} 
}

alt Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Zitieren
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.
3× editiert, zuletzt 12.07.08 15:12:43

alt Re: Scripting - Fragen/Probleme

dragoana
User Off Offline

Zitieren
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...}
1× editiert, zuletzt 12.07.08 15:20:20

alt Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

dragoana
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Zitieren
Jetzt vorerst das letzte.
1
2
3
on:load {
	def_extend "target_script.txt", sys\scripts;
}
Wie muss der Befehl aussehen, damit dieser funktioniert?
1× editiert, zuletzt 12.07.08 15:35:46

alt Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Zitieren
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 hat geschrieben
>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";
2× editiert, zuletzt 12.07.08 15:53:23

alt Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Zitieren
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

alt Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

dragoana
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

Zitieren
Schnapsidee hat geschrieben
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.

alt Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Zitieren
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.
3× editiert, zuletzt 12.07.08 16:18:10

alt Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

DC
Admin Off Offline

Zitieren
DC hat geschrieben
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!

alt Re: Scripting - Fragen/Probleme

davidsung
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

Gela
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

Gela
User Off Offline

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

alt Re: Scripting - Fragen/Probleme

Aniza
User Off Offline

Zitieren
Gela hat geschrieben
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.
3× editiert, zuletzt 12.07.08 18:54:35
Zum Anfang Vorherige 1 2185 186 187339 340 Nächste Zum Anfang
Einloggen, um zu antworten Scripts-ÜbersichtStranded II-ÜbersichtForenübersicht