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 2286 287 288339 340 Next To the start

old Re: Scripting - Fragen/Probleme

quester
User Off Offline

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

old Re: Scripting - Fragen/Probleme

Diego Dela Vega
User Off Offline

Quote
quester has written
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

old Re: Scripting - Fragen/Probleme

Stranded Guy99
User Off Offline

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

old Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Quote
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.
     }

old Re: Scripting - Fragen/Probleme

Diego Dela Vega
User Off Offline

Quote
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"
edited 1×, last 15.08.09 03:14:34 am

old Scripting hilfe

Liberty Fighter95
User Off Offline

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

old Re: Scripting - Fragen/Probleme

quester
User Off Offline

Quote
Liberty Fighter95 has written
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 has written
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 has written
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.

old Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Quote
Ü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;
		}
	}

old Re: Scripting - Fragen/Probleme

Liberty Fighter95
User Off Offline

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

old Re: Scripting - Fragen/Probleme

dragoana
User Off Offline

Quote
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;
	} 
}

old Re: Scripting - Fragen/Probleme

Velkorn
User Off Offline

Quote
aletes has written
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.

old Re: Scripting - Fragen/Probleme

Liberty Fighter95
User Off Offline

Quote
Schnapsidee has written
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!!!

old Re: Scripting - Fragen/Probleme

Nova
User Off Offline

Quote
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;
		}
	}

old Re: Scripting - Fragen/Probleme

Liberty Fighter95
User Off Offline

Quote
Nova has written
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

old Re: Scripting - Fragen/Probleme

Nothing2Lose
User Off Offline

Quote
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
	}
}
edited 2×, last 25.08.09 02:51:06 am
To the start Previous 1 2286 287 288339 340 Next To the start
Log in to reply Scripts overviewStranded II overviewForums overview