Objekt nach Impact austauschen
4 replies



27.04.14 09:45:15 pm
Hallöchen zusammen,
ich bin mal wieder auf die Idee gekommen ein wenig für Stranded II zu Modden und habe mir als erstes Ziel einen Brennofen bzw. Backofen gesetzt.
Der Brennofen hat den Typ 254
Das ungebratene Fleisch hat den Typ 11
Das gebratene Fleisch hat den Typ 12
Wenn das ungebratene Fleisch auf den Brennofen trifft wird ein Timer ausgelöst mit 8 Sekunden länge (funktioniert).
Danach wird die Funktion "iron_heated" gestartet und soll das alte Objekt löschen (noch nicht eingebaut) und das gebratene Stück Fleisch soll an der Stelle auftauchen auf der gerade noch das ungebratene lag (funktioneirt nicht).
Das Problem was ich jetzt habe ist das egal wie ich die Koordinaten des Items auslese (anhand der ID) immer die Fehlermeldung bekomme das das Objekt mit der ID 0 nicht existiert oder das es knallhart ignoriert wird und das Stück Fleisch direkt unter dem Spieler erstellt wird.
Weis denn zufällig jmd. wie ich das am besten lösen könnte ?
(Ja ich hatte glaub schonmal ein Thema darüber aufgemacht ist aber schon ein paar Jahre her und ich war auch zu unfähig denn wieder zu finden
)
Würde mich freuen von euch zu hören
ich bin mal wieder auf die Idee gekommen ein wenig für Stranded II zu Modden und habe mir als erstes Ziel einen Brennofen bzw. Backofen gesetzt.
Der Brennofen hat den Typ 254
Das ungebratene Fleisch hat den Typ 11
Das gebratene Fleisch hat den Typ 12
Wenn das ungebratene Fleisch auf den Brennofen trifft wird ein Timer ausgelöst mit 8 Sekunden länge (funktioniert).
Code:
1
2
3
4
5
6
7
2
3
4
5
6
7
on:impact {
$class=impact_class();
$id=impact_id();
if(type($class,$id)==254) {
timer "item",$id,8000,1,"iron_heated";
}
}
$class=impact_class();
$id=impact_id();
if(type($class,$id)==254) {
timer "item",$id,8000,1,"iron_heated";
}
}
Danach wird die Funktion "iron_heated" gestartet und soll das alte Objekt löschen (noch nicht eingebaut) und das gebratene Stück Fleisch soll an der Stelle auftauchen auf der gerade noch das ungebratene lag (funktioneirt nicht).
Code:
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
on:iron_heated {
$current=currentid();
$x=getx("item", $current);
$y=gety("item", $current);
$z=getz("item", $current);
$idnew=create("item",12);
setpos("item",$idnew,$x,$y,$z);
}
$current=currentid();
$x=getx("item", $current);
$y=gety("item", $current);
$z=getz("item", $current);
$idnew=create("item",12);
setpos("item",$idnew,$x,$y,$z);
}
Das Problem was ich jetzt habe ist das egal wie ich die Koordinaten des Items auslese (anhand der ID) immer die Fehlermeldung bekomme das das Objekt mit der ID 0 nicht existiert oder das es knallhart ignoriert wird und das Stück Fleisch direkt unter dem Spieler erstellt wird.
Weis denn zufällig jmd. wie ich das am besten lösen könnte ?
(Ja ich hatte glaub schonmal ein Thema darüber aufgemacht ist aber schon ein paar Jahre her und ich war auch zu unfähig denn wieder zu finden

Würde mich freuen von euch zu hören

in deinem ersten script gibt dir
impact_id nicht die ID des fleisch-items an, das auf dem ofen gelandet ist, sondern die ID des ofens.
dadurch gibt es dann beim erstellen des timers das problem, dass du nach einem item mit der ID des objekts suchst.
kann sein, dass der timer trotzdem auslöst, weil da wieder mal was in stranded verbuggt ist. dadurch wird dann zwar das item erstellt, aber beim abfragen der
currentid tritt dann definitiv ein fehler auf.

dadurch gibt es dann beim erstellen des timers das problem, dass du nach einem item mit der ID des objekts suchst.
kann sein, dass der timer trotzdem auslöst, weil da wieder mal was in stranded verbuggt ist. dadurch wird dann zwar das item erstellt, aber beim abfragen der

Hallo
Ich habe gerade mal die Scriptreference von impact_id() angeschaut und hab das jetzt mal so hier umgeändert.
Sozusagen das oben dann der Timer für die CurrentID gestartet wird jedoch bekomme ich die selbe Fehlermeldung zurück

Ich habe gerade mal die Scriptreference von impact_id() angeschaut und hab das jetzt mal so hier umgeändert.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
on:impact {
$class=impact_class();
$id=impact_id();
$current=currentid();
$currentclass=currentclass();
if(type($class,$id)==254) {
timer $currentclass,$current,8000,1,"iron_heated";
}
}
on:iron_heated {
$x=getx($currentclass, $current);
$y=gety($currentclass, $current);
$z=getz($currentclass, $current);
$idnew=create("item",12);
setpos("item",$idnew,$x,$y,$z);
}
$class=impact_class();
$id=impact_id();
$current=currentid();
$currentclass=currentclass();
if(type($class,$id)==254) {
timer $currentclass,$current,8000,1,"iron_heated";
}
}
on:iron_heated {
$x=getx($currentclass, $current);
$y=gety($currentclass, $current);
$z=getz($currentclass, $current);
$idnew=create("item",12);
setpos("item",$idnew,$x,$y,$z);
}
Sozusagen das oben dann der Timer für die CurrentID gestartet wird jedoch bekomme ich die selbe Fehlermeldung zurück

warte mal, hab da grade nochmal was nachgeschaut:
ich glaub, da war was, dass wenn man etwas wirft, an dem punkt, an dem es aufschlägt, ein neues item erzeugt wird, das dann natürlich auch eine neue ID hat.
folglich müsste man also bei klasse und ID, bei der das item aufschlägt, einen timer mit vllt 100 millisekunden auslösen, der dann per
loop (z.b. loop("item", 11) { ... } ) für alle items (
loop_id) des gesuchten typs prüft, ob sie
inrange des aufschlagorts sind. wenn ja, dann muss anschließend per
timercount geprüft werden, ob das item bereits timer hat. falls nicht, kannst du dort anschließend den eigentlichen 8-sekunden-timer starten, der das fleisch dann "brät".
schau dir auch mal
getyaw und
setrot an, damit kannst du auch die rotation des fleischstücks beibehalten, wenn das rohe durch das gebratene ersetzt wird.
ich glaub, da war was, dass wenn man etwas wirft, an dem punkt, an dem es aufschlägt, ein neues item erzeugt wird, das dann natürlich auch eine neue ID hat.
folglich müsste man also bei klasse und ID, bei der das item aufschlägt, einen timer mit vllt 100 millisekunden auslösen, der dann per




schau dir auch mal


Hey Hurri04,
erst einmal danke für deine Antwort.
Ich werde mal versuchen da etwas zusammen zu basteln und melde mich wieder falls das Script funktionieren sollte (Aber erstmal einkaufen gehen und lecker Hackfleisch-Käse Süppchen machen :P).
_________________________________________________
Edit: s2:
So hab nun mal fix das hier zusammen gebastelt (bekomme nur wieder bei
getx,
gety und
getz denn Fehler das das Object mit der ID '0' nicht existiert und denn Fehler das bei
setpos Parameter fehlen was natürlich daraus resultiert das die "get" Befehle nichts zurückliefern.
Meinst du das etwa so oder hab ich da eventuell etwas falsch verstanden ?
Desweiteren habe ich noch eine Frage zur Ext-Mod.
Kann man das Rennen und Graben Script des Spiels in die Originale version implementieren ? Wenn ja wo steht es und vorallem wem muss ich um Erlaubniss fragen ob ich die Scripte verwenden darf ?
erst einmal danke für deine Antwort.

Ich werde mal versuchen da etwas zusammen zu basteln und melde mich wieder falls das Script funktionieren sollte (Aber erstmal einkaufen gehen und lecker Hackfleisch-Käse Süppchen machen :P).
_________________________________________________
Edit: s2:
So hab nun mal fix das hier zusammen gebastelt (bekomme nur wieder bei




Meinst du das etwa so oder hab ich da eventuell etwas falsch verstanden ?

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
42
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
on:impact
{
$current_id=currentid();
$current_class=currentclass();
$oven_id=impact_id();
$oven_class=impact_class();
if(type($oven_class,$oven_id)==254)
{
$x=getx("item",$current_id);
$y=gety("item",$current_id);
$z=getz("item",$current_id);
$new_id=create($current_class,$current_id);
setpos("item",$new_id,$x,$y,$z);
alteritem(1,$current_id);
timer($oven_class,$oven_id,100,1,"schleife");
}
}
on:schleife
{
loop("items",11)
{
$loop_id = loop_id();
if(inrange("item",$loop_id,100))
{
if(timercount("item",$loop_id)==0)
{
timer("item",$loop_id,8000,1,"kochen");
}
}
}
}
on:kochen
{
$new_id_cooked=create("item",12);
setpos("item",$new_id_cooked,$x,$y,$z);
alteritem(1,$loop_id);
}
{
$current_id=currentid();
$current_class=currentclass();
$oven_id=impact_id();
$oven_class=impact_class();
if(type($oven_class,$oven_id)==254)
{
$x=getx("item",$current_id);
$y=gety("item",$current_id);
$z=getz("item",$current_id);
$new_id=create($current_class,$current_id);
setpos("item",$new_id,$x,$y,$z);
alteritem(1,$current_id);
timer($oven_class,$oven_id,100,1,"schleife");
}
}
on:schleife
{
loop("items",11)
{
$loop_id = loop_id();
if(inrange("item",$loop_id,100))
{
if(timercount("item",$loop_id)==0)
{
timer("item",$loop_id,8000,1,"kochen");
}
}
}
}
on:kochen
{
$new_id_cooked=create("item",12);
setpos("item",$new_id_cooked,$x,$y,$z);
alteritem(1,$loop_id);
}
Desweiteren habe ich noch eine Frage zur Ext-Mod.
Kann man das Rennen und Graben Script des Spiels in die Originale version implementieren ? Wenn ja wo steht es und vorallem wem muss ich um Erlaubniss fragen ob ich die Scripte verwenden darf ?

edited 3×, last 28.04.14 08:30:59 pm



