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 2286 287 288339 340 Nächste Zum Anfang

alt Re: Scripting - Fragen/Probleme

quester
User Off Offline

Zitieren
Du brauchst nicht $tmp verwenden, $id gibt bereits die id des erstellten objects wieder. Du solltest stattdessen schreiben:
1
free "object",$id;
Da du beim $id object $c_id sofort wieder löscht, kann es auch nicht abgefragt werden.

alt Re: Scripting - Fragen/Probleme

Diego Dela Vega
User Off Offline

Zitieren
quester hat geschrieben
Du brauchst nicht $tmp verwenden, $id gibt bereits die id des erstellten objects wieder. Du solltest stattdessen schreiben:
Code:
free "object",$id;


ja schöner versuch, hab ich leider aber schon probiert.
komischerweise funktionieren die ganzen befehle nicht in dem fall. link state hat auch keine auswirkung

und das mit $yaw ist n schönheitsfehler, ich benutz halt normal ne variable, um das schnell ändern zu können

alt Re: Scripting - Fragen/Probleme

Stranded Guy99
User Off Offline

Zitieren
hallöchen!
Ich bin noch ganz neu in Stranded II und wollte mal ein eigenes Abenteuer machen.

Ich wollte am Anfang eine Art Errinerungsgespräch per Diary machen.

Die Errinerungen sollen nach und nach kommen.

Habe also ein "Uff"- und "Ohhh" gespräch beim Start der Map gemacht.

Wie mache ich jetzt,dass der Diary-Eintrag nach 1 Minute erweitert wird?

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Sagen wir mal, dass du den ersten Text des Diarys in Textcontainer 1 auf der Map gespeichert hast:

[code]on:start
     {
     diary "öhm...", 1;
     timer 0, 60000, 1, "tagebuch";
     }

on:tagebuch
     {
     modifyentry "öhm...", 2; //aus Textcontainer 2 wird jetzt der Text geladen...
     // ... der den alten Text ersetzt.
     // Du musst natürlich bei "öhm..." deinen eigenen...
     // Tagebuchtitel eintragen.
     }

alt Re: Scripting - Fragen/Probleme

Diego Dela Vega
User Off Offline

Zitieren
sehr kurze zwischenfrage:

wird die timerzeit beim sleep event weitergezählt, oder unterbrochen?


edit:
hat sich erledigt ...
1. spielt für das, was ich grad mache keine rolle ...
2. hat sich selbst beantwortet mit "wird unterbrochen"
1× editiert, zuletzt 15.08.09 03:14:34

alt Scripting hilfe

Liberty Fighter95
User Off Offline

Zitieren
hi leute ich wollt mal fragen ob ihr mir bei folgenden Problemen übers Scripten helfen könnt:

1.Ich hab mir im wiki das Stranded 2 scripting toturial angeschaut und das mit den Tagebucheinträgen und Global scripting funktioniert ja schon ganz gut. Aber beim dialog script habe ich ein Problem nämlich will ich, dass wenn mein Held beim 2.mal die Einheit anklickt, ein anderer Dialog entsteht, doch wo muss ich den folgenden Code in meinen Dialog einbauen:

on:start{
$dialog=1;
}
on:use{
if ($dialog==1) {
dialogue "hallo", 2;
$dialog=2;
}
if ($dialog==2) {
dialogue "page3", 2;
}
}

2.Ich will dass der Held einen Auftrag von einer Einheit bekommt und wenn er den erfüllt hat, soll er Geld ua. anderes Zeugs bekommen.. pls helf mir

Ach und ist eigentlich die Scriptsprache von S2 die gleiche wie von Blitz Basic???

alt Re: Scripting - Fragen/Probleme

quester
User Off Offline

Zitieren
Liberty Fighter95 hat geschrieben
hi leute ich wollt mal fragen ob ihr mir bei folgenden Problemen übers Scripten helfen könnt:

1.Ich hab mir im wiki das Stranded 2 scripting toturial angeschaut und das mit den Tagebucheinträgen und Global scripting funktioniert ja schon ganz gut. Aber beim dialog script habe ich ein Problem nämlich will ich, dass wenn mein Held beim 2.mal die Einheit anklickt, ein anderer Dialog entsteht, doch wo muss ich den folgenden Code in meinen Dialog einbauen:

on:start{
$dialog=1;
}
on:use{
if ($dialog==1) {
dialogue "hallo", 2;
$dialog=2;
}
if ($dialog==2) {
dialogue "page3", 2;
}
}

Du must den Code nicht in den Dialog einbauen.
Kopiere ihn einfach in das Scriptfenster der Einheit.

Liberty Fighter95 hat geschrieben
2.Ich will dass der Held einen Auftrag von einer Einheit bekommt und wenn er den erfüllt hat, soll er Geld ua. anderes Zeugs bekommen.. pls helf mir

Ich würde hier vorschlagen, dass er in den Dialogen den Auftrag erklärt bekommt. Wenn er dann die Unit anspricht fragst du beim on:use event die Bedingungen ab.

Liberty Fighter95 hat geschrieben
Ach und ist eigentlich die Scriptsprache von S2 die gleiche wie von Blitz Basic???

Nein, die Stranded II Scriptsprache erinnert mich mehr an Java als an Blitz.

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Üben, Testen, die Scripts andere Maps anschauen usw.
Allerdings am Anfang kann man sich auch das Tutorial durchlesen: Hier

Die Sprache hat Ahnlichkeiten mit PHP.

Lass mich mal raten: Wenn du das Script ausführst wird dir sofort der zweite Dialog angezeigt, anstatt erst der erste und erst dann der zweite. richtig?
Ich zeige dir mal, was der Parser (also dein Computer) macht/denkt, wenn er sich dein Script "durchliest" und verarbeitet.
Das fette sind die Kommentare vom Parser:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
on:start	[b]// Arbeite Script beim Start ab.[/b]
	{ 
	$dialog=1;	[b]// Setzte die Variable $dialog auf 1.[/b]
	} 

on:use	[b]//Wenn die Unit benutzt wird.[/b]
	{ 
	if ($dialog==1)	[b]// Ist die Variable $dialog = 1?[/b]
		{	[b]// Wenn ja:[/b]
		dialogue "hallo", 2;	[b]// Gebe Dialog "hallo" aus.[/b]
		$dialog=2;	[b]// Setzte die Variable $dialog auf 2.[/b]
		} 
	if ($dialog==2)	[b]// Ist die Variable $dialog = 2?[/b]
		{	[b]// Wenn ja:[/b]
		dialogue "page3", 2;	[b]// Gebe Dialog "page3" aus.[/b]
		} 
	}	[b]// Ende[/b]
Das Problem ist jetzt, dass der Computer zuerst Dialog "hallo" ausgibt, und dann einfach das Script weiter abarbeitet. Da die Variable direkt danach auf 2 gesetzt wird, ist auch die zweite If-Abfrage richtig. Dadurch wird der erste Dialog wieder geschlossen und der Dialog "page3" aufgerufen.

Abhilfe schaffen dir da zwei Alternativen, ich bevorzuge die erste, wobei man besser die zweite nehmen sollte:
1.
1
2
3
4
5
6
7
8
9
10
11
12
on:use
	{ 
	if ($dialog==2)	[b]// Hier wird zuerst überprüft, ob $dialog = 2 ist...[/b]
		{
		dialogue "page3", 2;
		}
	if ($dialog==1)
		{
		dialogue "hallo", 2;
		$dialog=2;	[b]// ...und erst dann $dialog auf 2 gesetzt.[/b]
		} 
	}

2.
1
2
3
4
5
6
7
8
9
10
11
12
on:use
	{ 
	if ($dialog==1)
		{
		dialogue "hallo", 2;
		$dialog=2;
		} 
	[i]elseif[/i] ($dialog==2)	[b]// Diese Abfrage wird nicht mehr ausgeführt, wenn...[/b]
		{	[b]// ...bereits die andere richtig war.[/b]
		dialogue "page3", 2;
		}
	}

alt Re: Scripting - Fragen/Probleme

Liberty Fighter95
User Off Offline

Zitieren
Also ich hab das jetzt mal so gemacht:

on:start {
ai_stay "self";
$dialog=1;
}
on:use {
if ($dialog==1) {
dialogue "hallo", 2;
$dialog=2;
dialogue "hallo", 2;
}

if ($dialog==2) {
dialogue "page3", 2;
}
}






aber es geht nicht, da wirt immer der letzte angezeigt, wie du geschrieben hast...

alt Re: Scripting - Fragen/Probleme

dragoana
User Off Offline

Zitieren
Du musst das ganze umdrehen, sonst sind beide IF-fälle wahr. Denn in der ersten IF-Klammer wird $dialog auf 2 gesetzt, somit ist die danach folgende Klammer ebenfalls wahr.
1
2
3
4
5
6
7
8
9
10
on:use {
	if ($dialog==2) { 
		dialogue "page3", 2; 
	} 
	if ($dialog==1) { 
		dialogue "hallo", 2; 
		$dialog=2;
		dialogue "hallo", 2;
	} 
}

alt Re: Scripting - Fragen/Probleme

Velkorn
User Off Offline

Zitieren
aletes hat geschrieben
aber warum gibt es 2 Befehle, die genau das selbe machen?

addscript überschreibt das script, welches sich in der unit befindet und ersetzt es durch das Neue.
extendscript hängt nur das neue script an das Alte an.

alt Re: Scripting - Fragen/Probleme

Liberty Fighter95
User Off Offline

Zitieren
Schnapsidee hat geschrieben
Du musst das ganze umdrehen, sonst sind beide IF-fälle wahr. Denn in der ersten IF-Klammer wird $dialog auf 2 gesetzt, somit ist die danach folgende Klammer ebenfalls wahr.
1
2
3
4
5
6
7
8
9
10
on:use {
	if ($dialog==2) { 
		dialogue "page3", 2; 
	} 
	if ($dialog==1) { 
		dialogue "hallo", 2; 
		$dialog=2;
		dialogue "hallo", 2;
	} 
}


ja aber leider sagt er dan garn nichts, sondern rennt wild herum
ja ich weiß das man steyself zeugs reingeben muss, aber darum geht es ja nicht!!!

alt Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Zitieren
Du solltest das ganze Script ja auch nicht ohne Veränderungen übernehmen.
Das Problem des herumrennens war das Fehlen des ai_stay, das Problem, dass überhaupt nichts gesagt wurde war das fehlende $dialog=1;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
on:start
	{ 
	ai_stay "self"; 
	$dialog=1; 
	} 

on:use
	{ 
	if ($dialog==2)
		{ 
		dialogue "page3", 2;
		$dialog=3;
		} 
	if ($dialog==1)
		{ 
		dialogue "hallo", 2; 
		$dialog=2;
		}
	}

alt Re: Scripting - Fragen/Probleme

Liberty Fighter95
User Off Offline

Zitieren
Nova hat geschrieben
Du solltest das ganze Script ja auch nicht ohne Veränderungen übernehmen.
Das Problem des herumrennens war das Fehlen des ai_stay, das Problem, dass überhaupt nichts gesagt wurde war das fehlende $dialog=1;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
on:start
	{ 
	ai_stay "self"; 
	$dialog=1; 
	} 

on:use
	{ 
	if ($dialog==2)
		{ 
		dialogue "page3", 2;
		$dialog=3;
		} 
	if ($dialog==1)
		{ 
		dialogue "hallo", 2; 
		$dialog=2;
		}
	}


danke jetzt gehts

alt Re: Scripting - Fragen/Probleme

Nothing2Lose
User Off Offline

Zitieren
hi, bin im Moment dabei ein Zeitskript zu erstellen um 4monate á 30 Tage hinzubekommen... Leider bin ich einwenig an meine Grenze gestoßen(was daran liegen könnte das ich mich seit Gestern erst mit S2 Scripts beschäftige).
Das so einiges falsch ist kann ich mir denken... aber was?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
on:start {
$mounthday=1
$mouth=1
$year=1
	}
on:changeday {
if (day=>31)
	$mounthday=1
	$mouth+1
if ($mounthday=>31);
	$mounth+1
	$mounthday=1
if ($mounth=>5);
	$year+1
	$mounth=1
	}

EDIT: Altes Prob gelöst (oh mein Gott war das crap^^)
Neues Prob. : zum Tageswechsel (event:changeday)
commt eine fehlermeldung in der console, warum?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
n:start {
$mounthday=1;
$mounth=1;
$year=1;
}
on:changeday {
$mounthday+1;
if ($mounthday=>31); {
	$mounth+1
	$mounthday=1
	}
if ($mounth=>5); {
	$year+1
	$mounth=1
	}
}
2× editiert, zuletzt 25.08.09 02:51:06
Zum Anfang Vorherige 1 2286 287 288339 340 Nächste Zum Anfang
Einloggen, um zu antworten Scripts-ÜbersichtStranded II-ÜbersichtForenübersicht