Líderes
-
-
D i M i T r E s C u
MembroPontos705Total de itens -
-
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 07/09/17 em todas áreas
-
Fontes
Fontes
thelifeofpbion e um outro reagiu a Caronte por uma resposta no tópico
2 pontosEntão pode ser uma fonte desenhada, provavelmente tem um fonte de base e o designer só fez alguns ajustes na fonte. Se não tem na internet então só desenhada mesmo. Você faz assim e altera somente alguns detalhes, tem que rasterizar a camada. Aí apagando/cortando alguns pedaços o photoshop corrige suas opções de chanfro é claro que cortei bem "idiotamente" para esse exemplo. Um vídeo que pode ajudar.2 pontos -
[MODS] - [8.6] Perfect Zombie System [Automático] [V1.0]
[MODS] - [8.6] Perfect Zombie System [Automático] [V1.0]
Admin Ghonim reagiu a Vodkart por uma resposta no tópico
1 pontoQual 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.rar1 ponto -
[NPC] Quest de entregar items para npcs
[NPC] Quest de entregar items para npcs
LucianoFlorencio reagiu a tonyplyson por uma resposta no tópico
1 pontoOlá galera do tibiaking , eu estava sem fazer nada (como sempre) E Resolvi criar uma questzinha que da um Ars mais de RPG no servidor é uma quest simples . Funciona da segunte maneira Eu chego para um NPC e falo Player : Hi NPC : Olá |PlayerName|, Eu Tenho uma missãozinha para voce! Player : Mission NPC: Entregue X Items para Marlon e Ganhe Uma X Recompensa! Player: Yes NPC: Obrigado , Boa sorte com sua jornada Ai o player ganha um item. Ai ele vai no Marlon e fala Player: Hi NPC: Olá |PlayerName|, Está terminando de fazer Uma Missao? Player: Mission NPC: Frederic Mandou Voce me Entregar Esse X Item? Player : Yes NPC: Obrigado Por me trazer esses items ---------------------------------------------- Então galera , maos a Obra Primeiro , Abra a Pasta do OT/Data/NPC/ Copie um arquivo qualquer XML , Renomeie para frederic , e lá coloque Depois abra a pasta Scripts do NPC. copie um arquivo qualquer lua, e renomeie para frederic e edntro dele coloque Pronto , o NPC para voce pegar a missao está pronto agora vamos criar o NPC para voce entregar o item e receber seu premio Volte a pasta NPC , copie outro arquivo xml e renomeie para marlon , e dentro dele voce coloca Agora vá de novo a pasta Scripts do NPC e dentro dele , voce copia outro arquivo lua , renomeia para marlon e dentro dele voce coloca Se voce quizer adicionar para o player dar como premio , EXP , basta voce adicionar doPlayerAddExp(cid,30000) No lugar de 30000 , voce edita a quantidade de exp a ser adiiconada e para voce poe dentro da script voce procura a funçao doPlayerAddItem(cid,PREMIO,PQUANT) e debaixo dele voce adiciona a função de adicionar a exp Qualquer duvida sobre a script só perguntar REP+ se ajudei REP+ , se voce aprovou REP+ , se voce usar em seu servidor1 ponto -
(Resolvido)[Ajuda] Tem como recortar parte do mapa ou copiar pra botar no meu?
*-* Boa Tarde. Queria saber se dava pra copiar ou recortar parte de outro mapa que eu fiz, só que queria botar em outro poketibia. Tem como? queria pegar só o CP Valendo 3rep+1 ponto
-
CORPSE AO MORRER !
CORPSE AO MORRER !
leozincorsair reagiu a D i M i T r E s C u por uma resposta no tópico
1 pontoAmigo acho que os Servers Não vem com Script de Corpse, Mais Tem Como Fazer. Encontrei um Tutorial Pela Source. TUTORIAL PELA SOURCE Ou Pode Ser Assim: em data/CreatureScript/scripts/ Se ja houver um arquivo chamado Corpse Mude para esse Se Não tiver Crie Um Arquivo Chamado Corpse.lua e Coloque isso: Em data/CreatureScript/Creaturescript.xml coloque isso <event type="death" name="corpse" event="script" value="corpse.lua"/> e em data/CreatureScript/script/login.lua adicione isso: registerCreatureEvent(cid, "corpse") FIm!1 ponto -
Old Client Narutotibia 8.54 com meu IP (*ntorox.ddns.net)
Old Client Narutotibia 8.54 com meu IP (*ntorox.ddns.net)
CainJ reagiu a D i M i T r E s C u por uma resposta no tópico
1 pontoSEU CLIENTE IP: ntorox.ddns.net Ntorox.exe Tibia.exe TESTA AI DE NOVO1 ponto -
WebPage v1 - Para OTs SQL
1 pontoWebPage OT_SQL Hoje vim postar 1 WebPage para quem usa OT Sqlite, ainda tem muita gente que roda ot em sql, então resolvi fazer 1 WebPage pra esse pessoal , então vamos lá: Oque contém nele ? Menus : 1- Criar Conta 2- Server Info 3- Comandos 4- Eventos 5- Downloads 6- Suporte 7- Responsivo Instalando & Editando : 1- Basta extrair na pasta html do xampp ou na pasta www da sua vps ou na hospedagem e já estará funcionando. 2- Para altera o conteúdo abra o index.html 3- Para alterar as imagens basta i na pasta assets/images 4- Para alterar o CSS basta ir na pasta assets/stylesheets Bonus : para quem quiser hospedar de graça vou deixar 2 links de hospedagem gratuita 1- Hostinger > https://www.hostinger.com.br/hospedagem-gratis 2- WebHost > https://www.000webhost.com/ 3- Para quem quiser testar antes de baixa > http://forgotten.site90.com/ Download & Scan : 1- Forgotten WebPage 2- VirusTotal Scan1 ponto
-
[NTO] Base NTO Server (WAR)
[NTO] Base NTO Server (WAR)
lucasmacaca reagiu a Xablauzim por uma resposta no tópico
1 pontoMalz reviver o tópico, tem como ajudar? Tipo as newtype 600 até 850 estão totalmente bugadas, quando você executa o comando as newtype em vez de virar o mob vira pisos como lava, tem como ajudar? Se conseguir +REP MALZ POR REVIVER1 ponto -
[PEDIDO] aura por vocation e level
Tem sim, o da staff eu já tenho. Vou disponibilizar. Talkactions: <talkaction words="!aurastaff" access="1" event="script" value="aurastaff.lua"/> aurastaff.lua -- CONFIGURAÇÕES aurastradf = 81462 -- storage da aura estradf = 39423 -- storage para o exhaust porcentagemadf = 10 -- chance de curar em cada volta da aura, em porcentagemadf quanthealad = 15 -- porcentagemadf do hp máximo que cada cura irá curar. (No caso, irá curar 5% do hp máximo cada cura) tempoadf = 1180 -- tempoadf para dar uma volta no player (este tempoadf foi o que achei mais agradável visualmente, é recomendável não mudar) tipoauraadf = 37 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo) efeitocuraadf = 65 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura3adf(i,tm,cid) if(isCreature(cid)) then local atualadf = getCreaturePosition(cid) local posauraadf = { {x=(atualadf.x)-1, y=(atualadf.y)-1, z=atualadf.z}, {x=atualadf.x, y=(atualadf.y)-1, z=atualadf.z}, {x=(atualadf.x)+1, y=(atualadf.y)-1, z=atualadf.z}, {x=(atualadf.x)+1, y=atualadf.y, z=atualadf.z}, {x=(atualadf.x)+1, y=(atualadf.y)+1, z=atualadf.z}, {x=atualadf.x, y=(atualadf.y)+1, z=atualadf.z}, {x=(atualadf.x)-1, y=(atualadf.y)+1, z=atualadf.z}, {x=(atualadf.x)-1, y=atualadf.y, z=atualadf.z}, } local chances = math.random(100) if(chances<=porcentagemadf/8) then doCreatureSay(cid, "STAFF!", TALKTYPE_ORANGE_1) if(i<=8 and i>1) then doSendDistanceShoot({x=posauraadf[i].x, y=posauraadf[i].y, z=posauraadf[i].z}, atualadf, tipoauraadf) else doSendDistanceShoot({x=posauraadf[1].x, y=posauraadf[1].y, z=posauraadf[1].z}, atualadf, tipoauraadf) end doSendMagicEffect(atualadf, efeitocuraadf) end if(i==8) then doSendDistanceShoot({x=posauraadf[i].x, y=posauraadf[i].y, z=posauraadf[i].z}, {x=posauraadf[1].x, y=posauraadf[1].y, z=posauraadf[1].z}, tipoauraadf) elseif(i<8) then doSendDistanceShoot({x=posauraadf[i].x, y=posauraadf[i].y, z=posauraadf[i].z}, {x=posauraadf[i+1].x, y=posauraadf[i+1].y, z=posauraadf[i+1].z}, tipoauraadf) end if(i<=8 and getPlayerStorageValue(cid, aurastradf)==2) then i = i+1 tm = tempoadf/8 return addEvent(efeitosAura3adf,tm,i,tm,cid) elseif(i>8 and getPlayerStorageValue(cid, aurastradf)==2) then return efeitosAura3adf(1,0,cid) else return TRUE end else return TRUE end end -- Função principal function onSay(cid, words, param, channel) if getPlayerStorageValue(cid, 89127) <= 0 then doPlayerSendCancel(cid, "Você precisa ter feito a quest.") return true end if(param=="on") then if getPlayerStorageValue(cid, estradf) > os.time() then doPlayerSendCancel(cid, "Espere "..(getPlayerStorageValue(cid, estradf) - os.time()).." segundos para poder habilitar aura staff novamente.") else if(getPlayerStorageValue(cid, aurastradf)==2) then doPlayerSendCancel(cid,"Sua Aura Staff já está habilitada.") elseif(getPlayerStorageValue(cid, aurastradf)==-1) then doPlayerSendCancel(cid,"Aura Staff ligada!") setPlayerStorageValue(cid, aurastradf, 2) efeitosAura3adf(1,tempoadf/8,cid) end end elseif(param=="off") then if(getPlayerStorageValue(cid, aurastradf)== 2) then setPlayerStorageValue(cid, estradf, os.time()+2) setPlayerStorageValue(cid, aurastradf, -1) doPlayerSendCancel(cid,"Aura Staff desligada!") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Digite '!aura on' para ligar sua aura, e '!aura off' para desligá-la.") end return true end Creaturescript: em login.lua adicione: setPlayerStorageValue(cid, 81462, -1) Para adicionar o recurso ao Staff coloque a storage 89127 no personagem.1 ponto
-
Como fixar os itens nos slots corretos? - Tibia 8.60.
Testei com a armor aqui e realmente não funcionou como deveria, eu havia testado apenas com o caso do shield e tinha funcionado, deveria funcionar pra você também (pelo menos no caso do shield). Saber onde modificar até sei, mas não tenho o conhecimento em c++ pra fazer essa modificação.1 ponto
-
Erro muito comum
Erro muito comum
wilkerankaro reagiu a Vodkart por uma resposta no tópico
1 ponto-- Anti Mage Bomb System otimizado por Killua local config = { max = 3, -- Quantos acc manager o mesmo ip pode logar de uma vez acc_name = "Account Manager", -- Nome do account manager ip_banishment = "true", -- Se logar mais acc manager do que o permitido, leva ban? "true" ou "false" days = 20 } local accepted_ip_list = {""} -- lista dos ips permitidos a logar varios acc manager, exemplo: {""} function antiMC(cid) if not isCreature(cid) then return LUA_ERROR end if (#getPlayersByIp(getPlayerIp(cid)) >= config.max) then if config.ip_banishment == "true" then doAddIpBanishment(getPlayerIp(cid), days * 24 * 60 * 60) end doRemoveCreature(cid) end return true end function onLogin(cid) if getPlayerName(cid) == config.acc_name then if #accepted_ip_list > 0 and isInArray(accepted_ip_list, doConvertIntegerToIp(getPlayerIp(cid))) then return true else addEvent(antiMC, 1000, cid) end end return true end1 ponto -
Best Baiak Completo
1 pontoBoa @Skipper estava precisando, rep +1 ponto
-
Yurots 1.2 [8.60]
1 pontoObrigado por relembrar um clássico meu! Até eu GOD Bon perdi a versão 8.1 que era toda XML que era baseado nas sources do EVOLUTION. Um grande abraço amigo!1 ponto
-
[MOD] Otclient auto-updater
[MOD] Otclient auto-updater
Drankar reagiu a Will Oliveira por uma resposta no tópico
1 pontoO que faz? Esse auto-updater, conta com as funções de: Checar se existe novos updates na inicialização do 'OTC', baixa os updates em diretórios especificados pelo administrador, baixa e extrai arquivos '.ZIP', reinicia o' OTC' apos terminar o download do patch, múltiplos patchs. Instalação: 1 - Crie no diretório raiz de seu site um arquivo '.txt' chamado de 'Update.txt', preencha o arquivo como o arquivo a seguir: http://pastebin.com/cdwnD6qg Obs: nesse pastebin já tem as instruções de como adicionar novos updates. 2 - Baixe o 'Updater Patcher.rar' extraia na pasta raiz do seu otclient. 3 - Depois de ter baixado o 'Updater Mod.rar', extraia e coloque a pasta do mod na pasta 'mods' do seu otclient configure o caminho para o executavel do 'updater patcher' no arquivo .lua. 4 - Agora você precisa ir na pasta raiz do seu 'otclient 'e configurar o arquivo 'Config.ini' com os seguites dados: [Geral] WebSite=http://dragonhertsserver.pusku.com/ - o seu website vai aqui é o site onde fica o 'update.txt' Client=otclient - nome do executavel do seu otclient SiteFile=Update.txt - o nome do arquivo que fica no site marcando os updates 5 - Depois de tudo configurado é só abrir o 'otclient' normalmente que o 'patcher' vai executar junto. use sempre link de download direto para adicionar um novo update. Download: Updater Mod: http://www.mediafire.com/download/8xc6boa8xpdh3mu/Updater+Mod.rar Updater Patcher: http://www.mediafire.com/download/ynnqy1iba8qqeyq/Update+patcher.rar Vídeo que mostra como o mod funciona: Obs: Se você tem um servidor é quer usar o updater, crie um instalador definindo já o diretório do seu client para o player não precisar configurar o arquivos '.lua' Obs²: Em arquivos compactados use sempre a extenção '.ZIP' Obs³: É preciso o NET framework para rodar. Créditos: vyctor171 ponto -
(Resolvido)(Resolvido) RSA key ajudem!
(Resolvido)(Resolvido) RSA key ajudem!
Andersen96 reagiu a robi123 por uma resposta no tópico
1 pontoAonde que eu baixo isso e coloca para poder compilar? @Comedinha eu consegui resolver este problema baixando este arquivo... meu sistema é 64bits.. https://sourceforge.net/projects/openssl/?source=typ_redirect Ai coloquei ele dentro da pasta do DEV c++1 ponto -
[NPC] Vender Spells pelo NPC
1 pontoOlá galera do TibiaKing, a um tempo eu estava querendo um NPC que vendia spells (magias) Porém, eu não achava, na época não tinha, então, eu fui no ##### e pedi lá esse NPC que vendia spells pelo NPC, ai o "VODKART", postou esse NPC lá e me ajudou, e se não me engano, não existe esse NPC aqui no TK, então agora irá ter. Chega de papo/enrolação e vamos para o que interessa. Abra a pasta do seu OT/data/npc/NOME DO SEU NPC.xml e coloque isso: Agora abra a pasta do seu OT/data/npc/scripts/spell_seller.lua e coloque isso: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local moeda = 2157 local t = { ["light healing"] = {price = 15,vocations = {1,2,3,4},level = 9}, ["find person"] = {price = 25,vocations = {3,4},level = 8}, ["light magic missile"] = {price =30,vocations = {1,5,7,8},level = 15}, ["energy strike"] = {price =20,vocations = {1,2,5,6},level = 12}, ["flame strike"] = {price =100,vocations = {1,2,5,6},level = 12} } if (msgcontains(msg, 'SPELLS') or msgcontains(msg, 'spells'))then local str = "" str = str .. "Eu vendo estas Magias: " for name, pos in pairs(t) do str = str.." {"..name.."} = "..pos.price.." Moedas /" end str = str .. "." npcHandler:say(str, cid) elseif t[msg] then if not getPlayerLearnedInstantSpell(cid, msg) then if getPlayerLevel(cid) >= t[msg].level then if isInArray(t[msg].vocations, getPlayerVocation(cid)) then if doPlayerRemoveItem(cid,moeda,t[msg].price) then doPlayerLearnInstantSpell(cid, msg) npcHandler:say("Você aprendeu uma nova magia chamada ".. msg .."!", cid) else npcHandler:say("você não tem "..t[msg].price.." ".. getItemNameById(moeda), cid) end else npcHandler:say("você não tem a vocação para comprar está spell.", cid) end else npcHandler:say("você precisa ter level "..t[msg].level.." ou mais para comprar essa magia.", cid) end else npcHandler:say("você já aprendeu essa magia.", cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Configurando as spells que serão vendidas é aqui: local t = { ["light Healing"] = {price = 15,vocations = {1,2,3,4},level = 9}, ["find person"] = {price = 25,vocations = {3,4},level = 8}, ["light magic missile"] = {price =30,vocations = {1,5,7,8},level = 15}, ["energy strike"] = {price =20,vocations = {1,2,5,6},level = 12}, ["flame strike"] = {price =100,vocations = {1,2,5,6},level = 12} } ["Nome da Spells"] ={price = Quantos Coins (NO CASO ESTÁ COINS) irá custar. Vocations ={ID DAS VOC},level = level para poder usar a magia} E para usar a magia só quem comprou você faz o seguinte vai em spells.xml e na tag da magia nessa parte: needlearn="0" Você coloca assim: needlearn="1" EXPLICANDO SOBRE O NEEDLEARN: needlearn="1" -- Aqui está que precisa comprar a magia no NPC para poder usa-la. needlearn="0" -- Aqui está que não precisa comprar a magia no NPC para poder usa-la. CRÉDITOS: Vodkart (Pelo Script) Thiagobji (Pelo Tópico, Pelo Pedido e por postar no TibiaKing.com) É ISSO GALERA, QUALQUER DÚVIDA SÓ POSTAR.1 ponto
-
[Pedido] Scripts Tibia Coin
[Pedido] Scripts Tibia Coin
Sh1br4nk4 reagiu a igorlabanca por uma resposta no tópico
1 pontoVai em actions.xml e adiciona <action itemid="24774" script="other/tibiacoin.lua"/> Vai na pasta actions/scripts/other e cria um arquivo tibiacoin.lua function onUse(player, item, fromPosition, target, toPosition, isHotkey) local points = 10 --aqui você bota a quantidade de coins que o item vai dar db.query("UPDATE `accounts` SET `coins` = `coins` + '" .. points .. "' WHERE `id` = '" .. player:getAccountId() .. "';") player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você recebeu "..points.." coins") item:remove(1) return true end Testei em tfs 1.2 e funcionou1 ponto -
LISTA DE CORES SEGUNDO OS ID'S NAS OUTFITS
1 ponto
- (Resolvido)[PEDIDO] Editar Items.
(Resolvido)[PEDIDO] Editar Items.
Rodrigo94 reagiu a xWhiteWolf por uma resposta no tópico
1 pontoVocê coloca no items.xml oque vc quer que o item faça, experimenta usar comandos de itens parecidos: Exemplo: Quero que o set de Knight dê skill de club/sword/axe.. daí vc procura algum item que faça isso e só copia a parte que aumenta a skill <attribute key="skillSword" value="3" /> <attribute key="skillAxe" value="3" /> <attribute key="skillClub" value="3" /> Se você quiser que aumente distance é só colocar <attribute key="skillDist" value="3" /> para absorver danos é bem simples <attribute key="absorbPercentPhysical" value="3" /> <attribute key="absorbPercentEarth" value="5" /> <attribute key="absorbPercentDeath" value="6" /> <attribute key="absorbPercentFire" value="-3" /> <attribute key="absorbPercentIce" value="2" /> Perceba que o PercentFire está negativo, é porque ele tem fraqueza contra fogo, positivo ele é bom contra o elemento, negativo ele é fraco contra o elemento. Pra aumentar ML é só usar: <attribute key="magiclevelpoints" value="1" /> Pra aumentar speed é só procurar a BOH e copiar: <attribute key="speed" value="20" /> E não esquece de colocar no final <attribute key="showattributes" value="1" /> para que apareçam os atributos quando o player der look no item. Em <attribute key="slotType" value="necklace" /> Você escolhe que tipo de item aquilo é, os values são: body, two-handed, one-handed, ammo, ring, necklace, legs, feet, head, backpack E PARA FINALIZAR DECLARE TUDO NO MOVEMENTS.XML: <movevent type="Equip" itemid="IDDOITEM" slot="TIPO DE SLOT" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="IDDOITEM" slot="TIPO DE SLOT" event="function" value="onDeEquipItem"/> itemid="IDDOITEM" troque IDDOITEM pelo ID DO ITEM (BEM ÓBVIO, NÉ?) slot="TIPO DE SLOT" coloque um dos slots possíveis, os que são possiveis estão nessa lista aqui: armor feet legs head shield pickupable necklace ring OBSERVAÇÃO FINAL: O SLOT QUE VC DECLARAR NO MOVEMENTS TEM QUE SER DO MESMO TIPO QUE O ITEMS.XML ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Agora as flechas/bows/armas: Essas não precisam declarar no movements.xml mas precisam de um script no weapon.xml 1) Flechas As flechas são bem simples: <attribute key="slotType" value="ammo" /> <attribute key="attack" value="25" /> <attribute key="maxHitChance" value="90" /> <attribute key="weaponType" value="ammunition" /> <attribute key="ammoType" value="arrow" /> <attribute key="shootType" value="arrow" /> slotype = ammo para ficar no lugar da munição (ammo) Attack vc muda a vontade pro que vc quiser MaxHitChance = chance de acertar o hit, qualquer numero menor que 100 apresenta uma chance do hit falhar WeaponType= Tipo de arma, flechas são munições então deixe sempre ammunition ammoTyoe = Tipo de munição, pode ser "arrow" ou "bolt" dependendo doque vc quiser usar, um bow ou um crossbow shootType é o efeito que vai sair, no caso dessa aí seria uma arrow normalzinha mas vc pode colocar qualquer flecha que exista ou até mesmo copiar efeitos de runas Dê ctrl+F no items.xml em shootType e copie diferentes tipos e vá vendo no servidor qual se encaixa melhor na sua opinião. 2) Bows e Crossbows Eu te aconselho copiar de algum item que já exista o modificar oque você quiser <attribute key="slotType" value="two-handed" /> <attribute key="weaponType" value="distance" /> <attribute key="ammoType" value="bolt" /> <attribute key="range" value="5" /> <attribute key="hitChance" value="1" /> isso daqui é um crossbow duas mãos que ataca bolt (podia ser arrows tb) a uma distância de no máximo 5 SQM (modifique o range) a chance de hit padrão dele é 1 e essa hit chance soma com a da munição 3) Wands e Rods <attribute key="weight" value="2900" /> <attribute key="weaponType" value="wand" /> <attribute key="shootType" value="ice" /> <attribute key="range" value="3" /> peso, tipo (mesmo que seja uma rod o tipo é "wand"), tipo de efeito que sai dela (no caso é o ice), distância que ataca (no caso, 3 sqm) Agora no weapons.xml: <wand id="2190" level="7" mana="2" min="8" max="18" type="energy" event="function" value="default"> <!-- Wand of Vortex --> <vocation id="1"/> </wand> id do item, level pra usar, custo de mana por hit, dano minimo e maximo, tipo de ataque, event (deixe function para ele fazer tudo que vc colocou no items.xml) value= não mexa a menos que vc seja um programador C++, vocation vc coloca as classes que podem usar. 1= sorc, 2= druid, 3= pally, 4= kina, 5= master sorc, 6= elder druid, 7= royal pally, 8= elit kina OBS: Você pode colocar isso também para que quando o player dê look não apareça o nome da classe que pode usar aquele determinado item (isso é util quando vc declarar que ambos sorceres e master sorcerers podem usar o item, evitando as repetições quando o player der look no item <vocation id="5" showInDescription="0"/> <vocation id="1"/> 4) Outros tipos de arma É bem simples, só edite oque quiser seguindo o modelo: <attribute key="weight" value="6800" /> <attribute key="defense" value="65" /> <attribute key="attack" value="90" /> <attribute key="weaponType" value="sword" /> <attribute key="extradef" value="5" /> <attribute key="elementIce" value="30" /> <attribute key="slotType" value="two-handed" /> <attribute key="decayTo" value="2401" /> <attribute key="duration" value="60" /> weight = peso defense= defesa q ela dá attack = ataque weapontype = Tipo de arma (sword, axe, club) extradef = defesa extra (fica Defesa 65 +5 nesse caso) ElementIce = adiciona dano elemental à arma, pode usar também ElementFire, ElementEarth e ElementEnergy slotType = se a arma é duas mãos ou não (caso não seja apenas retire essa linha) decayTo = apos um tempo igual a duration (em segundos) ela vira o item de ID 2401 (se não quiser isso apenas remova essas duas ultimas linhas) OBSERVAÇÃO FINAL: Tudo que você não quiser utilizar é só remover a linha do items.xml, e todo tipo de edição em armas deve ser declarado no weapons.xml seguindo o exemplo. (COMO VOCÊ NÃO TÁ CRIANDO NENHUM ITEM E SIM EDITANDO OS QUE JÁ EXISTEM EU TE ACONSELHO A PROCURAR O ITEM LÁ DANDO CTRL F E PROCURANDO PELO ID DOQUE SAIR ADICIONANDO UM MONTE DE LINHA A MAIS QUE TALVEZ DÊ CONFLITO COM AS QUE JÁ EXISTAM). OS ITENS QUE VC COLOCAR PRA DAR SKILL, ML OU PORCENTAGEM ELEMENTAL VOCÊ DEVE DECLARAR NO MOVEMENTS.XML E SE ESSE ITEM FOR PARA UMA DETERMINADA VOCAÇÃO VOCÊ DEVE DECLARAR TAMBÉM SEGUINDO O EXEMPLO: <movevent type="Equip" itemid="7886" slot="feet" event="function" value="onEquipItem"> <vocation id="1"/> <vocation id="5" showInDescription="0"/> <vocation id="2"/> <vocation id="6" showInDescription="0"/> </movevent> <movevent type="DeEquip" itemid="7886" slot="feet" event="function" value="onDeEquipItem"/>1 ponto- [NPC] Quest de entregar items para npcs
[NPC] Quest de entregar items para npcs
Astral Sword reagiu a Vodkart por uma resposta no tópico
1 pontoOlá tony tudo bem? estamos gostando bastante dos seus conteúdos aqui na comunidade, esses npc de missão ficaram excelente, bastante gente faz pedidos sobre npc, e é bom ver alguém começando nesse área. REP+1 pontoLíderes está configurado para São Paulo/GMT-03:00 - (Resolvido)[PEDIDO] Editar Items.
Informação Importante
Confirmação de Termo