Ultima modifica da un moderatore:
Buonasera inforgiani
Molto tempo fa in un server vidi un pannello che permetteva di sapere dove fosse un player nella propria mappa(un semplice target) tuttavia non permetteva di sapere coordinate e mappa precisa , quindi ho pensato di farne uno in grado di poter trovare qualsiasi player in qualsiasi mappa con le coordinate precise.
Come funziona?
Al login prende la mappa e le coordinate e le salva per poi attivare un timer che controllerà le coordinate ogni 5 secondi. Il tempo è regolabile in base alle proprie esigenze , potete anche impostarlo a 60-120 secondi modificando la quarta riga della quest , ovvero : loop_timer("refresh_pcp" , 5) dove 5 è il numero di secondi che passeranno tra un aggiornamento e l'altro.
Come lo implemento?
Iniziamo...
Per prima cosa ecco la quest :
Subito dopo(va bene anche prima
) inserite nel questlib questo :
Come potrete notare controlla l'index della mappa nell'array lista_mappe e se ne trova qualcuna scrive il nome della mappa e salva , altrimenti avvisa di non aver trovato il player. Per aggiungere nuove mappe basterà modificare questo pezzo :
Se volete aggiungere nuove mappe basterà seguire l'esempio evidenziato in rosso , ovvero inserendo l'index e il nome che della mappa.
Per quanto riguarda la lista gm invece :
Non credo ci sia bisogno di spiegazione per questo xD
Quest_function :
Il pannello al momento può memorizzare solo mappa e coordinate ma con qualche piccola modifica potrete sapere razza,livello,dottrina,ecc... ma questo lo lascio a voi
PS : Se trovate il nome delle mappe mancanti mandatemi un pm o rispondete alla discussione che provvederò ad aggiornare la lista.
Molto tempo fa in un server vidi un pannello che permetteva di sapere dove fosse un player nella propria mappa(un semplice target) tuttavia non permetteva di sapere coordinate e mappa precisa , quindi ho pensato di farne uno in grado di poter trovare qualsiasi player in qualsiasi mappa con le coordinate precise.
Come funziona?
Al login prende la mappa e le coordinate e le salva per poi attivare un timer che controllerà le coordinate ogni 5 secondi. Il tempo è regolabile in base alle proprie esigenze , potete anche impostarlo a 60-120 secondi modificando la quarta riga della quest , ovvero : loop_timer("refresh_pcp" , 5) dove 5 è il numero di secondi che passeranno tra un aggiornamento e l'altro.
Come lo implemento?
Iniziamo...

Per prima cosa ecco la quest :
PHP:
quest pcp begin
state start begin
when login begin
loop_timer("refresh_pcp" , 5)
end
when logout begin
salva_info("off")
end
when letter begin
send_letter("Pannello Cerca Player")
end
when refresh_pcp.timer begin
salva_info("on")
end
when button or info begin
say_title("PCP")
say("Desideri sapere dove si trova un determinato player?")
say("")
say_reward("Non puoi cercare membri dello staff!")
local nome = input()
if check_gm(nome) then
syschat("Non puoi cercare un membro dello staff!")
return
end
if nome == nil then
syschat("Devi inserire un nome!")
return
end
say_title("PCP")
carica_info(nome)
end
end
end
Subito dopo(va bene anche prima
) inserite nel questlib questo :
PHP:
directory = "/root/pcp/"
lista_mappe = { [1] = "Villo 1 Shinso" , [3] = "Villo 2 Shinso" , [4] = "????",
[21] = "Villo 1 Chunjo" , [23] = "Villo 2 Chunjo" , [24] = "????",
[41] = "Villo 1 Jinno", [43] = "Villo 2 Jinno" , [44] = "????",
[61] = "Monte" , [62] = "Carta" , [63] = "Deserto",
[64] = "Valle" , [65] = "Tempio" , [66] = "Torre dei demoni",
[67] = "Bosco Fantasma" , [68] = "Bosco Rosso" , [69] = "Matrimonio",
[70] = "Terra dei giganti" , [71] = "Covo2" , [72] = "Atlantide 1",
[73] = "Atlantide 2" , [74] = "Monte 2" , [75] = "?????",
[77] = "Carta 2" , [78] = "????" , [81] = "Matrimonio" ,
[103] = "War" , [104] = "Covo1" , [105] = "War" ,
[107] = "Sotter Scimmie Facile" ,[108] = "Sotter Scimmie Normale",
[109] = "Sotter Scimmie Difficile" , [110] = "War" , [111] = "War",
[112] = "Mappa Duelli" , [113] = "OX" , [114] = "War tra regni"
}
function salva_info(stato)
os.remove(directory..pc.get_name())
io.output(directory..pc.get_name())
if stato == "on" then
io.write("Il player si trova a : "..info_mappa(pc.get_map_index()) )
io.write("\nIl player si trova alle coordinate : "..pc.get_local_x().." "..pc.get_local_y())
else
io.write("Il player è offline.")
end
io.close()
end
function info_mappa(index)
if lista_mappe[index] == nil then
return say("Il player non è stato trovato.")
end
return lista_mappe[index]
end
function carica_info(nome)
file = io.open(directory..nome , "r")
if not file then
return say("Il player non è stato trovato.")
end
say(file:read())
say(file:read())
end
function check_gm(nome)
lista_gm = {
"[GA]Spike",
"[GM]Figo",
"[SGM]Figolino",
"[SSJGM]FigoFigo",
}
for i = 1,table.getn(lista_gm) do
if lista_gm[i] == nome then
return true
end
end
end
Come potrete notare controlla l'index della mappa nell'array lista_mappe e se ne trova qualcuna scrive il nome della mappa e salva , altrimenti avvisa di non aver trovato il player. Per aggiungere nuove mappe basterà modificare questo pezzo :
PHP:
lista_mappe = { [1] = "Villo 1 Shinso" , [3] = "Villo 2 Shinso" , [4] = "????",
[21] = "Villo 1 Chunjo" , [23] = "Villo 2 Chunjo" , [24] = "????",
[41] = "Villo 1 Jinno", [43] = "Villo 2 Jinno" , [44] = "????",
[61] = "Monte" , [62] = "Carta" , [63] = "Deserto",
[64] = "Valle" , [65] = "??????" , [66] = "Torre dei demoni",
[67] = "Bosco Fantasma" , [68] = "Bosco Rosso" , [69] = "Matrimonio",
[70] = "Terra dei giganti" , [71] = "Covo2" , [72] = "Atlantide 1",
[73] = "Atlantide 2" , [74] = "Monte 2" , [75] = "?????",
[77] = "Carta 2" , [78] = "????" , [81] = "Matrimonio" ,
[103] = "War" , [104] = "Covo1" , [105] = "War" ,
[107] = "Sotter Scimmie Facile" ,[108] = "Sotter Scimmie Normale",
[109] = "Sotter Scimmie Difficile" , [110] = "War" , [111] = "War",
[112] = "Mappa Duelli" , [113] = "OX" , [114] = "War tra regni",
[index] = "nome mappa", [index] = "nomemappa", [index] = "nomemappa"
}
Per quanto riguarda la lista gm invece :
PHP:
function check_gm(nome)
lista_gm = {
"[GA]Spike",
"[GM]Figo",
"[SGM]Figolino",
"[SSJGM]FigoFigo",
"[GM]Esempio"
}
for i = 1,table.getn(lista_gm) do
if lista_gm[i] == nome then
return true
end
end
end
Quest_function :
PHP:
carica_info
salva_info
info_mappa
check_gm
Il pannello al momento può memorizzare solo mappa e coordinate ma con qualche piccola modifica potrete sapere razza,livello,dottrina,ecc... ma questo lo lascio a voi

PS : Se trovate il nome delle mappe mancanti mandatemi un pm o rispondete alla discussione che provvederò ad aggiornare la lista.




