Ir para conteúdo
  • Cadastre-se

(Resolvido) [Pedido] look rep


Posts Recomendados

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)
Link para o post
Compartilhar em outros sites

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

:'(

Link para o post
Compartilhar em outros sites

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.

Link para o post
Compartilhar em outros sites

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

 

Link para o post
Compartilhar em outros sites

VODKART!! vc é foda ja me salvo mt em outras contas!!! seus trabalhos sao fodas!!

mais me ajuda nesse simple problema, tipo usei esse script deu certo 100% dp q um cara ganh 3 rep, o rank rep paro de funcionar....

apareceçe essa mengagem quando fala !rep rank

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

me ajuda please so falta isso pra completa meu ot

ja te dou rep+ 00:00 se der , ou amanha

Editado por MonsterOt (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

troca aquela talk por essa:

function onSay(cid, words, param, channel)

if (param == "") then

doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você possui "..getPlayerStorageValue(cid, 102086).." pontos de Reputação.")

elseif param == "rank" then

local max = 10

local str =""

str = "--[Reputation Rank]--\n\n"

local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 102086 ORDER BY cast(value as INTEGER) DESC;")

if (query:getID() ~= -1) then

k = 1

repeat

if k > max then

break

end

str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"

k = k + 1

until not query:next()

end

doPlayerPopupFYI(cid, str)

end

return true

end

max é o limite de player que vai aparecer no rank

se você colocar para aparecer 50 vai retornar aquela mensagem de novo ¬¬

e para aparecer no rank é que nem os outros, o cara precisa relogar para salvar o character ou dar salve server, onde todos os player do ot são salvos.

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

 

Link para o post
Compartilhar em outros sites

valeu

so mais uma kk. daria pra fazer um rank tipo esse, aparece um fogo "6500"

local ranks = {

['fist'] = {0},

['club'] = {1},

['sword'] = {2},

['axe'] = {3},

['distance'] = {4},

['shield'] = {5},

['fish'] = {6},

['magic'] = {7},

['level'] = {8},

}

function onSay(cid, words, param)

local msg = string.lower(param)

if ranks[msg] ~= nil then

str = getHighscoreString((ranks[msg][1]))

else

str = getHighscoreString((8))

end

doShowTextDialog(cid,6500, str)

return TRUE

end

Editado por MonsterOt (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

valeu

so mais uma kk. daria pra fazer um rank tipo esse, aparece um fogo "6500"

local ranks = {

['fist'] = {0},

['club'] = {1},

['sword'] = {2},

['axe'] = {3},

['distance'] = {4},

['shield'] = {5},

['fish'] = {6},

['magic'] = {7},

['level'] = {8},

}

function onSay(cid, words, param)

local msg = string.lower(param)

if ranks[msg] ~= nil then

str = getHighscoreString((ranks[msg][1]))

else

str = getHighscoreString((8))

end

doShowTextDialog(cid,6500, str)

return TRUE

end

troca lá no script de talk

doPlayerPopupFYI(cid, str)
to
doShowTextDialog(cid,6500, str)

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

 

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo