Jump to content
Close

Leaderboard


Popular Content

Showing content with the highest reputation since 01/18/20 in all areas

  1. 3 points
    Sprites Free for Use Nanatsu no Taizai Creditos - Bruno Henrique ( TopDown ) Endo ( TopDown ) e Hawk ( Perspectiva )
  2. 3 points
    Nolis

    Free for Use - Sprites para OtServ

    Novas Sprites OBJETOS NATURE MINERAÇÃO
  3. 1 point
    Os valores fixos foram exemplos de como deve ser feito, afinal da maneira que você estava fazendo não ia funcionar Para não ser valor fixo, basta você fazer da mesma forma que está escrito na função abaixo: function onGetFormulaValues(cid, level, maglevel) local min = (((level/5)+(maglevel*1) +1)) local max = (((level/5)+(maglevel*2) +3)) return min, max end Neste caso é só você criar uma variável GLOBAL da mesma forma que está escrito acima EXEMPLO: local level = getPlayerLevel(cid) local maglevel = getPlayerMagLevel(cid) local min, max = (((level/5)+(maglevel*1) +1)), (((level/5)+(maglevel*2) +3)) Mas deve ser declarado com variável GLOBAL, neste caso você deve declarar ela fora de uma função Porém você vai se deparar com outro problema, que é a variável "cid", porque você precisa de uma função padrão para declarar esta variável. Então para TENTAR resolver este problema tente usar o script dessa forma local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onGetFormulaValues(cid, level, maglevel) local min = (((level/5)+(maglevel*1) +1)) local max = (((level/5)+(maglevel*2) +3)) -- Essas variáveis são validas apenas para esta função, pois você fechou o escopo return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local condition = createConditionObject(CONDITION_REGENERATION) function onCastSpell(cid, var) -- Perceba que eu coloquei dentro desta função para definir a variável cid local level = getPlayerLevel(cid) local maglevel = getPlayerMagLevel(cid) local min, max = math.ceil((((level/5)+(maglevel*1) +1))), math.ceil((((level/5)+(maglevel*2) +3))) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setConditionParam(condition, CONDITION_PARAM_TICKS, 1 * 60 * 1000) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, math.random(min, max)) -- Agora estão declaradas logo acima setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000) setCombatCondition(combat, condition) return doCombat(cid, combat, var) end É uma das possibilidades de resolver o problema (existe script melhor pra tal coisa, porém é a mesma coisa)
  4. 1 point
    Qual dúvida ou erro poste no tópico que estarei respondendo. Obs: Antes que me falem besteiras, coloquei para os GM'S, CM'S E GOD'S não contarem no evento, então testem apenas com jogadores. Zombie.xml <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Perfect Zombie System" version="8.6" author="Vodkart" contact="tibiaking.com" enabled="yes"> <config name="zombie_config"><![CDATA[ zombie_config = { storages = {172100, 172101, 172102}, -- n edite players = {min = 2, max = 30}, -- min, max players no evento rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento teleport = {{x=147, y=55, z=7}, {x=125 , y=304, z=7}}, -- position do tp onde aparece, position para onde o jogador vai ao entrar no tp arena = {{x=110,y=297,z=7},{x=145,y=321,z=7}}, -- area positions monster_name = "Zombie Event", timeBetweenSpawns = 20, min_Level = 20 } zombie_days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","22:50","22:00"}, ["Wednesday"] = {"21:57","18:00","20:00","23:17"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","21:45","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeZombieTp() local t = getTileItemById(zombie_config.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(zombie_config.teleport[1], CONST_ME_POFF) end function ZerarStoragesZombie() for _, stor in pairs(zombie_config.storages) do setGlobalStorageValue(stor, 0) end end function getPlayersInZombieEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), zombie_config.arena[1], zombie_config.arena[2]) and getPlayerAccess(pid) < 3 then t[#t+1] = pid end end return t end function getZombieRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function HaveCreatureZombie(area, remove) for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end function spawnZombie() if #getPlayersInZombieEvent() > 1 then local pos = {x=math.random(zombie_config.arena[1].x, zombie_config.arena[2].x), y=math.random(zombie_config.arena[1].y,zombie_config.arena[2].y), z=zombie_config.arena[1].z} if not isWalkable(pos, false, false, false) then spawnZombie() else doSummonCreature(zombie_config.monster_name, pos) doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(zombie_config.storages[2], getGlobalStorageValue(zombie_config.storages[2]) <= 0 and 1 or getGlobalStorageValue(zombie_config.storages[2])+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(zombie_config.storages[2]) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, zombie_config.timeBetweenSpawns *1000) end end end function CheckZombieEvent(delay) if getGlobalStorageValue(zombie_config.storages[1]) ~= (zombie_config.players.max+1) then if delay > 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.max then doBroadcastMessage("Zombie event starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.min then for _, cid in pairs(getPlayersInZombieEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) end removeZombieTp() doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. zombie_config.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStoragesZombie() elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) >= zombie_config.players.min then removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1]) .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end addEvent(CheckZombieEvent, 60000, delay-1) end end]]></config> <event type="statschange" name="ZombieStats" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isMonster(attacker) and getCreatureName(attacker) == zombie_config.monster_name then if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then if #getPlayersInZombieEvent() > 1 then doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED) local corpse = doCreateItem(getPlayerSex(cid) == 1 and 3058 or 6081, 1, getPlayerPosition(cid)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) if #getPlayersInZombieEvent() == 1 then local winner = getPlayersInZombieEvent()[1] doBroadcastMessage(getCreatureName(winner)..' has survived at zombie event!') local goblet = doPlayerAddItem(winner, zombie_config.rewards.trophy, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(winner) .. " for winning the Zombie event.") getZombieRewards(winner, zombie_config.rewards.items) doTeleportThing(winner, getTownTemplePosition(getPlayerTown(winner)), false) doSendMagicEffect(getPlayerPosition(winner), CONST_ME_TELEPORT) doBroadcastMessage(getPlayerName(winner).." won the Zombie event! Congratulations!") HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end else doBroadcastMessage("No one survived in the Zombie Event.", MESSAGE_EVENT_ADVANCE) HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end return false end end return true]]></event> <globalevent name="Zombie_Start" interval="60000" event="script"><![CDATA[ domodlib('zombie_config') function onThink(interval, lastExecution) if zombie_days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(zombie_days[os.date("%A")], hrs) and getGlobalStorageValue(zombie_config.storages[3]) <= 0 then local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(zombie_config.CheckTime) setGlobalStorageValue(zombie_config.storages[1], 0) setGlobalStorageValue(zombie_config.storages[2], 0) HaveCreatureZombie(zombie_config.arena, true) end end return true end]]></globalevent> <event type="login" name="Zombie_Login" event="script"><![CDATA[ domodlib('zombie_config') function onLogin(cid) registerCreatureEvent(cid, "ZombieBattle") registerCreatureEvent(cid, "ZombieStats") if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="ZombieBattle" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45110" event="script"><![CDATA[ domodlib('zombie_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, zombie_config.teleport[2]) end if getPlayerLevel(cid) < zombie_config.min_Level then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. zombie_config.min_Level .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(zombie_config.storages[1]) <= zombie_config.players.max then doTeleportThing(cid, zombie_config.teleport[2]) setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(zombie_config.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(zombie_config.storages[1]) == zombie_config.players.max then setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1])-1 .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end end return true end]]></movevent> <talkaction words="/zombiestart;!zombiestart" access="5" event="buffer"><![CDATA[ domodlib('zombie_config') if getGlobalStorageValue(zombie_config.storages[3]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(tonumber(param)) ZerarStoragesZombie() setGlobalStorageValue(zombie_config.storages[3], 1) HaveCreatureZombie(zombie_config.arena, true) ]]></talkaction> <globalevent name="ZombieDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('zombie_config') ZerarStoragesZombie() return true]]></globalevent> </mod> OBS: Quem serve em milesegundos, mude essa parte: <globalevent name="Zombie_Start" interval="60" event="script"><![CDATA[ para <globalevent name="Zombie_Start" interval="60000" event="script"><![CDATA[ ----------------------------------------------------- // -------------------------------------------------- o monstro você instala em data/monsters zombie event.xml <?xml version="1.0" encoding="UTF-8"?> <monster name="Zombie Event" nameDescription="an zombie event" race="undead" experience="280" speed="100" manacost="0"> <health now="500" max="500"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="0"/> <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="2000" min="-35000" max="-35000"/> </attacks> <defenses armor="15" defense="10"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <loot> <item id="2148" countmax="1" chance="100000"/><!-- gold coin --> </loot> </monster> e a tag em monsters.xml <monster name="Zombie Event" file="zombie event.xml"/> Configuração Sistema zombie_config = { storages = {172100, 172101}, -- não edite players = {min = 2, max = 30}, -- número minimo e máximo para jogadores no evento rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, -- premiações do jogador timeToStartEvent = 30, -- segundos para começar o evento após dar start CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento teleport = {{x=145, y=50, z=7}, {x=176 , y=54, z=5}}, -- posiçãodo tp onde aparece, posição para onde o jogador vai ao entrar no tp arena = {{x=173,y=52,z=5},{x=179,y=56,z=6}}, -- posição começo e final da area do evento monster_name = "Zombie Event", -- nome do monstro que será sumonado timeBetweenSpawns = 20, -- a cada quantos segundos é dado o respaw time do zombie no evento min_Level = 20 -- level minimo para participar do evento } Dia e Horário zombie_days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","20:00","22:00"}, ["Wednesday"] = {"13:00","18:00","20:00","22:00"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","20:00","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } ["Dia em inglês"] = {"horário do evento"} Configurando a área: zombie lua.rar
  5. 1 point
    @DouGlaS Mapper só 7 no máximo? eu acabei de testar aqui e spammo antes de terminar (testei com 2 players), ficaram 25 zombies no mapa. e na outra tentativa, ficaram 13. que server tais usando?
  6. 1 point
    @DouGlaS Mapper Estranho, não está entregando o troféu... configurou o ID do trofeu ali? o resto da premiação ainda está dando? tenta remover essas 2 linhas: local goblet = doPlayerAddItem(winner, zombie_config.rewards.trophy, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(winner) .. " for winning the Zombie event.")
  7. 1 point
    johnatan757

    ajuda com rme bug otb 7.4

    .Qual servidor ou website você utiliza como base? Qual o motivo deste tópico? Olá, bom, preciso de ajuda, tenho um problema no mapa do editor. Quando salvo o meu servidor no mapa, os atributos aparecem no editor de mapas, por exemplo, selecione as cidades Dp, mas o servidor dá erro quando tento executar e se eu jogar meus items.xml e otb no mapa do editor e salvar, o servidor abrirá normalmente, mas não carregará os atributos como eu disse, o dp fica fora da cidade etc. To usando pra editar RME 3.4, com o Tibia oficial 7.6, se eu tento colocar o client disponivel pelo qwizer e jogar a otb do server no mapa editor, da o mesmo erro sem atributo, alguem me ajuda Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. https://imgur.com/a/85LOl7w#sH9yCgA
  8. 1 point
    Basta substituir o module game_outfit e a pasta data Download: https://www.dropbox.com/s/jojhp1gfaa7bkts/Outfit Module by Aimar.rar?dl=0 Créditos: Edubart Scan: https://www.virustotal.com/gui/file/e99052b8cea21903c046189342d0c210517ce189b47185de7f860e8a5bc10bac/detection
  9. 1 point
    johnatan757

    Auto Spell,Mana

    Queria pedir ajuda de vocês, procurei por toda a internet mas não achei essa talkaction, bom como funciona. O player vai digitar !auto spell,mana (!auto exura,20) exemplo, com 20 de mana o player vai soltar exura automatico, e irá comer food, é um sistema para treinar em oldserver, ai com o sistema !auto off ele irá dar clear na spell que estava, a base que estou usando é aqui do server. Alguém poderia me ajudar? Vi essa ideia no servidor tibia-old.com, vou postar oque acontece ao digitar os comandos. !auto >> 20:26 Parameters are necessary: <!auto spellwords, requiredManaToUse>. Use <!auto off> or <!auto exura, 25> for example. !auto exura,2000 >> 20:27 You are also automatically eating food now. Type !auto off to stop. !auto off >> 20:27 Auto spell/food eater off.
  10. 1 point
    @rafanasser As vezes fica em mods como firstitems.xml ou dependendo do server fica em creaturescripts, geralmente com o mesmo nome (first items).
  11. 1 point
    Remove os premios ao ir pra main e coloca um Baú na Main que da os itens '-'
  12. 1 point
    BrazItzMe

    (Pedido) NPC

  13. 1 point
    Vodkart

    Erro ao analisar item

    Não tens essa funções na lib... basta adicionar: function getItemAttackSpeed(uid) return getItemAttribute(uid,'attackspeed') end function setItemAttackSpeed(uid) return setItemAttribute(uid,'attackspeed',name) end
  14. 1 point
    as portas de lvl, que so passa com x lvl não estão fechando, se um player passa elas continuam abertas corrigi o erro substitui o que ta dentro de movements/clossingdoors ------------------------------------------------------------- function onStepOut(cid, item, position, lastPosition)if(getTileInfo(position).creatures > 0) thenreturn trueendlocal newPosition = {x = position.x + 1, y = position.y, z = position.z}local query = doTileQueryAdd(cid, newPosition)if(query == RETURNVALUE_NOTENOUGHROOM) thennewPosition.x = newPosition.x - 1newPosition.y = newPosition.y + 1query = doTileQueryAdd(cid, newPosition) -- repeat until foundendif(query == RETURNVALUE_NOERROR and query == RETURNVALUE_NOTENOUGHROOM) thendoRelocate(position, newPosition)endposition.stackpos = -1local i, tileItem, tileCount = 1, {uid = 1}, getTileThingByPos(position)while(tileItem.uid ~= 0 and i < tileCount) doposition.stackpos = itileItem = getTileThingByPos(position)if(tileItem.uid ~= 0 and tileItem.uid ~= item.uid and isMovable(tileItem.uid)) thendoRemoveItem(tileItem.uid)elsei = i + 1endendlocal itemInfo = getItemInfo(item.itemid)doTransformItem(item.uid, itemInfo.transformUseTo)return trueendfunction onStepOut(cid, item, position, lastPosition)local itemInfo = getItemInfo(item.itemid)doTransformItem(item.uid, itemInfo.transformUseTo)return trueend
  15. 1 point
    DdJs

    [12x+] Babylon Teleports Room

    Baylon Teleports Room V 12.20+ Download: TeleportsRoom_V12.otbm Position [X: 1089 Y: 1034 Z: 5] RME + Client: Remere's Map Editor (11-12+) + Client.rar Imagens:
  16. 1 point
    Vodkart

    ANSWERED Ajuda alguem porfavor

    @isac001 de boa, vamos por por actionID então!! function doTpTime(cid, delay, pos, msg) if not isCreature(cid) then return LUA_ERROR end if delay > 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "{Teleport} "..delay.." segundos para se teletransportar para "..msg..".") addEvent(doTpTime, 1000, cid, delay-1, pos, msg) else doTeleportThing(cid, pos) doSendMagicEffect(getPlayerPosition(cid), 10) doPlayerSendTextMessage(cid, 22, "Voce foi teleportado para "..msg.."! DBO EVOLUTION") end end local store,exhausted = 756841,10 function onUse(cid, item, fromPosition, item2, toPosition) local items = { -- [actionID] [15872] = {pos = {x = 433, y = 992, z = 15}, msg = "Earth"}, [15873] = {pos = {x = 478, y = 992, z = 15}, msg = "Namek Planet"}, [15874] = {pos = {x = 500, y = 992, z = 15}, msg = "Vegeta Planet"} } local var = items[item.actionid] if not var then return true end if getPlayerStorageValue(cid, store) >= os.time() then doPlayerSendCancel(cid, "wait " .. getPlayerStorageValue(cid, store) - os.time() .. " seconds to use this item.") return true end setPlayerStorageValue(cid, store, os.time()+exhausted) doTpTime(cid, 5, var.pos, var.msg) return true end FAVOR TROCAR O ACTIONID QUE ESTÃO DENTRO DAS CHAVES [] local items = { -- [ACTIONID] [15872] = {pos = {x = 433, y = 992, z = 15}, msg = "Earth"}, [15873] = {pos = {x = 478, y = 992, z = 15}, msg = "Namek Planet"}, [15874] = {pos = {x = 500, y = 992, z = 15}, msg = "Vegeta Planet"} } ai no actions.xml coloca assim por exemplo: <action actionid="15872;15873;15874" script="nome do seu script.lua"/> ou se forem tudo em ordem os actionID, tbm pode ser assim: <action actionid="15872-15874" script="nome do seu script.lua"/>
  17. 1 point
    Software que aumenta os sprites e o effects do Old Client Funciona na versão 8.54 Explicando seu uso. No botão Buscar Client, você vai ter que procurar pelo client que você quer modificar, que nesse caso é o executável. Marque as opções que você quer que seja adicionada ao seu cliente aperte em Modificar Client. Na pasta do seu client vai ser criado uma pasta chamada de Tibia Edit Client. Nessa pasta vai ter o client modificado e mais alguns arquivos que vai depender das opções marcadas. Se você marcou Aumentar sprites e Aumentar effects vai ter seu client modificado, tibiaedit.dll, Tibia.dat, extedend.dll. Se você marcou só Aumentar sprites, vai ter seu client modificado, Tibia.dat e extended.dll. Se você marcou só Aumentar effects, vai ter seu client modificado e tibiaedit.dll. Aumentar effects Ele vai tirar o limite de 255 efects do seu client, você vai ter que fazer as alterações no servidor para funcionar. Tutorial ensinando como modificar nas source do servidor. Aumentar sprites Você poderá usar Tibia.str e Tibia.dat extendido, mas você deve ter percebido que já vem um Tibia.dat, não apague ele, você vai ter que que mudar o nome do seu Tibia.dat extedentido para dat2.dat e coloque na pasta criada. Você vai ter que colocar o resto dos arquivos que são Tibia.spr, Tibia.dat, Tibia.pic, se a opção Aumentar sprite foi marcada, seu Tibia.dat tem que ser renomeado para dat2.dat, se seu computador não mostra a extensão dos arquivos, só colocar dat2, mas se der algum erro, tente o dat2.dat. A dll extended.dll não sei quem foi que criou, o meu software está apenas colocando ela para executar junto com o client. A dll tibiaedit.dll, foi desenvolvida por mim, o meu software faz ela executar junto com o client. Imagem do software Download Clique aqui para baixar o software Virus total Virus total do software Software ainda está em desenvolvimento, pode ter alguns bugs, informe se acontecer algum. Abra o software como administrador. Quando o tibia é modificado é recomendado que comece abrir ele como adiministrador, porque tem vezes que não abre, porque a dll tibiaedit.dll pode ter problemas em mudar os address no tibia, e abrindo como administrador esse problema é evitado. Não deixe de agradecer. Pessoas que querem para o 8.60, estou muito ocupado, mas atualizarei o software em breve, já atualizei a Dll, só vou atualizar o software.
  18. 1 point
    OTXServer Global Full Kilmaresh by Malucooo [CLIENTS COMPATÍVEIS] http://www.gitlab.com/guilhermesidney/cliente10/ [BUGS E DOWNLOAD] BAIXEM E REPORTEM EM: https://github.com/malucooo/otxserver-new IPCHANGER TIBIA 11: http://www.tibiaking.com/forum/forums/topic/82629-1140-ip-changer/ [FEATURES] NEW DEPOT, NEW SPAWN, NEW CAST SYSTEM, NEW NPC SYSTEM VIA BANK BALANCE, NEW CRITICAL BOOST SYSTEM, NEW POTIONS, REWARD SYSTEM, PREY SYSTEM, IMBUIMENT SYSTEM, DAILY REWARD SYSTEM, EXERCISE WEAPONS... [MAPA] FULL GLOBAL MAP WITH KILMARESH (ISSAVI) TODAS CIDADES E NOVAS AREAS QUESTS FUNCIONANDO! Novos Monstros Novas Montarias Novos Outfits [AGRADECIMENTO] TIBIAKING PELO ESPAÇO CONCEDIDO, TODOS QUE COLABORARAM MOSTRANDO OS BUGS, AOS AMIGOS QUE TRABALHAM COMIGO AQUI NO FÓRUM E NO GRUPO DO WHATSAPP, OTXSERVER (Matt Gomez), AOS CRIADORES DO THE FORGOTTEN SERVER E MAIS UMA VEZ A TODOS QUE ACREDITARAM E ACREDITAM NO PROJETO. [CONTATO] FACEBOOK:https://www.facebook.com/erick.nunes.75/ SKYPE: e_nunes@live.com WHATSAPP: +5544998940391. [Créditos] Tfs 1.3 Developers -Zbizu - Pitis91 - MatheusMkalo - Gesior - Lundrial - M4G0 - Fish04k - Printer - Djarek - Ninjalulz - Slavidodo - Thexamx - Socket2810 - Ciroc -Absolute - Gordonbay - Mitsuig - Alissonfgp - Gunz - Bruno Minervino - Comedinha -Hirako - Maya - Mattyx14 – Darkjav - Viking Tibia - Cjaker (Eternal-Scripts)
  19. 1 point
    Eu gostei da sua ideia. :) Encontrei nos meus CDs antigos o server do Slayer Yurots v11 8.4. Vou edita-lo aumentar o mapa e construir novas coisas nele. Postarei minhas idéias aqui depois. ^^
  20. 1 point
    Yinz

    ERRO Characters Gesior

    geralmente esse erro é falta de querys, depura o sql pra ver se ta faltando algo.
  21. 1 point
    Olá galera! Estive procurando um ot de war para jogar, mas hoje em dia nao vi qualidade nos ots, e queria sentir aquela nostalgia de antigamente dos ots war que trocavam mapa e dividiam times para war! decidi eu mesmo criar um! pois eu procurei e nao achei nenhuma base que fosse assim! nao implantei erros propositais para crashar ou algo do tipo , os arquivos estao bem limpos como sao poucos scripts é facil checar se há bugs! pois usei a base original do Mattyx na GitHub. está 100% estavel entao vamos la! OQUE POSSUI? DOWNLOAD LINK SCAN VIRUSTOTAL quem colocar online manda pm pra tirar um x1 😅!
  22. 1 point
    FlavioHulk

    Chance Loot

    lootMonster vezes o rateLoot do config.lua 100000 = 100% * rateLoot, ou seja se o rate for 4, a porcentagem será 400%
  23. 1 point
    MaXwEllDeN

    [Aula 8] while & repeat

    << Aula 7 - Estruturas de Controle Essa aula foi escrita por um urso gordo Mock, todos os créditos pertencem à ele. While & repeat Aula 8 Primeiramente desculpe a demora por essa aula, ficou meio aquela de; ah faz você, não faz você, anem faz você; Mais em fim estamos de volta com uma coisa indispensável em scripting que são os loops. Antes de tudo devo avisa que loops são perigosos, você pode travar seu servidor inteiro usando errado um loop. Os loops são usados para inicialmente quando temos varias funções juntas iguais, por exemplo, fazendo um jogador falar oi 10 vezes. Sem os loops você faria assim: doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) Com loops você resume isso a 4 linhas, e ainda pode fazer milhares de coisas com eles! While Sintaxe: Traduzindo: Então repare, enquanto algo for verdadeiro fazer... Ele vai executar o que estiver dentro do loop infinitas vezes até que o ((sentença)) seja falso ou você mande ele parar. Veja um exemplo: while getPlayerLevel(cid) < 10 do --- Enquanto o level for menor que 10 doPlayerAddExp(cid,1000) adcionar 1k de exp por vez end Viram? enquanto o nível for menor que 10 ele vai adicionar 1k de exp. Ele ira verificar, se for false (maior que 10) ele pula tudo e vai para o que estiver depois do end, se for true (for menor que 10) ele ira adicionar 1k de exp e depois ira verificar de novo, ele vai executar até que seja 10. Nessa hora que se tem que tomar cuidado, é na verificação. Se você colocar algo como: while 1 < 2 do, ele vai executar eternamente, até que vc encerre o programa forçadamente (ctrl-alt-del) ou reinicie o pc, ou então feche o programa no X Veja mais alguns exemplos: pos = {x=100,y=100,z=100,stackpos=0} local stack = 0 while stack < 255 do pos.stackpos = stack local item = getThingFromPos(pos) if item.itemid ~= 0 and isCreature(item.uid) == false then doRemoveItem(item.uid,item.type) end stack = stack+1 end Nesse exemplo declaramos uma pos e um numero, no loop verifica se o numero é menor que 255, se for a stackpos vai ser igual ao numero e depois ira verificar o que tem no mapa naquela posição, se tiver um item e nao for um player ou monster ele ira remover o item e no final adcionar +1 numero a nossa variavel stack, Nisso repare, ele ira executar 255 veze e ira deletar todos os items daquela posição imagina vc escrevendo isso 255 vezes sem o loop . Repeat Ao contrario do while ele é tudo ao contrario, a verificação é no fim e ele só repete se for false (contrario de while que é se for true) Sintaxe: Tradução: Bem nao seria até seria até que nao, pois se você usar: until true ele vai parar, e se usar: until false ele vai continuar. è ao contrario especificando mais. Diferente do while, o repeat ele executa primeiro o bloco para depois verificar, a verificação é no final. Tambem perigoso pois se usado incorretamente vc vai travar seu server tambem. Mais nao ligue pra isso todos que começam a mexer com loops sempre travam seus servidores no começo é normal. Veja o repeat em uso: local n = 0 repeat n = n+1 print('ola pessoas este é o loop numero:'..n) until n == 10 Ele ira executar 10 vezes, ele ira parar quando n for 10. Agora veja o exemplo de limpar o char adaptado para o repeat e veja a diferença (repare nos sinais de > e< ) pos = {x=100,y=100,z=100,stackpos=0} local stack = 0 repeat pos.stackpos = stack local item = getThingFromPos(pos) if item.itemid ~= 0 and isCreature(item.uid) == false then doRemoveItem(item.uid,item.type) end stack = stack+1 until stack > 255 Viram? Ao invez da verificação ser no começo do loop ela é feita no final, entao ao final do lopp antes da verificação eu adciono +1 no valor da variavel stack, e ele so ira parar o loop assim que stack for maior que 255 (ou seja 256), entao assim que o script dentro do loop temrinar com o valor 256 ele ira parar o loop e prosseguir com o resto do script. break Antes de terminarmos irei falar rapidamente sobre o break. Ele é usado APENAS em loops e serve para "quebrar" o loop, acontece quando vc quer parar o loop sem a verificação, ou parar antes de algo. Veja: local parar = 0 while os.date('%S') == '45' do print('Verificando se agora são 45 segundos') if parar > 25 then break end print('Nem é agora são:'..os.date('%S')..' segundos') parar = para+1 end print('oi') Nesse caso criei um script para ver se agora são X horas X minutos e 45 segundos (não importa quantas horas e minutos só os segundos), e se depois de 25 verificações não for 45 segundos ele ira usar o break. Quando usado ele ira finalizar o loop e irar continuar a executar o script depois do loop, no caso o print('oi') ai e o resto do script (caso exista) Nesse caso criei um script para ver se agora são X horas X minutos e 45 segundos (não importa quantas horas e minutos só os segundos), e se depois de 25 verificações não for 45 segundos ele ira usar o break. Quando usado ele ira finalizar o loop e irar continuar a executar o script depois do loop, no caso o print('oi') ai e o resto do script (caso exista) Crie um loop que execute enquanto o player estiver online, e enquanto ele estiver online colocar para kickar ele. Use o repeat para criar um script que solte 25 magic effects diferentes. Use qualquer loop para criar um script que mova um player por 5 sqms em direções aleatórios (o script deve parar com o break!) DESAFIO Crie um script que gere um loop infinito que só pare depois de 10 segundos de execução. Respostas: Essa aula foi escrita por um urso gordo Mock, todos os créditos pertencem à ele. Aula 9 - Tabelas >> Exercícios Faça seguinte: local time = 10 --- segundos time = time+os.clock() while true do if time <= os.clock() then break end end
  24. 1 point
    luangop

    [OPEN-SOURCE] PokeChampions

    Melhor ensinar a pescar, da próxima você mesmo pode pegar o peixe! 1º: Baixe o programa Demoleition (serve para descompilar molebox) ~> https://www.mediafire.com/file/t3xw46s554it5fp/demoleition-v0.50.zip 2º: Abra o programa e selecione o .exe do client e pronto! Simples assim! =) (pra quem tem preguiça de fazer, o link do .dat e .spr: https://mega.nz/#!ecgDSSqY!PpixmcLbGiui4pjJVpIWV8zta_CyEXvQYW82sydxk1A)
  25. 1 point
    One Punch Man

    Dragora Island

    Imagens: Download: http://www.mediafire.com/download/s16djrfif4a6s7j/Isla.rar Scan: https://virusscan.jotti.org/en-US/filescanjob/dfinq3flni Créditos: Alarcon10
  26. 1 point
    Bom.. vamos começar por partes. Vou dar um ctrl c + ctrl v em algumas partes e vou explicando passo a passo, vale lembrar que eu não manjo 100% pois nunca me preocupei com algumas coisas.. então o que eu tiver certeza vou deixar explicito, o que for uma hipotese para mim vou falar EU ACHO. Vamos lá. <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Auto-explicativo. Utilize para mudar o nome do monstro. <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Serve para você escolher o que vai apareçer quanto você der look num monstro.. por exemplo você da look num demon.. vai apareçer "You se a demon".. ai se você quiser alterar isso, a vontade <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Raça propriamente dita, essa parte é simples de entender porém eu nunca parie para prestar atenção no que isso influencia, mas provavelmente deve influenciar em algo. <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Altere a experiencia do monstro aqui.. por exemplo, seu ot server é exp de 10x Nesse caso um demon irá lhe dar 6000 de exp * 10, ficando então 60,000 de exp, se você alterar para 7000 a exp, irá dar 70,000 de exp o demon, você tem que levar em conta a exp como 1x elevado a rate do seu server, se você quer que um monstro de 10k de exp, você vai lá e põe 10k, e por seu server ser 10x ele vai dar 100k, algo que você não quer.. nesse caso utilize 1k de exp <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Velocidade propriamente dita do monstro, altere isso para faze-lo andar mais rapido/devagar, ou deixe em zero para o monstro ficar parado <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Provavelmente deve ser a mana necessária para sumonar o demon, mas calma lá.. ja vamos chegar num ponto onde definimos se o monstro é sumonavel ou não. ----------------------------- <health now="8200" max="8200"/> Aqui você define a health do monstro.. por exemplo <health now="500" max="8200"/> Se você fizer isso, o monstro vai ter um TOTAL de 8200 de HP, mas quando ele nascer, ele vai nascer com 500 de HP, ou seja, a barrinha de life dele vai estar no vermelho praticamente ----------------------------- <look type="35" corpse="5995"/> Aqui você define o sprite do seu monstro Não lembro de cabeça.. mas vamos fingir que o citizen outfit é look type 100, você tem o looktype 35, e quer fazer um demon com outfit de citizen, você muda para 100, ou qualquer outro valor referente ao outfit que você procura. <look type="35" corpse="5995"/> Aqui você define qual será o sprite do seu monstro quando ele morrer. Agora, vamos fazer algo mais divertido? Vamos alterar o seguinte código: " <look type="35" corpse="5995"/>" Suponha-se que você quer utilizar o outfit citizen, mas dessa maneira você não pode definir as cores, e nem fazer um monstro com addon, então agora vou te ensinar como fazer isso Insira no código as seguintes informações destacadas: <look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/> Agora vamos as explicações: <look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/> Define a cor do cabelo do seu monstro, porém você tem que definir com numeros, ja te ensino o macete para descobrir como conseguir esses valores No caso, 114 representa o preto, então seu monsto terá cabelo preto, se você definir como 0, será cabelo branco. <look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/> Mesma coisa do caso acima, porém para o peitoral do corpo.. e assim por diante Basta você imaginar na ordem do Set outfit do próprio Tibia, quando você vai em ser outfit, temos as seguintes coisas: Head = Head Primary = Body Secondary = Legs Detail = feet Entendeu? Para definir os addons do seu monstro você editará a seguinte parte: <look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/> Se você quiser que ele tenha APENAS o addon 1, deixe dessa maneira: addons="1" Para o addon 2: addons="2" Agora, você quer saber a melhor maneira de deixar o monstro como você quer? Simples, coloque seu ot server online, e pegue um char de teste, selecione nele o outfit com as cores e addons que você quer, e depois deslogue do char, feito isso abra o MYSQL (a versão que você utilizar), lá vá em editar players, se você utilizar o SQLite Studio assim como eu, logo a frente do nome do seu char de teste, vai ter as informações com o numero da cor e outfit que você selecionou <targetchange interval="5000" chance="8"/> Nessa parte você coloca um valor para definir a cada QUANTO TEMPO ele irá sorteiar baseado no valor ao lado (chance) se o monstro irá mudar seu alvo de um jogador para outro. Na parte a seguir vamos definir algumas coisas utilizando o padrão Binário, mas ai você me pergunta o que é binário? Simples, definição de verdadeiro e falso a partir de 0 e 1. Para verdadeiro utilizaremos 1, para falso 0. <flag summonable="0"/> Define se é possivel um player normal sumonar o monstro através da magia "utevo res".. no caso está definido como não, não é possivel. <flag attackable="1"/> Define se é possivel UM JOGADOR atacar o monstro, por exemplo, se você definir como 0, ao tentar atacar o monstro vai ser impossivel. <flag hostile="1"/> Define se é um monstro hostil, ou simplificando, se estiver como 1 ele te ataca, mas se estiver como 0 ele seria um rabbit da vida, pode ser atacado mas não ataca de volta. <flag illusionable="0"/> Define se é possivel utilizar a magia "utevo res ina" no monstro.. ou seja, um player comum (mage) se transformar no monstro por um determinado tempo <flag convinceable="0"/> Mesma coisa do summonable PRATICAMENTE, porém é através de uma runa que existe no jogo, se você utilizar ela num monstro ele irá virar seu summon. <flag pushable="0"/> No caso, demons não são possiveis de arrastar, mas se você alterar para 1, será possivel arrastar seu demon. <flag canpushitems="1"/> Define se o monstro em si irá arrastar itens, no caso você tacou uma parcel na frente do bixo e saiu correndo, ele arrasta ela tirando-a do seu caminho. <flag canpushcreatures="1"/> Mesma coisa do item anterior, porém com criaturas, se uma criatura entrar na frente do seu monstro, ele irá arrasta-lá para chegar até você. <flag targetdistance="1"/> A distancia que você quer que o monstro fique do jogador, exemplo: Você quer que o demon ataque o jogador a 2 sqm's de distancia, basta alterar para 2 o valor. <flag staticattack="90"/> Não sei dizer o que fazer, se alguem souber, peço que poste. <flag runonhealth="0"/> Define a vida em que o monstro irá fugir de você (porém não sei dizer se funciona como a vida mesmo ou em % da vida, se alguem puder deixar mais claro isso) --------------------------- </flags> <attacks> <attack name="melee" interval="2000" skill="100" attack="110"/> <attack name="manadrain" interval="2000" chance="13" range="7" min="0" max="-120"/> <attack name="fire" interval="2000" chance="30" range="7" radius="7" target="1" min="-150" max="-250"> <attribute key="shootEffect" value="fire"/> <attribute key="areaEffect" value="firearea"/> </attack> Nessa parte iremos trabalhar as spells do monstro. A parte destacada em negrito, é onde você coloca os ataques, ou seja, todo ataque novo que você quiser fazer OU TIRAR, terá que ser assim, e sempre terá de ser dentro do padrão, no caso eu retirar todos os ataques e deixar apenas um novo. <attacks> <attack name="melee" interval="2000" skill="100" attack="110"/> </attack> Dessa maneira o demon irá utilizar APENAS o melee skill, com um intervalo de 2000 milésimos, a parte e skill e attack basta pensar que ele é um player, vamos utilizar um exemplo. <attack name="melee" interval="2000" skill="100" attack="25"/> Isso equivale a um jogador com skill 100 utilizando uma arma com attack 25. (Por exemplo um paladino com spear) <defenses armor="55" defense="55"> <defense name="healing" interval="2000" chance="15" min="130" max="240"> <attribute key="areaEffect" value="blueshimmer"/> </defense> <defense name="speed" interval="1000" chance="8" speedchange="290" duration="5000"> <attribute key="areaEffect" value="redshimmer"/> </defense> </defenses> O critério utilizado acima nos ataques, também servem para buffs do monstro, por exemplo aqui em defense, você pode ver que ele tem uma chamada speed, que é um haste que o monstro usa para correr mais rapido. Mas esse não é o foco que irei abordar aqui. A parte em negrito aborda a defesa do monstro, mesmo criterio utilizado acima no ataque, porém para defesa. Agora, você queria adicionar uma spell de healing, correto? então vamos lá Peguei como exemplo a linha de código de um monstro do meu servidor, basta você inserir isso no seu código que estará tudo perfeito. <defense name="healing" interval="1000" chance="25" min="500000" max="50000000"> Interval define o intervalo do chance, ou seja, a cada 1000 milésimos será sortiado com uma chance de 25 de o monstro healar (detalhe, se não for sortiado dentro da chance o monsto não irá healar) entre o valor min e max, e a próposito, estou falando sortiar, mas o mais correto seria dizer: "Sortear um valor random", pois não há como definir o valor a ser sortiado (se não nem sequer seria um sorteio né?" ------------------------------------- <elements> <element physicalPercent="30"/> <element energyPercent="50"/> <element earthPercent="20"/> <element icePercent="-15"/> <element holyPercent="-15"/> <element deathPercent="20"/> </elements> Essa parte é BEM SIMPLES, é a % de defesa do monstro contra danos magicos/fisicos: Levando em conta os dados acima vamos lá: <element physicalPercent="30"/> O monstro tem uma defesa de 30% contra physical, ou seja, se você iria hitar 100 nele, o valor 100 será diminuido para 70, que será o seu hit final <element icePercent="-15"/> Aqui ja fica diferente.. DESTAQUE para o sinal de -, isso significa que o monstro É FRACO ao elemento ice, ou seja, você iria hitar 100? Seu hit final vai ser 100 + 15% = 115 de dano É essa formula para qualquer valor, por exemplo: 300 de dano (15% do valor é igual a 45), ou seja, 345 de dano de ice ----------------------------- <immunities> <immunity fire="1"/> <immunity drown="1"/> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> Aqui são as imunidades do monstro, vamos lá, 1 por 1: <immunity fire="1"/> Significa que o monsto tem 100% de proteção a fogo, então não importa o que ele não toma dano de fogo. <immunity drown="1"/> Não me lembro o que é drown, se não me engano é andar embaixo da água, se for 0 o monstro iria perder vida (SE NÃO ME ENGANO) <immunity paralyze="1"/> Ao utilizar a paralise rune no monstro, isso define se ele será afetado ou não <immunity invisible="1"/> Define se o monstro irá ver invisbilidade (utana vid ou stealth ring) Caso essa opção esteja marcado como 0, se você utilizar utana vid, o demon não irá lhe atacar por não te ver. ----------------------- <summons maxSummons="1"> <summon name="fire elemental" interval="1000" chance="12"/> </summons> O demon é um monsto que sumona bixos, no caso aqui você define em MAXSUMMONS qual o limite de bixos que ele poderá sumonar, e em baixo qual o bixo propriamente dito que será sumonado, no caso você pode alterar o fire elemental para um rat se quiser. ------------------------ <voices interval="5000" chance="10"> <voice sentence="MUHAHAHAHA!" yell="1"/> <voice sentence="Your soul will be mine!" yell="0"/> </voices> Deixei apenas as 2 opções para uma explicação mais objetiva, o primeiro em negrito é uma fala do monstro, porém está como yell=1, isso significa que quando ele falar, ele irá gritar na verdade, então será possivel ver essa fala dele de fora da tela. A fala de baixo no caso, ja representa uma simples fala qualquer que só se pode ser vista estando na mesma tela do monstro em si. ----------- ~ Enfim.. Só restou explicar a ultima parte de loot, mas com tudo que ja expliquei acima, creio que você pegou uma base e isso não será necessário né? hehe, espero que esse post tenha lhe ajudado, qualquer dúvida, basta perguntar, ajudarei no que for possivel.
This leaderboard is set to Sao Paulo/GMT-03:00

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...