-
Total de itens
2553 -
Registro em
-
Última visita
-
Dias Ganhos
73
Tudo que zipter98 postou
-
Tenta assim: function onUse(cid, item, fromPosition, item2, toPosition) local nonremskulls = {red = SKULL_RED, white = SKULL_WHITE, black = SKULL_BLACK} if getPlayerStorageValue(cid,1800) == 10 then doCreatureSay(cid, "You can not remove your frags and their skulls.", TALKTYPE_ORANGE_1) else if getPlayerLevel(cid) >= 10 then doCreatureSay(cid, "Your Frags were successfully removed.", TALKTYPE_ORANGE_1) db.executeQuery("UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = " .. getPlayerGUID(cid) .. ")") doCreatureSetSkullType(cid,0) doSendMagicEffect(fromPosition, 37) doRemoveItem(item.uid, 1) setPlayerStorageValue(cid,1800,20) return TRUE else doCreatureSay(cid, "Only people level 10 can use this item.", TALKTYPE_ORANGE_1) end end end
-
[Encerrado] Alguem explica essa parte do spells
tópico respondeu ao xmaster0 de zipter98 em Tópicos Sem Resposta
O primeiro, 4*400, é daqui a quanto tempo a storage 3644587 do jogador será setada -1. (no caso, 1 segundo e 600 milésimos.) Já o segundo, i*400, por i assumir os valores 0, 1, 2, 3 e 4, a função doMoveInArea2 será repetida 5 vezes, num intervalo de 400 milésimos. -
Primeiramente, você deve verificar a sprite das spells em seu Dat Editor. O ID que você usará nos scripts é o Itemtype do Dat Editor. Tomando este script do Barrier como exemplo: verifique no seu Dat Editor se em seu client você têm a sprite do Barrier. Se sim, verifique seu Itemtype. Aí, com este já em mente, você procura por todas as funções que usam o Itemtype, e edita lá. Por exemplo, doSendMagicEffect({x = pos.x + 1, y = pos.y + 1, z = pos.z}, 192) Onde 192 é o Itemtype. Se no seu Dat Editor a sprite do Barrier (ou outro sprite desejado) tiver Itemtype, por exemplo, 32, você deveria mudar para: doSendMagicEffect({x = pos.x + 1, y = pos.y + 1, z = pos.z}, 32) Resumindo: o Itemtype do Dat Editor é o ID que você usará nos scripts. Agora, em data/spells; copie um arquivo qualquer de data/spells/scripts/ps, e nomeie para o nome da spell. Aí, neste, você provavelmente verá algo como: function onCastSpell(cid, var) if isSummon(cid) then return true end docastspell(cid, "Nome da spell") return true end Em Nome da spell, você colocar o nome da spell (hue). Se a spell for o Barrier, então, arquivo com nome Barrier, conteúdo: function onCastSpell(cid, var) if isSummon(cid) then return true end docastspell(cid, "Barrier") return true end Novamente em data/spells; abra spells.xml, e coloque, antes de </spells>, a tag da spell. A base seria assim: <instant name="Nome da spell" words="palavras que o god dirá para usar a spell" lvl="1000" mana="0" event="script" value="ps/Nome do arquivo da spell.lua"></instant> No caso do Barrier, ficaria assim: <instant name="Barrier" words="barrierspell" lvl="1000" mana="0" event="script" value="ps/Barrier.lua"></instant> Agora, vamos para a parte mais fácil: configuration.lua. Em data/lib/configuration.lua, procure pela configuração de moveset do(s) pokémon(s) que deseja que tenha a spell. Provavelmente, você sabe editar essa parte. Tomando como a Mr. Mime e o Barrier como exemplo, você procuraria pela configuração da Mr. Mime. No caso, ["Mr. Mime"] = {move1 = {name = "Doubleslap", level = 35, cd = 10, dist = 1, target = 1, f = 25, t = "normal"}, move2 = {name = "Psywave", level = 35, cd = 15, dist = 1, target = 0, f = 75, t = "psychic"}, move3 = {name = "Magical Leaf", level = 35, cd = 15, dist = 4, target = 1, f = 35, t = "grass"}, move4 = {name = "Confusion", level = 35, cd = 35, dist = 1, target = 0, f = 50, t = "psychic"}, move5 = {name = "Psychic", level = 37, cd = 30, dist = 1, target = 0, f = 90, t = "psychic"}, move6 = {name = "Psyusion", level = 35, cd = 60, dist = 1, target = 0, f = 70, t = "psychic"}, move7 = {name = "Reflect", level = 38, cd = 35, dist = 1, target = 0, f = 0, t = "psychic"}, move8 = {name = "Mimic Wall", level = 36, cd = 5, dist = 1, target = 0, f = 0, t = "psychic"}, move9 = {name = "Miracle Eye", level = 36, cd = 40, dist = 1, target = 0, f = 0, t = "psychic"}, }, Então, defina em qual "m" ficará o Barrier. Suponhamos que você queira que ele fique na posição 10 (move10/m10). Depois de definido isso, monte a "linha" de sua spell. A base seria esta: movenúmero do "m"(por exemplo, move9 para m9) = {name = "Nome da spell", level = level necessário para usar a spell, cd = tempo de cooldown da spell, dist = distância mínima para usar a spell(se for em área, deixe 1), target = 0(se deixar 1, precisará de target. 0, não.), f = defina aqui a força da spell, t = "elemento da spell que aparecerá na pokedex"}, Definido as características da spell, adicione então essa "linha" na tabela de moves do pokémon. O Mr. Mime ficaria, então, assim (configurações a meu gosto): ["Mr. Mime"] = {move1 = {name = "Doubleslap", level = 35, cd = 10, dist = 1, target = 1, f = 25, t = "normal"}, move2 = {name = "Psywave", level = 35, cd = 15, dist = 1, target = 0, f = 75, t = "psychic"}, move3 = {name = "Magical Leaf", level = 35, cd = 15, dist = 4, target = 1, f = 35, t = "grass"}, move4 = {name = "Confusion", level = 35, cd = 35, dist = 1, target = 0, f = 50, t = "psychic"}, move5 = {name = "Psychic", level = 37, cd = 30, dist = 1, target = 0, f = 90, t = "psychic"}, move6 = {name = "Psyusion", level = 35, cd = 60, dist = 1, target = 0, f = 70, t = "psychic"}, move7 = {name = "Reflect", level = 38, cd = 35, dist = 1, target = 0, f = 0, t = "psychic"}, move8 = {name = "Mimic Wall", level = 36, cd = 5, dist = 1, target = 0, f = 0, t = "psychic"}, move9 = {name = "Miracle Eye", level = 36, cd = 40, dist = 1, target = 0, f = 0, t = "psychic"}, move10 = {name = "Barrier", level = 64, cd = 45, dist = 1, target = 1, f = 0, t = "psychic"}, --coloque dist = 1, porque, neste script do Stylo Maldoso, o Barrier pode ser usado à qualquer distância. },
-
Dependendo da spell, não é algo complexo de se criar. Primeiramente, você deve saber as funções de damage, as áreas (data/lib/areas.lua), dependendo do objetivo da spell, outras informações adicionais. Com isso em mente, vá em data/lib/pokemon moves.lua; com isso, procure por: if hands == 3 then local ret = {} ret.id = target ret.cd = 9 --alterado v1.6 ret.eff = 43 ret.check = getPlayerStorageValue(target, conds["Slow"]) ret.first = true ret.cond = "Slow" doMoveDano2(cid, target, FIGHTINGDAMAGE, 0, 0, ret, spell) end OBS: Essa parte é a da passive Demon Puncher. Logo abaixo, adicione, primeiramente: elseif spell == "Nome da spell" then Agora, você começa a montar sua spell. Você pode definir variáveis, criar funções, condições, funções já existentes (como as de damage), etc. Você quer que sua spell seja chamada de Thundrs (não sou bom com nomes ._.); solte um efeito na posição do usuário da spell; desapareça; reapareça e dê um dano em área daqui 5 segundos; Assim, o corpo de sua spell seria: local time = 5 --Tempo para aplicar o damage em área/reaparecer/soltar um efeito no target. local eff_one = 14 --Efeito que aparecerá no cid. local eff_two = 13 --Efeito que aparecerá no target. doSendMagicEffect(getThingPosWithDebug(cid), eff_one) --efeito que aparecerá no cid. doDisapear(cid) --função que faz com que o cid desapareça. addEvent(function() doAppear(cid) --função que faz com que o cid reapareça. doMoveInArea2(cid, 48, thunderr, ELECTRICDAMAGE, min, max, spell) --função(cid, efeito, área, tipo do damage, min, max, spell) end, time * 1000) Ficando assim: elseif spell == "Thundrs" then local time = 5 --Tempo para aplicar o damage em área/reaparecer/soltar um efeito no target. local eff_one = 14 --Efeito que aparecerá no cid. local eff_two = 13 --Efeito que aparecerá no target. doSendMagicEffect(getThingPosWithDebug(cid), eff_one) --efeito que aparecerá no cid. doDisapear(cid) --função que faz com que o cid desapareça. addEvent(function() doAppear(cid) --função que faz com que o cid reapareça. doMoveInArea2(cid, 48, thunderr, ELECTRICDAMAGE, min, max, spell) --função(cid, efeito, área, tipo do damage, min, max, spell) end, time * 1000) Depois, configure a spell em data/spells. Aí, é só configurar no configuration.lua, e acabou. Você pode verificar funções de damage em data/lib/NewStatusSyst.lua. Realmente, não sou bom com explicações ._.
-
resolvido [Encerrado] Cores nos hits dos pokemons
tópico respondeu ao xmaster0 de zipter98 em Tópicos Sem Resposta
Se for o que entendi, tabela combats em data/creaturescripts/scripts/exp2.0.lua. -
dúvida [Encerrado] Como Fazer uma Box?
tópico respondeu ao wreymar de zipter98 em Tópicos Sem Resposta
Tentou o arquivo que eu passei acima? -
Se possível, a de membro :3
-
dúvida [Encerrado] Como Fazer uma Box?
tópico respondeu ao wreymar de zipter98 em Tópicos Sem Resposta
Seu servidor é sem lv nos pokémons? Tentou o meu? obs: não se esqueça de verificar se no seu servidor têm a função addPokeToPlayer (ela se encontra em data/lib/some functions.lua). -
dúvida [Encerrado] Como Fazer uma Box?
tópico respondeu ao wreymar de zipter98 em Tópicos Sem Resposta
Se o pda by bolz for sem lv nos pokémons, tenta assim: (primeiramente, veja se seu servidor possue a função addPokeToPlayer) local box = {balltype = "normal", ballid = 11826, pokemons = {"Moltres", "Articuno", "Zapdos", "Entei", "Raikou", "Mew", "Mewtwo", "Lugia", "Ho-oh", "Celebi", "Ancient Blastoise"}} local happy = 220 function onUse(cid, item, frompos, item2, topos) local pokemon = box.pokemons[math.random(#box.pokemons)] local btype = box.balltype doPlayerSendTextMessage(cid, 27, "Você abriu uma PokeBox e recebeu um "..pokemon..".") doSendMagicEffect(getThingPos(cid), 29) addPokeToPlayer(cid, pokemon, 0, nil, btype) doRemoveItem(item.uid, 1) return true end -
/\ na parte de premiação do torneio, só colocar algo como: local trofeu = doPlayerAddItem(cid, id do trofeu, 1) doItemSetAttribute(trofeu, "description", ""..getCreatureName(cid).." venceu o grande torneio e foi consagrado como um guerreiro lendário.")
-
resolvido [Encerrado] Script de area vip que funcione no PDA
tópico respondeu ao blackdreams de zipter98 em Tópicos Sem Resposta
Você se refere à adicionar esse vip tile? É muito básico. Basta ir em data/movements/scripts, criar um arquivo com extensão .lua, e neste colocar o script que passei acima. Depois, em data/movements, abra o arquivo XML, e coloque a tag que também passei acima. Aí, no seu map editor, você configura o tile com o action id que configurou na tag. Se quiser testar o script antes de configurar no map editor, basta, in game, ficar de frente ao tile desejado, e digitar /attr set aid actionid que você configurou na tag. Seguindo como exemplo o action id que mencionei logo acima (12345), /attr set aid 12345. -
poketibia [Encerrado] [PEDIDO] Script lvl + boost!
tópico respondeu ao Lordbaxx de zipter98 em Tópicos Sem Resposta
Tenta assim: -
Tenta assim: function onThink(interval, lastExecution) local players = getPlayersOnline() local look = xxx --Outfit. for _, pid in ipairs(getPlayersOnline()) do if getCreatureOutfit(pid).lookType == look then playerpos = getPlayerPosition(pid) doSendMagicEffect(playerpos, 34) end end return true end
-
resolvido [Encerrado] Script de area vip que funcione no PDA
tópico respondeu ao blackdreams de zipter98 em Tópicos Sem Resposta
Registre normalmente a tag e o script. Na tag, coloque o actionid 12345. Depois, in game, digite /attr set aid 12345 em frente ao tile da área vip. Veja se mesmo assim os players continuam podendo passar por ele (eu testei aqui o script, e está funcionando perfeitamente). Ah, havia esquecido de umas coisas no script, aqui está ele editado: function onStepIn(cid, item, position, fromPosition) local pos = {x = xxx, y = yyy, z = zzz} --Para onde o player será teleportado. if not isPlayer(cid) then return true end if not isPremium(cid) then doPlayerSendCancel(cid, "Você só pode passar por aqui se for VIP!") doTeleportThing(cid, fromPosition) end if isPremium(cid) then doPlayerSendTextMessage(cid, 27, "Bem vindo à área VIP!") doTeleportThing(cid, pos) end return true end Testado, funcionando. EDIT: Vá no seu map editor, e procure por todos os unique IDs repetidos. Substitua por outros, que ainda não estejam em uso. -
Ninguém poderá usar o item nesse tempo, ou apenas que usou o item? Fiz aqui rapidinho, porque estou indo dormir. Qualquer erro, só postar. function onUse(cid, item, fromPosition, item2, toPosition) local cfg = { escada_pos = {x = xxx, y = yyy, z = zzz}, --Posição que a escada irá surgir. id_escada = xxx, --ID da escada. tempo = 10, --Tempo que a escada ficará in game/tempo para usar novamente o item. } if getGlobalStorageValue(100921) > os.time () then return doPlayerSendCancel(cid, "Aguarde "..getGlobalStorageValue(100921) - os.time ().." segundo(s) para usar esse item novamente.") end doPlayerSendTextMessage(cid, 27, "A escada apareceu! Você tem "..cfg.tempo.." para entrar nela!") doCreateItem(cfg.id_escada, 1, cfg.escada_pos) setGlobalStorageValue(100921, os.time () + cfg.tempo) addEvent(function() local remove = getTileItemById(cfg.escada_pos, cfg.id_escada) doRemoveItem(remove.uid, 1) doSendMagicEffect(cfg.escada_pos, CONST_ME_POFF) end, cfg.tempo * 1000) return true end A tag, suponho que você saiba fazer.
-
PDA Sem lvl 1.9 (Editado Por Bolz)
tópico respondeu ao SamueLGuedes de zipter98 em OTServer Alternativo (ATS)
Vá em data/lib/pokemon moves.lua, e procure por todas as spells que aplicam sleep. Aí, por exemplo, no Hypnosis, você encontrará algo assim: local ret = {} ret.id = target ret.cd = math.random(6, 9) ret.check = getPlayerStorageValue(target, conds["Sleep"]) ret.first = true ret.cond = "Sleep" Então, você deverá mudar ret.first = true para ret.first = false. No caso do Hypnosis, ficando assim: local ret = {} ret.id = target ret.cd = math.random(6, 9) ret.check = getPlayerStorageValue(target, conds["Sleep"]) ret.first = false --alterado v1.6 ret.cond = "Sleep" Você deve fazer isso em TODAS as spells que aplicam sleep!- 763 respostas
-
- minha primeira edição de poke
- otserv
- (e 2 mais)
-
Atualização! •Agora, pokémons +80 possuem um efeito especial ao andar, dependendo de seu elemento. •Ultimate Boost Stone pode ser dropada pelos NPCs Rank 5 em Colosseum, e por pokémons lendários. •Foi adicionado um novo NPC no laboratório de Viridian. Este pode trocar Shining Stones por Boost Stones, e Boost Stones por Ultimate Boost Stones. •Agora, é possível dropar Max Revive e Trainer Potion dos NPCs Rank 5 que se encontram em Colosseum.
-
resolvido [Encerrado] Script de area vip que funcione no PDA
tópico respondeu ao blackdreams de zipter98 em Tópicos Sem Resposta
Claro. Tenta assim: <movevent type="StepIn" actionid="coloque aqui um action id que não esteja em uso no seu servidor" event="script" value="nome do arquivo com o script que passei.lua"/> -
Ahã. Se quiser testar antes de configurar no RME, entra no seu servidor, fique em frente do tile desejado, e digite /attr set aid 13302.
-
Esse, que você se refere? http://www.xtibia.com/forum/topic/223839-sistema-de-miss/
-
resolvido [Encerrado] Script de area vip que funcione no PDA
tópico respondeu ao blackdreams de zipter98 em Tópicos Sem Resposta
Script de área vip que você se refere, é um tile que só passa quem for premium? Se for, function onStepIn(cid, item, position, fromPosition) local pos = {x = xxx, y = yyy, z = zzz} --Para onde o player será teleportado. if not isPremium(cid) then doPlayerSendCancel(cid, "Você só pode passar por aqui se for VIP!") doTeleportThing(cid, fromPosition) end doPlayerSendTextMessage(cid, 27, "Bem vindo à área VIP!") doTeleportThing(cid, pos) return true end -
Ah, foi mal. function onStepIn(cid, item, position, fromPosition) local artigo = getPlayerSex(cid) == 0 and "A" or "O" local nome = getPlayerSex(cid) == 0 and "jogadora" or "jogador" if getPlayerGuildId(cid) > 0 then broadcastMessage(""..artigo.." "..nome.." "..getCreatureName(cid).." da guild "..getPlayerGuildName(cid).." está invadindo o Castle 24horas.") else broadcastMessage(""..artigo.." "..nome.." "..getCreatureName(cid).." está invadindo o Castle 24horas.") end return true end Testei aqui, tá funcionando direitinho.
-
data/lib/pokemon moves.lua, procure por elseif spell == "Lava-Electricity" then Edite na tabela eff. O modelo é assim: ["Nome do pokémon"] = {efeito da spell, elemento do damage da spell, outfit que o pokémon irá assumir}, Por exemplo, do Magmar: ["Magmar"] = {5, FIREDAMAGE, 1461}, Se você quiser que o pokémon não mude de outfit ao usar a passive, basta não adicionar o terceiro valor (no caso do Magmar, 1461)
- 6 respostas
-
- passive
- shiny magmar
-
(e 3 mais)
Tags:
-
NPC Trocador Simplificado - troca itens por itens
tópico respondeu ao Killua de zipter98 em NPCs, monsters e raids
Amoeba, quanto à essa parte que você mencionou, têm essa maneira: local stt = "" local items = {11641, 11640, 11639} --ID dos items. for i = 1, #items do if stt == "" then stt = getItemNameById(items[i]) else stt = stt..", "..getItemNameById(items[i]) end end print("Items: "..stt..".") Se adicionar vários items, obviamente, a tabela ficará grande. Porém, o processo é menos cansativo, e mais fácil. Sobre o NPC, achei ele bem legal, parabéns xd -
Tenta assim: local SKILL_ID = 0 -- id do skill... local skills = { {min = 10, max = 20, chance = 10}, -- chance em % de dar miss... {min = 21, max = 30, chance = 20}, {min = 31, max = 40, chance = 30}, {min = 41, max = 50, chance = 40}, {min = 51, max = math.huge, chance = 50} } function onStatsChange(cid, attacker, type, combat, value) local COLOR_ID = 200 -- cor do texto local MAGIC_EFFECT = 1 -- id do magic effect if not isCreature(cid) then return false end for _, tudo in pairs(skills) do if getPlayerSkillLevel(cid, SKILL_ID) >= tudo.min and getPlayerSkillLevel(cid, SKILL_ID) <= tudo.max then local chancex = math.random(1, 100) if chancex <= tudo.chance then if combat ~= COMBAT_HEALING then doSendMagicEffect(getCreaturePosition(cid), MAGIC_EFFECT) doSendAnimatedText(getCreaturePosition(cid), "MISS!", COLOR_ID) if isPlayer(attacker) then doPlayerSendCancel(attacker, ""..getCreatureName(cid).." desviou do seu ataque!") end return false end end end end return true end
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
