Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 05/02/12 em todas áreas

  1. [System] Weapon Hit Rank!

    Tace reagiu a Vodkart por uma resposta no tópico

    1 ponto
    Créditos: Jhon & Vodkart Como funciona: É um sistema simples, mostra o rank de maior hit do server, seja de axe, sword, club, wand, etc... Mostra o Nome do player - [Hit] - Nome da weapon imagem de exemplo: rank axe rank club obs: como o sistema de rank normal, level e etc, para aparecer no rank o jogador tem que relogar ou dar serversalve. --------------------------------------- RankHit.xml <?xml version="1.0" encoding="UTF-8"?> <mod name="RankHit" version="1.0" author="Vodkart e Jhon" contact="tibiaking.com" enabled="yes"> <config name="rank_func"><![CDATA[ WEAPON_WAND = {2190, 2191, 2188, 8921, 2189, 2187, 8920, 8922, 2184, 7414, 2453} WEAPON_ROD = {2182, 2186, 2185, 8911, 2181, 2183, 8912, 8910, 7958, 12609} storage_mostdamage = { CLUB = {155201,156201}, SWORD = {155202,156202}, AXE = {155203,156203}, WAND = {155204,156204}, ROD = {155205,156205}, DISTANCE = {155206,156206}, MAGIC_SD = {155207,156207,157207} } function setSdHit(cid, damage) if damage > getPlayerStorageValue(cid, storage_mostdamage.MAGIC_SD[1]) then setPlayerStorageValue(cid, storage_mostdamage.MAGIC_SD[1], damage) setPlayerStorageValue(cid, storage_mostdamage.MAGIC_SD[2], 2268) end return true end function setPlayerMostHitMage(cid, damage, weapon) if isInArray(WEAPON_WAND, getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid) == TRUE or isInArray(WEAPON_WAND, getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid) == TRUE then if damage > getPlayerStorageValue(cid, storage_mostdamage.WAND[1]) then setPlayerStorageValue(cid, storage_mostdamage.WAND[1], damage) setPlayerStorageValue(cid, storage_mostdamage.WAND[2], weapon) end elseif isInArray(WEAPON_ROD, getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid) == TRUE or isInArray(WEAPON_ROD, getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid) == TRUE then if damage > getPlayerStorageValue(cid, storage_mostdamage.ROD[1]) then setPlayerStorageValue(cid, storage_mostdamage.ROD[1], damage) setPlayerStorageValue(cid, storage_mostdamage.ROD[2], weapon) end end return true end function getRankHit(cid, value, wvalue, max, RankName) -- by vodka local str,arm ="","" str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n" local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > max then break end local getweapon = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. query:getDataString("player_id") .." AND `key` = "..wvalue) if (getweapon:getID() ~= -1) then arm = getItemNameById(getweapon:getDataString("value")) end str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "] - "..arm.."" k = k + 1 until not query:next() end return doPlayerPopupFYI(cid, str) end function haveWeapon(cid) -- by vodka local armas = {1,2,3,5,6} if getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid > 0 and isInArray(armas, getItemWeaponType(getPlayerSlotItem(cid, CONST_SLOT_RIGHT).uid)) or getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid > 0 and isInArray(armas, getItemWeaponType(getPlayerSlotItem(cid, CONST_SLOT_LEFT).uid)) then return true end return false end function getWeaponType(cid) -- by vodka return getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid == 0 and getItemWeaponType(getPlayerSlotItem(cid, CONST_SLOT_RIGHT).uid) or getItemWeaponType(getPlayerSlotItem(cid, CONST_SLOT_LEFT).uid) end ]]></config> <talkaction words="/rankhit;!rankhit" event="buffer"><![CDATA[ domodlib('rank_func') local rank_hit = { ["axe"] = {storage_mostdamage.AXE[1],storage_mostdamage.AXE[2]}, ["sword"] = {storage_mostdamage.SWORD[1],storage_mostdamage.SWORD[2]}, ["club"] = {storage_mostdamage.CLUB[1],storage_mostdamage.CLUB[2]}, ["wand"] = {storage_mostdamage.WAND[1],storage_mostdamage.WAND[2]}, ["rod"] = {storage_mostdamage.ROD[1],storage_mostdamage.ROD[2]}, ["distance"] = {storage_mostdamage.DISTANCE[1],storage_mostdamage.DISTANCE[2]}, ["sd"] = {storage_mostdamage.MAGIC_SD[1],storage_mostdamage.MAGIC_SD[2]} } local param = string.lower(param) if (param == "") then local str = "" str = str .. ""..getCreatureName(cid).." Hit\'s\:\n\n" for hit, item in pairs(rank_hit) do str = str..string.upper(hit)..": ".. (getPlayerStorageValue(cid, item[1]) ~= -1 and "["..getPlayerStorageValue(cid, item[1]).."] - "..getItemNameById(getPlayerStorageValue(cid, item[2])).."" or "None") .."\n" end str = str .. "" doPlayerPopupFYI(cid,str) return true end if not rank_hit[param] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"digite o nome correto.") end return getRankHit(cid, rank_hit[param][1],rank_hit[param][2], 10, "Rank "..param) ]]></talkaction> <event type="login" name="Rank Hit" event="script"><![CDATA[ domodlib('rank_func') function onLogin(cid) registerCreatureEvent(cid, "RankhitCombat") return true end ]]></event> <event type="combat" name="RankhitCombat" event="script"><![CDATA[ domodlib('rank_func') registerCreatureEvent(target, "RankhitStats") return true ]]></event> <event type="statschange" name="RankhitStats" event="script"><![CDATA[ domodlib('rank_func') if type == STATSCHANGE_HEALTHLOSS and isPlayer(attacker) and haveWeapon(attacker) then t = { [1] = {storage_mostdamage.SWORD[1],storage_mostdamage.SWORD[2]}, [2] = {storage_mostdamage.CLUB[1],storage_mostdamage.CLUB[2]}, [3] = {storage_mostdamage.AXE[1],storage_mostdamage.AXE[2]}, [5] = {storage_mostdamage.DISTANCE[1],storage_mostdamage.DISTANCE[2]} } MyWeapon = getPlayerSlotItem(attacker, CONST_SLOT_LEFT).itemid == 0 and getPlayerSlotItem(attacker, CONST_SLOT_RIGHT).itemid or getPlayerSlotItem(attacker, CONST_SLOT_LEFT).itemid if (getPlayerStorageValue(attacker, storage_mostdamage.MAGIC_SD[3]) >= os.time()) then setSdHit(attacker,value) elseif t[getWeaponType(attacker)] then if value > getPlayerStorageValue(attacker, t[getWeaponType(attacker)][1]) then setPlayerStorageValue(attacker, t[getWeaponType(attacker)][1], value) setPlayerStorageValue(attacker, t[getWeaponType(attacker)][2], MyWeapon) end else setPlayerMostHitMage(attacker, value, MyWeapon) end end return true ]]></event> </mod> Em data > spells > scripts > attack > sudden death.lua adicione depois de function onCastSpell(cid, var) setPlayerStorageValue(cid, 157207, os.time()+3) ficando assim: function onCastSpell(cid, var) setPlayerStorageValue(cid, 157207, os.time()+3) return doCombat(cid, combat, var) end
  2. [Actions] Stamina Doll

    Nerivalhs reagiu a AgaSsI por uma resposta no tópico

    1 ponto
    Nome do Script: Stamina Doll Autor: Não sei o autor, pois foi um amigo meu que me passou! Testado em: Styller 8.6 É um script simples e util, bom para servidores com mapa Global com site. Instalando: Vá em ...data/actions/scripts, e crie um arquivo chamado stamina-refuel.lua e cole isto dentro: Código: function onUse(cid, item, fromPosition, itemEx, toPosition) local cfg = {} cfg.refuel = 42 * 60 * 1000 if(getPlayerStamina(cid) >= cfg.refuel) then doPlayerSendCancel(cid, "Your stamina is already full.") elseif(not isPremium(cid)) then doPlayerSendCancel(cid, "You must have a premium account.") else doPlayerSetStamina(cid, cfg.refuel) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your stamina has been refilled.") doRemoveItem(item.uid) end return true end Em actions cole a seguinte tag: Código: <action itemid="ID DO SEU DOLL AQUI" script="stamina-refuel.lua"/> Onde está "ID DO SEU DOLL AQUI", coloque o número do doll que você deseja. Geralmente utilizam Santa Doll ou Nightmare Doll. *6512 *11138 Grato!
  3. [CreatureScrips] Pvp Channel, simples

    bielzk01 reagiu a Skyforever por uma resposta no tópico

    1 ponto
    Créditos Lpz e Skyforever Primeiramente vá em /data/creaturescripts/scripts cria um arquivo pvp channel e adiciona isso dentro: depois em creaturescripts.xml adicione essa tag: <event type="kill" name="PvpChannel" event="script" value="pvp channel.lua"/> em login.lua essa linha: registerCreatureEvent(cid, "PvpChannel") em data/xml/channels adicione essa tag: <channel id="10" name="PVP" logged="yes" active="0"/>
  4. Edição de Tibia Client parte 1/2

    larafaz reagiu a gpedro por uma resposta no tópico

    1 ponto
    http://www.youtube.com/watch?v=XcDsaEvjrdU
  5. Instalando Zombie Event

    QuebradaZN reagiu a Sociopata por uma resposta no tópico

    1 ponto
    Bem hj vou estar postando o ZOMBIE EVENT q eu uso no meu server sem erros nem nada.. Testado em tfs 0.3 pra mais Testado em 8.54,8.60 COMANDOS INSTALAÇÃO data/creaturescripts/scripts/zombie/onattack.lua function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] if(winner) then doPlayerAddItem(winner, 2157, 5, true) doPlayerAddItem(winner, 6119, 1, true) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!") end doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) local width = (math.max(ZE_spawnFromPosition.x, ZE_spawnToPosition.x) - math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)) / 2 + 1 local height = (math.max(ZE_spawnFromPosition.y, ZE_spawnToPosition.y) - math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)) / 2 + 1 local centerPos = {x=math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)+width,y=math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)+height,z=ZE_spawnFromPosition.z} for z = math.min(ZE_spawnFromPosition.z, ZE_spawnToPosition.z), math.max(ZE_spawnFromPosition.z, ZE_spawnToPosition.z) do centerPos.z = z for i, uid in pairs(getSpectators(centerPos, width, height, false)) do if(isMonster(uid)) then doRemoveCreature(uid) end end end end end function onStatsChange(target, cid, changetype, combat, value) if((cid and isMonster(cid) and getCreatureName(cid) == "Zombie Event") or (isInRange(getThingPosition(target), ZE_spawnFromPosition, ZE_spawnToPosition) and changetype == STATSCHANGE_HEALTHLOSS and math.abs(value) >= getCreatureHealth(target))) then doCreatureAddHealth(target, getCreatureMaxHealth(target)) loseOnZombieArena(target) return false end return true end /data/creaturescripts/scripts/zombie/ondeath.lua function onDeath(cid) setZombiesToSpawnCount(getZombiesToSpawnCount() + 2) doCreatureSay(cid, "I'll be back!", 19) return true end /data/creaturescripts/scripts/zombie/onthink.lua function onThink(cid) local target = getCreatureTarget(cid) if(target ~= 0 and not isPlayer(target)) then doRemoveCreature(target) end return true end /data/creaturescripts/scripts/login.lua add: registerCreatureEvent(cid, "ZombieAttack") /data/globalevents/scripts/zombie/onstartup.lua function onStartup() db.executeQuery("UPDATE `player_storage` SET `value` = 0 WHERE `key` = " .. ZE_isOnZombieArea .. ";") doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) addZombiesEventBlockEnterPosition() return true end /data/globalevents/scripts/zombie/onthink.lua function onThink(interval, lastExecution, thinkInterval) if(getStorage(ZE_STATUS) == 2) then setZombiesToSpawnCount(getZombiesToSpawnCount()+1) local players = getZombiesEventPlayers() for i=1, getZombiesToSpawnCount() * 2 do if(getZombiesToSpawnCount() > 0 and spawnNewZombie()) then setZombiesToSpawnCount(getZombiesToSpawnCount()-1) end end end return true end /data/lib/zombie_event.lua -- CONFIG ZE_DEFAULT_NUMBER_OF_PLAYERS = 5 ZE_ACCESS_TO_IGNORE_ARENA = 3 -- POSITIONS ZE_blockEnterItemPosition = {x= 873, y=997, z=7} ZE_enterPosition = {x = 1638, y = 1530, z = 7} ZE_kickPosition = {x=874, y=994, z=7} ZE_spawnFromPosition = {x = 1617, y = 1514, z = 7} ZE_spawnToPosition = {x = 1671, y = 1565, z = 7} -- ITEM IDS ZE_blockEnterItemID = 2700 -- STORAGES -- - player ZE_isOnZombieArea = 34370 -- - global ZE_STATUS = 34370 -- =< 0 - off, 1 - waiting for players, 2 - is running ZE_PLAYERS_NUMBER = 34371 ZE_ZOMBIES_TO_SPAWN = 34372 ZE_ZOMBIES_SPAWNED = 34373 -- FUNCTION function setZombiesEventPlayersLimit(value) doSetStorage(ZE_PLAYERS_NUMBER, value) end function getZombiesEventPlayersLimit() return getStorage(ZE_PLAYERS_NUMBER) end function addPlayerToZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_enterPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) if(getPlayerAccess(cid) < ZE_ACCESS_TO_IGNORE_ARENA) then setPlayerZombiesEventStatus(cid, os.time()) end end function kickPlayerFromZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_kickPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) setPlayerZombiesEventStatus(cid, 0) end function getPlayerZombiesEventStatus(cid) return getCreatureStorage(cid, ZE_isOnZombieArea) end function setPlayerZombiesEventStatus(cid, value) doCreatureSetStorage(cid, ZE_isOnZombieArea, value) end function getZombiesEventPlayers() local players = {} for i, cid in pairs(getPlayersOnline()) do if(getPlayerZombiesEventStatus(cid) > 0) then table.insert(players, cid) end end return players end function getZombiesCount() return getStorage(ZE_ZOMBIES_SPAWNED) end function addZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, getStorage(ZE_ZOMBIES_SPAWNED)+1) end function resetZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, 0) end function getZombiesToSpawnCount() return getStorage(ZE_ZOMBIES_TO_SPAWN) end function setZombiesToSpawnCount(count) doSetStorage(ZE_ZOMBIES_TO_SPAWN, count) end function addZombiesEventBlockEnterPosition() if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) end end function removeZombiesEventBlockEnterPosition() local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end end function spawnNewZombie() local posx = {} local posy = {} local posz = {} local pir = {} for i=1, 5 do local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x) local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y) local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z) local pir_tmp = 0 local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false) if(spec and #spec > 0) then for z, pid in pairs(spec) do if(isPlayer(pid)) then pir_tmp = pir_tmp + 1 end end end posx[i] = posx_tmp posy[i] = posy_tmp posz[i] = posz_tmp pir[i] = pir_tmp end local lowest_i = 1 for i=2, 5 do if(pir[i] < pir[lowest_i]) then lowest_i = i end end local ret = (type(doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false)) == 'number') if(ret) then addZombiesCount() end return ret end /data/movements/scripts/zombie/onenter.lua function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if(not isPlayer(cid)) then return true end if(getPlayerAccess(cid) >= ZE_ACCESS_TO_IGNORE_ARENA) then addPlayerToZombiesArea(cid) elseif(#getZombiesEventPlayers() < getZombiesEventPlayersLimit() and getStorage(ZE_STATUS) == 1) then addPlayerToZombiesArea(cid) local players_on_arena_count = #getZombiesEventPlayers() if(players_on_arena_count == getZombiesEventPlayersLimit()) then addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") else doBroadcastMessage(getCreatureName(cid) .. " has entered a Zombie Arena. We still need " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players.") end else doTeleportThing(cid, fromPosition, true) addZombiesEventBlockEnterPosition() end return true end /data/talkactions/scripts/zombie/onsay.lua function onSay(cid, words, param, channel) if(getStorage(ZE_STATUS) ~= 2) then local players_on_arena_count = #getZombiesEventPlayers() if(param == 'force') then if(players_on_arena_count > 0) then setZombiesEventPlayersLimit(players_on_arena_count ) addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event started.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot start Zombies event. There is no players on arena.") end else if(param ~= '' and tonumber(param) > 0) then setZombiesEventPlayersLimit(tonumber(param)) end removeZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Event started.") doPlayerBroadcastMessage(cid, "Zombie Arena Event teleport is opened. We are waiting for " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players to start.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event is already running.") end return true end AGR EM XMLS /data/creaturescripts/creaturescripts.xml <event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/> <event type="statschange" name="ZombieAttack" event="script" value="zombie/onattack.lua"/> <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/> /data/globalevents/globalevents.xml TFS 0.3 <globalevent name="ZombieGlobalThink" interval="5" event="script" value="zombie/onthink.lua"/> <globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/> TFS 0.4 <globalevent name="ZombieGlobalThink" interval="5000" event="script" value="zombie/onthink.lua"/> <globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/> /data/movements/movements.xml <movevent type="StepIn" actionid="5555" event="script" value="zombie/onenter.lua"/> /data/talkactions/talkactions.xml <talkaction log="yes" words="/zombiestart" access="4" event="script" value="zombie/onsay.lua"/> /data/monster/zombie_event.xml <monster name="Zombie Event" nameDescription="an event zombie" race="undead" experience="480" speed="170" manacost="0"> <health now="20000" max="20000"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="1000" min="-1500" max="-2350"/> </attacks> <defenses armor="0" defense="0"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> <immunity fire="1"/> <immunity energy="1"/> <immunity poison="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <script> <event name="ZombieThink"/> <event name="ZombieDeath"/> </script> <loot> </loot> </monster> /data/monster/monsters.xml Créditos PhoOwned 99% Sociopata 1% Bem é isso por favor antes de postar erros vejam se fizeram os procedimento de modo correto, por que eu uso isso RLs usam e nunca tiveram problema, e tbm so pra lembrar vcs precisam ter a arena tradicional do Zombie Event para garantir o funcionamento em 100% e pelo amor de deus n coloquem em ot com TFS menor que 0.3. OBRIGADO A TODOS E POR FAVOR COMENTEM <monster name="Zombie Event" file="zombie_event.xml"/>
  6. [Talk] DeathList para Server Sqlite 1.0

    SomeBody reagiu a Vodkart por uma resposta no tópico

    1 ponto
    Atualizado V1.0: Mostra últimas mortes do servidor: você pode usar o comando !deathlist NOME ex: !deathlist Carlin: in your db execute this query: CREATE TABLE death_list ( id INTEGER NOT NULL, player_id INTEGER NOT NULL, date INTEGER NOT NULL, level INTEGER NOT NULL, killer_name INTEGER NOT NULL, PRIMARY KEY ( id ) ); creaturescript death_list.lua function onDeath(cid, corpse, deathList) local str = "" for _, pid in ipairs(deathList) do if isCreature(pid) == true then str = str.."".. (str == "" and "" or ",") ..""..getCreatureName(pid) else str = str.."".. (str == "" and "" or ",") .." a field item" end end str = str.."." death = str .. " ".. (getPlayerBlessing(cid, 5) and "[Blessed]" or getPlayerSlotItem(cid, 2).itemid == 2173 and "[AOL]" or "") db.executeQuery("INSERT INTO `death_list` (`player_id`, `date`, `level`, `killer_name`) VALUES ('".. getPlayerGUID(cid).."', '".. os.time() .."', '".. getPlayerLevel(cid) .."', '".. death .."');") return true end creaturescript.xml <event type="death" name="DeathList" event="script" value="death_list.lua"/> creaturescript/script/login.lua registerCreatureEvent(cid, "DeathList") talkactions deathlist.lua limit = 5 function onSay(cid, words, param, channel) str = "" if param == "" then local qry = db.getResult("SELECT `player_id`, `date`, `level`, `killer_name` FROM `death_list` ORDER BY `date` DESC LIMIT 0, " .. limit) if(qry:getID() ~= -1) then repeat str = str .."\n "..os.date("%d %B %Y %X ", qry:getDataInt("date")).." "..getPlayerNameByGUID(qry:getDataString("player_id")).." died at level "..qry:getDataInt("level").." by:\n"..qry:getDataString("killer_name") until not(qry:next()) qry:free() else str = "Não há mortes no servidor." end doPlayerPopupFYI(cid, "Last Deaths:\n\n" .. str) return true end local getPlayer = db.getResult("SELECT `name`, `id` FROM `players` WHERE `name` = " .. db.escapeString(param) .. ";") if(getPlayer:getID() == -1) then doPlayerSendCancel(cid, "Este Player não existe.") return true end local getGuid = getPlayer:getDataInt("id") getPlayer:free() local qry = db.getResult("SELECT `id`, `date`, `level`, `killer_name` FROM `death_list` WHERE `player_id` = " .. getGuid .." ORDER BY `date` DESC LIMIT 0, " .. limit) if(qry:getID() ~= -1) then repeat str = str .."\n "..os.date("%d %B %Y %X ", qry:getDataInt("date")).." died at level "..qry:getDataInt("level").." by:\n"..qry:getDataString("killer_name") until not(qry:next()) qry:free() else str = "Não há mortes." end doPlayerPopupFYI(cid, "Last Deaths of: " .. param .. ".\n\n" .. str) return true end talkactions.xml <talkaction words="!deathlist" script="deathlist.lua"/>
  7. [Tutorial] IF, Else, Then, Elseif, And e Or

    Mazarati reagiu a Kimoszin por uma resposta no tópico

    1 ponto
    Ola galerinha, hoje vou ensinar a vc's como usar if, else, elseif, and e or em lua If, Else, ElseIF, Then Agora vamos ver oque é oque: Entendo o Script function onSay(cid, words) -- Função aoFalar if getPlayerVocation(cid) == 4 then -- Se a vocação do player for igual a 4 entao doPlayerSendTextMessage(cid, 22, "Eu sou um Knight") -- Mandar uma mensagem com o texto, dizendo sua vocação elseif getPlayerVocation(cid) == 3 then -- Se nao, se a vocação do player for igual a 3 entao doPlayerSendTextMessage(cid, 22, "Eu sou um Paladin") -- Mandar uma mensagem com o texto, dizendo sua vocação else -- Se nao doPlayerSendTextMessage(cid, 22, "Eu nao estou na lista") -- Mandar uma mensagem com o texto, dizendo um que nao esta na lista end -- Fecha o IF end -- Fecha o Script Regras Entendo o Script And: function onSay(cid, words) -- Função aoFalar if getCreatureHealth(cid) > 500 and getCreatureMana(cid) > 100 then -- Se a vida da criatura for maior que 500 E se a mana da criatura for maior que 100 entao doPlayerSendCancel(cid, "Eu tenho 500 de health e 100 de mana, ") -- Manda uma mensagem end -- Fecha o if end -- Fecha o Script[/code] [b]Or:[/b] [code]function onSay(cid, words) -- Função aoFalar if getCreatureHealth(cid) > 500 or getCreatureMana(cid) > 100 then -- Se a vida da criatura for maior que 500 ou se a mana da criatura for maior que 100 entao doPlayerSendCancel(cid, "Eu tenho 500 de health e 100 de mana, ") -- Manda uma mensagem end -- Fecha o if end -- Fecha o Script Regras É isso pessoal, Abraços And e Or Agora vamos ver oque é oque:
  8. [ Tutorial ] Fazendo DEPOSITER de ITEMS

    NetinhoOoO reagiu a Lucas Pace por uma resposta no tópico

    1 ponto
    Olá, nesse tutorial vou explicar como fazer um DEPOSITER DE ITEMS. Queria agradeçer o membro Guiizao por ter me ensinado. =D Vamos ao que interessa. Primeiramente você marca learn, e faz seu waypoint normalmente. Agora Clique com o botao direito do mouse, clicque em Add > Full Check. Abrirá essa janela: Fazendo o Code Bom, aonde ta escrito Code, você vai ter que colocar os dados ( se vai ir com cap, pot, etc. ) Bom, segue como fazer o code: Bom, explicando com minhas palavras, você tera que colocar + - Asism no code: Cap > ( Cap maior que ) Cap < ( Cap menor que ) 3031 ( Id do gold coin - Pode ser outro id, de outro item ) >= ( Maior ou igual que ) Health Potion < ( Menor que ) Ficando + - Assim: Cap > 100 ( Cap maior que 100 ) Health potion <= 10 ( Health potion menor ou igual a 10 ) Ou seja, vou colocar assim no code: Heath potion < 10 Desse jeito, o bot irá fazer somente, o que você colocar, quando você tiver 10 ou menos Health potion. Como Fazer o Deposit de Item Bom, agora que você colocou o CODE, você marque LEARN, e faça o caminho para a DP. Quando chegar no baú da dp, desmarque o LEARN, clique com o botao direito > Add > Depositer PRONTO! Agora o bot vai depositar TODOS os itens que esta no Loot do bot. Se eu colocar " Tarantula Egg ", no looter, na dp, ele vai depositar " Tarantula Egg ". Nao se esqueça de fazer o caminho de volta para a CAVE. Bom, quaquer duvida so postar abaixo. Créditos: Lucas Pace Tibia King
  9. MMORPG[Saint Seiya]-GOBR

    fabio segura reagiu a Humbert por uma resposta no tópico

    1 ponto
    Apresentaçao: O servidor Saint Seiya, se baseia no anime cavaleiros do zodíaco, a empresa a qual sou responsável ( GOBR- Games On-line Brasil ) está com um projeto em andamento para realizarmos esse tão sonhado jogo... Em primeiro caso estaremos montando esse jogo em plataforma de tíbia. Introdução Do Server: O projeto inicia como um grande jogo baseado em cavaleiros do zodíaco, a empresa está tentando ser fiel ao Maximo no anime, pois não queremos que os fãs do anime ao entrarem se depararem com um jogo totalmente diferente da lógica descrita no anime. Baseado nisso todo player começara como cavaleiro em treinamento e poderá escolher em qual cidade principal ira nascer, (Grécia, 5 picos antigos, Sibéria, ilha de Andrômeda, ilha da rainha da morte.) no decorrer do jogo o player devera treinar o seu character tanto em level como em skill para que ele possa obter força suficiente para realizar as quests inicias para ganhar um promoção de classe que são, Cavaleiro classe C, Cavaleiro classe B, Cavaleiro classe A; Após se tornar um cavaleiro classe A o player vai ter acesso as quests de cavaleiro de bronze sendo elas para qualquer player do jogo, ( não importa se já exista aquele cavaleiro de bronze, outro poderá pegar a mesma armadura repetitivamente.) claro que a empresa tem o pensamento que o cavaleiro que nasce na Sibéria quer ser o cavaleiro de cisne, porem nem sempre vai ocorrer assim então deixaremos que mesmo que nasce em um lugar contrario a armadura requerida pelo player ele poderá viajar ate o local onde a armadura que ele deseja esta, via script de avião, o player que conseguir chegar no final da quest terá que escolher entre qual deus ele irá proteger pois no final da quest terá dois baús com suas respectivas armaduras sendo elas a armadura de bronze e a armadura negra. O player que já possuir a armadura de bronze( ou negra ) terá acesso as quests de cavaleiro de prata( spectro ) cujo são as quests mais difíceis do jogo tendo que ter um grande poder de raciocínio inteligente e claro força; em posse da armadura de prata vamos falar do que realmente interessa, os cavaleiros de ouro ( 3 juizes ) cujo no jogo será necessário um torneio para definir o ganhador da armadura de ouro e ou 3 juizes( os cavaleiros de ouro e 3 juizes serão os únicos do jogo que não poderão ser repetidas ). Vamos falar do sistema de como virar um deus de asgard ou um marina de poseidon, quando estiver com a armadura de bronze ou negro respectiva a sua vontade, o player devera obter um level requerido para renegar as sua origem e se tornar um cavaleiro de asgard ou um cavaleiro de poseidon via quest, após se tornar um cavaleiro de poseidon ou cavaleiro de asgard, o player terá acesso as quests referentes a essas armaduras. E por ultima mas não menos importante o sistema das Kamuis, que assim como o mewtwo é um mistério no pokemon assim será no nosso servidor, podendo adiantar que ela será uma Super Quest e claro sendo vip. Andamento Do Server Mapa:███ -(40%) Scripts:██████░░░░ -(60%) Sprintes:██░░░░░░░ -(20%) Site:████░░░░░░ -(40%) Vocações:█████████░ -(90%) Client:██████░░░░░ -(50%) Sistemas Guerra Santa: Começa como evento, com dois npc’s (Athena e Hades), respectivamente no santuário e no inferno, no qual os participantes se inscreverão para participar do evento (24 horas para cadastro com fim de divulgar bem o evento). Feito o cadastro, cada npc determina grupos, como miniguild’s que serão balanceadas pelo mesmo npc (a divisão seria em mini guild’s e não só em grupos, pois por mais que todos trabalhem em grupo, apenas um destes minigrupos ganhará o evento). Ao morrer cada participante do evento iriam para uma sala, na qual haveria dois teleports, um para o inferno e outro para o santuario, nisso o player escolheria para onde iria, dando sequencia a Guerra. Torneios: Em certo dia e hora, os jogadores teriam 1 hora antes do torneio para se inscrever, após a inscrição, ou 30 minutos antes do torneio, os inscritos serão puxados para uma sala de espera, onde ficarão até o torneio. Neste, o npc transferirá os players para as arenas espalhadas no mapa, 1x1, no qual o ganhador voltaria a sala de espera, e o perdedor para sua cidade. Assim ocorre até haver um vencedor. (Obs: quando o jogador morrer no torneio não perderá, level, skill ou equipamentos). Tudo feito pelo npc. (Obs: Os torneios são específicos para:, promoção para cavaleiro de prata, promoção de cavaleiro de ouro, promoção de espectro e os 3 juízes). Cada torneio terá sua vocação respectiva (ex: um cavaleiro classe A não poderia participar do evento de promoção de cavaleiro de ouro, já o cavaleiro de prata poderia). Abaixo a lista de participantes a cada promoção: - Bronze ~~> Prata - Negro ~~> Espectro - Prata ~~> Ouro - Espectro ~~> Juízes do Inferno e Juízes das Prisões Chuva:Ocorrera Um Scripting de chuva Semanalmente ou Diariamente Para dar clima de realismo para os players com a Sprinter da chuva e o efeito sonoro do cliente. Efeito Sonoros efeito sonoro é um script inovador que iremos utilizar no nosso server ele ira ser ativado quando é usado magias em devidos ambientes EX(Submundo,Cavernas Perto de Cachoeiras etc) Avião Script de Avião sera uma coisa não muito inovadora pois no Jogo Pxg de pokemon tem mais por barco iremos botar no nosso servidor como um Avião para modo de locomoção dos player para outras cidades Restauração:Esse sistema sera usado para o conserto das armaduras trincadas.Ele funcionara do seguinte modo nos iremos criar uma nova vocação chamado Ferreiro(Obs: Nome Não Precisa ser Ferreiro.) essa vocação sera para a restauração das armaduras mas não sera Simples para a restauração ele terá que Dropa devidos itens,ser Premium para o concerto das Armaduras Cada Armadura terá um modo diferente para seu concerto,criamos essa vocação e Escript para o funcionalismo do dinheiro no Game mercado pois trade não teria funcionalidade pois não teria comercio entre os jogadores Urna das armaduras : O sistema funcionara do seguinte modo apos ganhar sua armadura voce ganhara uma Urna da Armadura Obtida apos Clicar na urna a armadura feita que estive dentro dera ira si transforma em itens e esse item ira diretamente para seu corpo e com isso já ativara a Outfit de e sua vocação Obs:Entre muitos e outros sistemas que nao posso revela Equipe Administrador Geral: Fabio e Coringa Mappers: Coringa,Lucas Avallon e Vinicius e [vago] Scripters: Vitor Renan,Tonny,Lucio e [vago] RPG Maker: [vago] Spriters: Vitor Hugo,Felipe e [vago] Designer: Matheus e [vago] Colaboradores: Gian , Lucas e [vago] Sonoplasta: [vago] Recrutamento Nome Completo: Nickname: Idade: Tempo Disponível: Cargo: Contato: E-mail Tempo na Área: Trabalhos de Amostra: Link de seus trabalhos Imagens Obs: Ainda estamos para decidir o modelo a ser usado. Ps:Entre Em Contato com um Dos Administradores-gerais segue msn logo abaixo. [email protected] [email protected]
  10. [Gesior]Colocando radio no site

    maresoft reagiu a Gusttavomarinho por uma resposta no tópico

    1 ponto
    Eaw galera do tibia king vim posta um video feito por min ensinando como coloca radio no site link : http://www.4zip.in/2Ux Obs: a qualidade do video nao esta muito boa em breve vou re posta com otima qualidade pois hoje minha net nao esta muito boa Codigo usado no tutorial: <!-- // PLLAYER RADIO // --> <iframe width="100%" height="40" src="http://www.evenradio.net/home/index_play.php" scrolling="no" frameborder="0"></iframe> <!-- // PLLAYER RADIO // --> Ajudei ?? REP++ pfv Galera de REP++ pelo menos como incentivo para eu continuar fazendo tutoriais Video com melhor qualidade : http://youtu.be/45UGB-WjuGM Topico atualizado com video de melhor qualidade *Topico atualizado dia 24/05/12 codigo para player da radio tibia : <embed pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" hidden="False" align="middle" loop="False" volume="100%" autostart="True" showstatusbar="True" src="http://173.193.202.68:8674" height="32" type="application/x-mplayer2" width="100%"></embed> codigo do player da radio tibia escondido ( nao funciona no chrome ) <embed pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" hidden="True" align="middle" loop="False" volume="100%" autostart="True" showstatusbar="True" src="http://173.193.202.68:8674" height="32" type="application/x-mplayer2" width="100%"></embed> Obrigado
  11. Resultado AdP #8 Ed.

    Fabiano Alberto reagiu a 3visan por uma resposta no tópico

    1 ponto
    Resultado AdP #8 Ed. Tema: Humanoides (werewolf) Primeiro Lugar Miller Recompensa: Medalha 1° Lugar e 3REP+ Segundo Lugar Vittu Recompensa: Medalha 2° Lugar e 2REP+ Terceiro Lugar Weto Recompensa: Medalha 3° Lugar e 1REP+ Acharam o resultado justo? Comentem =)
  12. function onSay(cid,words,param) local msg,depot = "O Jogador "..getCreatureName(cid).." Foi para o Depot com !fly",{x=0,y=0,z=0} if getTilePzInfo(getCreaturePosition(cid)) == TRUE then doTeleportThing(cid,depot) broadcastMessage(msg,25) else doPlayerSendCancel(cid,"Sorry only in protect zone") end return TRUE end aki {x=0,y=0,z=0}, vc coloca onde player sera teleportado
  13. [System] Weapon Hit Rank!

    HotSummer reagiu a Vodkart por uma resposta no tópico

    1 ponto
    claro mano, ta na mão: nome do seu script.lua function onThink(interval, lastExecution) for _, cid in pairs(getPlayersOnline()) do doPlayerSave(cid) end return TRUE end <globalevent name="RankHitSave" interval="1800" event="script" value="nome do seu script.lua"/> 1800 é 30 minutos
  14. Alguem Foi Raked com esse bbot?

    Helder reagiu a pazoslp por uma resposta no tópico

    1 ponto
    Raked, instranho, persebe, presiza... hackearam seu português também amigo ? @Topic, BBot é um Software pago, qualquer dano que ele pudesse te causar você poderia abrir um processo, contra a 'empresa' ou o dono, ou seja lá o que for que criou o bot, então creio que ele não trocaria um processo, por um 'full set e uma soft boots'... Edit - Aposto que você foi hacked, mudou a senha, antes de formatar o pc, quando ele ainda estava infectado.
  15. [Npc] New Egg System [Fix]

    DavidHDL reagiu a Renato por uma resposta no tópico

    1 ponto
    e o que se faz com o ovo chocado?
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo