dieser effekt ist aber hier nicht gewünscht, da das info mit dem rauch-state ja nicht auf eine bestimmte position auf der map verschoben werden soll, sondern das info soll ja um einen bestimmten wert relativ zum erstellungs-ort verschoben werden, und das macht man eben mit rpos.
Forum
Stranded II Scripts Scripting - Fragen/Problemedieser effekt ist aber hier nicht gewünscht, da das info mit dem rauch-state ja nicht auf eine bestimmte position auf der map verschoben werden soll, sondern das info soll ja um einen bestimmten wert relativ zum erstellungs-ort verschoben werden, und das macht man eben mit rpos.
Kannst dir das ganze mal downloaden, wenn du willst:
http://www.file-upload.net/download-2545496/Schmieden-V1.4.rar.html
am besten postest du einfach mal das entsprechende (komplette!) script und evtl noch ien bild des objekts, um das es sich handelt
oder was du auch einfach mal versuchen könntest wäre ein wenig mit den werten herunzuspielen, wie weit die infos nach dem erstellen in welche richtung verschoben werden sollen, aus meiner erfahrung kann ich dir sagen, dass das meistns schon so klappt, es bedarf halt nur einiger testläufe, bis man die richtige stelle gefunden hat.
und noch ein tipp:
benutze zum testen keine map, auf der das objekt schon gebaut ist, sondern baue das objekt im editor immer wieder neu und teste mit F12, denn sonst ist das objekt immer an der gleichen stelle und dadurch kann es z.b. zu dem irrtum kommen, dass man, wenn man setpos benutzt, auch zum richtigen ergebnis kommt, was ja aber nicht stimmt, da man nur das info an eine bestimmte position verschiebt, die gerade bei der position des objektes, wenn es fest steht, passt.
benutze von daher also auch bei x und z wirklich rpos, dann kommst du auch zum richtigen ergebnis
Hurri04 has written
also ich hab mir die dateien runtergeladen, hab aber keine ahnung wo ich die sachen jetzt hinpacken soll, irgendwie scheint das nur ein teil eines mod-ordners zu sein, jedenfalls nichts ganzes und nichts halbes...
Hups gehört zum Extension Mod.
Hurri04 has written
am besten postest du einfach mal das entsprechende (komplette!) script und evtl noch ien bild des objekts, um das es sich handelt
Bin nicht grad nen Script_Profi (wie man am Script auch merkt), erwarte also nicht sehr viel. Eigentlich gehts nur um den Teil bei on:create.
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
49
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
49
on:create { 	local "$x_esse","$y_esse","$z_esse","$id_info1","$id_info2","$esse","$iron_1","$iron_2","$iron_ges","$id_item","$coal"; 	$x_esse=getx("self"); 	$z_esse=getz("self"); 	$y_esse=gety("self"); 	$id_info1=create("info",30,$x_esse,$z_esse); 	setpos "info",$id_info1,"self",$y_esse+21,"self"; 	addstate "info",$id_info1,"eternalfire"; 	$id_info2=create("info",30,$x_esse,$z_esse); 	rpos "info",$id_info2,"self",90,10,"self","self","self"; 	addstate "info",$id_info2,"smoke"; } on:use { 	if(((($esse==0) and (getplayerweapon()==85)) and (count_stored("unit",1,85)>=1)) and ($coal==2)) { 		$iron_1=count_stored("unit",1,85);		 		freestored "unit",1,85,1; 		$id_item=create("item",85); 		setpos "item",$id_item,$x_esse,$y_esse+26,$z_esse; 		timer "object",currentid(),5000,0,"check_fire"; 		$esse=1; 		skip; 	} 	elseif($esse!=0) { 		msg "Es liegt bereits etwas in der Esse."; 	} } on:check_fire { 	$iron_2=count_stored("unit",1,85); 	$iron_ges=$iron_1-$iron_2; 	if($iron_ges==1) { 		free "item",$id_item; 		$id_item=create("item",1000); 		setpos "item",$id_item,$x_esse,$y_esse+21.3583,$z_esse; 	} 	$esse=0; 	freetimers "self"; 	skip; } on:changeday { 	if($coal==2) { 		freestate "info",$id_info1; 		freestate "info",$id_info2; 		alterobject "self",1256; 		$coal=3; 	}	 }
Hurri04 has written
und noch ein tipp:
benutze zum testen keine map, auf der das objekt schon gebaut ist, sondern baue das objekt im editor immer wieder neu und teste mit F12, denn sonst ist das objekt immer an der gleichen stelle und dadurch kann es z.b. zu dem irrtum kommen, dass man, wenn man setpos benutzt, auch zum richtigen ergebnis kommt, was ja aber nicht stimmt, da man nur das info an eine bestimmte position verschiebt, die gerade bei der position des objektes, wenn es fest steht, passt.
benutze zum testen keine map, auf der das objekt schon gebaut ist, sondern baue das objekt im editor immer wieder neu und teste mit F12, denn sonst ist das objekt immer an der gleichen stelle und dadurch kann es z.b. zu dem irrtum kommen, dass man, wenn man setpos benutzt, auch zum richtigen ergebnis kommt, was ja aber nicht stimmt, da man nur das info an eine bestimmte position verschiebt, die gerade bei der position des objektes, wenn es fest steht, passt.
Handelt sich beim Objekt um ne Esse. Dabei wird von einem Modell mit Kohle auf eins mit glühender Kohle gwechselt, also wird das Objekt eigentlich immer neu erstellt, probiers aber nochmal.
Bilder:
http://img17.imageshack.us/i/screen00005z.png/
http://img294.imageshack.us/i/screen00004a.png/
http://img13.imageshack.us/i/screen00003.png/
Sind 3 unterschiedliche Objekte auf der gleichen Insel. Feuer klppt, da es nur auf der y_Achse verschoben wird, da hab ich auch noch setpos. Rauchstate ist immer woanders.
lg
Jason13579
edited 2×, last 26.05.10 06:32:52 pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
on:create { 	local "$x_esse","$y_esse","$z_esse","$id_info1","$id_info2","$esse","$iron_1","$iron_2","$iron_ges","$id_item","$coal"; 	$x_esse=getx("self"); 	$z_esse=getz("self"); 	$y_esse=gety("self"); 	$id_info1=create("info",30,$x_esse,$z_esse); 	setpos "info",$id_info1,"self",$y_esse+21,"self"; 	addstate "info",$id_info1,"eternalfire"; 	$id_info2=create("info",30,$x_esse,$z_esse); 	rpos "info",$id_info2,"self",90,10,"self","self","self"; 	addstate "info",$id_info2,"smoke"; }
so, also wie man sehen kann hab ich das script jetzt in 3 teile aufgeteilt.
der erste teil sollte soweit klar sein und funktionieren.
beim zweiten teil wird ein info erstellt, diesem wird der "eternalfire"-state verpasst und wenn ich das richtig verstanden habe funktioniert das bei dir soweit.
der dritte teil erstellt ein info, dem der rauch-state gegeben wird und das funktioniert deiner aussage nicht (?).
wenn ich das soweit alles richtig verstanden habe fände ich das schon ziemlich merkwürdig, dass das zweite funktionieren soll und das dritte nicht, denn
wie ich ja in meinen vorherigen paar posts schon mehrfach gesagt habe setzt setpos ein objekt auf eine bestimmte höhe. wenn du jetzt z.b. eine neue map erstellt, diese komplett flach machst, dann an einer stelle ein höher gelegenes plateau erstellt (einfach mal um einen höhenunterschied zu haben) und dann unten eine esse und auf dem plateau eine esse baust, dann solltest du eigentlich sehen können, dass das feuer nicht an der richtigen position ist (von der höhe her, denn an den x- und z-werten wird ja nichts geändert duch "self").
deswegen solltest du beim zweiten teil auch rpos verwenden.
zum dritten teil, bei dem du rpos verwendet hast, so wie es eigentlich auch richtig ist:
hier habe ich einen kleinen fehler entdeckt, es muss nicht heißen
1
rpos info",$id_info2,"self",90,10,"self","self","self";
1
rpos info",$id_info2,0,90,10,"self","self","self";
so, das wars eigentlich schon, was ich soweit an fehlern gefunden habe, kannst das ja mal verbessern und gucken ob es dann funktioniert
Edit:
Jason13579 has written
EDIT: Hat sich erledigt. Musste nur unten im Script bei den Winkeln bei rpos mit getpitch und co arbeiten, statt mit "self". Danke für die Hilfe
na toll, da bin ich grad ne fette antwort am schreiben, da löst du das problem selbst
was ich komisch finde ist, dass du das mit getpitch, getyaw und getroll machst, normalerweise muss das auch mit "self" gehen...
lies dir meinen post trotzdem nochmal durch, vllt kann es auch noch dran liegen, dass du, wie ich oben geschrieben habe, beim rpos für die x-verschiebung "self" anstatt 0 angegeben hast...
Hurri04 has written
1
$y_esse_fire=$y_esse+=21;
Zwei Zuweisungen in einer Zeile? Das geht in Stranded?
Ansonsten: In beispielsweise PHP wird hier erst $y_esse um 21 erhöht und dann der Wert $y_esse und $y_esse_fire zugewiesen. War das deine Absicht?
wenn man jetzt
1
$y_esse+=21;
da man den wert der variable $y_esse ja danach nochnmal braucht muss man das wohl etwas anders machen:
1
2
2
$y_esse_fire=$y_esse; $y_esse_fire+=21;
Danke schonmal
LG
kann mir jemand sagen wie ich meine karte als zip-datei umwandle/speichere.
du brauchst ein zip programm..
z.b winrar oder 7zip,die können das file "zippen",also verpacken und komprimieren.
also ich kenn ja nur zip-komprimierte ordner
so einen erstellst du, indem du mit der rechten maustaste auf die map klickst, dann gehst du auf "senden an" und wählst "ZIP-komprimierter Ordner".
wenn du mehrere dateien hast packe sie zuerst alle in einen normalen ordner und "sende" diesen dann an einen zip-komprimierten ordner.
ich glaub zwar, dass die frage jetzt nicht so direkt was mit scriptingfragen /-problemen zu tun hatte, aber naja...
1
2
3
2
3
on:kill { revive 1; }
Warum??
das on:kill event wird daher niemals bei diesem info ausgeführt werden. du müsstest das script in deinem fall direkt in das script vom spieler schreiben.
entweder per definitionsscript oder per addscript, da der spieler selbst im editor nicht direkt auswählbar ist.
alternativ könntest du auch einen timer oder so machen und immer in zeitlichen abständen prüfen ob der spieler noch lebt und ihn ggf. wiederbeleben mit revive.