nesse sistema de rep, eu queria q desse quando der look nos players mostra quanto de rep o jogador tem!! ajuda dou rep+
Estou aqui hoje para trazer um sistema simples que eu criei, porém pode ser até muito útil, o Sistema de Reputação !
Esse sistema vai funcionar da seguinte forma, você adiciona os monstros que darão Rep+ ao morrer, e a cada monstro desse, o player que o matou conquista +1 ponto de Reputação. Exemplo de monstro que seria legal adicionar: Bosses.
Outro meio de ganhar Reputação com esse sistema será matando outros players que estejam pk.
E o único meio de perder Pontos de Reputação é matando players que não estejam pk.
O Sistema também vem com um rank de Reputação que sera adicionado nas talkactions e listara os tops Reputação e um comando para verificar seus pontos de reputação.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Para que Esse Sistema pode ser Útil:
Vamos pensar da seguinte maneira, pontos ao matar. Diminuirá o número de pk's in-game pois mais players vão querer mata-los. (REP +)
Pontos negativos ao matar players comuns, também contribuirá para diminuição de pk's. (REP -)
Pontos por matar bosses e outros monstros fortes, vai estimular os player's a matarem monstros mais perigosos. (REP +)
Esse Sistema pode ser útil também para que só players com certa quantidade de Rep+ possam:
-Entrar em lugares;
-Fazer quests;
-Usar magias;
-Usar outras talkactions;
-E várias outras coisas.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Agora vamos ao que interessa os scripts:
Primeiro vai em "data/creaturescripts/scripts/" duplica um arquivo dessa pasta e renomeia para "repsystem" sem as aspas, nele cole:
--<Script by jhon992>--
function onKill(cid, target, lastHit)
vetMonster = { "Demon", "Morgaroth", "Hydra", "Dragon" } -- adicionar monstros que darão rep+
-- Ao matar monstros do vetMonster, ganhara rep+.
for i=0, #vetMonster do
if (getCreatureName(target) == vetMonster) then
setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1)
doSendAnimatedText(getThingPos(cid), 'Rep+', 30)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar um "..vetMonster..".")
return TRUE
end
end
-- Ao matar um pk, ganhara rep+.
if (isPlayer(target) == true) then
if (getCreatureSkullType(target) > 2) then
setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1)
doSendAnimatedText(getThingPos(cid), 'Rep+', 30)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar "..getCreatureName(target)..".")
return TRUE
end
-- Ao matar um player normal, ganhara rep-.
setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)-1)
doSendAnimatedText(getThingPos(cid), 'Rep-', 144)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você perdeu 1 ponto de reputação por matar "..getCreatureName(target)..".")
return TRUE
end
return TRUE
end
Agora em "data/creaturescripts/creaturescripts.xml" cole a tag:
<event type="kill" name="RepSystem" event="script" value="repsystem.lua"/>
Entre na pasta "data/creaturescripts/scripts" novamente, e abra o arquivo "login.lua" sem as aspas. Nele cole a tag:
-- Verificar se é primeira vez que loga, pois ao usar storage ele ja começa com -1,
-- Então vamos zera-lo para que sua Reputação comece do 0.
if (getPlayerStorageValue(cid, 102087) ~= 1) then
setPlayerStorageValue(cid, 102087, 1)
setPlayerStorageValue(cid, 102086, 0)
end
registerCreatureEvent(cid, "RepSystem")
Terminamos a parte do Sistema e agora vamos para o talkaction de rank.
Vai na pasta "data/talkaction/scripts", duplique um arquivo e remomeie para "rankrep" sem as aspas. Abra-o e cole:
function getPlayerNameByGUID2(n)
local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";")
if c:getID() == -1 then
return "SQL_ERROR["..n.."]"
end
return c:getDataString("name")
end
function onSay(cid, words, param)
if (param == "") then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você possui "..getPlayerStorageValue(cid, 102086).." pontos de Reputação.")
return TRUE
end
if (param == "rank") then
local max = 50
local letters_to_next = 50
local name_now
local name = "Highscore for Reputação\n"
local rkn = 0
local no_break = 0
name = name.."\n"
name = name.."Rank. Pontos | Nome do Jogador\n"
local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 102086 ORDER BY cast(value as INTEGER) DESC;")
local kk = 0
repeat
if kk == max or v:getID() == -1 then
break
end
kk = kk+1
name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id")))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end
if name_now == nil then
name_now = 'sql error['..v:getDataInt("player_id")..']'
end
name = name..kk..". "..v:getDataInt("value").." | "..name_now..space.." \n"
until v:next() == false
if name ~= "Highscore\n" then
doPlayerPopupFYI(cid, name)
end
return TRUE
else
doPlayerSendCancel(cid, "Command valid: !rep, !rep rank.")
return TRUE
end
end
E por último mais não menos importante, abra "data/talkactions/talkacitons.xml" e cole a tag:
<talkaction words="!rep" event="script" value="rankrep.lua"/>
Pronto, terminamos o nosso Simple Reputation System!