Ir para conteúdo

Posts Recomendados

Ola galerinha xtibiana.

 

Eu resolvi fazer uma versão superior do report system usando db.

 

Segue o link da versão demo:

http://www.xtibia.com/forum/topic/198470-report-sytem-beta/

 

Esta versão utiliza banco de dados assim fica mais fácil de manipular e o administrador poderá ver os reports "In-Game" além de que eles serão excluídos apos serem lidos.

A lista e ordenada pelo level do player "evitando as vezes você ler primeiros possíveis floods".

 

Vamos a instalação.

 

Vá em lib e crie um arquivo lua chamado de report e coloque isto:

 

function getReportByGuid(guid)
local shop = db.getResult("SELECT * FROM `report` WHERE `id` = ".. guid ..";")
return shop:getDataString("report")
end

function doPlayerAddReport(cid, report)
db.executeQuery("INSERT INTO `report` (`id`, `report`, `level`) VALUES (" .. getPlayerGUID(cid) .. ", '" .. report .. "', " .. getPlayerLevel(cid) .. ");")
return true
end

function showReports(cid)
local rep = db.getResult("SELECT * FROM `report` WHERE `id` ORDER BY `level`")
str = "Reports Ativos:\n\n"
if rep:getID() == -1 then
doShowTextDialog(cid, 1387, "Não ha reports disponiveis!")
return true
end
while true do
local list = rep:getDataString("report")
local players = rep:getDataInt("id")
local name = getPlayerNameByGUID(players)
str = str .. list .. " -("..players..")- Name ("..name..")]\n\n"
db.executeQuery("DELETE FROM `report` WHERE `id` = ".. players.." and `report` = '".. list .."';")
if not rep:next() then
doShowTextDialog(cid, 1397, str)
break
end
end
end

 

Agora vá em talkactions e crie um arquivo LUA chamado de report e coloque este codigo:

 

function onSay(cid, words, param, channel)
local time = 4 ---- Exhaustion cada numeral equivale a 1 hora.
if param == "" or not param or param == " " then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "E necessario escrever o report") and false
end
if exhaustion.get(cid, 23246) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você atingiu o limite de reports espere o limite sair") and false
end
if #param <= 4 then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O seu report deve conter mais de 4 caracteres") and false
end
exhaustion.set(cid, 23246, time*36000*1000)
doPlayerAddReport(cid, param)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns seu report foi enviado para nosso banco de dados logo ele sera visto\nA equipe agradece")
return true
end

 

Agora continue em talkactions e crie um arquivo lua chamado de logreport e coloque isto:

 

function onSay(cid, words, param, channel)
showReports(cid)
return true
end

 

Agora vá em talkactions.xml e coloque esta tags:

 

 

 

 
<talkaction log="yes" words="/logreport" access="5" event="script" value="logreport.lua"/>
<talkaction words="/report" event="script" value="report.lua"/>

 

 

 

Prontinho sistema instalado.

/report(nome do report) --- Reporta uma mensagem

/logreport --- Exibe a lista de report para os adminstradores

 

Dicas:

 

 

 

1 - Deixe a exhastion com muito tempo para evitar flood.
2 - Vá em login.lua e coloque isto showReports(cid) no mesmo lugar de registrar evento
3 - Veja sempre o seu reports
4 - Se perceber que um player esta "flodando" demais seus reports comece a dar punições 

 

 

Link para o comentário
Compartilhar em outros sites

  • 4 weeks later...

Ei man fiz tudo direitinho qndo vou reportar "!report" da certo mas qndo vou falar com o GOD "/logreport" ta dando debug ;x me ajuda ae com urgencia por favor !

 

OBS.: Acho que é porque você não especificou em qual pasta lib colocar, ja que tem umas 10 ! eu coloquei a pasta Ot\data\lib e ficou dando debug vou tentar por nas outras!

Editado por brunozd
Link para o comentário
Compartilhar em outros sites

  • 9 years later...

@caoticBoa tarde, muito boa a script parabéns. Mas eu tenho uma dúvida, nesse caso não teria que registrar algum código no SQL? Quando faço o reporte ele aparece na distro dessa forma: 

Spoiler

Ao enviar:
OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such table: report (INSERT INTO "report" ("id", "report", "level") VALUES (4, 'teste', 700);)

Para ver a lista de reportes:
OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such table: report (SELECT * FROM "report" WHERE "id" ORDER BY "level")

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...