German Dispenser

8 replies
Goto Page
To the start Previous 1 Next To the start
28.08.11 10:07:52 am
Up
tony319
User
Offline Off
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
28.08.11 11:02:03 am
Up
Todesengel
User
Offline Off
Und wir sollen dir jetzt das ganze Script schreiben?
Aus technischen Gründen steht die Signatur auf der Rückseite dieses Beitrags.
28.08.11 11:04:44 am
Up
tony319
User
Offline Off
Naja, vielleicht nicht ganz, aber ihr könntet mir ein paar tipps zum Aufbau geben, weil ich komme dort einfach nicht vorran.
28.08.11 11:45:38 am
Up
Nova
User
Offline Off
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.
Hexenverbrennung, Inquisition, Kreuzzüge... Wir wissen, wie man feiert! - Ihre Kirche
29.08.11 07:32:36 pm
Up
tony319
User
Offline Off
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?
29.08.11 07:50:20 pm
Up
Hurri04
Super User
Offline Off
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.
29.08.11 07:55:13 pm
Up
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
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.
Dies ist ein Beitrag zur Füllung der Festplatten bei Prism und Tempora
30.08.11 11:35:38 am
Up
tony319
User
Offline Off
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
03.09.11 10:02:46 pm
Up
Nova
User
Offline Off
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
Code:
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
Hexenverbrennung, Inquisition, Kreuzzüge... Wir wissen, wie man feiert! - Ihre Kirche
To the start Previous 1 Next To the start