Forum

> > Stranded II > Scripts > Objekt nach Impact austauschen
Forums overviewStranded II overview Scripts overviewLog in to reply

German Objekt nach Impact austauschen

4 replies
To the start Previous 1 Next To the start

old Objekt nach Impact austauschen

Kreater
User Off Offline

Quote
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).
1
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"; 
  }
}

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).

1
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);
}

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

old Re: Objekt nach Impact austauschen

Hurri04
Super User Off Offline

Quote
in deinem ersten script gibt dir s2 cmd 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 s2 cmd currentid tritt dann definitiv ein fehler auf.

old Re: Objekt nach Impact austauschen

Kreater
User Off Offline

Quote
Hallo

Ich habe gerade mal die Scriptreference von impact_id() angeschaut und hab das jetzt mal so hier umgeändert.

1
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);
}

Sozusagen das oben dann der Timer für die CurrentID gestartet wird jedoch bekomme ich die selbe Fehlermeldung zurück

old Re: Objekt nach Impact austauschen

Hurri04
Super User Off Offline

Quote
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 s2 cmd loop (z.b. loop("item", 11) { ... } ) für alle items (s2 cmd loop_id) des gesuchten typs prüft, ob sie s2 cmd inrange des aufschlagorts sind. wenn ja, dann muss anschließend per s2 cmd 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 s2 cmd getyaw und s2 cmd setrot an, damit kannst du auch die rotation des fleischstücks beibehalten, wenn das rohe durch das gebratene ersetzt wird.

old Re: Objekt nach Impact austauschen

Kreater
User Off Offline

Quote
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 s2 cmd getx, s2 cmd gety und s2 cmd getz denn Fehler das das Object mit der ID '0' nicht existiert und denn Fehler das bei s2 cmd 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 ?

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
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);
}

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
To the start Previous 1 Next To the start
Log in to reply Scripts overviewStranded II overviewForums overview