Forum
Stranded II Scripts Scripting - Fragen/Problemewie kann man eine globale Variable erstellen... ich find nur scripts für locale.
Was muss ich skripten, damit das Item erst in meinem Inventar verschwindet, wenn es 30 MAL verwendet worden ist?
lg,
Benji
intetwa so :
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
on:use { dein script; create "Klasse", Typ; store ItemID, "Klasse", ID; $blubber +1 if ($blubber=>30) { skipevent; unstore ItemID, "Klasse", ID; } }
dürften ein paar sonderzeichen fehlen so wie klammern(hab sowas lang nich gemacht) usw aber an sonsten müsste es funzen
und
1
on:start {$blubber=0)
EDIT: Spinn ich oder sieht das aus wie dark basic^^
kann man mit loadmap oder sonst irgendwie eine Zufallsmap starten?
Kann sein dass ich mich zu dumm anstelle, aber ich finde grade keine Lösung...
Vielen dank,
Electronix
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
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
on:keyhit00 { scantarget 100; $g_throw_item=targetid(); //if (targetclass()==3) { $g_throw_item=targetid(); } //else { $g_throw_item=0; } } on:keydown00 { if ($g_throw_item==0) { skip; } local $x,$y,$z,$pitch,$yaw; $x=getx("unit",1); $pitch=getpitch("unit",1); $pitch=$pitch*1.00; $y=gety("unit",1); $yaw=getyaw("unit",1); $yaw=$yaw*1.00; $z=getz("unit",1); $y+=16; //Augenhöhe? $y+=100*cos($pitch); $tmp=sin($yaw); $tmp=$tmp*sin($pitch); $tmp=100*$tmp; $x+=$tmp; $tmp=cos($yaw); $tmp=$tmp*sin($pitch); $tmp=100*$tmp; $z+=$tmp; setpos "item",$g_throw_item,$x,$y,$z; freevar $x,$y,$z,$pitch,$yaw; } //on:keyrelease00 { //if ($g_throw_item==0) { skip; } //if (intersect("item",$g_throw_item)==1) { skip; } //local $x,$y,$z,$pitch,$yaw,$type; //$x=getx("item",$g_throw_item); $pitch=getpitch("unit",1); //$y=gety("item",$g_throw_item); $yaw=getyaw("unit",1); //$z=getz("item",$g_throw_item); $type=type("item",$g_throw_item); //free "item",$g_throw_item; //$g_throw_item=0; //projectile $type,$x,$y,$z,3,$pitch,$yaw; //freevar $x,$y,$z,$pitch,$yaw,$type; //} script=end
Script by bizzl.
Das ziel ist es einen gegenstand solange man eine Taste gedrückt hält im Fadenkreuz schweben zu lassen, dieser Gegenstand dreht und bewegt sich zusammen mit dem Spieler bis der Spieler die Taste wieder loslässt (wie in Oblivion) Er kann den Gegenstand nicht loslassen, wenn der Gegenstand zB zur Hälfte in einem Stein steckt.
Wenn man eine andere Taste gedrückt hält während man den Gegenstand im Fadenkreuz hat, wird der Gegenstand geworden, und zwar werden dazu die entsprechenden Parameter in seiner Definition verwendet (Drag etc)
Bei mir verschwindet aber das Item. Was muss ich verbessern?
lg,
Benji
soweit ich wieß werden die zeilen dann von stranded 2 überlesen
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
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
on:keyhit00 { scantarget 100; $g_throw_item=targetid(); if (targetclass()==3) { $g_throw_item=targetid(); } else { $g_throw_item=0; } } on:keydown00 { if ($g_throw_item==0) { skip; } local $x,$y,$z,$pitch,$yaw; $x=getx("unit",1); $pitch=getpitch("unit",1); $pitch=$pitch*1.00; $y=gety("unit",1); $yaw=getyaw("unit",1); $yaw=$yaw*1.00; $z=getz("unit",1); $y+=16; //Augenhöhe? $y+=100*cos($pitch); $tmp=sin($yaw); $tmp=$tmp*sin($pitch); $tmp=100*$tmp; $x+=$tmp; $tmp=cos($yaw); $tmp=$tmp*sin($pitch); $tmp=100*$tmp; $z+=$tmp; setpos "item",$g_throw_item,$x,$y,$z; freevar $x,$y,$z,$pitch,$yaw; } on:keyrelease00 { if ($g_throw_item==0) { skip; } if (intersect("item",$g_throw_item)==1) { skip; } local $x,$y,$z,$pitch,$yaw,$type; $x=getx("item",$g_throw_item); $pitch=getpitch("unit",1); $y=gety("item",$g_throw_item); $yaw=getyaw("unit",1); $z=getz("item",$g_throw_item); $type=type("item",$g_throw_item); free "item",$g_throw_item; $g_throw_item=0; projectile $type,$x,$y,$z,3,$pitch,$yaw; freevar $x,$y,$z,$pitch,$yaw,$type; } script=end
CN has written
Wahrscheinlich wollte bizzl es Benji nicht so einfach machen, als er ihm den Code gab. Also soviel Scripterfahren hätte ich von Benji schon erwartet, dass // Kommentare sind. Das weiß sogar ich obwohl ich in DarkBasic progge (rem).
Lach mal, das einzige Kommentar das ich in den Code gesteckt habe war // Augenhöhe?, und ein paar Unsinnigkeiten sind auch neu hinzugekommen (stammen aber net von Benji, da hat noch ein dritter seinen Senf mit reingemährt )
Bin selber überfragt, die Trigo stimmt zumindest auf dem Papier
bizzl has written
und ein paar Unsinnigkeiten sind auch neu hinzugekommen (stammen aber net von Benji, da hat noch ein dritter seinen Senf mit reingemährt
Das warst du eigentlich mit den Kommentaren. Ich habe es aber gelöscht, aber den falschen Code geschrieben.
edit:Und der dritte war banane.
Benji has written
Das warst du eigentlich mit den Kommentaren. Ich habe es aber gelöscht, aber den falschen Code geschrieben.
bizzl has written
und ein paar Unsinnigkeiten sind auch neu hinzugekommen (stammen aber net von Benji, da hat noch ein dritter seinen Senf mit reingemährt
Das warst du eigentlich mit den Kommentaren. Ich habe es aber gelöscht, aber den falschen Code geschrieben.
Beim Debugging dann hab ich das vorgeschlagen, jo.
Okay, noch mal genauer für alle anderen: Das wars nicht
Es funkt nicht, egal ob mit oder ohne Comments, und ich bin genauso ratlos wie Benji.
Hier mal der richtig Originalene Code:
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
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
on:keyhit00 { 	scantarget 100; 	if (targetclass()==3) { $g_throw_item=targetid(); } 	else { $g_throw_item=0; } } on:keydown00 { 	if ($g_throw_item==0) { skip; } 	local $x,$y,$z,$pitch,$yaw; 	$x=getx("unit",1); $pitch=getpitch("unit",1); 	$y=gety("unit",1); $yaw=getyaw("unit",1); 	$z=getz("unit",1); 	$y+=16; //Augenhöhe? 	$y+=100*cos($pitch); 	$tmp=sin($yaw); 	$tmp=$tmp*sin($pitch); 	$tmp=100*$tmp; 	$x+=$tmp; 	$tmp=cos($yaw); 	$tmp=$tmp*sin($pitch); 	$tmp=100*$tmp; 	$z+=$tmp; 	setpos "item",$g_throw_item,$x,$y,$z; 	freevar $x,$y,$z,$pitch,$yaw; } on:keyrelease00 { 	if ($g_throw_item==0) { skip; } 	if (intersect("item",$g_throw_item)==1) { skip; } 	local $x,$y,$z,$pitch,$yaw,$type; 	$x=getx("item",$g_throw_item);$pitch=getpitch("unit",1); 	$y=gety("item",$g_throw_item); $yaw=getyaw("unit",1); 	$z=getz("item",$g_throw_item); $type=type("item",$g_throw_item); 	free "item",$g_throw_item; 	$g_throw_item=0; 	projectile $type,$x,$y,$z,3,$pitch,$yaw; 	freevar $x,$y,$z,$pitch,$yaw,$type; }
bizzl has written
Bin selber überfragt, die Trigo stimmt zumindest auf dem Papier
*gröhl* Bei Stranded sind auch die Achsen des Kordinatensystems irgendie vertauscht... Mir ist das aber immer zu blöd zu schauen, ob Rotationsmatrizen oder sonstiger Krams gegenüber diesem Irrsinn invariant sind.
Mit etwas Intuition und Empirie kommt man häufig viel schneller ans Ziel...
Naja, zum Code... Du sagst, das Item verschwindet, und fragst dich "warum". Aber vielleicht verschwindet das Item ja gar nicht, sondern wird bspw. einfach unter der Oberfläche positioniert. Dann ist irgendwo ein Vorzeichen falsch, oder es wurde die falsche trig. Fkt. verwendet (sin statt cos bspw.)...
Aber z.B. das hier scheint mir auf den ersten Blick einfach schwachsinnig zu sein:
1
2
2
$tmp=sin($yaw); $tmp=$tmp*sin($pitch);