[Quest] Map megnyitás (i)

Indította Magnum, 2015-01-13, 21:47:15

Sziasztok.

Valaki tudna segíteni egy olyan questbe, hogy én gm-ként tudjak menyitni egy mappot amire bemehetnek addig még én le nem zárom?
Nagyon megköszönném.

quest asdmap begin
state start begin
when NPCID.chat."XY Map megnyitása" with pc.is_gm() == true begin
local map = select("Megnyitás", "Lezárás", "Mégse")
if map == 3 then
return
elseif map == 1
if pc.getqf("map2") == 0 then
pc.setqf("map2", 1)
notice_all("XY Map megnyitotta kapuit")
elseif
say("Már meg van nyitva a pálya")
return
end
else
if pc.getqf("map2") == 1 then
pc.setqf("map2", 0)
notice_all("XY Map lezárult")
else
say("Még nincs megnyitva a map")
return
end
end
end
when NPCID.chat."XY Map" begin
if pc.getqf("map2") == 1 then
say("Biztos be szeretnél menni?")
local s = ("Igen", "Nem")
if s == 2 then
return
else
pc.warp(X,Y)
end
else
say("A map le van zárva")
return
end
end
end
end

2015-01-13, 23:14:03 #2 Utolsó szerkesztés: 2015-01-13, 23:26:21 Szerző: Ancient
Köszönöm szépet.
Témát zártam.

Üzenet összefésülés: 2015-01-13, 23:26:21

Kicsit átírtam így a questet és így nem működik make.sh-nál a 25. sorban ír hibát.

Idézquest asdmap begin
   state start begin
      when 20095.chat."Birodalma Csata(GM)" with pc.is_gm() == true begin
         local map = select("Megnyitás", "Lezárás", "Mégse")
         if map == 3 then
            return
         elseif map == 1
            if pc.getqf("map2") == 0 then
               pc.setqf("map2", 1)
               notice_all("Birodalmi Csata elkezdődött")
               notice_all("Jelentkezés Seon_Hae")
            elseif
               say("Már meg van nyitva a pálya")
               return
            end
         else
            if pc.getqf("map2") == 1 then
               pc.setqf("map2", 0)
               notice_all("Birodalmi Csata jelentkezés lezárult")
            else
               say("Még nincs megnyitva a map")
               return
            end
         end
      end
      when 20095.chat."Birodalmi Csata" begin
         if pc.getqf("map2") == 1 then
            say("Biztos be szeretnél menni?")
            local s = ("Igen", "Nem")
            if s == 2 then
               return
            else
               pc.warp(946300,25400)
            end
         else
            say("A map le van zárva")
            return
         end
      end
   end
end



Itt a hiba:

   elseif map == 1
            if pc.getqf("map2") == 0 then
               pc.setqf("map2", 1)
               notice_all("Birodalmi Csata elkezdődött")
               notice_all("Jelentkezés Seon_Hae")
            elseif
               say("Már meg van nyitva a pálya")
               return
            end


Kitörölöd az if-et belőle.


Ez egyébként így felesleges: pc.is_gm() == true
Így is elég: pc.is_gm()
"Tisztelet a kivételnek! Mindig tisztelet a kivételnek!"
"KezdÅ' vagyok, ne nézz le... (:"

igen, párszor akaratom ellenére kijavít np++ :D
meg a quest nevét is átírhatnád, nem tudom h számít-e de én így tanultam régen :D

2015-01-14, 00:05:42 #7 Utolsó szerkesztés: 2015-01-14, 00:09:24 Szerző: Ancient
Így néz ki msot a quest
[spoiler]quest asdmap begin
   state start begin
      when 20095.chat."Birodalmi Csata(GM)" with pc.is_gm() begin
         local map = select("Megnyitás", "Lezárás", "Mégse")
         if map == 3 then
            return
         elseif map == 1
            if pc.getqf("map2") == 0 then
               pc.setqf("map2", 1)
               notice_all("Birodalmi Csata elkezdődött")
               notice_all("Jelentkezés Seon_Hae")
                                else
               say("Már meg van nyitva a pálya")
               return
            end
         else
            if pc.getqf("map2") == 1 then
               pc.setqf("map2", 0)
               notice_all("Birodalmi Csata jelentkezés lezárult")
            else
               say("Még nincs megnyitva a map")
               return
            end
         end
      end
      when 20095.chat."Birodalmi Csata" begin
         if pc.getqf("map2") == 1 then
            say("Biztos be szeretnél menni?")
            local s = ("Igen", "Nem")
            if s == 2 then
               return
            else
               pc.warp(946300,25400)
            end
      else
            say("A map le van zárva")
            return
         end
      end
   end
end      [/spoiler]

És itt a hiba.
[img]

2015-01-14, 00:09:18 #8 Utolsó szerkesztés: 2015-01-14, 00:11:50 Szerző: Rin the Exorcist
         if map == 3 then
            return
         elseif map == 1 then
            if pc.getqf("map2") == 0 then
"Tisztelet a kivételnek! Mindig tisztelet a kivételnek!"
"KezdÅ' vagyok, ne nézz le... (:"

Msot így nézz ki.
[spoiler]quest asdmap begin
   state start begin
      when 20095.chat."Birodalmi Csata(GM)" with pc.is_gm() begin
         local map = select("Megnyitás", "Lezárás", "Mégse")
         if map == 3 then
            return
         elseif map == 1 then
            if pc.getqf("map2") == 0 then
               pc.setqf("map2", 1)
               notice_all("Birodalmi Csata elkezdődött")
               notice_all("Jelentkezés Seon_Hae")
            else
               say("Már meg van nyitva a pálya")
               return
            end
         else
            if pc.getqf("map2") == 1 then
               pc.setqf("map2", 0)
               notice_all("Birodalmi Csata jelentkezés lezárult")
            else
               say("Még nincs megnyitva a map")
               return
            end
         end
      end
      when 20095.chat."Birodalmi Csata" begin
         if pc.getqf("map2") == 1 then
            say("Biztos be szeretnél menni?")
            local s = ("Igen", "Nem")
            if s == 2 then
               return
            else
               pc.warp(946300,25400)
            end
      else
            say("A map le van zárva")
            return
         end
      end
   end
end[/spoiler]

És a 39.sorban ír hibát.

Talán egyel több az end, nézd így. 
quest asdmap begin
state start begin
when 20095.chat."Birodalmi Csata(GM)" with pc.is_gm() begin
local map = select("Megnyitás", "Lezárás", "Mégse")
if map == 3 then
return
elseif map == 1 then
if pc.getqf("map2") == 0 then
pc.setqf("map2", 1)
notice_all("Birodalmi Csata elkezdődött")
notice_all("Jelentkezés Seon_Hae")
else
say("Már meg van nyitva a pálya")
return
end
else
if pc.getqf("map2") == 1 then
pc.setqf("map2", 0)
notice_all("Birodalmi Csata jelentkezés lezárult")
else
say("Még nincs megnyitva a map")
return
end
end
end
when 20095.chat."Birodalmi Csata" begin
if pc.getqf("map2") == 1 then
            say("Biztos be szeretnél menni?")
            local s = ("Igen", "Nem")
            if s == 2 then
               return
            else
               pc.warp(946300,25400)
            end
else
            say("A map le van zárva")
            return
end
end
end
"Tisztelet a kivételnek! Mindig tisztelet a kivételnek!"
"KezdÅ' vagyok, ne nézz le... (:"

Egy az egyben beraktam a questet amit most küldtél és ez a hiba.
[img]

[spoiler]quest asdmap begin
state start begin
when 20095.chat."Birodalmi Csata(GM)" with pc.is_gm() begin
local map = select("Megnyitás", "Lezárás", "Mégse")
if map == 3 then
return
elseif map == 1 then
if pc.getqf("map2") == 0 then
pc.setqf("map2", 1)
notice_all("Birodalmi Csata elkezdődött")
notice_all("Jelentkezés Seon_Hae")
else
say("Már meg van nyitva a pálya")
return
end
else
if pc.getqf("map2") == 1 then
pc.setqf("map2", 0)
notice_all("Birodalmi Csata jelentkezés lezárult")
else
say("Még nincs megnyitva a map")
return
end
end
end

when 20095.chat."Birodalmi Csata" begin
if pc.getqf("map2") == 1 then
say("Biztos be szeretnél menni?")
local s = ("Igen", "Nem")
if s == 2 then
return
else
pc.warp(946300,25400)
end
else
say("A map le van zárva")
return
end
end
end
end
[/spoiler]

Hiányzott egy end a vége felé.

A tiedet is bemásoltam egy az egyeben, ott meg a 40.sorban van a hiba.

[img]

[spoiler]quest asdmap begin
state start begin
when 20095.chat."Birodalmi Csata(GM)" with pc.is_gm() begin
local map = select("Megnyitás", "Lezárás", "Mégse")
if map == 3 then
return
elseif map == 1 then
if pc.getqf("map2") == 0 then
pc.setqf("map2", 1)
notice_all("Birodalmi Csata elkezdődött")
notice_all("Jelentkezés Seon_Hae")
else
say("Már meg van nyitva a pálya")
return
end
else
if pc.getqf("map2") == 1 then
pc.setqf("map2", 0)
notice_all("Birodalmi Csata jelentkezés lezárult")
else
say("Még nincs megnyitva a map")
return
end
end
end

when 20095.chat."Birodalmi Csata" begin
if pc.getqf("map2") == 1 then
say("Biztos be szeretnél menni?")
local s = select("Igen", "Nem")
if s == 2 then
return
else
pc.warp(946300,25400)
end
else
say("A map le van zárva")
return
end
end
end
end
[/spoiler]

A hiba ez volt:
Eredeti:
local s = ("Igen", "Nem")
Módosított:
local s = select("Igen", "Nem")

2015-01-14, 09:43:42 #15 Utolsó szerkesztés: 2015-01-14, 09:54:19 Szerző: Ancient
Köszönöm így működik.

Üzenet összefésülés: 2015-01-14, 09:54:19

Most viszont azt a hibát találtam, hogy nem portál el csak gm karit.

2015-01-14, 14:15:29 #16 Utolsó szerkesztés: 2015-01-14, 14:50:16 Szerző: TheSLZ
Azért nem mehet be GM-en kívül más, mert csak a GM kapja meg a questflagot mikor megnyitja. A logika rossz.
Én ilyen questet eventflaggal oldanák meg, meg is írtam gyorsan:
[spoiler]quest xmap begin
state start begin
when NPCID1.chat."X MAP" with pc.is_gm() begin
local s = select("Megnyitom", "Lezárom", "Mégse")
if s == 3 then
return
elseif s == 1 then
if game.get_event_flag("belepesx") == 0 then
game.set_event_flag("belepesx", 1)
notice_all("X-Mapra lehet menni!")
notice_all("Jelentkezés XY NPC")
else
say("Jelenleg megvan már nyitva.")
return
end
else
if game.get_event_flag("belepesx") == 1 then
game.set_event_flag("belepesx", 0)
notice_all("X-map event lezárult")
else
say("Jelenleg le van már zárva.")
return
end
end
end

when NPCID2.chat."X-Map" begin
if game.get_event_flag("belepesx") == 1 then
say("Be szeretnél menni az X-Mapra?")
local s = select("Igen", "Nem")
if s == 2 then
return
else
pc.warp(x,y)
end
else
say("A mapra jelenleg nem mehetsz be.")
end
end
end
end
[/spoiler]

Szerintem nem írtam el benne semmit mert 2x átnéztem, de ha nem fut le akkor szólj.
NPCID1, NPCID2 és x,y warpnál írd át.

Nagyon köszönöm ez működik.
Témát zártam