Ir para conteúdo
  • Cadastre-se

Posts Recomendados

1º) Vá a pasta mods do seu servidor

2º)Crie um arquivo chamado rep_system.xml e coloque o seguinte script nele:

<?xml version="1.0" encoding="UTF-8"?>

<mod name="Reputation System" enabled="yes">

<config name="repSystem"><![CDATA[

rep = {

--[[ GLOBAL CONFIG ]]--

interval = 6 * 60 * 60, --This is [6] hours, in seconds. Time between rep.

lastTime = 5136, --Used to store the player's last Rep Timestamp

lastName = 5138, --Used to store the last repped's GUID

minLevel = 20, --From this level onwards player can use commands

pvpLevel = 30, --Minimum level for PVP Rep'ing

skull = {4,5}, --these skulled player won't receive rep when killing

getArticle = function(cid, uppercase)

return getPlayerSex(cid) == 0 and (uppercase and 'S' or 's') ..'he' or (uppercase and 'H' or 'h') ..'e'

end,

getPoints = function(cid)

local Info = db.getResult("SELECT `rep` FROM `players` WHERE `id` = " .. getPlayerGUID(cid) .. ";")

local rep = Info:getDataInt("rep")

Info:free()

return rep

end,

getPower = function(points)

local power = {{0,2},{300,3},{500,4},{1000,5},{1500,6},{2000,8}, {5000,10}}

table.sort(power, function(a, b) return a[1] > b[1] end)

for _, t in ipairs(power) do

if(math.abs(points) >= t[1]) then

return t[2]

end

end

return power[1][2]

end,

getRank = function(points)

local ranks = {

{-5000, 'Power Abuser (+============)'},

{-2000, 'Evil (=|===========)'},

{-1500, 'Slayer (==|==========)'},

{-1000, 'Killer (===|=========)'},

{-500, 'Villain (====|========)'},

{-300, 'Creeping (=====|=======)'},

{-299, 'Noob (======|======)'},

{300, 'Avowed (=======|=====)'},

{500, 'Popular (========|====)'},

{1000, 'Hailed (=========|===)'},

{1500, 'Acclaimed (==========|==)'},

{2000, 'Hero (===========|=)'},

{5000, 'Legend (============+)'},

}

if points > -1 then

table.sort(ranks, function(a, b) return a[1] > b[1] end)

for _, t in ipairs(ranks) do if points >= t[1] then return t[2] end end

else

table.sort(ranks, function(a, b) return a[1] < b[1] end)

for _, t in ipairs(ranks) do if points <= t[1] then return t[2] end end

end

return ranks[1][2]

end,

set = function(cid, points)

db.executeQuery("UPDATE `players` SET `rep` = " .. points .. " WHERE `id` = " .. getPlayerGUID(cid) .. ";")

end,

add = function(cid, amount, color)

db.executeQuery("UPDATE `players` SET `rep` = `rep` + " .. amount .. " WHERE `id` = " .. getPlayerGUID(cid) .. ";")

doSendAnimatedText(getCreaturePosition(cid), '+REP', color)

doPlayerSendCancel(cid,'You have just been hailed and gained '.. amount ..' reputation points.')

end,

remove = function(cid, amount, color)

db.executeQuery("UPDATE `players` SET `rep` = `rep` - " .. amount .. " WHERE `id` = " .. getPlayerGUID(cid) .. ";")

doSendAnimatedText(getCreaturePosition(cid), '-REP', color)

doPlayerSendCancel(cid,'You have just been repudiated and lost '.. amount ..' reputation points.')

end,

getTime = function(timeDiff)

local dateFormat = {

{'h', timeDiff / 60 / 60 % 6},

{'m', timeDiff / 60 % 60},

}

local out = {}

for k, t in ipairs(dateFormat) do

local v = math.floor(t[2])

if(v > 0) then

table.insert(out, (k < #dateFormat and '' or ' and ') .. v .. '' .. t[1])

end

end

return table.concat(out)

end,

formatNum = function(str, sep)

str = tostring(str):reverse()

str = str:gsub("(%d)(%d)(%d)", '%1%2%3' .. (sep or " "), math.ceil(str:len() / 3)-1)

return str:reverse()

end,

}]]>

</config>

<event type="login" name="repRegister" event="script"><![CDATA[

function onLogin(cid)

registerCreatureEvent(cid, "repLook")

registerCreatureEvent(cid, "repKill")

registerCreatureEvent(cid, "repMonster")

return true

end]]>

</event>

<event type="look" name="repLook" event="script"><![CDATA[

domodlib('repSystem')

function onLook(cid, thing, position, lookDistance)

if isPlayer(thing.uid) then

doPlayerSetSpecialDescription(thing.uid,'.\n' .. (thing.uid == cid and 'He are' or rep.getArticle(thing.uid, true) .. ' is') .. ' ' .. rep.getRank(rep.getPoints(thing.uid)))

end

return true

end]]>

</event>

<event type="kill" name="repKill" event="script"><![CDATA[

domodlib('repSystem')

local t = {

[sKULL_WHITE] = 30,

[sKULL_RED] = 45,

[sKULL_BLACK] = 45,

[sKULL_NONE] = -30,

}

function onKill(cid, target, lastHit)

if isPlayer(cid) and isPlayer(target) then

--THE KILLER

if isInArray({0,3,4,5}, getCreatureSkullType(target)) then

if getPlayerLevel(target) >= rep.pvpLevel and not isInArray(rep.skull, getCreatureSkullType(cid)) then

doSendAnimatedText(getCreaturePosition(cid), getCreatureSkullType(target) == 0 and '-REP' or '+REP', math.random(1,255))

rep.set(cid, rep.getPoints(cid)+t[getCreatureSkullType(target)])

doPlayerSendTextMessage(cid, 20, 'You '.. (getCreatureSkullType(target) == 0 and 'lose' or 'gain') ..' reputation because you killed a player.')

end

end

--THE VICTIM

if rep.getPoints(target) == 0 then

return true

elseif rep.getPoints(target) > 0 then

rep.remove(target, 5, TEXTCOLOR_RED)

doPlayerSendTextMessage(target, 20, 'You lose reputation because you were killed by a player.')

else

rep.add(target, 5, TEXTCOLOR_LIGHTBLUE)

doPlayerSendTextMessage(target, 20, 'You lose reputation because you were killed by a player.')

end

end

return true

end]]>

</event>

<event type="kill" name="repMonster" event="script"><![CDATA[

domodlib('repSystem')

function onKill(cid, target, lastHit)

if not isPlayer(cid) or not isMonster(target) then

return true

end

local monsters = {

["behemoth"] = 0,

["hellfire fighter"] = 0,

}

local name = getCreatureName(target)

local monster = monsters[string.lower(name)]

if monster then

rep.add(cid, monsters[string.lower(getCreatureName(target))], TEXTCOLOR_LIGHTBLUE)

end

return true

end]]>

</event>

<talkaction log= "yes" words="/hail;/fuck;/set" access="4" event="buffer"><![CDATA[

domodlib('repSystem')

if param == '' then

doPlayerSendCancel(cid,'You must write a player\'s name.')

return true

end

local t = string.explode(param, ',')

local tid = getPlayerByName(t[1])

if not isPlayer(tid) then

doPlayerSendCancel(cid, 'Player ' .. param .. ' not found or is not online.')

return true

end

if not t[2] and isPlayer(tid) then

if words == '/hail' then

rep.add(tid, 5, TEXTCOLOR_TEAL)

doPlayerSendCancel(cid, 'You added +5 rep points to ' .. getPlayerName(tid) .. ', and now ' .. rep.getArticle(tid, false) .. ' has ' .. rep.getPoints(tid) .. ' points.')

return true

end

if words == '/fuck' then

rep.remove(tid, 5, TEXTCOLOR_RED)

doPlayerSendCancel(cid, 'You removed -5 rep points to ' .. getPlayerName(tid) .. ', and now ' .. rep.getArticle(tid, false) .. ' has ' .. rep.getPoints(tid) .. ' points.')

return true

end

end

if t[2] and isInArray({'/set','/hail','fuck'}, words) then

if not tonumber(t[2]) then

doPlayerSendCancel(cid, 'Reputation amount is invalid.')

return true

end

end

if words == '/hail' then

rep.add(tid, t[2], TEXTCOLOR_TEAL)

doPlayerSendCancel(cid, 'You added ' .. t[2] .. ' rep points to ' .. getPlayerName(tid) .. ', and now ' .. rep.getArticle(tid, false) .. ' has ' .. rep.getPoints(tid) .. ' points.')

return true

end

if words == '/fuck' then

rep.remove(tid, t[2], TEXTCOLOR_RED)

doPlayerSendCancel(cid, 'You removed ' .. t[2] .. ' rep points to ' .. getPlayerName(tid) .. ', and now ' .. rep.getArticle(tid, false) .. ' has ' .. rep.getPoints(tid) .. ' points.')

return true

end

if t[2] and words == '/set' then

rep.set(tid, t[2])

doPlayerSendCancel(cid, 'You have set ' .. getPlayerName(tid) .. '\'s points to ' .. rep.getPoints(tid))

else

doPlayerSendCancel(cid, 'Absolute reputation amount not specified.')

return true

end

if not t[2] then

doPlayerSendCancel(cid, 'Absolute reputation amount not specified.')

return true

end

return true]]>

</talkaction>

<talkaction words="!ranks" event="buffer"><![CDATA[

domodlib('repSystem')

local players = 10

local str, value, name, result = "","","",0,nil

if isInArray({'hero','pos','1','+'}, param) then

str,value,name = "[#]-[Name]-[Points]-[Rank]\n--[Positive Rep Highscores]--\n","rep","name"

result = db.getResult("SELECT `name`, `rep` FROM `players` WHERE `rep` > -1 AND `id` > 6 AND `group_id` < 2 ORDER BY `rep` DESC, `name` ASC;")

elseif isInArray({'evil','neg','2','-'}, param) then

str,value,name = "[#]-[Name]-[Points]-[Rank]\n--[Negative Rep Highscores]--\n","rep","name"

result = db.getResult("SELECT `name`, `rep` FROM `players` WHERE `rep` < 0 AND `id` > 6 AND `group_id` < 2 ORDER BY `rep` ASC, `name` DESC;")

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Unknown Paramater: '" .. param .. "'")

return true

end

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

local i = 1

while true do

str = str .. "\n " .. i .. ". " .. result:getDataString("name") .. " - [" .. result:getDataInt(value) .. "] - " .. rep.getRank(result:getDataInt(value)) .. ""

i = i+1

if not(result:next()) or i > players then

break

end

end

result:free()

end

if str ~= "" then

doPlayerPopupFYI(cid, str)

end

return true]]>

</talkaction>

<talkaction words="!rep" event="buffer"><![CDATA[

domodlib('repSystem')

local points, lastName, action = rep.getPoints(cid), getPlayerStorageValue(cid, rep.lastName), false

doPlayerSendTextMessage(cid, 19, 'You have ' .. rep.formatNum(points, ",") .. ' reputation points. You are ' .. rep.getRank(points) .. '\nYour Rep Power is ' .. rep.getPower(points) ..'. ' .. (getPlayerStorageValue(cid, rep.lastName) ~= -1 and 'You last reputed ' .. getPlayerNameByGUID(lastName) .. '.' or ''))

if points > 4999 and getPlayerSex(cid) == 0 then --female rep+++ queen outfit

disguise, text, action = {lookType = 331}, "Queen!!", true

elseif points > 4999 and getPlayerSex(cid) > 0 then --male rep+++ king outfit

disguise, text, action = {lookType = 332}, "King!!", true

elseif points > 2499 then --rep++ cm outfit

disguise, text, action = {lookType = 306}, "Legend!!", true

elseif points > 1499 then --rep+ hero outfit

disguise, text, action = {lookType = 73}, "Hero!!", true

elseif points < -4999 and getPlayerSex(cid) == 0 then --rep*** female outfit

disguise, text, action = {lookType = 312}, "DarkLord!!", true

elseif points < -4999 and getPlayerSex(cid) > 0 then --rep*** male outfit

disguise, text, action = {lookType = 287}, "DarkLord!!", true

elseif points < -2499 then --rep** pig outfit --

disguise, text, action = {lookType = 300}, "Morte!!", true

elseif points < -1499 then --rep* orc outfit --

disguise, text, action = {lookType = 194}, "Gangster!!", true

end

if action and getCreatureOutfit(cid).lookType ~= disguise.lookType then

doSetCreatureOutfit(cid, disguise, -1)

doSendAnimatedText(getCreaturePosition(cid), text, math.random(1,255))

return true

end

return true]]>

</talkaction>

<talkaction words="!hail;!fuck" event="buffer"><![CDATA[

domodlib('repSystem')

if param == '' then

doPlayerSendCancel(cid, 'Command requires a player\'s name.')

return true

end

local target, oldTime = getPlayerByName(param), getPlayerStorageValue(cid, rep.lastTime)

if not isPlayer(target) then

doPlayerSendCancel(cid, 'That player does not exist or is offline.')

return true

end

if oldTime == -1 then

setPlayerStorageValue(cid, rep.lastTime, os.time())

end

if getPlayerLevel(cid) < rep.minLevel then

doPlayerSendCancel(cid,'You may repute from level ' .. rep.minLevel ..' onwards.')

return true

end

if getPlayerGUID(target) == getPlayerStorageValue(cid, rep.lastName) then

doPlayerSendCancel(cid, 'You may not repute that player two times in a row.')

return true

end

if (os.time() - oldTime) < rep.interval then

doPlayerSendCancel(cid, 'You may repute in ' .. rep.getTime(oldTime - os.time()) .. ' [' .. os.date("%b.%d %X", oldTime + rep.interval) ..']')

return true

end

if getPlayerIp(cid) == getPlayerIp(target) then

doPlayerSendCancel(cid, 'You may not repute neither yourself nor someone in your IP.')

return true

end

if words == '!hail' then

setPlayerStorageValue(cid, rep.lastName, getPlayerGUID(target))

rep.add(target, rep.getPower(cid), TEXTCOLOR_LIGHTBLUE)

setPlayerStorageValue(cid, rep.lastTime, os.time())

doPlayerSendCancel(cid, 'You have just reputed ' .. getCreatureName(target))

elseif words == '!fuck' then

setPlayerStorageValue(cid, rep.lastName, getPlayerGUID(target))

rep.remove(target, rep.getPower(cid), TEXTCOLOR_RED)

setPlayerStorageValue(cid, rep.lastTime, os.time())

doPlayerSendCancel(cid, 'You have just reputed ' .. getCreatureName(target))

end

return true]]>

</talkaction>

</mod>



[SKULL_WHITE] = 30,

[SKULL_RED] = 45,

[SKULL_BLACK] = 45,

[SKULL_NONE] = -30,

}

aqui voce muda a rep que o player ganha qnd mata outro..

local monsters = {

["behemoth"] = 0,

["hellfire fighter"] = 0,

}

aqui voce acrescenta os monstros e a rep q eles dao..
(OBS: A quantia de REP em monster eu coloquei 0, mas você pode inserir mais monsters e modificar a quantia de REP!) 2- SQL Agora precisamos criar a tabela REP em sua database!

1º) Abra sua DATABASE no SQLITE.

2º) Vá em TOOLS

3º) Siga em OPEN SQL QUERY EDITOR

4º) Coloque na 1º linha a seguinte query:



ALTER TABLE "players" ADD "rep" INT( 11 ) NOT NULL DEFAULT "0";

5º) Aperte F9.

3- COMANDOS Os comandos do sistema:
!hail player -> da +5 de rep ao player

!fuck player -> da -5 de rep ao player

!set player, x -> Da x quantia de rep ao player

!rep -> Verifica a quantia de rep [/code]

[u][color=red][size=4]4-Créditos[/size][/color][/u]

-CyberMaster por ter feito o Script

-Eu (mariatti) por ter trazido ao TK

[u][size=4][color=red]AJUDEI??? REP+[/color][/size][/u]

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

cara queria o script para postar e ganhar rep

sé é isperto hein cumpradri

NAO, NAO FOI PRA ISSO, COMO VI QUE NAO TINHA UM SYSTEM DESSE AKI NO TK RESOLVI POSTAR PRA AJUDAR OS MEUS COLEGAS DE FORUM... NAO FALE MERDA POR FAVOR

Link para o post
Compartilhar em outros sites
  • 1 year later...

Me desculpe por reviver este topico..mas

onde eu ponho isso?

 

3- COMANDOS

Os comandos do sistema:

!hail player -> da +5 de rep ao player

!fuck player -> da -5 de rep ao player
!set player, x -> Da x quantia de rep ao player
!rep -> Verifica a quantia de rep <img src='http://tibiaking.com/forum/public/style_emoticons/<#EMO_DIR#>/happy.png' class='bbc_emoticon' alt='^^' />

 

 

 

ou e so para dizer os comandos que tem?

Link para o post
Compartilhar em outros sites
  • 4 weeks later...
  • 1 year later...

Desculpe reviver esse tópico mais preciso mto desse sistema, estou usando em mysqlite, o que devo executar na database em localhost?

Não tenho certeza, mas, acho que é o mesmo código, não tem diferença.

Link para o post
Compartilhar em outros sites

Depois de muitas tentativas enfim consegui, pra quem está com dificuldades em executar em mysql

e só executar sem os " "

ALTER TABLE "players" ADD "rep" INT( 11 ) NOT NULL DEFAULT "0";

Deixe assim, 

ALTER TABLE players ADD rep INT( 11 ) NOT NULL DEFAULT "0";

o/

Agora tenho outra dúvida.

Quando dou look aparece assim 

01:22 You see Teste. He is a brolly.

He is Godsend.

tem como deixa assim?

01:22 You see Teste. He is a [Godsend] brolly.

ou

01:22 You see Teste. He is a brolly [Godsend].

 

Editado por diarmaint (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 1 year later...

 
 

Muito bom esse script.., gostaria de saber se é possivel adicionar um event  ou seila como acha.. 

tipo.. pra cada tipo de reputation um looktype, então quando o player fala !rep ele se tranforma na looktype da reputation dele 

Gostaria de saber se é possivel e se alguem pode me ajudar a fazer ?

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

                                                                    by : GOTD

                                                       :facepalm: esperando voce morrer..

 

 

                                                                 40% Scripter

                                                                 70% Mapper

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.

  • Conteúdo Similar

    • Por Vodkart
      Mapa BattleField Feito Por AnneMotta :

      Mapa Battlefield.rar

      Scan: https://www.virustot...sis/1346548669/


      Imagens do mapa



      Descrição:

      - O evento é automático e acontece em determinado dia e hora da semana
      - Logo após é aberto um teleport então apenar um número limitado de players entra no evento
      - São formados por dois times, os "Black Assassins" e os "Red Barbarians"
      - Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque.
      - O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio.

      Bônus:

      - Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times.

      - Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo.

      - Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo.




      Lembre-se:

      - De colocar Pvp Tool na área
      - De colocar área NoLogout


      Imagens:




      Instalação:

       
      Data > Lib       Data > CreatureScript > Script     Data > GlobalEvents > Scripts       Data > Movements > Script             Configurações do evento
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo