Problema QUESTS

Înainte de a posta o problemă, caută în acest forum și poate găsești rezolvare.
Avatar utilizator
DonCarlo
Nivel 4

Nivel 4
Mesaje: 680
Membru din: 07 Mai 2016, 08:48
Regat: Jinno
Aprecieri: 45  
Mulţumiri: 12  
 Contact:
Medalii

*Problemă: Am o mica problema la quests
Tipologie server: PvM
*Resursă folosită: http://just4metin.ro/mape-interfete/eve ... 56312.html
*ServerFiles utilizat: Empire World
*Syserr: -
Poză: -
*Detalii suplimentare: Asta e questul , cand dau dezactivare event, nu ii teleporteaza pe playeri fiecare in mapa lui...de la questul de ox , nu am idee de unde sa iau... :
ABBC3_SPOILER_SHOW

Imagine
Afișează semnătura
Avatar utilizator
eubogdanel2018
Nivel 1

Nivel 1
Mesaje: 122
Membru din: 27 Dec 2017, 02:57
Server: Metin2Destros
Regat: Shinsoo
Aprecieri: 17  
Mulţumiri: 11  
Medalii

iti functioneaza mapa ox cum trebuie ? zici ca l ai luat pe cel de pe ox ... dar ai verificat daca faci un ox si termini evenimentul, daca ii teleporteaza inapoi? zic ca poate nu ai coordonatele bune:-??? ma uit si eu imediat peste el sa vad daca imi dau seama si te pot ajuta ...
Pentru acest mesaj, eubogdanel2018 for the post:
DonCarlo
Avatar utilizator
eubogdanel2018
Nivel 1

Nivel 1
Mesaje: 122
Membru din: 27 Dec 2017, 02:57
Server: Metin2Destros
Regat: Shinsoo
Aprecieri: 17  
Mulţumiri: 11  
Medalii

JotaGames scrie:*Problemă: Am o mica problema la quests
Tipologie server: PvM

*s utilizat: Empire World
*Syserr: -
Poză: -
*Detalii suplimentare: Asta e questul , cand dau dezactivare event, nu ii teleporteaza pe playeri fiecare in mapa lui...de la questul de ox , nu am idee de unde sa iau... :
ABBC3_SPOILER_SHOW


Vezi ca l am modificat eu putin dar degeaba deocamdata ca iti trebuiesc coordonatele mapelor 1 2 3 adica la regatele albastru , rosu si galben plus index la sfarsit ... daca nu ma insel ala e index ul ...in fine sa zicem ca alea nu le schimbi si bagi doar la prima coordonatele acolo unde este linia
--------------------------------
if pc.get_empire() == 3 then
pc.warp(581500,703100)
elseif pc.get_empire() == 1 then
pc.warp(581500,703100)
else
pc.warp(581500,703100)

--------------------------------

Acum o ai introdusa si dupa urmatoarele "notice_all("")"
------------------------------------------
when 20358.chat."GM: Dezactiveaza Labirintul Fantomei" with pc.is_gm() begin
say_title("Vrei sa dezactivezi labirintul fantomei?")
say("")
local act = select("Da","Nu")
if act == 1 then
game.set_event_flag("labirint_active",0)
notice_all("Eventul Labirintul Fantomei a luat sfarsit!")
notice_all("Jucatorii si spectatorii vor fi teleportati acum!")
------------------------------------------

Vreau ca tu sa pui cooronatele la map1 care vrei tu doar pentru un test, in linia :
----------------
pc.warp(581500,703100)
----------------
Mai exact, intre paranteze ... o sa ai nevoie ca sa intri in joc si sa rulezi comanda "/state" , ea iti arata cam tot ce trebuie despre mapa, dai pana sus ca sa vezi linia unde se afla numele MapIndex si acolo o sa ai niste coordonate mai lungi cum sunt cele de sus , le introduci in linia care ti am spus mai sus de ea si salvezi, apoi rulezi quest ul si dai un reload q, sa dai permisiunile 777 daca nu le ai . Fa un test cu ea , porneste si cheama 3 playeri din 3 regate diferite sa vezi pe care il teleporteaza in map 1 blue ... daca asta nu e buna, incercam altceva.


Uite quest ul tau modificat putin, tu trebuie doar sa schimbi in liniile unde ti am spus mai sus care se afla dupa acele "notice_all("")" sub acele notice all ai introduse acele "pc.warp intre parantezele lor modifi acele cifre care sunt coordonate cu cele din mapa ta cand dai "/state" apar printre primele inormati coordonatele pe randul cu MapIndex:
--------------------------------------------------------------------------------------------------------------------------------------
quest labirintul_fantomei begin
state start begin
when 20358.chat."GM: Activeaza Labirintul Fantomei" with pc.is_gm() begin
say_title("Vrei sa activezi labirintul fantomei?")
say("")
local act = select("Da","Nu")
if act == 1 then
game.set_event_flag("labirint_active",1)
notice_all("Eventul Labirintul Fantomei este deschis!")
notice_all("Pentru a participa vorbeste cu Uriel.")
end
end
when 20358.chat."GM: Dezactiveaza Labirintul Fantomei" with pc.is_gm() begin
say_title("Vrei sa dezactivezi labirintul fantomei?")
say("")
local act = select("Da","Nu")
if act == 1 then
game.set_event_flag("labirint_active",0)
notice_all("Eventul Labirintul Fantomei a luat sfarsit!")
notice_all("Jucatorii si spectatorii vor fi teleportati acum!")


if pc.get_empire() == 3 then
pc.warp(581500,703100)
elseif pc.get_empire() == 1 then
pc.warp(581500,703100)
else
pc.warp(581500,703100)

if act == 2 then
return

end
end
when 30121.chat."Ai castigat " with game.get_event_flag("labirint_active") == 1 begin
notice_all(""..pc.get_name().." a demonstrat inteligenta si a gasit fantoma. Grabestete si gaseste-o si tu !")
say_title( "Ai castigat!" ) 
say("Felicitari ai castigat, vei fi teleportat pentru premiu. ")
say_reward("Chiar vrei sa te teleportezi acolo?")
local s1=select("Teleporteaza-ma","Nu vreau")
if s1 == 1 then
pc.warp(578800, 692500)
else
return
end
end
when 20011.chat."Labirintul fantomei" with game.get_event_flag("labirint_active") == 1 begin
if pc.getqf("player") < 1 then
say_title("Intra ca jucator")
say("")
say("Vrei sa intri ca jucator?")
say("")
local answ = select("Da","Nu")
if answ == 1 then
if pc.get_empire() == 3 then
pc.warp(581500,703100)
elseif pc.get_empire() == 1 then
pc.warp(581500,703100)
else
pc.warp(581500,703100)
end
end
elseif pc.getqf("player") == 2 then
say_title("Intra ca spectator")
say("")
say("Vrei sa intri ca sectator")
say("")
local answ = select("Da","Nu")
if answ == 1 then
pc.warp(581500,703100)
end
end
end
when logout with pc.get_map_index() == 242 begin
pc.setqf("player",0)
end
end
end
--------------------------------------------------------------------------------------------------------------------------------------
Pentru acest mesaj, eubogdanel2018 for the post:
DonCarlo
Avatar utilizator
DonCarlo
Nivel 4

Nivel 4
Mesaje: 680
Membru din: 07 Mai 2016, 08:48
Regat: Jinno
Aprecieri: 45  
Mulţumiri: 12  
 Contact:
Medalii

Am modificat in felul urmator :
if pc.get_empire() == 3 then - Am incercat sa pun si map index de la blue, adica 41
pc.warp(9690,2786) - Coordonatele din map1 blue , am incercat si cu alea lungi...
elseif pc.get_empire() == 1 then
pc.warp(581500,703100)
else
pc.warp(581500,703100)

if act == 2 then
return

Si imi da eroare in putty, cand citesc quests :

labirintul_fantomei.quest:78:syntax error : [string "startpc . is_gm ( )"]:18: unexpected symbol near `when'
Abort (core dumped)
Imagine
Afișează semnătura
Avatar utilizator
DonCarlo
Nivel 4

Nivel 4
Mesaje: 680
Membru din: 07 Mai 2016, 08:48
Regat: Jinno
Aprecieri: 45  
Mulţumiri: 12  
 Contact:
Medalii

eubogdanel2018 scrie:iti functioneaza mapa ox cum trebuie ? zici ca l ai luat pe cel de pe ox ... dar ai verificat daca faci un ox si termini evenimentul, daca ii teleporteaza inapoi? zic ca poate nu ai coordonatele bune:-??? ma uit si eu imediat peste el sa vad daca imi dau seama si te pot ajuta ...
Momentan nu imi functioneaza mapa ox, am incercat sa schimb la quests cv si acum nu mai citeste nici un quests de ox...
Nu pot verifica daca ii teleporteaza inapoi pe playerii de la ox, pt ca nici nu il pot deschide.
Imagine
Afișează semnătura
Avatar utilizator
Fe®
Nivel 1

Nivel 1
Mesaje: 72
Membru din: 25 Mai 2014, 03:06
Server: Biciclentiu
Regat: Chunjo
Aprecieri: 1  
Mulţumiri: 15  
Medalii

quest labirintul_fantomei begin
state start begin

--buton GM la npcul 20358 pt activare event
when 20358.chat."GM: Activeaza Labirintul Fantomei" with pc.is_gm() begin
say_title("Vrei sa activezi labirintul fantomei?")
say("")
local act = select("Da","Nu")
if act == 1 then
game.set_event_flag("labirint_active",1)
notice_all("Eventul Labirintul Fantomei este deschis!")
notice_all("Pentru a participa vorbeste cu Uriel.")
end
end
--END buton GM la npcul 20358 pt activare event

--buton GM la npcul 20358 pt dezactivare event
when 20358.chat."GM: Dezactiveaza Labirintul Fantomei" with pc.is_gm() begin
say_title("Vrei sa dezactivezi labirintul fantomei?")
say("")
local act = select("Da","Nu")
if act == 1 then
game.set_event_flag("labirint_active",0)
notice_all("Eventul Labirintul Fantomei a luat sfarsit!")
notice_all("Jucatorii si spectatorii vor fi teleportati acum!")
warp_all_to_village(242,5)
end
end
--END buton GM la npcul 20358 pt dezactivare event

--buton playeri la npc 30121 (finalul labirintului)
when 30121.chat."Ai castigat " with game.get_event_flag("labirint_active") == 1 begin
notice_all(""..pc.get_name().." a demonstrat inteligenta si a gasit fantoma. Grabestete si gaseste-o si tu !")
say_title( "Ai castigat!" )
say("Felicitari ai castigat, vei fi teleportat pentru premiu. ")
say_reward("Chiar vrei sa te teleportezi acolo?")
local s1=select("Teleporteaza-ma","Nu vreau")
if s1 == 1 then
pc.warp(578800, 692500) --unde il teleporteaza pe castigator / castigatori, atentie, eventul nu se termina cand 1 player gaseste fantoma
else
return
end
end
--END buton playeri la npc 30121 (finalul labirintului)

-- buton playeri la npc 20011 pt intrare in labirint
when 20011.chat."Labirintul fantomei" with game.get_event_flag("labirint_active") == 1 begin
if pc.getqf("player") < 1 then
say_title("Intra ca jucator")
say("")
say("Vrei sa intri ca jucator?")
say("")
local answ = select("Da","Nu")
if answ == 1 then
if pc.get_empire() == 3 then
pc.warp(581500,703100)
elseif pc.get_empire() == 1 then
pc.warp(581500,703100)
else
pc.warp(581500,703100)
end
end
elseif pc.getqf("player") == 2 then
say_title("Intra ca spectator")
say("")
say("Vrei sa intri ca sectator")
say("")
local answ = select("Da","Nu")
if answ == 1 then
pc.warp(581500,703100)
end
end
end
--END buton playeri la npc 20011 pt intrare in labirint

--delogare in mapa
when logout with pc.get_map_index() == 242 begin
pc.setqf("player",0)
end
--END delogare in mapa
end
end
ti-am adaugat aici niste comentarii pentru a intelege rolul fiecarui when din quest, apoi ca modificari...
1. nu vad rostul a ceea ce este aici:

Cod: Selectaţi tot

-- buton playeri la npc 20011 pt intrare in labirint
		when 20011.chat."Labirintul fantomei" with game.get_event_flag("labirint_active") == 1 begin
			if pc.getqf("player") < 1 then
				say_title("Intra ca jucator")
				say("")
				say("Vrei sa intri ca jucator?")
				say("")
				local answ = select("Da","Nu")
				if answ == 1 then
					if pc.get_empire() == 3 then
						pc.warp(581500,703100)
					elseif pc.get_empire() == 1 then
						pc.warp(581500,703100)
					else
						pc.warp(581500,703100)
					end
				end
			elseif pc.getqf("player") == 2 then
				say_title("Intra ca spectator")
				say("")
				say("Vrei sa intri ca sectator")
				say("")
				local answ = select("Da","Nu")
				if answ == 1 then
					pc.warp(581500,703100) 
				end
			end
		end
		--END buton playeri la npc 20011 pt intrare in labirint
		
deci intai face if dupa variabila "player" dar asta default e 0, ca orice alta variabila din pc.getqf si singurul loc unde este setata variabila este la delogare, unde o face iar 0.. deci pc.getqf("player") este mereu 0... what's the point of that?? apoi mai jos face if dupa regatul din care face parte... dar ii teleporteaza pe toti playerii in acelasi loc in labirint... din nou.. ??? de ce ai face asa ceva? apoi in acel elseif pc.getqf("player") == 2 then care nu se va executa niciodata din moment ce pc.getqf("player") e mereu 0, zice ca te baga ca spectator, dar te teleporteaza tot unde ii teleporteaza si pe restu... deci partea asta eu zic ca cel mai bine o inlocuiesti cu

Cod: Selectaţi tot

-- buton playeri la npc 20011 pt intrare in labirint
		when 20011.chat."Labirintul fantomei" with game.get_event_flag("labirint_active") == 1 begin
			say_title("Intra ca jucator")
			say("")
			say("Vrei sa intri ca jucator?")
			say("")
			local answ = select("Da","Nu")
			if answ == 1 then
				pc.warp(581500,703100)
			end
		end
		--END buton playeri la npc 20011 pt intrare in labirint
iar acum nu vei mai avea nevoie nici de partea de logout.. care oricum nu facea nimic

pt teleportarea in map1 a playerilor la inchiderea eventului... se ocupa de asta functia warp_all_to_village(242,5) - aici asigura-te ca 242 e indexul labirintului... cand ai adaugat mapa in server, in /usr/home/game/share/locale/romania/map ce ai trecut in fisierul index? ai pus

Cod: Selectaţi tot

242 numelemapei
? ori ai pus alt numar?
Pentru acest mesaj, Fe® for the post:
DonCarlo
Avatar utilizator
DonCarlo
Nivel 4

Nivel 4
Mesaje: 680
Membru din: 07 Mai 2016, 08:48
Regat: Jinno
Aprecieri: 45  
Mulţumiri: 12  
 Contact:
Medalii

Fe® scrie:
quest labirintul_fantomei begin
state start begin

--buton GM la npcul 20358 pt activare event
when 20358.chat."GM: Activeaza Labirintul Fantomei" with pc.is_gm() begin
say_title("Vrei sa activezi labirintul fantomei?")
say("")
local act = select("Da","Nu")
if act == 1 then
game.set_event_flag("labirint_active",1)
notice_all("Eventul Labirintul Fantomei este deschis!")
notice_all("Pentru a participa vorbeste cu Uriel.")
end
end
--END buton GM la npcul 20358 pt activare event

--buton GM la npcul 20358 pt dezactivare event
when 20358.chat."GM: Dezactiveaza Labirintul Fantomei" with pc.is_gm() begin
say_title("Vrei sa dezactivezi labirintul fantomei?")
say("")
local act = select("Da","Nu")
if act == 1 then
game.set_event_flag("labirint_active",0)
notice_all("Eventul Labirintul Fantomei a luat sfarsit!")
notice_all("Jucatorii si spectatorii vor fi teleportati acum!")
warp_all_to_village(242,5)
end
end
--END buton GM la npcul 20358 pt dezactivare event

--buton playeri la npc 30121 (finalul labirintului)
when 30121.chat."Ai castigat " with game.get_event_flag("labirint_active") == 1 begin
notice_all(""..pc.get_name().." a demonstrat inteligenta si a gasit fantoma. Grabestete si gaseste-o si tu !")
say_title( "Ai castigat!" )
say("Felicitari ai castigat, vei fi teleportat pentru premiu. ")
say_reward("Chiar vrei sa te teleportezi acolo?")
local s1=select("Teleporteaza-ma","Nu vreau")
if s1 == 1 then
pc.warp(578800, 692500) --unde il teleporteaza pe castigator / castigatori, atentie, eventul nu se termina cand 1 player gaseste fantoma
else
return
end
end
--END buton playeri la npc 30121 (finalul labirintului)

-- buton playeri la npc 20011 pt intrare in labirint
when 20011.chat."Labirintul fantomei" with game.get_event_flag("labirint_active") == 1 begin
if pc.getqf("player") < 1 then
say_title("Intra ca jucator")
say("")
say("Vrei sa intri ca jucator?")
say("")
local answ = select("Da","Nu")
if answ == 1 then
if pc.get_empire() == 3 then
pc.warp(581500,703100)
elseif pc.get_empire() == 1 then
pc.warp(581500,703100)
else
pc.warp(581500,703100)
end
end
elseif pc.getqf("player") == 2 then
say_title("Intra ca spectator")
say("")
say("Vrei sa intri ca sectator")
say("")
local answ = select("Da","Nu")
if answ == 1 then
pc.warp(581500,703100)
end
end
end
--END buton playeri la npc 20011 pt intrare in labirint

--delogare in mapa
when logout with pc.get_map_index() == 242 begin
pc.setqf("player",0)
end
--END delogare in mapa
end
end
pc.warp(578800, 692500) --unde il teleporteaza pe castigator / castigatori, atentie, eventul nu se termina cand 1 player gaseste fantoma - Stiu asta, o sa bag 3 castigatori si o sa modific si ce scrie cand cineva gaseste fantoma.
ABBC3_SPOILER_SHOW
Aici, nu e questul facut de mine, ma pricep cam 20% in quests si in acest limbaj, mai am de invatat....deci ;)
ABBC3_SPOILER_SHOW
O sa fac chestia asta si vad ce se intampla.

Cod: Selectaţi tot

-- buton playeri la npc 20011 pt intrare in labirint
		when 20011.chat."Labirintul fantomei" with game.get_event_flag("labirint_active") == 1 begin
			say_title("Intra ca jucator")
			say("")
			say("Vrei sa intri ca jucator?")
			say("")
			local answ = select("Da","Nu")
			if answ == 1 then
				pc.warp(581500,703100)
			end
		end
		--END buton playeri la npc 20011 pt intrare in labirint
iar acum nu vei mai avea nevoie nici de partea de logout.. care oricum nu facea nimic
ABBC3_SPOILER_SHOW
Da, apare fix indexul mapei respective acolo, dar problema e ca functia warp_all_to_village(242,5) nu isi face treaba , adica nu ii duce pe playeri in map1...
Citeste tot ce e mai sus :)
Imagine
Afișează semnătura
Avatar utilizator
DonCarlo
Nivel 4

Nivel 4
Mesaje: 680
Membru din: 07 Mai 2016, 08:48
Regat: Jinno
Aprecieri: 45  
Mulţumiri: 12  
 Contact:
Medalii

Daca imi puteti modifica questul fix cum este nevoie pentru a face urmatoarele functii :
20358 - flori fara nume (de unde pot incepe/termina eventul respectiv)
30121 - fantoma care trebuie cautata de playeri, o data ce a gasit-o , sa fie teleportati automat in locul respectiv unde e gm-ul pentru a primi premiul ( functioneaza chestia din quest, nu este nevoie sa fie doar 1 castigatori, pot fi si 3-4)
20011 - uriel, unde pot intra playerii din map1 pentru a participa la event

Astept exemple de questuri pentru a verifica... nu mai am nevoie de chestia cu spectatorul, e ok si ca participant doar.
Imagine
Afișează semnătura
Avatar utilizator
eubogdanel2018
Nivel 1

Nivel 1
Mesaje: 122
Membru din: 27 Dec 2017, 02:57
Server: Metin2Destros
Regat: Shinsoo
Aprecieri: 17  
Mulţumiri: 11  
Medalii

ai incercat ca in linia :
----------------
warp_all_to_village(242,5)
----------------
Sa pui un simplu space dupa "(245, 5)" ? dupa "245" ? .. :)


Si eu sunt incepator dar incerc sa te ajut cum pot.... orice mica greseala la o fucntie duce la anularea ei, de asta ti am zis ca poate necesita space :-??
Pentru acest mesaj, eubogdanel2018 for the post:
DonCarlo
Avatar utilizator
DonCarlo
Nivel 4

Nivel 4
Mesaje: 680
Membru din: 07 Mai 2016, 08:48
Regat: Jinno
Aprecieri: 45  
Mulţumiri: 12  
 Contact:
Medalii

T/C Rezolvat
Multumesc mult celor care au incercat sa ma ajute : eubogdanel2018 & FER
Problema era de la spatiul intre "(245, 5)" pentru ca cei care au facut questul a uitat sa adauge acel spatiu.
Questul functioneaza perfect , recomand si altor persoane sa il foloseasca.
Imagine
Afișează semnătura
Închis
Răspunsuri
5
Vizualizări
524
Răspunsuri
10
Vizualizări
1355
Răspunsuri
5
Vizualizări
269

Înapoi la “Probleme rezolvate”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 9 vizitatori