Sziasztok
Segítségre lenne szükségem.
Betettem az alábbi questet:
quest sd2 begin
state start begin
when NPC_ID.chat."belépés sd2-be" begin
if pc.get_level() < szinthatár then
say_reward("nem léphetsz be, túl alacsony szintű vagy")
elseif pc.count_item(BELÉPŐ_ID) < 1 then
say_reward("nem léphetsz be, nincs nálad belépő")
else
pc.warp(x,y)
pc.remove_item(BELÉPŐ_ID,1)
pc.setqf("sd2_time",get_time()+60*60) --- egy órát tartókodhat bent
end
end
when login with pc.get_map_index() == sd2_indexe begin
loop_timer("sd2",3) --- 3mp-nként ellenőrzi, hogy még nem e telt el az az idő amit bent tölthet
end
when sd2.timer begin
if pc.getqf("sd2_time") < get_time() then
warp_to_village();
end
end
end
end
( Természetesen minden adatot kitöltöttem a kordikat stb.)
A hiba az lenne, hogy rányomok a quest ablakára az npc nél és nem történik semmi.
Teszt üzemmódban a szerver ezt írja:
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fwww.kephost.com%2Fimages4%2F2013%2F1%2F2%2Fa1_2013_1_2_9g60r6zmrr.jpg&hash=74842a1aa0c1b8bd010fb52b7a984ff5a1197ac2)
a sysr meg ezt:
SYSERR: Jan 2 19:50:10 :: RunState: LUA_ERROR: attempt to call a string value
SYSERR: Jan 2 19:50:10 :: WriteRunningStateToSyserr: LUA_ERROR: quest idozitobelepo.start click
SYSERR: Jan 2 19:52:27 :: RunState: LUA_ERROR: attempt to call a string value
SYSERR: Jan 2 19:52:27 :: WriteRunningStateToSyserr: LUA_ERROR: quest idozitobelepo.start click
Valakinek van valami tippje ötlete ? a megoldásra?
Talán így:
quest sd2 begin
state start begin
when NPC_ID.chat."belépés sd2-be" begin
if pc.get_level() < szinthatár then
say_reward("nem léphetsz be, túl alacsony szintű vagy")
end
elseif pc.count_item(BELÉPŐ_ID) < 1 then
say_reward("nem léphetsz be, nincs nálad belépő")
end
else
pc.warp(x,y)
pc.remove_item(BELÉPŐ_ID,1)
pc.setqf("sd2_time",get_time()+60*60) --- egy órát tartókodhat bent
end
when login with pc.get_map_index() == sd2_indexe begin
loop_timer("sd2",3) --- 3mp-nként ellenőrzi, hogy még nem e telt el az az idő amit bent tölthet
end
when sd2.timer begin
if pc.getqf("sd2_time") < get_time() then
warp_to_village();
end
end
end
end
Vagy az elseif-et ne zárd le.
tele van hibaval....most be kell hozza:
npcid.chat utan nem kell pont!
elseif-et nem kell end-el zarni!
quest sd2 begin
state start begin
when NPC_ID.chat "belépés sd2-be" begin
if pc.get_level() < szinthatár then
say_reward("nem léphetsz be, túl alacsony szintű vagy")
end
elseif pc.count_item(BELÉPŐ_ID) < 1 then
say_reward("nem léphetsz be, nincs nálad belépő")
else
pc.warp(x,y)
pc.remove_item(BELÉPŐ_ID,1)
pc.setqf("sd2_time",get_time()+60*60) --- egy órát tartókodhat bent
end
when login with pc.get_map_index() == sd2_indexe begin
loop_timer("sd2",3) --- 3mp-nként ellenőrzi, hogy még nem e telt el az az idő amit bent tölthet
end
when sd2.timer begin
if pc.getqf("sd2_time") < get_time() then
warp_to_village();
end
end
end
end
Szerintem nincs szintaktikai hiba benne, hiszen akkor le sem fordulna. (a chat után meg nagyon is kell a pont!)
A hibaüzenet szerint olyan változó van a kódban, ami nincs dekralálva.
Tehát valami nem lett megadva:
NPC_IDszinthatárBELÉPŐ_IDsd2_indexexyAmúgy az sd2 quest hogy adhat idozitobelepo questes hibaüzit? Sokat segítene, ha nem a nyers küldit dobnád ide nekünk, hanem konkrétan azt, amit használsz. Akkor nem csak találgatni kéne, hanem egyből tudnánk segíteni!
Rendben itt a quest:
quest idozitobelepo begin
state start begin
when 20024.chat."Farm Map" begin
if pc.get_level() < 30 then
say_reward("Nem léphetsz be, túl alacsony szintű vagy")
end
elseif pc.count_item(71110) < 1 then
say_reward("Nem léphetsz be, nincs nálad belépő")
end
else
pc.warp(2600000,2600000)
pc.remove_item(71110,1)
pc.setqf("farm_time",get_time()+60*60) --- egy órát tartókodhat bent
d.notice("Innentől 1 órát tartózkodgatsz")
d.notice("ezen a Mapon.")
end
when login with pc.get_map_index() == 128 begin
loop_timer("farm",3) --- 3mp-nként ellenőrzi, hogy még nem e telt el az az idő amit bent tölthet
end
when farm.timer begin
if pc.getqf("farm_time") < get_time() then
warp_to_village();
d.notice("Lejárt az időd!")
end
end
end
end
Akkor a hiba üzenet test módban: (https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fwww.kephost.com%2Fimages4%2F2013%2F1%2F2%2Fa1_2013_1_2_9g60r6zmrr.jpg&hash=74842a1aa0c1b8bd010fb52b7a984ff5a1197ac2)
putty álltal kiadott hiba üzenet:
metin2# cd /home/game/share/locale/germany/quest
metin2#
metin2# ./qc idozitobelepo.quest
QUEST : idozitobelepo
STATE : start
WHEN : 20024.chat ("Farm Map")
if pc . get_level ( ) < 30 then
say_reward ( "Nem léphetsz be, túl alacsony szintű vagy" )
end
elseif pc . count_item ( 71110 ) < 1 then
say_reward ( "Nem léphetsz be, nincs nálad belépő" )
syntax error : [string "start"]:4: <eof> expected near `elseif'
idozitobelepo.quest:9:Abort (core dumped)
metin2#
remélem valaki tudja a megoldást hisz abence vel nem jövünk rá.
Így kéne valahogy, mert az a része gázos:
when 20024.chat."Farm Map" begin
if pc.get_level() < 30 then
say_reward("Nem léphetsz be, túl alacsony szintű vagy")
elseif pc.get_level() >= 30 then
if pc.count_item(71110) < 1 then
say_reward("Nem léphetsz be, nincs nálad belépő")
elseif pc.count_item(71110) >= 1 then
pc.warp(2600000,2600000)
pc.remove_item(71110,1)
pc.setqf("farm_time",get_time()+60*60) --- egy órát tartókodhat bent
d.notice("Innentől 1 órát tartózkodgatsz")
d.notice("ezen a Mapon.")
end
end
end
Valamint a farm.timer hol van deklarálva?Vagy lehet én vagyok a hülye, de szerintem kéne egy ilyen oda a pc.warp(2600000,2600000) után, hogy:
timer("farm", 60*60)
quest idozitobelepo begin
state start begin
when 20024.chat."Farm Map " begin
if pc.get_level() < 30 then
say_reward("Nem léphetsz be, túl alacsony szintű vagy. ")
elseif pc.count_item(71110) < 1 then
say_reward("Nem léphetsz be, nincs nálad belépő. ")
else
pc.warp(2600000,2600000)
pc.remove_item(71110,1)
pc.setqf("farm_time",get_time()+60*60) --- egy órát tartókodhat bent
d.notice("Innentől 1 órát tartózkodhatsz ")
d.notice("ezen a Mapon. ")
end
end
when login with pc.get_map_index() == 128 begin
loop_timer("farm",3) --- 3mp-nként ellenőrzi, hogy még nem e telt el az az idő amit bent tölthet
end
when farm.timer begin
if pc.getqf("farm_time") < get_time() then
warp_to_village();
d.notice("Lejárt az időd! ")
end
end
end
end
próbáld meg így
am az alap questben semmi syntax hiba nincs (én írtam, és azt elég ritkán követek el)
az általad módosított verzióban már akadt több is, azt javítgattam
Lazarus, loop_timer van deklarálva a login résznél, újonnan hallottam valami olyat, hogy az terheli a szervert, de helyettesítheti 2 egymást indító timer-rel
nah, erről ennyit, remélem így működik
xxxHUN megoldása működik köszi
kivéve a d.notice("") mezők.
Témát zárom