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