[HELP] Időkorlátos Map (Teleportos) (K)

Indította Absolon, 2013-01-02, 20:32:54

2013-01-02, 20:32:54 Utolsó szerkesztés: 2013-01-05, 01:39:21 Szerző: [MOD]Aegist
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:




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.
HTML5,CSS3,PHP,C#,C++,JS,Java,Python,LUA

2013-01-02, 23:19:06 #2 Utolsó szerkesztés: 2013-01-03, 11:10:13 Szerző: Pisti95
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_ID
  • szinthatár
  • BELÉPŐ_ID
  • sd2_indexe
  • x
  • y

  • Amú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!

    2013-01-03, 15:24:40 #4 Utolsó szerkesztés: 2013-01-03, 15:27:03 Szerző: Absolon
    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:

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

    2013-01-03, 15:48:47 #5 Utolsó szerkesztés: 2013-01-03, 15:58:12 Szerző: Lazarus
    Í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

    by Morpheus

    xxxHUN megoldása működik köszi

    kivéve a d.notice("") mezők.


    Témát zárom