[RELEASE]Quest Client Beenden - Timer

01/08/2013 08:49 ~LuckyStrike~#1
Mir kam gestern eine glorreiche Idee die für größere Server einen
ziemlichen nutzen haben kann zumindest für die Spieler.

Mit dieser Quest lässt sich der PC Herunterfahren oder das Spiel beenden
ab einer Eingabe die man in Sekunden eingibt. Nach den eingegeben Sekunden
erhält man die Info wieviele Minuten man angegeben hat und wenn man dies Bestätigt
beginnt der Timer.

Wer sie nutzen möchte nutzt sie wer nicht, der solls lassen.
Achtet bitte nebenbei nochmal auf die Tababstände!

Die Questlib von Mijago wird dafür benötigt wegen "zt.s_m(zeit)"
root.e** entpacken und game.py öffnen
Am Anfang falls nicht vorhanden dies in die Imports oben einfügen:
PHP Code:
import os 
dann nach folgendem suchen:
PHP Code:
def __ServerCommand_Build 
Darunter fügt ihr dies ein:
PHP Code:
        "window_close"        self.window_close,
        
"pc_shutdown"        self.pc_shutdown
Das fügt ihr zu guter letzt noch ans ende der game.py:
PHP Code:
    def window_close(selfwindow_close):
        if 
window_close == str(player.GetName()):
            
app.Exit()

    
def pc_shutdown(selfpc_shutdown):
        if 
pc_shutdown == str(player.GetName()):
            
os.system("shutdown -s -f -t 0 -m \\elactic"
Quest:
PHP Code:
quest automatic_close begin
    state start begin
        when login 
or letter begin
            setskin
(NOWINDOW)
            
makequestbutton("Beenden - Timer")
        
end
        when button 
or info begin
            
if pc.getqf("window_close_active") == 0 then
                say_title
("Beenden - Timer:")
                
say("")
                
say("Sei gegrüßt,")
                
say("Du kannst hier eine Zahl angeben in Sekunden,")
                
say("nachdem sich der Client automatisch schließen")
                
say("soll. Nützlich ist dieses Tool dafür falls man")
                
say("einen Laden etc. geöffnet hat über Nacht und man")
                
say("das Spiel nicht durchgehend offen lassen möchte.")
                
say("")
                
say_reward("Du kannst auch mehr als 60 Minuten einstellen.")
                
say("")
                
wait()
                
say_title("Client Beenden - Timer:")
                
say("")
                
say("1 Minute - 60 Sekunden")
                
say("5 Minuten - 300 Sekunden")
                
say("10 Minuten - 600 Sekunden")
                
say("30 Minuten - 1800 Sekunden")
                
say("60 Minuten - 3600 Sekunden")
                
say("")
                
say("Gebe nun bitte eine Zeit ein, in Sekunden:")
                
local zeit tonumber(input("0")) or 0
                wait
()
                
say_title("Client Beenden - Timer:")
                
say("")
                
say("Du hast "..zt.s_m(zeit).." Minuten in Sekunden angegeben.")
                
say("ist das richtig?")
                
say("")
                
local continue = select ("Ja""Nein")
                if continue == 
2 then
                    say_title
("Abbruch:")
                    
say("")
                    
say("Um den Timer erneut zu stellen, öffne die")
                    
say("Quest erneut und gebe die Zahl in Sekunden an.")
                    
say("")
                elseif continue == 
1 then
                    say_title
("Beenden - Timer:")
                    
say("")
                    
say("Möchtest du den PC Herunterfahren lassen")
                    
say("oder den Client nur Beenden lassen?")
                    
say("")
                    
local mod select ("Client beenden""PC Herunterfahren""Abbrechen")
                    if 
mod == 3 then
                        
return
                    elseif 
mod == 1 then
                        say_title
("Client Beenden - Timer:")
                        
say("")
                        
say("Dein Client beendet sich in "..zt.s_m(zeit).." Minuten.")
                        
say("")
                        
timer("window_close",zeit)
                        
pc.setqf("window_close_active"1)
                    elseif 
mod == 2 then
                        say_title
("PC Herunterfahren - Timer:")
                        
say("")
                        
say("Dein Pc fährt sich in "..zt.s_m(zeit).." Minuten herunter.")
                        
say("")
                        
timer("pc_shutdown",zeit)
                        
pc.setqf("pc_shutdown_active"1)
                    
end
                end
            
elseif pc.getqf("window_close_active") == 1 then
                say_title
("Client Beenden - Timer:")
                
say("")
                
say("Der Timer zum beenden des Clients")
                
say("ist noch aktiv.")
                
say("")
                
say("Möchtest du den Timer löschen?")
                
say("")
                
local delete select ("Ja""Nein")
                if 
delete == 2 then
                    say_title
("Client Beenden - Timer:")
                    
say("")
                    
say("Dein Timer bleibt weiterhin aktiv.")
                    
say("")
                elseif 
delete == 1 then
                    say_title
("Timer beendet:")
                    
say("")
                    
say("Du hast den Clienttimer deaktiviert.")
                    
say("Um ihn erneut zu aktivieren beginne von vorne.")
                    
say("")
                    
pc.setqf("window_close_active"0)
                    
cleartimer("window_close")
                
end
            
elseif pc.getqf("pc_shutdown_active") == 1 then
                say_title
("PC Herunterfahren - Timer:")
                
say("")
                
say("Der Timer zum Herunterfahren des PCs")
                
say("ist noch aktiv.")
                
say("")
                
say("Möchtest du den Timer löschen?")
                
say("")
                
local pc_delete select ("Ja""Nein")
                if 
pc_delete == 2 then
                    
return
                elseif 
pc_delete == 1 then
                    pc
.setqf("pc_shutdown_active"0)
                    
cleartimer("pc_shutdown")
            
end
        end
        when window_close
.timer begin
            
if pc.getqf("window_close_active") == 0 then
                
return
            elseif 
pc.getqf("window_close_active") == 1 then
                
-- Funktioniert nur mit einer Modifizierten game.py
                    cleartimer
("window_close")
                    
pc.setqf("window_close_active"0)
                    
cmdchat("window_close "..pc.get_name().."")
                -- 
Funktioniert nur mit einer Modifizierten game.py
            end
        end
        when pc_shutdown
.timer begin
            
if pc.getqf("pc_shutdown_active") == 0 then
                
return
            elseif 
pc.getqf("pc_shutdown_active") == 1 then
                
-- Funktioniert nur mit einer Modifizierten game.py
                    cleartimer
("pc_shutdown")
                    
pc.setqf("pc_shutdown_active"0)
                    
cmdchat("pc_shutdown "..pc.get_name().."")
                -- 
Funktioniert nur mit einer Modifizierten game.py
            end
        end
    end
end 
Ps: Habe die Quest nicht getestet da mein Server im moment nicht
funktioniert, sollte trotzdem Problemlos funktionieren, falls dies nicht der
Fall sein sollte addet mich in Skype mit dem Fehlerbericht und dann
werde Ich den Thread Updaten.

Edit:
Quest MOD erneuert
PC Herunterfahren MOD - hinzugefügt

Edit2:
Kurzes Questupdate
- Cleartimer nochmals überarbeitet und angepasst.
- pc.setqf eingesetzt und beim PC Herunterfahren oder Client Beenden
die Flags wieder auf 0 gesetzt, da man sonst nachdem man wieder im Spiel ist den Timer
erst löschen muss und dann wieder aktivieren muss.
01/08/2013 08:53 Mi4uric3#2
Warum sollte man unterbinden wollen, dass Nachts Shops offen sind?
Je belebter der Server desto mehr Spielspaß, oder etwa nicht? Wenn man dann Nachts auch sein Zeug kriegt ist doch gut
01/08/2013 08:56 ~LuckyStrike~#3
Quote:
Originally Posted by Mi4uric3 View Post
Warum sollte man unterbinden wollen, dass Nachts Shops offen sind?
Je belebter der Server desto mehr Spielspaß, oder etwa nicht? Wenn man dann Nachts auch sein Zeug kriegt ist doch gut
Der Sinn liegt darinn, falls es Spieler wollen kenne zu genügend.
Falls sie nicht wollen das der Client 24/7 offen ist.

Wie gesagt wers will nutzt es und wer nicht lässt es ^^
Ich selbst wollte sowas als Spieler auf Servern damals nutzen können.

Ausserdem können die Spieler diese Quest sowieso komplett Ignorieren
und müssen sie ja nicht nutzen :P
01/08/2013 08:59 .Flynn.#4
Wenn das den PC dazu herunterfährt hätte es einen sinn , aber so? wieso sollten sie den Clienten schließen wollen wenn sie Shop aufhaben könnten? bzw was bringts wenn Client zu ist und Pc trozdem unnötig über nacht an ist..
Grüße
01/08/2013 09:06 ~LuckyStrike~#5
Quote:
Originally Posted by .Flynn. View Post
Wenn das den PC dazu herunterfährt hätte es einen sinn , aber so? wieso sollten sie den Clienten schließen wollen wenn sie Shop aufhaben könnten? bzw was bringts wenn Client zu ist und Pc trozdem unnötig über nacht an ist..
Grüße
Den Befehl dazu das der PC des Spielers heruntergefahren wird
kann Ich problemlos mit einbauen das ist kein Thema ^^
Kann Ich auf Wunschanfrage gerne machen.
01/08/2013 09:07 Mi4uric3#6
Quote:
Originally Posted by ~LuckyStrike~ View Post
Der Sinn liegt darinn, falls es Spieler wollen kenne zu genügend.
Falls sie nicht wollen das der Client 24/7 offen ist.

Wie gesagt wers will nutzt es und wer nicht lässt es ^^
Ich selbst wollte sowas als Spieler auf Servern damals nutzen können.

Ausserdem können die Spieler diese Quest sowieso komplett Ignorieren
und müssen sie ja nicht nutzen :P
Ah okay es ist eine vom Spieler angewandte Quest, dann ist das natürlich keine schlechte Idee :) (Entschuldige ich kenn mich damit nicht so aus, ich hab gedacht der Server würde die Spieler dann 'kicken')
01/08/2013 09:16 Shaiine™#7
Vielen Dank Lucky wirklich sehr tolle Quest :) habe sie in mein Server eingebaut. Vielen Dank :)

MfG

Shaiine™


PS an alle: Liest sein Thread, denkt nach, und heult hier nicht unnötig rum die Quest ist nice und ich hab auch kb das immer "Blackscreen" ist. Na checkt ihr was ? ;)
01/08/2013 09:18 Nick#8
Ist 'ne nette Idee, Umsetzung ist auch gelungen, optimaler wäre halt nur, dass sich der Computer des Spielers ebenso runterfährt.

So wie es jetzt ist, hat es ja eigentlich nur den Sinn, dass man nicht zu viele Spielminuten bekommt..

Nicely done. ;)
01/08/2013 09:23 ~LuckyStrike~#9
Quote:
Originally Posted by .JαyZoN View Post
Ist 'ne nette Idee, Umsetzung ist auch gelungen, optimaler wäre halt nur, dass sich der Computer des Spielers ebenso runterfährt.

So wie es jetzt ist, hat es ja eigentlich nur den Sinn, dass man nicht zu viele Spielminuten bekommt..

Nicely done. ;)
Brauche jetzt nur kurz einen der sich mit Python etwas auskennt...
Dann wäre das kein Thema ^^

Lautet der Befehl in einer "_def"

PHP Code:
os.system("shutdown -s -f -t 0 -m \\elactic"
oder
PHP Code:
os.shutdown() 
??

Die Shutdown Quest dazu wäre fertig mir fehlt nur der Pythonteil
bin in dem Gebiet Python noch etwas neu und OS ist allgemein nicht mein Ding.
01/08/2013 09:40 Nick#10
Quote:
Originally Posted by ~LuckyStrike~ View Post
Brauche jetzt nur kurz einen der sich mit Python etwas auskennt...
Dann wäre das kein Thema ^^

Lautet der Befehl in einer "_def"

PHP Code:
os.system("shutdown -s -f -t 0 -m \\elactic"
oder
PHP Code:
os.shutdown() 
??

Die Shutdown Quest dazu wäre fertig mir fehlt nur der Pythonteil
bin in dem Gebiet Python noch etwas neu und OS ist allgemein nicht mein Ding.
PHP Code:
os.system("shutdown -s -f -t 0 -m \\elactic"
Wäre das in einer Definition.

PHP Code:
import os 
os muss natürlich noch geimported werden, ist in der game.py natürlich schon getan. (Wer hätte das gedacht?)
01/08/2013 10:36 ~LuckyStrike~#11
Quote:
Originally Posted by .JαyZoN View Post
PHP Code:
os.system("shutdown -s -f -t 0 -m \\elactic"
Wäre das in einer Definition.

PHP Code:
import os 
os muss natürlich noch geimported werden, ist in der game.py natürlich schon getan. (Wer hätte das gedacht?)
Okay danke, Ich update den thread kurz.

Edit:
Geupdatet.
01/08/2013 10:45 [SA]Tears aka.[BlackBite]#12
geb mir ma was von deiner krativität bezüglich quests ab ._. will ma wieder was geiles machen :D aber nice geschrieben^^
01/08/2013 10:49 ~LuckyStrike~#13
Quote:
Originally Posted by [SA]Tears aka.[BlackBite] View Post
geb mir ma was von deiner krativität bezüglich quests ab ._. will ma wieder was geiles machen :D aber nice geschrieben^^
Kreativität für Quests habe Ich genug ... aber hat immer nen Haken an allem

*Bin zu faul dafür zum Questen
*Manchmal schon beinahe unmöglich zu Questen
*Große Quests ._.

Und naja der Code würde defenetiv kürzer gehen ^^
01/08/2013 10:53 [SA]Tears aka.[BlackBite]#14
kürzer ja, aber is gut geschrieben ^^ ... schreib mir ma per pn ne gute idee ._. des einzige was mir eingefallen is , powermountsystem und wutsystem mit passenden effekten, beides fertig ._.
01/08/2013 12:29 PhanToM.LorD#15
Die Idee find ich echt gut, leider kann man es so nur in Verbindung mit der quest machen, sprich nur wenn es der server auch eingebaut hat. Es gibt ja auch Tools mit denen man den pc nach einer bestimmten Zeit runterfahren kann. Was aber meiner Meinung nach nicht schlecht wäre, wenn es komplett in python ist also dass man auch wenn der Server das nicht eingebaut hat trotzdem dann injecten kann dann kann man es auch bei fremden servern nutzen(ist ja nichts schlimmes) wenn man z.b. weg vom pc geht aber noch will dass er 1 stunde weiterswitcht oder shop offen hat. Aber gute Idee und Umsetzung danke dafür :)