Reggel /Este automatika.

Indította isolator05, 2018-11-21, 07:24:33

Sziasztok.
Egy olyan furcsa dolgot szeretnék megoldani, hogy a szerver órájához kellene 1 quest ami ki be kapcsolgatja a napalt és éjszakát.
Pl: 07:00 -tól reggel, 19:00 -tól éjszaka.
Sehol nem találok ilyesféle questet csak olyat aminél nekem kel megadni hogy mikor legyen reggel vagy este.
Gondolom elég fura kérés. De meg lehet oldani? Ha meg akkor hogyan?
Válaszokat előre is köszönöm.
Ha segítettem ne sajnáld a + t.

Szia.

Ezzel próbáltad már?
https://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/1471500-release-funktionierte-tag-und-nacht-quest.html

Annyi hogy meg kell adnod a questben, mikor váltson át, aztán a szerver ideje szerint azt automatikusan elvégzi.

Köszönöm.
Kipróbáltam de sajna nem sikerült.
quest daymode begin
state start begin
function funktion()
local text = {
-------Guten Morgen Texte
{"Jó reggelt, ideje felkelni."},
{"Csengő csengő csengetés, felkelni!"},
-------Guten Abend Texte
{"Szóval, ideje aludni. A csapat kellemes éjszakát kíván."},
{"Játékosok itt az ideje, hogy lefeküdjetek."},
}
local zufall = number(1, 2)
local zufalle = number(3, 4)

local morgentext = text[zufall][1]
local abendtext = text[zufalle][1]
local clockk = os.date ("%H")
if clockk >= "19" and game.get_event_flag("eclipse") == 0 then
notice_all(""..abendtext.."")
game.set_event_flag("eclipse", 1 )
elseif clockk >= "07" and game.get_event_flag("eclipse") == 1 then
notice_all(""..morgentext.."")
game.set_event_flag("eclipse", 0 )
end
end

when login or levelup or logout begin
daymode.funktion()
end

end
end

Az időt így módosítottam. Amikor aktiválom /e eclipse 1 akkor elsötétül, pedig csak nappal van. sajna nem tudom kipróbálni hogy vált e mert csak órát lehet benne megadni. Esetleg percet hogyan lehetne megadni csak próba képpen ?
Ha segítettem ne sajnáld a + t.

Csak a lényeget szedd ki belőle.
when login or letter or kill begin
local machine_time = os.date("%X");
if (machine_time == "13:00:00") then
game.set_event_flag("test_event1", 1);

elseif (machine_time == "16:00:00") then
game.set_event_flag("test_event1", 0);
end -- if/elseif
end -- when

2018-11-23, 05:35:16 #4 Utolsó szerkesztés: 2018-11-23, 06:38:11 Szerző: isolator05
Sikerült megcsinálnom.
Köszönet érte.
Már csak 1 kis hiba van vele:
quest daymode begin
state start begin
when login or letter or kill begin
local machine_time = os.date("%H:%M");
if machine_time >= ("08:00") and game.get_event_flag("napszak") == 0 then
game.set_event_flag("napszak", 0)
command("\x 0")
notice_all("Bakker Reggel van")

elseif machine_time <= ("08:00") and game.get_event_flag("napszak") == 1 then
game.set_event_flag("napszak", 1)
command("\x 1")
notice_all("Bakker este van")
end -- if/elseif
end -- when

end
end


Folyamatosan lefut minden eggyes ölésnél.
Hogyan tudom ezt kiküszöbölni hogy ha már aktív akkor már töbször ne ismétlődjön meg.
Ha segítettem ne sajnáld a + t.

Ezt a részt:
when login or letter or kill begin

nyilván lecseréled erre, logikus módon...:
when login or letter begin

Minden loginnál le akarod futtatni? Miért kell bevonni a szervert? Célszerűbb csak a kliensben megoldani a felhasználó gépének ideje alapján.

C++ programmer at Gameloft

2018-12-03, 18:12:24 #7 Utolsó szerkesztés: 2018-12-03, 18:14:23 Szerző: hunti
Az a probléma vele, hogy if-nél game.get_event_flag("napszak") == 0 van megadva, és utána nullára állítod ismét az értékét game.set_event_flag("napszak", 0) -el (ugyanez a másiknál if-nél 1 és set 1).
Semmi mást nem kell változtatni, csak hogy az if-nél és utána a set_event_flag -ben különböző értékek legyenek mindkét esetben.

Idézetet írta: isolator05 Dátum 2018-11-23, 05:35:16
Sikerült megcsinálnom.
Köszönet érte.
Már csak 1 kis hiba van vele:
quest daymode begin
state start begin
when login or letter or kill begin
local machine_time = os.date("%H:%M");
if machine_time >= ("08:00") and game.get_event_flag("napszak") == 0 then
game.set_event_flag("napszak", 0)
command("\x 0")
notice_all("Bakker Reggel van")

elseif machine_time <= ("08:00") and game.get_event_flag("napszak") == 1 then
game.set_event_flag("napszak", 1)
command("\x 1")
notice_all("Bakker este van")
end -- if/elseif
end -- when

end
end


Folyamatosan lefut minden eggyes ölésnél.
Hogyan tudom ezt kiküszöbölni hogy ha már aktív akkor már töbször ne ismétlődjön meg.