Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

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! yipi.gif

Editado por MonsterOt (veja o histórico de edições)

  • Respostas 9
  • Visualizações 1.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • nome do seu script.lua function getReps(cid) return getPlayerStorageValue(cid,102086) < 0 and 0 or getPlayerStorageValue(cid,102086) end function onLook(cid, thing, position, lookDistance)

  • troca aquela talk por essa: function onSay(cid, words, param, channel) if (param == "") then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você possui "..getPlayerStorageValue(cid, 102

  • troca lá no script de talk doPlayerPopupFYI(cid, str) to doShowTextDialog(cid,6500, str)

Postado

Olá Amigo,até queria te ajudar mas eu não sou Scripter que saiba mexer nisso bem.

:'(

Postado
  • Autor

nesse sistema de rep, eu queria q desse quando der look nos players mostra quanto de rep o jogador tem!!

e quando fala "!rep rank" aparece um bug

[Warning - ProtocolGame::sendFYIBox] Trying to send an empty or too huge message.

Postado

nome do seu script.lua

function getReps(cid)

return getPlayerStorageValue(cid,102086) < 0 and 0 or getPlayerStorageValue(cid,102086)

end

function onLook(cid, thing, position, lookDistance)

if isPlayer(thing.uid) then

doPlayerSetSpecialDescription(thing.uid, "\n[Reps: " .. getReps(thing.uid) .."]")

end

return true

end
creaturescript.xml
<event type="look" name="showRep" event="script" value="nome do seu script.lua"/>
creaturescript/script/login.lua adc:
registerCreatureEvent(cid, "showRep")

--

sobre esse erro: too huge message.

é porque a mensagem é grande demais.

Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo