Forum

> > Stranded II > Scripts > Dispenser
Forums overviewStranded II overview Scripts overviewLog in to reply

German Dispenser

8 replies
To the start Previous 1 Next To the start

old Dispenser

tony319
User Off Offline

Quote
Hi Leute, ich möchte in meinem Mod eine Art Dispenser bauen, das Model habe ich schon, allerdings bräuchte ich noch das Script. Es sollte sich dabei an der Funktion vom Dispenser aus Minecraft orientieren. (Items einlagern, beim draufhauen wird ein zufälliges Item gerade aus hinausgeschleudert) Danke im Vorraus
edited 1×, last 03.09.11 01:47:50 pm

old Re: Dispenser

tony319
User Off Offline

Quote
Naja, vielleicht nicht ganz, aber ihr könntet mir ein paar tipps zum Aufbau geben, weil ich komme dort einfach nicht vorran.

old Re: Dispenser

Nova
User Off Offline

Quote
Mit s2 cmd projectile kannst du das Item "rausfeuern". Allerdings ist es beim Aufprall dann kaputt. Man müsste es also irgendwie so hinbiegen, dass das gleiche Item nochmal am Einschlagsort erstellt wird. Guck dir dazu mal das Script der Pfeile an. Wenn man nämlich einen hohen Jagd-Skill hat bleiben Pfeile nämlich öfter mal liegen, nachdem man sie abgeschossen hat.

Ansonsten kannst du auch einfach mit s2 cmd create das Item in der Nähe erstellen. Dann fällt es einfach an dem Ort runter. Nicht schön, erfüllt aber seinen Zweck.

old Re: Dispenser

tony319
User Off Offline

Quote
Mein Ziel ist, dass das Item verschossen wird, es muss nicht unbedingt neu gespawnt werden. Mit projectile kenn ich mich auch gut aus, aber mein Hauptproblem ist, wie dass Script aussehen soll, mithilfe von dem ein zufälliges Item ausgewählt wird.
Also es muss im Dispenser Script auf jeden Fall das Lagerscript drin sein (hab ich) und es muss ein Zufallsgenerator (vielleicht random?) eingebaut sein, der unter den eingelagerten Items entscheidet, welches im nächsten Teil des Scriptes per projectile verschossen wird. Kann mir Jemand helfen?

old Re: Dispenser

Hurri04
Super User Off Offline

Quote
eine s2 cmd loop schleife laufen lassen mit etwa 100 durchläufen, in einem solchen durchlauf mit s2 cmd random eine zufällige zahl ermitteln (minimal 1, maximal die größte typ-nummer der items) und diese dann bei dem befehl s2 cmd count_stored als typ-nummer einsetzen, falls der rückgabewert größer 0 ist den s2 cmd projectile befehl verwenden und die loop schleife mit s2 cmd exit beenden, falls der wert 0 sein sollte einfach die loop schleife noch einmal wiederholen lassen.

old Re: Dispenser

Feuer der veraenderung
User Off Offline

Quote
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
on:use {
local $item_id, $next;
$next=0;
$item_id=0;
loop ("count",1000) { //statt 1000 höchste Item Id in deiner Mod (eventuell+1)
if (($next==0)&&($item_id=>1000)) {
$item_id++;
next=random (1,1000);
if ($item_id==$next) {
$next=1;
}
else {
next=0;
}
}
elseif (($next==1)&&($item_id=>1000)) {
//dein Projectil hier rein
exit
}
else {
//dein Projectil hier rein
exit
}
}
}

Probier mal diesen Script aus.
Er ist nicht das non plus ultra, sondern ein Script den ich ungetestet in 15 Minuten geschrieben habe und wahrscheinlich sehr verbuggt ist. Nehme ihn am besten als Denkanstoss für deinen Script.

edit: Ignoriere am besten meine Post und lese nur das was Hurri04 sagt.

old Re: Dispenser

tony319
User Off Offline

Quote
Vielen Dank für eure Tipps, ich werde es mal ausprobieren. Für weitere Ideen wäre ich dankbar.


edit:
Ich habe mal ein eigenes Script probiert, aber es funktioniert nicht so richtig.
Könnt ihr mir sagen, was ich falsch gemacht habe?



on:use {
if ($locked==1) { msg "Verschlossen!",3,5000; }
else {
if (count_stored("self")==0) { msg "Leer!",3,5000; }
exchange "self";
}
}

on:hit {
local $item_id;
loop "items" {random 840=$item_id}
count_stored "object","self",$item_id;
if ($item_id > 0) {
exit;
local $x,$y,$z;
           $x=getx("self");
           $y=gety("self");
           $z=getz("self");
           $y+=28;
           projectile $item_id,$x,$y,$z,6,350,15,59;
}
edited 1×, last 03.09.11 01:47:08 pm

old Re: Dispenser

Nova
User Off Offline

Quote
Stranded II gibt dir doch sicherlich eine Fehlermeldung aus, oder? Wäre nett, wenn du die immer zu deinen Probleme dazuschreiben kannst.

Benutze bitte auch den Code-Tag
1
2
3
4
5
6
7
8
9
10
11
12
13
[i]Dein Code [/i] [/code*], wenn du ein Script schreibst. Entferne einfach die beiden Sterne, dann funktioniert das.


Das Problem liegt an der Verwendung von s2:loop. Keine Ahnung, was die Zeile bedeuten soll.
Auf jeden Fall solltest du folgende Sachen beachten:
:o: Die Parameter von loop müssen in runde Klammern:
[code]on:start
{
	loop ("items")
	{
	// [...]
	}
}
• Was soll "random 840=$item_id" bedeuten? Guck dir erstmal besser den Befehl s2 cmd random an.
• Vielleicht ist der Befehl s2 cmd loop_id für dich noch hilfreich.
• s2 cmd exit verlässt nur eine Schleife. Da du aber die Schleife bereits verlassen hat, kann der Befehl nicht angewendet werden. Es dürfte also einen Fehler ergeben.
• Code, der nach exit in einer Schleife geschrieben wurde, wird nicht mehr ausgeführt. (Sollte er jedenfalls nicht, wenn DC den Befehl richtig programmiert hat.)
• Wenn du "self" nutzt ersetzt das sowohl Klassen-Angabe, als auch die ID-Angabe. Etwas wie "objekt", "self" oder "self", 123 ist daher nicht möglich. (Nur ganz weniger Befehle habe eine besondere Art der Funktionsweise von "self", das steht dann bei dem Befehl aber bei. Bei s2 cmd count_stored hast du "self" dabei falsch angewandt.
edited 1×, last 03.09.11 10:21:00 pm
To the start Previous 1 Next To the start
Log in to reply Scripts overviewStranded II overviewForums overview