Forum

> > Stranded II > Scripts > Überprüfen ob der Spieler schläft
ForenübersichtStranded II-Übersicht Scripts-ÜbersichtEinloggen, um zu antworten

Deutsch Überprüfen ob der Spieler schläft

4 Antworten
Zum Anfang Vorherige 1 Nächste Zum Anfang

alt Überprüfen ob der Spieler schläft

Pehlivan
User Off Offline

Zitieren
Hallo,

ich habe einen Gebietstrigger(ID: 1), der einen bestimmten Radius hat.Nun möchte ich überprüfen, wenn der Gebietstrigger(ID: 1) von einem anderen Gebietstrigger(ID: 2) getriggert wurde.Dann soll der Gebietstrigger(ID: 1), überprüfen ob der Spieler schläft und wenn "true", dann soll ein Objekt(x,y,z) spawnen.

Bin schon soweit gekommen, aber mit dem Befehl sleeping komme ich nicht weiter:

Gebietstrigger(ID: 1)
1
2
3
4
5
on:trigger {
 if(sleeping) {//Hier bin ich mir unsicher
  
 }
}

Gebietstrigger(ID: 2)
1
2
3
on:trigger {
  starttrigger 1;
}


Ich habe auch schon im "adventure"-Ordner nachgeguckt(Ich glaube das war die dritte Map), aber habe nichts gefunden

alt Re: Überprüfen ob der Spieler schläft

Hurri04
Super User Off Offline

Zitieren
ist in diesem fall wohl einfacher, das ganze andersherum zu machen:
1
2
3
4
5
on:sleep {
    if(inrange("info", 1, $radius) > 0) {
        create "object", 1; //erstellt eine Palme beim Spieler
    }
}
das script kommt dann in die globale script-box der map und nicht in die script-box des infos. zudem kann das info dann auch einfach z.b. eine fahne sein, anstatt ein gebiets-trigger. spart evtl intern nen bisschen rechenzeit.

die variable $radius entweder on:start mit einem wert füllen oder direkt hier im script mit einer zahl ersetzen.

befehls-referenzen: s2 cmd inrange, s2 cmd create

alt Re: Überprüfen ob der Spieler schläft

Pehlivan
User Off Offline

Zitieren
Danke, der Code klappt.Jedoch könnte man es so machen, sodass der Code nur einmal ausgeführt wird?Und es gibt noch ein Problem, der Code wird trotzdem ausgeführt auch wenn der Spieler nicht schlafen kann.

Könnte man nicht den Code so schreiben?
1
2
3
4
5
6
7
on:sleep {
 if(sleeping == true) {
   if(inrange("info", 1, $radius) > 0) {
     create "object", 1;
   }
 } 
}

Jedoch habe ich keine Idee, wie der Code nur einmal ausgeführt werden kann.

alt Re: Überprüfen ob der Spieler schläft

Hurri04
Super User Off Offline

Zitieren
es gibt im verzeichnis mods/Stranded II/sys eine game.inf datei, in der das schlafen global geregelt wird, da müsste man sich vermutlich mal die bedingungen herauskopieren, die erfüllt sein müssen, damit der spieler schlafen kann, und diese hier in das script einbauen, sodass das spawnen deines objekts auch nur unter diesen bedinungen geschieht.

im einzelnen sind das warscheinlich nur diese paar folgenden:
1
2
3
4
5
6
7
8
9
on:sleep {
    if(getplayervalue(4) > 5) {
        if(gety("unit",1) > 0) {
            if(playerspotted() == 0) {
                //Radius-Überpüfung etc.
            }
        }
    }
}

wenn das nur beim ersten schlafen in diesem gebiet passieren soll, dann einfach nach dem spawnen des objekts eine variable setzen, z.b.
1
$sleptInRadius = 1;
und entsprechend bei on:sleep um alle anderen bedinungen noch eine neue außenrum setzen, die überprüft, ob die variable == 0 ist.
Zum Anfang Vorherige 1 Nächste Zum Anfang
Einloggen, um zu antworten Scripts-ÜbersichtStranded II-ÜbersichtForenübersicht