Postado Julho 25, 2012 12 anos 1º) Vá a pasta mods do seu servidor 2º)Crie um arquivo chamado rep_system.xml e coloque o seguinte script nele: Citar <?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 Julho 25, 2012 12 anos por mariatti (veja o histórico de edições)
Postado Julho 25, 2012 12 anos cara rapido em. Agora de poko keria o script agora ta postando.. hsuaashuashuashu
Postado Julho 25, 2012 12 anos cara queria o script para postar e ganhar rep sé é isperto hein cumpradri Editado Julho 25, 2012 12 anos por MonsterOt (veja o histórico de edições)
Postado Julho 25, 2012 12 anos Autor Em 25/07/2012 em 02:08, MonsterOt disse: 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
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.