Forum

> > Stranded II > Scripts > Überprüfen ob der Spieler schläft
Forums overviewStranded II overview Scripts overviewLog in to reply

German Überprüfen ob der Spieler schläft

4 replies
To the start Previous 1 Next To the start

old Überprüfen ob der Spieler schläft

Pehlivan
User Off Offline

Quote
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

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

Hurri04
Super User Off Offline

Quote
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

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

Pehlivan
User Off Offline

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

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

Hurri04
Super User Off Offline

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