Forum
Stranded II Scripts Scripting - Fragen/ProblemeUnd zwar ist seit neuem ein Fehler neim Machinengewehr und Pistole.
Und zwar habe ich z.B 20 Magazine.
Und die Waffe ausgerüstet.
Da werden ja normalerweise die Magazine mit angezeigt.
Aber sie werden nicht angezeigt.
Es steht immer da "Ich sollte erst nachladen".
Das Problem war schon vor der GG da.
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
74
75
76
77
78
79
80
81
82
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
74
75
76
77
78
79
80
81
82
id=1002 name=Ammobox icon=gfx\ext\icons\ammoclip.bmp model=gfx\ext_plugin\GG-Ammo.3ds info=Muni für viele Waffen scale=1000 weight=150 id=1003 name=Gatling icon=gfx\ext_plugin\gatling.bmp group=ext,weapon model=gfx\ext_plugin\gatling.3ds scale=1000 behaviour=gatlinggun range=20000 mat=metal weight=4900 info=Die Waffe ist so schnell man sieht es kaum ! health=1500 healthchange=0 damage=3 rate=1 #param=damage,3 param=isfirearm,1 param=rate,2000 param=ammoclip,1002 param=ammotype,1004 param=ammoamount,500 script=start 	on:attack1 { 		if (gety("unit",1)<-15) { 			speech "negative"; 			skipevent; 			skip; 		} 		//Waffe geladen? 		$ammo=getlocal("unit",1,"reloaded1003"); 		if ($ammo>0) { 			$ammo--; 			setlocal "unit",1,"reloaded1003",$ammo; 			play "pistol.wav",1,0,44100; 			local $pitch; 			$pitch=getpitch("unit",1); 			if ($pitch>-80) { 				setrot "unit",1,($pitch-1),"self","self"; 			} 		} else { 			msg "Ich sollte erstmal nachladen!",3; 			skipevent; 		} 	} 	//ggf. nachladen 	if (($s2g_firearms_automatic==1)&&($ammo==0)) { 		event "reload1","unit",1; 	} 	on:impact { 		$tmp=impact_class(); 		$tmp2=impact_id(); 		//+16 Bonus Damage on Flesh 		if (compare_material($tmp,$tmp2,"flesh")==1) { 			damage $tmp,$tmp2,16; 		//+48 Bonus Damage on Glass 		} elseif (compare_material($tmp,$tmp2,"glass")==1) { 			damage $tmp,$tmp2,48; 		} 		freevar $tmp; 		freevar $tmp2; 	} 	on:inhand { 		play "take_ak.wav"; 	} script=end
was ist da falsch ? es schießt nicht !
Erbitte schnellstmöglich Hilfe.... ich will bald nen Video machen
CineRuSS has written
ok hier das gnaze Script mit der Muni:
was ist da falsch ? es schießt nicht !
Erbitte schnellstmöglich Hilfe.... ich will bald nen Video machen
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
74
75
76
77
78
79
80
81
82
83
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
74
75
76
77
78
79
80
81
82
83
id=1002 name=Ammobox icon=gfx\ext\icons\ammoclip.bmp model=gfx\ext_plugin\GG-Ammo.3ds info=Muni für viele Waffen scale=1000 weight=150 id=1003 name=Gatling icon=gfx\ext_plugin\gatling.bmp group=ext,weapon model=gfx\ext_plugin\gatling.3ds scale=1000 behaviour=[b]machine[/b]gun [b]Es sollte auch ein exestierender Behavior ausgewählt werden[/b] range=20000 mat=metal weight=4900 info=Die Waffe ist so schnell man sieht es kaum ! health=1500 healthchange=0 damage=3 rate=1 #param=damage,3 param=isfirearm,1 param=rate,2000 param=ammoclip,1002 param=ammotype,1004 param=ammoamount,500 script=start 	on:attack1 { 		if (gety("unit",1)<-15) { 			speech "negative"; 			skipevent; 			skip; 		} 		//Waffe geladen? 		$ammo=getlocal("unit",1,"reloaded1003"); 		if ($ammo>0) { 			$ammo--; 			setlocal "unit",1,"reloaded1003",$ammo; 			play "pistol.wav",1,0,44100; 			local $pitch; 			$pitch=getpitch("unit",1); 			if ($pitch>-80) { 				setrot "unit",1,($pitch-1),"self","self"; 			} 		} else { 			msg "Ich sollte erstmal nachladen!",3; 			skipevent; 		} 	} 	//ggf. nachladen 	if (($s2g_firearms_automatic==1)&&($ammo==0)) { 		event "reload1","unit",1; 	} 	on:impact { 		$tmp=impact_class(); 		$tmp2=impact_id(); 		//+16 Bonus Damage on Flesh 		if (compare_material($tmp,$tmp2,"flesh")==1) { 			damage $tmp,$tmp2,16; 		//+48 Bonus Damage on Glass 		} elseif (compare_material($tmp,$tmp2,"glass")==1) { 			damage $tmp,$tmp2,48; 		} 		freevar $tmp; 		freevar $tmp2; 	} 	on:inhand { 		play "take_ak.wav"; 	} script=end
was ist da falsch ? es schießt nicht !
Erbitte schnellstmöglich Hilfe.... ich will bald nen Video machen
Sonst einfach mal die Fehlermeldung sagen, damit man auch was machen kann.
thx
was ein kleiner Fehler so großes macht -.-
edited 1×, last 06.12.09 10:59:20 am
Ich will das wenn ein timer abgelaufen ist das dann an einem bestimmten Info 3 einheizen erzeugt werden aber es klappt nicht. sie werden immer neben mir plaziert und es kommt ein error. unit with ID 106 does not exits.
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
on:trigger { 	$id=create ("unit",202); 	 getx("info",4),gety("info",4),getz("info",4); 	$id=create ("unit",202); 	 getx("info",4),gety("info",4),getz("info",4); 	$id=create ("unit",202); 	 getx("info",4),gety("info",4),getz("info",4); 	free "self"; }
was mach ich falsch?
wenn ich da richtig verstanden habe, dann willst du, dass alle 3 units an der gleichen info erstellt werden? (falls es sich dabei um aggressive units handelt, also solche, die den spieler direkt angreifen, dann solltest du besser 3 verschiedene infos nehmen, da es sonst aussieht, als wäre es nur eine unit, da sich alle 3 gleichzeitig auf den spieler zubewegen.)
ansonsten brauchst du dann aber nur einmal den x- und z- wert des infos zu bestimmen, allerdings sind das mehrere befehle.
des weiteren empfielt es sich hier, eine loop -schleife zu benutzen.
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
on:trigger { 	$x=getx("info", 4); 	$z=getz("info", 4); 	loop("count", 3) { 		$id=create("unit", 202, $x, $z); 	} 	free "self"; }
edited 2×, last 07.12.09 10:43:09 pm
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
on:trigger 	{ 	loop ("count", 3) 		{ 		$id = create ("unit", 202); 		setat "unit", $id, "info", 4; 		} 	}
@Hurri04:
Wenn man 3 einheiten auf 3 unterschiedliche Infos machen will muss das script dann aussehen?
Und noch ein problem:
Wenn du Units gespawnt werden (per script) wie mache ich das, das wenn die Tot sind eine msg kommt.
Ich habe das so probiert aber das geht nicht.
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
on:trigger { $x=getx("info", 4); $z=getz("info", 4); loop("count", 3) { $id=create("unit", 202, $x, $z); 	 addscript "unit",$id,"maps/bla.txt","unit"; } free "self"; }
und in der datei steht das:
1
2
3
4
5
2
3
4
5
//~unit on:kill { $units= count("unit",$id); 		msg "$units verbleiben",4; 	}
Warum klappt das nicht wenn ich eine Unit kille das dann die msg kommt: 2 verbleiben?
und wenn alle tot sind müsste doch eine msg kommen mit: 0 verbleiben.
Die ID ist für jede Einheit einzigartig. Jede Einheit auf der Karte bekommt eine feste ID welche sie bis zu ihrem Tod behält.
Der Typ dagegen ist für jede Einheitenart identisch. So haben z. B. alle Raptoren den Typ 2.
Du musst bei count daher den Typ angeben. Der wäre 202 bei dir. Beachte allerdings, dass count ALLE Einheiten des Typs auf der Map zählt. Du darfst also die Einheiten nur für das Script benutzten, für nichts sonst.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
on:trigger { 	$x1=getx("info", [HIER DIE ID VON INFO 1 EINSETZEN]); 	$x2=getx("info", [HIER DIE ID VON INFO 2 EINSETZEN]); 	$x3=getx("info", [HIER DIE ID VON INFO 3 EINSETZEN]); 	$z1=getz("info", [HIER DIE ID VON INFO 1 EINSETZEN]); 	$z2=getz("info", [HIER DIE ID VON INFO 2 EINSETZEN]); 	$z3=getz("info", [HIER DIE ID VON INFO 3 EINSETZEN]); 	$id=create("unit", 202, $x1, $z1); 	$id=create("unit", 202, $x2, $z2); 	$id=create("unit", 202, $x3, $z3); 	free "self"; }
es geht immer noch nicht. Also die units werden gespawnt aber wenn ich einen kill kommt die msg nicht.
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
//~native on:kill { 	$units= count("unit",202); 	if ($units==0) { msg "Welle 1 Überstanden",4; 	}else{ 	msg "$units verbleiben",3; 	} }
und bei dem Timer steht das drin:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
on:trigger { $x1=getx("info",4); $x2=getx("info",5); $x3=getx("info",6); $z1=getz("info",4); $z2=getz("info",5); $z3=getz("info",6); $id=create("unit", 202, $x1, $z1); $id=create("unit", 202, $x2, $z2); $id=create("unit", 202, $x3, $z3); addscript "unit",202,"maps/dm/dm.txt","native"; free "self"; }
aber die msg wird einfach nicht angezeigt. kein scrip fehler oder error kommt, nichts.
edited 1×, last 08.12.09 05:19:54 pm
was vllt interssant wäre zu wissen wäre wie oft der timer denn ausgelöst wird.
wenn das nämlich z.b. jede halbe sekunde passiert, kann es bei aufwändigen scripts, insbesondere bei solchen, die noch auf ein zusätzliches script zugreifen, wie es bei dir der fall ist, schon mal gerne zu überlastungen kommen.
die ergebnisse fallen dabei schonmal unterschiedlich aus, entweder das spiel hängt sich komplett auf oder es hängt sich für ein paar sekunden auf und läuft danach wieder oder vllt werden auch befehle einfach nicht ausgeführt (?) ...
folglich müsste das script also lauten:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
on:trigger { 	$x1=getx("info",4); 	$x2=getx("info",5); 	$x3=getx("info",6); 	$z1=getz("info",4); 	$z2=getz("info",5); 	$z3=getz("info",6); 	$id=create("unit", 202, $x1, $z1); 	addscript "unit", $id, "maps/dm/dm.txt", "native"; 	$id=create("unit", 202, $x2, $z2); 	addscript "unit", $id, "maps/dm/dm.txt", "native"; 	$id=create("unit", 202, $x3, $z3); 	addscript "unit", $id, "maps/dm/dm.txt", "native"; 	free "self"; }
(der timer ist übrigens auch okay so mit 3 sekunden, das verkraftet Stranded noch^^)
nachdem ich in den PDA eine Funktion Namens "Landkarte" eingefügt habe funktionierte garnichts mehr.
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
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
####PDA id=1000 name=Sony PDA model=gfx\ext_plugin\sony-pda.3ds icon=gfx\ext_plugin\sony-pda.png info=Ein PDA ! Türlich von Sony. scale=0.03 healthchange=0 mat=metal weight=500 script=start on:use { event "pda";} on:pda { add "Hauptmenü"; add ""; add "Hier kannst du Musik Hören, oder andere Dinge machen"; msgbox "PDA"; button 0, "Musik","53","musikmenu"; button 1,"Kaufen","19","buy"; button 2,"Landkarte",54","map"; button 9,"Beenden","3","closemenu;"; } on:musikmenu { add "Wähle einen Titel aus den du gerne Hören willst."; msgbox "Musikmenü"; button 0,"Eifel 65 I'm Blue Remix","53","title01"; button 1,"Böhse Onkelz Der nette Mann","53","title02"; button 8,"Stopp","3","stop"; button 9,"Zurück","7","pda"; } on:title01 { stopmusic; music "PDA\Eiffel 65 I'm Blue HardCore Mix.mp3" ,2 ,1;} on:title02 { stopmusic; music "PDA\Bhse Onkelz Der nette Mann.mp3" ,2 ,1;} on:stop { stopmusic;} on:buy { add "Das ist nur als Beispiel gedacht was man"; add "mit dem PDA noch machen könnte"; msgbox "Kaufmenü"; button 0,"Heiltrank","19","find 36;"; button 9,"Zurück","7","pda"; } on:map { //texture with actual map image 	on:load {event "texturemap";} 	on:drop {event "texturemap";} 	on:create {event "texturemap";} 	on:texturemap { 		if ($maptexture<5) { 			$maptexture++; 		}else{ 			$maptexture=0; 		} 		savemapimage join("gfx\mapskin",$maptexture,".bmp"),64; 		texture join("gfx\mapskin",$maptexture,".bmp"); add "Kann Bugs enthalten!"; msgbox "Landkarte"; button 9,"Zurück","7","pda"; 	} script=end
TheKilledDeath has written
du kannst doch nicht in ein on: Ereignis weitere on: Ereignisse reinschreiben
mhmm stimmt
aber wie lässt sich dann die aktuelle Karte anzeigen ?
edited 1×, last 17.12.09 02:02:56 pm