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 2122 123 124339 340 Next To the start

old Re: Scripting - Fragen/Probleme

Guest

Quote
Ich hab das ganze jetzt ohne on:collect gemacht. Ich glaube so langsam sollte ich euch den ganzen Script zeigen weil irgendwie funzt das Ganze nicht.

page=Beendung Quest von netter Eingeborener2
title=3 Bananen
script=start
playergotitem 14 = $gesammelteBananen;
if ($gesammelteBananen>=3) {
text=start
Danke für Bananen. Sehr lecker!!
text=end
find "50";
freestored "2", 1, 14, 3;
find "119";
find "119";
find "98";
find "98";
}
else {
text=start
Du nicht haben genug Bananen!
Bringen mir 3!
text=end
}
script=end

Das isses. Die Quest ist halt, dass der nette Eingeborene 3 Bananen haben will und einem dafür ne Angel und ein paar Köder gibt.
Bei dem freestored bin ich mir besonders unsicher.

Das Problem ist immer wenn ich dann gesagt habe
"Ja, ich habe 3 Bananen." und er zu dieser Seite im Dialog wechselt. Dann zeigt er an: "parameter must be greater than 0".

old Re: Scripting - Fragen/Probleme

Flying Lizard
User Off Offline

Quote
freestored is insoweit richtig, auser dass du um die 2 die "" wegmachen solltest.

ich seh da eig nur 2 Fehler,
1. kannste text=start/end nich in Scripts verwenden
2. is es so richtig $gesammelteBananen = playergotitem (14);

old Re: Scripting - Fragen/Probleme

Guest

Quote
Hallo an alle, ich hab noch mal ein Problem und zwar hiermit:

$gesammeltegroßePilze = playergotitem (32);

Es kommt immer die Meldung, dass ich " nicht in einer Variable verwenden darf.
Das einzige andere Mal kommt es hier vor:

elseif ($gesammeltegroßePilze >= 1) {
     freestored 2, 1, 32, 1;
     find 48;

Aber das obere wird bei der Fehlermeldung angezeigt.

Mfg, Gast

old Re: Scripting - Fragen/Probleme

Guest

Quote
Mit ss klappts, aber er zeigt jetzt ein anderes Problem an.
"Else or elseif without matching to if."
Oder so ähnlich.

Das ist der Skript wo der Fehler scheinbar passiert:

$gesammeltePilze = playergotitem (31);
$gesammeltegrossePilze = playergotitem (32);
$gesammelteBraunpilze = playergotitem (33);
$gesammelteGiftpilze = playergotitem (34);
if ($gesammeltePilze >= 1) {
     freestored 2, 1, 31, 1;
     find 48;
elseif ($gesammeltegrossePilze >= 1) {
     freestored 2, 1, 32, 1;
     find 48;
elseif ($gesammelteBraunpilze >= 1) {
     freestored 2, 1, 33, 1;
     find 48;
elseif ($gesammelteGiftpilze >= 1) {
     freestored 2, 1, 34, 1;
     find 48;

Mfg, Gast

old Re: Scripting - Fragen/Probleme

Guest

Quote
Upps, hab den Fehler selbst entdeckt,
ich hab vergessen die geschweiften Klammern wieder zu schließen...

Mfg, Gast

old Re: Scripting - Fragen/Probleme

Mr X
User Off Offline

Quote
Hallo,
ich wollte fragen ob irgendjemand ein Tutorial zum scripten von selbstgemoddelten Objekten/Units/Items hat.

Mfg, Mr X

old Re: Scripting - Fragen/Probleme

EwokChieftain
User Off Offline

Quote
Du meinst also, du hast ein fertiges Modell und willst es einbinden?
Ich glaube nicht, dass so ein Tutorial existiert.
Ich würde sagen, schau dir erstmal den Aufbau der vorhandenen Einträge in der units.inf, objects.inf und items_XY.inf an. Die sehen gar nicht so kompliziert aus.
Natürlich muss man den Kram noch hier und da einbinden, etwa kombinierbare Items in der combinations.inf.
Wenn du dann irgendwo konkret hängst, dann wende dich doch an Modder, die schon Erfahrung haben, z.B. an Bizzl. Aber das grundsätzliche erscheint mir wie gesagt ganz gut erschließbar anhand der fertigen Einträge.

old Re: Scripting - Fragen/Probleme

Mr X
User Off Offline

Quote
Ich hab das mal mit einer Waffe (Laserpistole ) ausprobiert. Mein Problem aber ist: Ich kann schießen, aber nicht treffen.
Ich hab einfach die Pistole kopiert und dann für meine Zwecke umgeschrieben. Munition hab ich auch erstellt.

Außerdem wollt ich noch fragen, ob man auch verschachtelte ifs erstellen kann:

if ($blabla < $blubber) {
if ($blubberbla == 123) {
}
}

Mfg, Mr. X
edited 1×, last 13.01.08 07:20:51 pm

old Re: Scripting - Fragen/Probleme

cRaZy AsZ
User Off Offline

Quote
Natürlich kann man die s2 cmd if verschachteln, wie bei jeder anderer Programmiersprache auch^^

Füge doch ma das Script zu der Laserpistole hier ein, damit wir alle den fehler suchen können
edited 1×, last 13.01.08 10:58:24 pm

old Re: Scripting - Fragen/Probleme

Mr X
User Off Offline

Quote
@crazy asz: Das ist meine erste Programmiersprache.

Mir ist nach dem posten hier im Forum die Möglichkeit eingefallen, dass ich einfach das Skript von der Pistole nehme und die Laserpistole noch mal skripte. Dann hats geklappt, davor war der Befehl für die Reichweite abhanden gekommen.

Nochmal zu den ifs, ich habe den Skript für das (kl.) Fleisch so geändert, dass die Chance höher ist das Fleisch nicht zu verbrennen, wenn man eine Pfanne (auch von mir) hat.
Aber es kommt immer die Fehlermeldung, dass ein Semicolon fehlt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
### Meat
id=9
name=Fleisch
group=food
icon=gfx\meat.bmp
model=gfx\meat.b3d
scale=0.15
mat=flesh
weight=500
info=ein saftiges Stück rohes Fleisch. Ich kann es braten, roh essen oder es in die Hand nehmen und wilden Tieren zuwerfen...
behaviour=throw
damage=0
speed=15
drag=1.8
rate=3000
script=start
	//Fry!
	on:use {
		$wahrscheinlichkeit = random 1, 10;	if((count_inrange("state",5,50)+count_inrange("state",4,50))>0)
		   {
			if (playergotitem 122 >= 1) {
				if ($wahrscheinlichkeit>=1)&&($wahrscheinlichkeit <= 9){
					process "Braten",1000;
					fry;
					alteritem 1,10;
				 }
				else {
					process "Braten",1500;
					msg "Mist, verbrannt!!! Reine Asche...";
					msg "Kann ich nicht mehr aufsammeln :-(";
					freestored 2, 1, 9, 1;
			             }
			}
			elseif ($wahrscheinlichkeit >= 1)&&($wahrscheinlichkeit <=4) {
				process "Braten",1000;
				fry;
				alteritem 1,10;
                 		}
			else {
				process "Braten",1500;
				msg "Mist, verbrannt!!! Reine Asche...";
				msg "Kann ich nicht mehr aufsammeln :-(";
				freestored 2, 1, 9, 1;
			     }
		}else{
			msg "Ich brauche Feuer, um das zu braten!",3;
			speech "negative";
		     }
	        }
	//Eat
	on:eat {
		process "Essen",1000;
		eat 5,20,10,0;
	}
	//Taming
	on:drop {
		ai_behavioursignal "eat","raptor",300;
	}
	on:ai_eat {
		local $eater,$var;
		$eater=ai_eater();
		if (type("unit",$eater)==2){
			$var=getlocal("unit",$eater,"tameness");
			$var+=2;
			setlocal "unit",$eater,"tameness",$var;
			if (($var>9)&&(gotstate("unit",$eater,"tame")==0)){
				addstate "unit",$eater,"tame";
				corona getx("unit",$eater),getz("unit",$eater),20,255,70,100;
				msg "Ich habe ihn gezähmt!",4;
			}
		}
	}
script=end

(stellt euch die zwinkernden Smileys als öffnende Klammern vor, die die nicht zwinkern - Beachtet sie nicht)

Wer nach meinem stundenlangen Suchen "kein" Semicolon sieht, sagt das bitte(bei kl. Fleisch das gleiche Problem).

Mfg, Mr. X

old Re: Scripting - Fragen/Probleme

cRaZy AsZ
User Off Offline

Quote
ich habe den Fehler....

1
2
3
4
5
6
7
8
9
10
11
} 
               else { 
                    process "Braten",1500; 
                    msg "Mist, verbrannt!!! Reine Asche..."; 
                    msg "Kann ich nicht mehr aufsammeln "; 
                    freestored 2, 1, 9, 1; 
             [u]   } [/u]  <---------- Da ist der Übeltäter
          }else{ 
               msg "Ich brauche Feuer, um das zu braten!",3; 
               speech "negative"; 
           }

du hast eine gschlossen Klammer zu viel gemacht, ich aheb die unterstrichen

old Re: Scripting - Fragen/Probleme

Chopii
User Off Offline

Quote
Hello!! (just kidding)

Also ich möchte bei meiner neuen Mod etwas machen(falls es möglich sein könnte) : Ich habe in sys\skillinfos\Zerstören.inf eine Datei gemacht und habe alles schon gemacht. Aber wie mache ich es im Spiel so, sodass ich, wenn ich etwas zerstöre, einen Skillpunkt bekomme. Und habe schon viele Versuche gemacht ´
z.B.: bei einem Objekt:

on:kill {
setskill "Zerstören";
}

Und als ich es (das gescriptete Object) zerstört und es war auch da (im Menü), aber als ich draufklickte, kam nicht das, was ich verlangt habe. Ich will, dass das genauso wie bei der Setup-Information ist. Aber was muss ich da tun?

lg,
Benji

PS: Probiere es schon seit 4 Tagen, sagt mir aber nicht das ich es selber machen soll.

old Re: Scripting - Fragen/Probleme

Flying Lizard
User Off Offline

Quote
@crazy Asz
so ein unsinn

@Mr X
das Problem ist dass du bei allen Befehlen mit Rückgabewerten keine Klammern um die Parameter gemacht hast, und dass du bei der dritten if-prüfung und der ersten elseif-prüfung fehlerhafte Klammersetzung hast.

@Benji
hast du dir schon die methode angeschaut die DC verwendet hat?
guck dir besonders diese Zeile an
1
on:skill_wood { msgbox "Skill Info","sys/skillinfos/wood.inf"; }
To the start Previous 1 2122 123 124339 340 Next To the start
Log in to reply Scripts overviewStranded II overviewForums overview