-- Ao matar um pk, ganhara rep+ --
if (getCreatureSkullType(target) > 0) then
-- Ao matar um player normal, ganhara rep- --
if (getCreatureSkullType(target) > 0) then
Ué o que muda nos 2 ? não seria >1 e == 0 ?
Não lembro direito os ids das skulls
Por jhon992, 30 de nov. de 2011 em Globalevents e Spells
info
Grupo: Lorde
Registrado: 17/01/09
Posts: 2.1k
Reputação: +395
Char no Tibia: Adra Sata

-- Ao matar um pk, ganhara rep+ --
if (getCreatureSkullType(target) > 0) then
-- Ao matar um player normal, ganhara rep- --
if (getCreatureSkullType(target) > 0) then
Ué o que muda nos 2 ? não seria >1 e == 0 ?
Não lembro direito os ids das skulls
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: Warrior of Mort

-- Ao matar um pk, ganhara rep+ --
if (getCreatureSkullType(target) > 0) then
-- Ao matar um player normal, ganhara rep- --
if (getCreatureSkullType(target) > 0) then
Ué o que muda nos 2 ? não seria >1 e == 0 ?
Não lembro direito os ids das skulls
Desculpa aew, nem tinha visto isso, dupliquei a parte ali e esqueci de editar.
info
Grupo: Lorde
Registrado: 17/01/09
Posts: 2.1k
Reputação: +395
Char no Tibia: Adra Sata

De Boa.
Parabéns, aumentou muito o seu nível.
Gostei muito !
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: Warrior of Mort

De Boa.
Parabéns, aumentou muito o seu nível.
Gostei muito !
Andei estudando um pouco. ![]()
E muito obrigado pelo elogio, isso me faz cada vez querer crescer mais! ![]()
Muito legal,para quem gosta de por rep no ot ta certinho parabens ![]()
info
Grupo: Banidos
Registrado: 01/12/11
Posts: 9
Reputação: 0
Char no Tibia: Acidoiz

Nem Funfo ![]()
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: Warrior of Mort

Claro que funciona, não fala se tu não sabe usar corretamente! Se tiver dúvida me pergunta, não juga sem saber usar.
info
Grupo: Campones
Registrado: 09/08/10
Posts: 71
Reputação: +2
Char no Tibia: Eduardo of Honera

aqui não funcionou não, nem apareçe as msg quando mato os monstros "Você ganhou 1 ponto de reputação por matar um ..." e quando dou !rankrep unica coisa q apareçe é 14:34 Você possui -1 pontos de Reputação. =[
info
Grupo: Herói
Registrado: 12/03/11
Posts: 1.9k
Reputação: +284
Gênero: Masculino
Char no Tibia: Nokte

Otimo script de reputação vlw ai por contribuir com a Comunidade
Funcionando perfeitamente. Parabéns e continue assim! ![]()
info
Grupo: Conde
Registrado: 30/10/11
Posts: 625
Reputação: +101
Gênero: Masculino

uashuashsauh
se mata um player que ta de party ganha rep por que quando ta de party fica green skull = 2
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

Ta bem legal,só porque de vez de usar o else ou só fechar o if vc abriu outro if?
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 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
acho que você poderia fazer um MOD que fica mais fácil de configurar!
parabéns pelo sistema,ficou ótimo.
REP+
Editado Dezembro 5 por Vodkart
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: Warrior of Mort

Valeu a e @Vodkart pelo elogio e a dica. Nem percebi que não precisava dos dois if, porque a primeira vez que fiz o script não usei isPlayer(target), dae fui testar e reparei que qualquer monstro concedia rep+ asjida. Então fui e adicionei nas duas parte da configuração que precisava verificar se era player.
Valeu pela dica tambem @lordbug99 nem tinha estudado o getCreatureSkullType, tinha deduzido que quem tivesse skull era pk então desculpa pelo erro ao galera.
info
Grupo: Campones
Registrado: 09/08/10
Posts: 71
Reputação: +2
Char no Tibia: Eduardo of Honera

!rep rank , não apareçe a lista dos jogadores /;
info
Grupo: Conde
Registrado: 30/06/11
Posts: 631
Reputação: +371
Char no Tibia: Warrior of Mort
Estou aqui hoje para trazer um sistema simples que eu criei, porém pode ser até muito útil, o Sistema de Reputação !
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Para que Esse Sistema pode ser Útil:
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[i]) 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[i]..".") 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 endAgora em "data/creaturescripts/creaturescripts.xml" cole a tag:
Entre na pasta "data/creaturescripts/scripts" novamente, e abra o arquivo "login.lua" sem as aspas. Nele cole a tag:
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 endE por último mais não menos importante, abra "data/talkactions/talkacitons.xml" e cole a tag:
Pronto, terminamos o nosso Simple Reputation System!
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----- Reputation Door-----
Vai em data/actions/script, duplica um arquivo e nomeia para "repDoor" sem as aspas e nele cole:
function onUse(cid, item, frompos, item2, topos) local quantRep = 30 -- quantidade de reset para entrar na porta newnPosition = {x=784, y=805, z=7} -- onde será teleportado ao clicar na porta if item.actionid == 2085 and getPlayerStorageValue(cid, 102086) >= quantRep then doTeleportThing(cid, newnPosition) doSendMagicEffect(newnPosition, 10) else doCreatureSay(cid, "Voce nao tem reputação suficiente para entrar!", TALKTYPE_ORANGE_1) end return TRUE endAgora em data/actions/actions.xml cole a tag:
E por último com seu mapa editor, vai na porta desejada do seu server e coloque o actionid 2085.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Agora para fazer alavancas, baús e etc, basta seguir o exemplo do script acima da repDoor.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----- Quantidade de Reputação para usar determinado item -----
Vai em data/movements/script e duplica um arquivo dessa pasta e nomeie para "itemRep" sem aspas, abra-o e cole:
Agora vai em data/movements/movements.xml abre e adicione a tag:
Troque os slots na tag acima como desejar, tipos de slots:
Para itens que você for usar com a mesma quantidade de reps que o item anterior, apenas crie uma nova tag no movementes.xml com o itemid diferente. Senão você devera criar um novo script com o nome diferente e mudar a quantRep.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----- Comprar determinado item com Pontos de Reputação -----
Vai em data/talkactions/scripts, duplique um arquivo e nomeiei para "buyrep" sem as aspas e nele cole:
local itemNames = { {name = "Dragon Shield", pontos = 2}, -- nome do item e pontos que gastara. {name = "Crown Armor", pontos = 8}, {name = "Arbalest", pontos = 25}, {name = "Heroic Axe", pontos = 20}, {name = "Magic Sword", pontos = 30}, {name = "Demon Armor", pontos = 50} } function onSay(cid, words, param, channel) if param == "" then for i=1, #itemNames do if i == 1 then text = "-- Lista de Items --\n" else text = text .. (itemNames[i].name) .." = ".. itemNames[i].pontos .." pontos\n" end end doShowTextDialog(cid,8977,text) return true end param = string.upper(param) for j=1, #itemNames do if (param == string.upper(itemNames[j].name)) then if getPlayerStorageValue(cid, 102086) < tonumber(itemNames[j].pontos) then doPlayerSendCancel(cid,"Você não possui pontos suficientes.") return true else doPlayerAddItem(cid, getItemIdByName(param)) doPlayerSendTextMessage(cid, 22, "Você comprou 1 ".. itemNames[j].name ..".") setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086) - itemNames[j].pontos) return true end end end doPlayerSendCancel(cid,"Este item não existe.") return true endAgora em data/talkactions/talkactions.xml cole a tag:
Em jogo, ao falar "!buy" aparecera a lista de itens que pode ser comprado e seus determinados custos, conforme foram configurados no arquivo "buyrep.lua".
Para comprar um item basta ter a quantidade de reputação necessaria e usar o comando "!buy NomeDoItem".
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----- Mostrar Reputação no Look (by Vodkart)-----
Vai em data/creaturescripts/scripts, duplique um arquivo e nomeiei para "showrep" sem as aspas e nele cole:
No creaturescripts.xml cole a tag:
E no arquivo login.lua, antes do último return true:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----- Versão 2.0 repsystem.lua -----
Caso você queira que cada monstro que você matar de pontos diferentes de reputação, voce deve substituir oque tem dentro do seu arquivo inicialmente criado e nomeado como repsystem.lua por isso:
--<Script by jhon992>-- function onKill(cid, target, lastHit) local pkDeathPoints = 1 -- pontos que vai ganhar por matar pk. local deathPlayer = 2 -- pontos que vai perder por matar player normal. local vetMonster = { {nome="Demon", quant=3}, -- nome do monstro e quantidade de rep que ira ganhar. {nome="Morgaroth", quant=5}, {nome="Hydra", quant=2}, {nome="Dragon", quant=1} } -- Ao matar monstros do vetMonster, ganhara rep+. for i=1, #vetMonster do if (getCreatureName(target) == vetMonster[i].nome) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+vetMonster[i].quant) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou ".. (vetMonster[i].quant) .." ponto(s) de reputação por matar um ".. (vetMonster[i].nome) ..".") 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)+pkDeathPoints) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou "..(pkDeathPoints).." ponto(s) de reputação por matar "..getCreatureName(target)..".") return TRUE end -- Ao matar um player normal, ganhara rep-. setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)-deathPlayer) doSendAnimatedText(getThingPos(cid), 'Rep-', 144) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você perdeu "..(deathPlayer).." ponto(s) de reputação por matar "..getCreatureName(target)..".") return TRUE end return TRUE endÉ isso aew galera, qualquer coisa que precise ser modificado ou dica para melhorar os scripts e o sistema serão bem vindas!
Editado Maio 9 por Jhon992