Forum
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 09: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?
create sehen kann, kann man beim create-befehl auch direkt die x- und z- position angeben (y brauchst du garnicht, weil die unit eh automatisch auf terrain-höhe gesetzt wird)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 09: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 04: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 (?) ...
addscript, da hattest du die typen-nummer angegeben, anstatt der ID. 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 01:02:56 pm
Scripting - Fragen/Probleme


Offline