Forum

> > Stranded II > Scripts > Fackeln bei Regen ausgehen lassen
Forums overviewStranded II overview Scripts overviewLog in to reply

German Fackeln bei Regen ausgehen lassen

10 replies
To the start Previous 1 Next To the start

old Fackeln bei Regen ausgehen lassen

zeriel
User Off Offline

Quote
Hey. habe folgendes Script für fackeln:

on:start {
addstate "self","fire";
statevalue "object",currentid(),"fire",0;
if ($state==1) {
addstate "self","eternalfire";
statevalue "object",currentid(),"eternalfire",0;
}
}

wie kann ich den getweather befehl einbauen damit er bei regen die fackel ausmacht und bei schönwetter anmacht ?

lg

ps. wollte noch fragen was genau die funktion

free "self"; bewirkt
edited 1×, last 18.08.11 01:23:11 pm

old Re: Fackeln bei Regen ausgehen lassen

Hurri04
Super User Off Offline

Quote
nicht wenn man "eternalfire" nimmt, das ist ja grade der witz.

setz einfach "fire" statdessen ein.

lass dein script einfach mal ganz weg und schreib stattdessen dieses script hier ins globale script:
1
2
3
4
5
on:start {
	loop("object", [TYP-NUMMER DER FACKEL]) {
		addstate "object", loop_id(), "fire";
	}
}
falls du auch noch alle lagerfeuer und so entzünden willst, dann wiederhol das script nochmal, setz dann aber die typ-nummer des lagefeuers ein.

old Re: Fackeln bei Regen ausgehen lassen

zeriel
User Off Offline

Quote
es soll aber nicht global sein sondern objektgebunden. will die fackeln nur automatisch an haben beim eingeborenen dorf eigens gebaute fackeln sollen nicht automatisch brennen und bei regen sollten sie eben nicht brennen.

old Re: Fackeln bei Regen ausgehen lassen

Nova
User Off Offline

Quote
Ich glaube, du hast ihn nicht ganz verstanden Hurri04 (oder ich bin gerade etwas geistig umnebelt).

Du willst, dass bei Regen die Fackeln ausgehen und bei Sonnenschein wieder an, sehe ich das richtig?
Wenn ja: Benutze on:changeday als Auslöser. Dadurch wird das Script immer beim neuen Tag ausgeführt wird. Da auch die Entscheidung "Regen oder Sonnenschein?" bei diesem Wechsel ausgeführt wird, ist der Status der Fackeln immer aktuell.

Mit s2 cmd getweather kriegt du das aktuelle Wetter, der Rückgabewert 1 ist beispielsweise Regen. Sollte es also regnen, löscht du den "Feuer-State" mit s2 cmd freestate. Sollte es nicht regnen, sondern die Sonne scheinen (Rückgabewert 0), dann benutzt du s2 cmd addstate bei dem Objekt.
Am Ende fügst du das Script dann in jede Fackel, welche bei diesem Eingeborenen-Dorf ist.


s2 cmd free löscht ein Objekt, es verschwindet also. Das "self" bedeutet dabei, dass sich der Befehl auf das Objekt bezieht, bei dem der Befehl ausgeführt wird. Solltest du das Script also in eine Palme schreiben, wird sie gelöscht, sobald das Script ausgeführt wird.

old Re: Fackeln bei Regen ausgehen lassen

zeriel
User Off Offline

Quote
gut gut, dann ist ja free ein richtig toller befehl, sonst wird es evt rechnerlastig mit all den trigger punkten.

so also ich denke mal

on:start{
if (getweather()==1);{
addstate "fire";}
else {
free;

}}

Hab nochmal gelesen wenn man nur free nimmt löscht es alle zustände beim objekt ansonsten müsst ich noch alles definieren

old Re: Fackeln bei Regen ausgehen lassen

Nova
User Off Offline

Quote
Du musst beachten: s2 cmd free löscht das gesamte Objekt, nicht nur alle States. Benutze s2 cmd freestate, um nur die States zu löschen.
Ansonsten hat das Script noch zwei Probleme:
> Es wird nur ein Mal am Anfang ausgeführt, danach nie wieder. Benutze on:changeday, um es jeden Tag neu ausführen zu lassen. (Ob es regnet oder nicht kann sich auch täglich ändern.)
> Dein addstate weiß nicht, bei welchem Objekt es den State zufügen soll. Entweder gibst du immer wieder neu den Typ und die ID des Objektes an, oder du nutzt dabei "self". (Beachte, freestate brauch diese Angabe auch!)

old Re: Fackeln bei Regen ausgehen lassen

zeriel
User Off Offline

Quote
nochmals danke für die gute hilfe, learning by doing

ich habe folgendes script jetzt ausgearbeitet

on:changeday{
if (getweather()==1);
{
addstate "self","fire";
}
else
{
freestate "self","fire";
}
}

old Re: Fackeln bei Regen ausgehen lassen

Hurri04
Super User Off Offline

Quote
öhm, was soll denn das semikolon am ende der if-abfrage?

nimm außerdem mal lieber code-tags und verwende nicht die blöde syntax von Nova

1
2
3
4
5
6
7
on:changeday {
	if(getweather()==1) {
		addstate "self","fire";
	}else{
		freestate "self","fire";
	}
}

old Re: Fackeln bei Regen ausgehen lassen

Nova
User Off Offline

Quote
user Hurri04 has written
[...] und verwende nicht die blöde syntax von Nova
Welche Syntax man wählt ist einem vollkommen selbst überlassen. Hinzu kommt, dass meine Art des "Codeaussehens" besser für Anfänger ist, da man sofort sieht, wie genau die Klammern gesetzt wurden. Vergessene Klammern sieht man so eher.
Ich sage daher: Verwende nicht die blöde Syntax von Hurri04.

(Wie gesagt, für welche Syntax, also die Ausrichtung des Codes, du benutzt, bleibt dir überlassen. Wenn du dich aber einmal entschieden hast, solltest du die Art konsequent beibehalten und auch kleinere Codes so ausrichten. Das spart dir später viel Arbeit, wenn du deinen eigenen Code kaum noch lesen kannst, weil du inzwischen anders "codest".)

Der Code sieht, wenn man die Tipps von Hurri04 noch beachtet, ziemlich gut aus und müsste dann auch funktionieren.
To the start Previous 1 Next To the start
Log in to reply Scripts overviewStranded II overviewForums overview