Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 06/18/15 em todas áreas

  1. Secular

    Bear

    Saudades XTibia, nem sabia que tinham voltado. Versão sem tipografia
    2 pontos
  2. olá amigo, acho q vc está falando besteira. esse código é simples e pode ser feito com onAttack ou onCombat
    2 pontos
  3. Talkaction: local config = { storage = 99488, -- STORAGE PARA CONTROLAR TEMPO cost = 1000000, -- Preço para comprar o acesso tempo = 24 -- Tempo em horas para durar a compra } function onSay(cid, words, param) if getPlayerStorageValue(cid, config.storage) < os.time() then if doPlayerRemoveMoney(cid, config.cost) then setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo * 60 * 60)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce comprou " .. config.tempo .. " horas de acesso.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS) return true else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa de " .. config.cost .. " gold coins para comprar este acesso.") return false end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce so pode comprar este acesso a cada " .. config.tempo .. " horas.") end return false end Porta: local storage = 99488 -- STORAGE PARA CONTROLAR TEMPO function onUse(cid, item, topos) if getPlayerStorageValue(cid, storage) < os.time() then doTeleportThing(cid, topos, true) return true end return doPlayerSendCancel(cid, "Voce precisa comprar acesso para entrar nessa area.") end
    2 pontos
  4. Créditos à Anonimo e Animal Park. Objetivo O script consiste em criar um log .txt em data/logs/trades mostrando quais itens foram passados entre os jogadores dentro do seu servidor Tutorial Em data/creaturescripts/scripts/ crie um arquivo .lua chamado: checktrades.lua e dentro coloque: local servers = {[0] = 'server1', [1] = 'server2', [2] = 'server3'} local function getType(item) return (item.type > 0) and item.type or 1 end Log = {} Log.__index = Log function Log.create() local t = {} setmetatable(t, Log) t.file = servers[getConfigValue("worldId")] .. "/" .. os.date("%B-%d-%Y", os.time()) .. ".txt" t.str, t.cstr, t.con = '', '', 0 return t end function Log:write() local f = io.open("data/logs/trades/" .. self.file, "a+") if not f then return false end f:write(self.str) f:close() end function Log:containerString() self.cstr = '' for i = 1, self.con do self.cstr = self.cstr .. '-> ' end end function Log:addContainer() self.con = self.con + 1 self:containerString() end function Log:closeContainer() self.con = self.con - 1 self:containerString() end function Log:setLine(txt) self.str = self.str .. self.cstr .. txt .. '\n' end function Log:kill() self.file, self.cstr, self.str, self.con = "", "", "", -1 end function onTradeAccept(cid, target, item, targetItem) local this = Log.create() local name, tname = getCreatureName(cid), getCreatureName(target) this:setLine("Trade between " .. name .. " and " .. tname .. " || [" .. os.date("%d/%m/%Y %H:%M:%S") .. "]") local function logging(cid, item) this:setLine(getCreatureName(cid) .. " traded:") local function scanContainer(cid, uid) for k = (getContainerSize(uid) - 1), 0, -1 do local tmp = getContainerItem(uid, k) this:setLine(getItemNameById(tmp.itemid) .. " x " .. getType(tmp) .. " || itemid: " .. tmp.itemid) if isContainer(tmp.uid) then this:addContainer() scanContainer(cid, tmp.uid) this:closeContainer() end end end this:setLine(getItemNameById(item.itemid) .. " x " .. getType(item) .. " || itemid: " .. item.itemid) if isContainer(item.uid) then this:addContainer() scanContainer(cid, item.uid) this:closeContainer() end end logging(cid, item) logging(target, targetItem) this:setLine("END OF THIS TRADE --------------\n") this:write() this:kill() return true end Em data/creaturescripts adicione no creaturescripts.xml a seguinte linha: <event type="trade" name="tradeCheck" event="script" value="checktrades.lua"/> Em data/creaturescripts/scripts/ abra o arquivo login.lua e adicione: registerCreatureEvent(cid, "tradeCheck") Pronto, agora você poderá monitorar os trades em seu servidor!
    1 ponto
  5. Venom2

    Remere's map editor 10.10

    Galera XxTibiana, vou legalizar a versão 10.10 do mapa editor pra quem quiser conferir as novas sprites desse summer update. Lembrando que não é uma versão oficial! Então caso forem usar em seus mapas principais lembrem-se de criar uma cópia dos mesmos. Segue uma screenshot e o link de download: Link 1. O 4shared já contem scan 2. Os méritos não são meus, eu apenas trago a novidade a vocês. 3. Para usar de modo efetivo converta um mapa seu para a versão 10.10 e quando for pedido para achar seu tibia .spr e .dat eles estarão localizados em data >1010 do arquivo do 4shared. Havefun!
    1 ponto
  6. Administrador

    [Teaser] xTibia Ip Changer

    Esse é um teaser do xTibia Ip Changer. Ele vem sido desenvolvido por mim e pelo . Em breve, estaremos disponibilizando à comunidade. Suas funções repetem o objetivo de qualquer outro ip changer. Exceto por algumas exclusividades como o botão que leva o usuário até a maior lista de OtServers do Brasil; Você também pode selecionar um client para aplicar uma nova versão. Aguardamos feedbacks da comunidade. Espero que tenham gostado =)
    1 ponto
  7. Mudrock

    [PDA] Autoloot igual pxg

    Bom, vi por aqui e não achei nenhum autoloot igual o da pxg ou sem bugs, então decidi vir aqui postar o que eu fiz. Vamos lá. 1º - Vá na pasta Lib, no arquivo some functions.lua e adicione isso depois do ultimo "end": function doPlayerAddItemStacking(cid, itemid, quant) local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid) local piles = 0 if #item > 0 then for i,x in pairs(item) do if getThing(x).type < 100 then local it = getThing(x) doTransformItem(it.uid, itemid, it.type+quant) if it.type+quant > 100 then doPlayerAddItem(cid, itemid, it.type+quant-100) end else piles = piles+1 end break end else return doPlayerAddItem(cid, itemid, quant) end if piles == #item then doPlayerAddItem(cid, itemid, quant) end end 2º - Vá em actions/script e crie um arquivo.lua com nome de Autoloot, dentro coloque: --local toloot = {11441, 11441, 11443, 11444, 11445, 11446, 11447, 11448, 11449,11450, 11451, 11452, 11453, 11454, 12618, 12232, 12244} -- PREFERENCIAL - SE QUISER APENAS COM ALGUNS ITENS function onUse(cid, item, frompos, item2, topos) if getItemAttribute(item.uid, "corpseowner") ~= cid then doPlayerSendCancel(cid, "You're not the owner.") return true end local items = {} for x=0, (getContainerSize(item.uid)) do local itens = getContainerItem(item.uid, x) --if isInArray(toloot, itens.itemid) then table.insert(items, {i=itens.itemid, q=itens.type}) doRemoveItem(itens.uid) --break --end end for y=1, #items do doPlayerAddItemStacking(cid, items[y].i, items[y].q) doPlayerSendTextMessage(cid, 20, "Looted "..items[y].q.."x "..getItemNameById(items[y].i)..".") end if #items > 0 then return true else return false end end --[[ AUTO LOOT BY GABRIEL SALES SE QUISER ATIVAR O AUTOLOOT APENAS PARA ALGUNS ITENS, ADICIONE OS IDS NA TABELA toloot E TIRE OS COMENTÁRIOS(--). --]] Agora, no actions.xml adicione a tag: <action itemid="" event="script" value="Autoloot.lua"/> Dentro de itemid="", coloque o id dos corpses. Para conseguir o id dos corpses, podemos fazer um pequeno script, que pegará o corpse de cada pokemon capturável. Créditos: Mkalo -- Auto Stacking Gabriel Sales(eu) -- Resto
    1 ponto
  8. Oi, meu nome é Hiago e estou aqui parar montar uma grande equipe, que irá fazer parte do maior projeto da historia do tibia! estou cansado de ver aqueles ots de poketibia, narutibia, digitibia, gtatibia, harrypotter tibia. e venho lhes mostrar a minha grande ideia, ou melhor do meu falecido irmão que a 4 anos criou o melhor ot de cavaleiros do zodiaco tibia do momento! assim como ele era, não tenho muito xp em criar ots, porem tenho toda a historia planejada, o projeto começara do 0 porem baseado no antigo ot do meu irmão! Esse servidor é baseado totalmente no anime Cavaleiros dos Zodiacos, e estamos tentando ser o mais fiel possivel ao anime. O servidor atualmente possui 130 vocações, sendo elas, cavaleiros de bronze, cavaleiros de prata, cavaleiros de ouro, cavaleiro de aço, cavaleiros negros, e no total 13 deuses. No momento o jogo esta 2% Pretendo fazer o ot baseado no antigo servidor do meu irmão. todos os staff ganharam vaga de deus dentro do jogo. para fazer parte do enredo do game!] acontecera o torneio das armaduras, uma vez na semana entre os players! armaduras requerem level, haverá guerra entre espectros e os cavaleiros de athena! sistema de armadura, clikamos na urna e ela se abre em seu corpo. estamos com todas as vagas abertas e precisamos de uma equipe eficiente para um game de 24h dedicado! VAGAS: Mapper - Filipe,VAGO Scripter - Filipe,VAGO Spriter - VAGO,VAGO Spell Maker- Filipe,VAGO Client Maker - VAGO Web Master ou Web Designer - VAGO,VAGO Designer: VAGO Host: Eu ■OBJETIVOS Internos e Externos: •Montar um site bem montado facil de entrar e de se mecher •Editar o map com novas quests,eventos. •Colocar novas scripts,Armaduras,Magias e varios outros scripts •Fazer um novo client mais inovador com um modelo novo e melhorado •Colocar o servidor e site 24Hrs/7diasPorSemana • Contatos: Skype - hiago.pika
    1 ponto
  9. Da uma olhada no meu projeto, base PDA 2015 open! https://www.facebook.com/groups/1679344158966228/ cara, da uma procura ai como copilar a source, eu n sou o melhor cara para isto¬¬ ^^
    1 ponto
  10. 1 ponto
  11. eu fui baixar a erodino, eu não gostei de um monte de coisa na base, n lembro oq era, mas a unica coisa que gostei foi a poke bar ^^ o resto tudinho n gostei, eu recomendo o PDA 2015 open
    1 ponto
  12. a tinha esquecido destes, estes ai n consegui resolver, mas tbm n vou usar loker ball mt menos unique item
    1 ponto
  13. Mega Bomb

    [Show Off] Mega Bomb s2

    Agradeço pessoal,!! To treinando fazer os relevos no terreno e saiu isso aqui:
    1 ponto
  14. Poke Dash Advanced 2015, não tem bugs que atrapalham a jogabilidade assim de cara! pelomenos eu não achei nenhum bug que comprometa a jogabalidade!
    1 ponto
  15. Wend ll

    xPoketibia [Open source] (OFICIAL!)

    Apoio kk Novos remake sendo adicionado
    1 ponto
  16. RigBy

    Preciso Urgente destes scripts!

    Segundo script, não entendi direito quando ele ia checar então fiz para ele checar quando clicar no item. é um Action .lua local item = 7573 function onUse(cid, item, fromPosition, itemEx, toPosition) doTransformItem(item.uid, item) end .xml, tag <action itemid="2580" event="script" value="local.lua"/> Explica melhor o primeiro script não entendi direito
    1 ponto
  17. KKKKKKKKKKKKKKKKKKKKKKK toma meu rep pelo owned q levei agr viado n li msm enfim, testou?? tenta pelo onTarget ou onAttack que tenho ctz q dá...
    1 ponto
  18. acho que você não leu o topico todo Bom galera, eu queria saber se é póssivel um script que só permita X vocation id atacar esse X monstro (configurado) e o monstro também só podendo atacar essa X vocation. pelo oque eu entendi ele pediu para que o mostro não possa ataca outras vocações alem dessa, então...
    1 ponto
  19. mas ele pediu só para a tal VOC NÃO atacar o bixo. ele não falou nada sobre o bixo NÃO atacar a tal voc...
    1 ponto
  20. Eu ja tentei fazer um onCombat e coloca um return false mas o Mob continua atacando, vo testar agora onAttack nunca usei
    1 ponto
  21. Tenta: function onUse(cid, item, fromPosition, itemEx, toPosition) local itens = { [17101] = {id = 11447, qnt = 1}, -- id = (ID do item do do bau 1), qnt = (Quantidade do item do bau 1) FIre [17102] = {id = 11441, qnt = 1}, -- id = (ID do item do do bau 2), qnt = (Quantidade do item do bau 2) Leaf [17103] = {id = 11442, qnt = 1}, -- id = (ID do item do do bau 3), qnt = (Quantidade do item do bau 3) Water } if getPlayerStorageValue(cid, 13471) == -1 then if itens[item.actionid] then doPlayerAddItem(cid, itens[item.actionid].id, itens[item.actionid].qnt) doPlayerSendTextMessage(cid,22,"[Quest] Voce ganhou " .. itens[item.actionid].qnt .. "x " .. getItemNameById(itens[item.actionid].id) .. ", por completar a Elementar Stone Quest!") setPlayerStorageValue(cid, 13471, 1) end else doPlayerSendTextMessage(cid,22,"[Quest]Você Já Fez Está Quest!") end return true end
    1 ponto
  22. function onUse(cid, item, fromPosition, itemEx, toPosition) local itens = { [17101] = {id = 11447, qnt = 1, nome = "Fire Stone"}, -- id = (ID do item do do bau 1), qnt = (Quantidade do item do bau 1) FIre [17102] = {id = 11441, qnt = 1, nome = "Grass Stone"}, -- id = (ID do item do do bau 2), qnt = (Quantidade do item do bau 2) Leaf [17103] = {id = 11442, qnt = 1, nome = "Water Stone"}, -- id = (ID do item do do bau 3), qnt = (Quantidade do item do bau 3) Water } if getPlayerStorageValue(cid, 13471) == -1 then if itens[item.actionid] then doPlayerAddItem(cid, itens[item.actionid].id, itens[item.actionid].qnt) doPlayerSendTextMessage(cid,22,"[Quest]Você Ganhou Uma "..itens[item.actionid].nome..", Por Completar a Elementar Stone Quest!") setPlayerStorageValue(cid, 13471, 1) end else doPlayerSendTextMessage(cid,22,"[Quest]Você Já Fez Está Quest!") end return true end
    1 ponto
  23. function onUse(cid, item, fromPosition, itemEx, toPosition) local itens = { [17101] = {id = 11447, qnt = 1}, -- id = (ID do item do do bau 1), qnt = (Quantidade do item do bau 1) FIre [17102] = {id = 11441, qnt = 1}, -- id = (ID do item do do bau 2), qnt = (Quantidade do item do bau 2) Leaf [17103] = {id = 11442, qnt = 1}, -- id = (ID do item do do bau 3), qnt = (Quantidade do item do bau 3) Water } if getPlayerStorageValue(cid, 13471) == -1 then if itens[item.actionid] then doPlayerAddItem(cid, itens[item.actionid].id, itens[item.actionid].qnt) doPlayerSendTextMessage(cid,22,"[Quest]Você Ganhou Uma "..itens[item.actionid].qnt.." "..itens[item.actionid].id..", Por Completar a Elementar Stone Quest!") setPlayerStorageValue(cid, 13471, 1) end else doPlayerSendTextMessage(cid,22,"[Quest]Você Já Fez Está Quest!") end return true end
    1 ponto
  24. Tenta assim: function onUse(cid, item) local itens = { [17101] = {id = 11447, qnt = 1, storage = 13470}, -- id = (ID do item do do bau 1), qnt = (Quantidade do item do bau 1) FIre [17102] = {id = 11441, qnt = 1, storage = 13471}, -- id = (ID do item do do bau 2), qnt = (Quantidade do item do bau 2) Leaf [17103] = {id = 11442, qnt = 1, storage = 13472}, -- id = (ID do item do do bau 3), qnt = (Quantidade do item do bau 3) Water } local quest = itens[item.actionid] if getPlayerStorageValue(cid, quest.storage) ~= 1 then doPlayerAddItem(cid, quest.id, quest.qnt) doPlayerSendTextMessage(cid,22,"[Quest] Voce ganhou " .. quest.qnt .. "x " .. getItemNameById(quest.id) .. ", por completar a Elementar Stone Quest!") setPlayerStorageValue(cid, quest.storage, 1) else return doPlayerSendTextMessage(cid,22,"[Quest] Voce ja fez esta quest!") end return true end
    1 ponto
  25. Vodkart

    bug no meu npc

    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local var_city = { ["saffron"] = 5, ["cerulean"] = 4, ["fuchsia"] = 9, ["viridian"] = 2, ["lavender"] = 7, ["pewter"] = 3, ["vermilion"] = 8, ["cinnabar"] = 10, ["celadon"] = 6 } local ret_pokes = {"bulbasaur", "charmander", "squirtle"} 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, msg = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid, msg:lower() if isInArray({'yes', 'sim', 'si'}, msg) then if getPlayerStorageValue(cid, 157171) == 2 then selfSay("Desculpe, mas só pode fazer uma escolha.", cid) elseif getPlayerStorageValue(cid, 157171) == 1 then selfSay('Agora escolha seu Pokemon Inicial? {Bulbasaur}, {Charmander} ou {Squirtle} ?', cid) talkState[talkUser] = 2 else selfSay("Muito Bom! Agora me Fale qual sua cidade natal? {saffron}, {cerulean} ou {fuchsia} ?", cid) talkState[talkUser] = 1 end elseif talkState[talkUser] == 1 then if var_city[msg] then doPlayerSetTown(cid, var_city[msg]) setPlayerStorageValue(cid, 157171, 1) selfSay('Agora escolha seu Pokemon Inicial? {Bulbasaur}, {Charmander} ou {Squirtle} ?', cid) talkState[talkUser] = 2 else selfSay("está cidade não está disponivel.", cid) end elseif talkState[talkUser] == 2 then if isInArray(ret_pokes, msg) then doPokemonToPlayer(cid, msg) setPlayerStorageValue(cid, 157171, 2) selfSay('Agora voce tem um pokemon e pode seguir sua Jornada, Ate Ate logo!', cid) talkState[talkUser] = 0 doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) else selfSay('você só pode escolher {Bulbasaur}, {Charmander} ou {Squirtle}!', cid) end elseif msg == "no" and talkState[talkUser] >= 1 then selfSay("tudo bem então.", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
    1 ponto
  26. Bruno

    bug no meu npc

    Npc: <?xml version="1.0" encoding="UTF-8"?> <npc name="Oak" script="data/npc/scripts/inicial.lua" walkinterval="0" floorchange="0" access="5" > <health now="150" max="150"/> <look type="177" head="17" body="54" legs="114" feet="0" addons="2" /> <parameters> <parameter key="message_greet" value="Bem Vindo ao Mundo Pokemon |PLAYERNAME|! Voce gostaria de ser um mestre pokemon?"/> <parameter key="message_farewell" value="Tchau! Ate a proxima."/> </parameters> </npc>inicial.lua:
    1 ponto
  27. moskitinho

    Dromedary Mount

    Fala manola, Muito bom o tutorial e reconheço o esforço em trazer tanto conteúdo pro Eks, está de parabéns. Porém deixo a pergunta, se acha necessário, já que temos os "wikis" da vida como meio desse gênero de conteúdo. Volto a dizer que acho uma ótima iniciativa, porém se trouxesse de uma forma mais "informal". Um artigo... Algo de diferente sabe?! Que fale mais da história, são apenas exemplos. É apenas uma crítica construtiva.
    1 ponto
  28. Mudrock

    POO Métodos - Account

    Vamos lá: # Métodos - Account getPlayers() // retorna a quantidade de players da account. unban() // retira o ban time da account. isBanned() // retorna true se esta banido, ou false se não esta. getBanTime() // retorna o tempo de ban da account. delete() // deleta a account. setName($value) // muda o account name da account. getName() // retorna o account name da account. setPassword($value) // muda o password da account. getPassword() // retorna o password atual. setPremDays($value) // muda o premium days da account. getPremDays() // retorna o premium days da account. setLastDay($value) // muda o valor do lastday da account. getLastDay() // retorna o valor do lastday da account. setMail($value) // muda o email da account getMail() // retorna o email da account. setKey($value) // muda o valor da recovery key da account. getKey() // retorna o valor da recovery key da account. setCreateIP($value) // muda o valor do create_ip da account. getCreateIP() // retorna o valor do create_ip da account. setCreateDate($value) // muda o valor do create data da account. getCreateDate() // retorna o valor do create data da account. setPremiumPoints($value) // muda o valor dos premium points da account. getPremiumPoints() // retorna o valor dos premium points da account. setPageAccess($value) // muda o valor de acesso ao website da account. getPageAccess() // retorna o valor de acesso ao website da account. setLocation($value) // muda a string de local da account. getLocation() // retorna a string de local da account. setRLName($value) // muda a string de nome real da account. getRLName() // retorna a string de nome real da account. getPlayersList() // retorna o metodo getPlayers() getGuildAccess($guildID) // retorna o guild acesso da account. getLastLogin() // retorna a data do ultimo login da account. isValidPassword($password) // retorna se o parametro password é válido. isPremium() // retorna true se a account for premium, ou false se não for. Créditos : LuanLuciano
    1 ponto
  29. Copiar uma spell como este Unown Rush, ou seja, uma spell cheia de mínimos detalhes, é algo bem chato. Demorei um bom tempo vendo e revendo o vídeo, tentando chegar num resultado semelhante dos intervalos de tempo entre as ações. Caso o resultado não lhe agrade, recomendo alterar as variáveis responsáveis pela manipulação do tempo, juntamente das áreas de dano e efeito. Todas as 3 spells que postei neste tópico foram testadas e estão funcionando perfeitamente. Primeiramente, em pokemon moves.lua: elseif spell == "Unown Help" then local config = { summonPoke = "Unown", health = 5, --% de HP (baseada na HP máxima do pokémon) tirada do Unown Legion. } if isSummon(cid) then local pid = getCreatureMaster(cid) doSummonMonster(pid, config.summonPoke) local newPoke = getCreatureSummons(pid)[#getCreatureSummons(pid)] setPlayerStorageValue(newPoke, 1001, pokes[getCreatureName(newPoke)].offense * getPlayerLevel(pid)) setPlayerStorageValue(newPoke, 1002, pokes[getCreatureName(newPoke)].defense) setPlayerStorageValue(newPoke, 1003, pokes[getCreatureName(newPoke)].agility) setPlayerStorageValue(newPoke, 1004, pokes[getCreatureName(newPoke)].vitality * getPlayerLevel(pid)) setPlayerStorageValue(newPoke, 1005, pokes[getCreatureName(newPoke)].specialattack * getPlayerLevel(pid)) setCreatureMaxHealth(newPoke, getVitality(newPoke) * HPperVITsummon) doCreatureAddHealth(newPoke, getCreatureMaxHealth(newPoke)) doCreatureAddHealth(cid, -getCreatureMaxHealth(cid) * (config.health / 100)) end elseif spell == "Unown Rush" then local config = { distEffect = xxx, --Distance effect. effect = xxx, --Efeito de invisibilidade. barrierEffect = xxx, --Effect do Barrier. barrierTime = 8, --Duração do Barrier, em segundos. barrierInterval = 500, --Intervalo de tempo, em milésimos de segundo, entre cada efeito do Barrier. times = 4, --Quantas vezes a spell em área será "lançada" (também quantas vezes o efeito será "rebatido" entre Unown Legion e os Unowns). interval = 400, --Intervalo de tempo entre as "rebatidas", em milésimos de segundo. intervalAOE = 200, --Intervalo de tempo entre os "lances" da spell em área. combat = ghostDmg, --Elemento da spell. } function barrierEffect(cid, time) if isCreature(cid) then if time < 0 then return true end doSendMagicEffect({x = getThingPos(cid).x + 1, y = getThingPos(cid).y + 1, z = getThingPos(cid).z}, config.barrierEffect) addEvent(barrierEffect, config.barrierInterval, cid, time - 1) end end local summons, t = getCreatureSummons(getCreatureMaster(cid)), {} doDisapear(cid) doSendMagicEffect(getThingPos(cid), config.effect) for i = 1, config.times do for j = 2, #summons do if isCreature(summons[j]) and isCreature(cid) then t[#t + 1] = summons[j] addEvent(function() doSendDistanceShoot(getThingPos(cid), getThingPos(summons[j]), config.distEffect) addEvent(function() doSendDistanceShoot(getThingPos(summons[j]), getThingPos(cid), config.distEffect) end, 100) end, i * config.interval + 100) end end end addEvent(function() barrierEffect(cid, math.floor(config.barrierTime * 1000 / config.barrierInterval)) if isCreature(cid) then for i = 1, #t do if isCreature(t[i]) then doRemoveCreature(t[i]) end end for i = 1, config.times do addEvent(function() if isCreature(cid) then local area = getPosfromArea(cid, rushAreaEffect) for j = 1, #area do doSendDistanceShoot(getThingPos(cid), area[j], config.distEffect) end doDanoWithProtect(cid, config.combat, getThingPos(cid), rushAreaDamage, -min, -max, 0) if i == config.times then doAppear(cid) setPlayerStorageValue(cid, 9658783, 1) addEvent(function() if isCreature(cid) then setPlayerStorageValue(cid, 9658783, -1) end end, config.barrierTime * 1000 - (config.times * (config.interval + config.intervalAOE))) end end end, i * config.intervalAOE) end end end, config.times * config.interval + 100 * config.times) Em areas.lua: rushAreaEffect = { --Área do Unown Rush de efeito (até onde o efeito vai, a partir do usuário da spell). {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, } rushAreaDamage = createCombatArea{ --Área do Unown Rush de dano. {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } Depois, em data/actions/scripts, goback.lua: Acima de: local cd = getCD(item.uid, "blink", 30) coloque: if #getCreatureSummons(cid) > 1 then for _, s in pairs(getCreatureSummons(cid)) do if getCreatureName(s) == "Unown" then doRemoveCreature(s) end end end Depois, em data/talkactions/scripts, move1.lua: Abaixo de: if getPlayerStorageValue(mypoke, 93828) > os.time() then return doPlayerSendCancel(cid, "Your pokemon can't use moves right now.") end coloque: local unownCount = 7 --Quantidade de Unowns máxima/quantidade de Unowns para usar o Unown Rush. if move.name == "Unown Help" then if #getCreatureSummons(cid) >= unownCount + 1 then return doPlayerSendCancel(cid, "You already have "..unownCount.." Unowns helping you.") end elseif move.name == "Unown Rush" then if #getCreatureSummons(cid) < unownCount + 1 then return doPlayerSendCancel(cid, "You need "..unownCount.." Unowns helping you to use this spell.") end end
    1 ponto
  30. Bruno

    erro ao sumonar zumbi

    @@sk8sk8ter, tente assim:
    1 ponto
  31. Em pokemon moves.lua: elseif spell == "Air Vortex" then local config = { outfit = xxx, --Outfit. time = {xxx, xxx}, --{Duração da spell, intervalo entre cada "tick" de dano (em milésimos de segundos)}, storage = 93828, effects = { pullEffects = { distance = xxx, --Distance effect do efeito de puxar pokémons. effect = xxx, --Efeito de tornado. }, damageEffect = xxx, --Efeito do redemoinho que aplica dano. }, } local time = os.time() + config.time[1] function Pull(cid, ret) local pos = getPosfromArea(cid, pullArea) if pos and #pos > 0 then for i = 1, #pos do local c = getTopCreature(pos[i]).uid if c > 0 then if ehMonstro(c) then doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid))) doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell) elseif isSummon(c) then local master = getCreatureMaster(c) if isSummon(cid) then if getPlayerStorageValue(master, 52480) >= 1 and getPlayerStorageValue(master, 52481) >= 0 then local masterCid = getCreatureMaster(cid) if isDuelingAgainst(masterCid, master) then doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid))) doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell) end end else doTeleportThing(c, getClosestFreeTile(cid, getThingPos(cid))) doMoveDano2(cid, c, NORMALDAMAGE, 0, 0, ret, spell) end end end end end end function doSendTornado(cid, pos) if not isCreature(cid) then return true end if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end doSendDistanceShoot(getThingPos(cid), pos, config.effects.pullEffects.distance) doSendMagicEffect(pos, config.effects.pullEffects.effect) end function vortexDamage(cid) if not isCreature(cid) then return true elseif time - os.time() < 0 then return true end doDanoWithProtect(cid, FLYINGDAMAGE, getThingPos(cid), damageArea, min, max, config.effects.damageEffect) addEvent(vortexDamage, config.time[2], cid) end local ret = {id = 0, cd = config.time[1], check = 0, cond = {"Silence", "Paralyze"}} for b = 1, 3 do for a = 1, 20 do local pos = {x = getThingPos(cid).x + math.random(-4, 4), y = getThingPos(cid).y + math.random(-3, 3), z = getThingPos(cid).z} addEvent(doSendTornado, a * 75, cid, pos) end end Pull(cid, ret) vortexDamage(cid) doCreatureSetNoMove(cid, true) doChangeSpeed(cid, -getCreatureSpeed(cid)) doSetCreatureOutfit(cid, {lookType = config.outfit}, config.time[1] * 1000) setPlayerStorageValue(cid, config.storage, time) addEvent(function() if isCreature(cid) then doCreatureSetNoMove(cid, false) doRegainSpeed(cid) end end, config.time[1] * 1000) Em areas.lua: damageArea = createCombatArea{ --Área do dano da spell + redemoinhos. {1, 1, 1}, {1, 2, 1}, {1, 1, 1}, } pullArea = { --Área onde os pokémons serão puxados. {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 3, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } Em newStatusSyst.lua: Troque todos os: if ret and ret.cond then ret.id = pid ret.check = getPlayerStorageValue(pid, conds[ret.cond]) doCondition2(ret) end por: if ret and ret.cond then if type(ret.cond) == "table" then for i = 1, #ret.cond do ret.id = pid ret.check = getPlayerStorageValue(pid, conds[ret.cond[i]]) doCondition2(ret) end else ret.id = pid ret.check = getPlayerStorageValue(pid, conds[ret.cond]) doCondition2(ret) end end Depois, troque: if ret.cond and ret.cond == "Miss" then doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell) elseif ret.cond and ret.cond == "Silence" then doSilence2(ret.id, ret.cd, ret.eff, ret.check) elseif ret.cond and ret.cond == "Slow" then doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first) elseif ret.cond and ret.cond == "Confusion" then doConfusion2(ret.id, ret.cd, ret.check) elseif ret.cond and ret.cond == "Burn" then doBurn2(ret.id, ret.cd, ret.check, ret.damage) elseif ret.cond and ret.cond == "Poison" then doPoison2(ret.id, ret.cd, ret.check, ret.damage) elseif ret.cond and ret.cond == "Fear" then doFear2(ret.id, ret.cd, ret.check, ret.skill) elseif ret.cond and ret.cond == "Stun" then doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell) elseif ret.cond and ret.cond == "Paralyze" then doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first) elseif ret.cond and ret.cond == "Sleep" then doSleep2(ret.id, ret.cd, ret.check, ret.first) elseif ret.cond and ret.cond == "Leech" then doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage) end por: if type(ret.cond) == "table" then for i = 1, #ret.cond do if ret.cond[i] and ret.cond[i] == "Miss" then doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell) elseif ret.cond[i] and ret.cond[i] == "Silence" then doSilence2(ret.id, ret.cd, ret.eff, ret.check) elseif ret.cond[i] and ret.cond[i] == "Slow" then doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first) elseif ret.cond[i] and ret.cond[i] == "Confusion" then doConfusion2(ret.id, ret.cd, ret.check) elseif ret.cond[i] and ret.cond[i] == "Burn" then doBurn2(ret.id, ret.cd, ret.check, ret.damage) elseif ret.cond[i] and ret.cond[i] == "Poison" then doPoison2(ret.id, ret.cd, ret.check, ret.damage) elseif ret.cond[i] and ret.cond[i] == "Fear" then doFear2(ret.id, ret.cd, ret.check, ret.skill) elseif ret.cond[i] and ret.cond[i] == "Stun" then doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell) elseif ret.cond[i] and ret.cond[i] == "Paralyze" then doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first) elseif ret.cond[i] and ret.cond[i] == "Sleep" then doSleep2(ret.id, ret.cd, ret.check, ret.first) elseif ret.cond[i] and ret.cond[i] == "Leech" then doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage) end end else if ret.cond and ret.cond == "Miss" then doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell) elseif ret.cond and ret.cond == "Silence" then doSilence2(ret.id, ret.cd, ret.eff, ret.check) elseif ret.cond and ret.cond == "Slow" then doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first) elseif ret.cond and ret.cond == "Confusion" then doConfusion2(ret.id, ret.cd, ret.check) elseif ret.cond and ret.cond == "Burn" then doBurn2(ret.id, ret.cd, ret.check, ret.damage) elseif ret.cond and ret.cond == "Poison" then doPoison2(ret.id, ret.cd, ret.check, ret.damage) elseif ret.cond and ret.cond == "Fear" then doFear2(ret.id, ret.cd, ret.check, ret.skill) elseif ret.cond and ret.cond == "Stun" then doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell) elseif ret.cond and ret.cond == "Paralyze" then doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first) elseif ret.cond and ret.cond == "Sleep" then doSleep2(ret.id, ret.cd, ret.check, ret.first) elseif ret.cond and ret.cond == "Leech" then doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage) end end Depois, em data/talkactions/scripts, move1.lua: Abaixo de: if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode fazer isso agora.") return 0 else newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd) end coloque: if getPlayerStorageValue(mypoke, 93828) > os.time() then return doPlayerSendCancel(cid, "Your pokemon can't use moves right now.") end Outra hora escrevo o código do Unown Help e Unown Rush (vou sair daqui a pouco). Perguntas: Há uma quantia mínima de Unowns para usar o Unown Rush? O dano de tal spell aumenta de acordo com o número de Unowns summonados? Seria bem legal isso (ex.: cada Unown aumenta o dano da spell em 5%).
    1 ponto
  32. Peterwild

    RadBR - Tibia como você nunca viu!

    Bem-vindos Quem somos? Há 7 anos online e trazendo muita diversão, somos um servidor alternativo do jogo Tibia. Temos como prioridade dedicarmos a qualidade desde o jogo ao site, com uma super estrutura, visando a opinião dos jogadores. Nossas exclusivas ideias fazem de nós um AOTS (Alternative Open Tibia Server) diferente de qualquer outro, com novos itens, novas criaturas, duas novas vocações, mais praticidade com site e npcs atendendo em português, mais lealdade com regras levadas a sério, cheaters rigorosamente proibidos e muito mais. Desvende os mistérios de nosso mapa único, grande e em constante atualização. Venha se divertir, jogue RadBR! Assista ao nosso trailer Melhor servidor O RadBR foi eleito o melhor servidor no concurso público de uma comunidade tibiana em 2012. Sete anos online Nunca tivemos e não pretendemos ter reset. Mapa exclusivo Mapa único e exclusivo, repleto de mistérios, com mais de 10 cidades. Reset level Pioneiro no sistema de reset level. Aumente leveis de uma forma diferente. Estrutura 3 super dedicados no melhor datacenter do mundo. Diferencial Novos itens, monstros, vocações, sistemas e outros, tornando um jogo totalmente novo. Protegido Jogue tranquilo, temos proteção contra ataques DDoS e outros. Fórum Acesse o fórum e encontre entretenimento, suporte, tutoriais e mais. Venda de itens e contas Venda de forma segura seus itens, mesmo que estiver offline, e contas. Cheaters Rigorosamente proibidos, sistema anti-bot ativo. Montarias Dome seu parceiro de aventuras. Tasks Derrote criaturas em troca de recompensas. Eventos Nas principais datas comemorativas e automáticos diariamente. Português Site e NPCs em português. Updates Atualizações periódicas, sempre com novidades. Crie já sua conta! Equipe RadBR
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...