-
Party dando dano em ataques em área/spells
Servidor KPDO tfs 0.3.6 POKETIBIA Boa tarde, estou precisando de um script que bloqueie os danos de ataques em área/spells (m1..m2.. etc) para membros de party. (zonas PVP) Atualmente estou usando o codigo: function onCombat(cid, target) if(isPlayer(cid) and isPlayer(target)) then if(getConfigValue("noDamageToPartyMembers") and isInParty(target) and getPartyLeader(target) == getPartyLeader(cid)) then cancelTarget(cid) doPlayerSendCancel(cid, "You can not attack your party members") return false end end return true end Porém, ele só bloqueia que os players em party sejam targetados por outros players da party. Mas os danos continuam. Desde já muito obrigado.
-
[CREATURESCRIPT] Armazenar POS de nascimento da criatura.
.Qual servidor ou website você utiliza como base? KPDO Olá, gostaria de saber se existe alguma forma de fazer um script armazenar a posição que uma criatura foi criada (por docreatecriature) e utilizar para criar uma nova criatura no lugar armazenado após ela morrer. Quando tento criar um script assim, só consigo fazer se coloco pra localizar o corpse. Quando ele tenta buscar a posição da criatura, retorna null, visto que ela já morreu. A posição não é fixa, é random, sem total area. O processo seria: Criatura é transformada em outra. A transformação renasce após morrer, no mesmo local que foi criada.
-
Script muda pokemon, e servidor faz novo respawn do antigo, duplicando eles.
@Spooky Ghost Não tem problema ela nascer.. tipo, esse script roda só quando tem um player na tela. Então seria: - servidor spawna clefable - player aparece na tela.. clefable muda pra clefable [1] supondo que o player não mate a clefable [1] - servidor spawna outra clefable. <- aqui fazer a verificação de que se tiver clefable [1], deleta a clefable [1] e mantem a clefable. pois daí se o jogador aparecer de novo, a clefable comum vira novamente clefable [1].
-
Script muda pokemon, e servidor faz novo respawn do antigo, duplicando eles.
@Spooky Ghost Sem problemas brother. No caso é inviável localizar o x y z, visto que seriam todos os pokemons do servidor. Também como falei anteriormente, o script tá sim conseguindo localizar o pokemon criado nessa função: addEvent(function() if (criature17) then doRemoveCreature(criature17) end end, tempo_remover * 60 * 1000)end Então deve haver algum meio de usar o if (criature17) then doRemoveCreature(criature17), só não estou conseguindo.. vou continuar tentando
-
Script muda pokemon, e servidor faz novo respawn do antigo, duplicando eles.
@Spooky Ghost Obrigado pela resposta! Então cara.. na verdade esse é um "sistema gambiarra" para level system em pokemons selvagens. Ja implementei e funciona sem lags e tal. O unico problema é isso mesmo.. Eu pensei em uma forma de solucionar isso, mas não manjo muito pra criar um script do 0. Estou tentando quebrar a cabeça com isso. Talvez você consiga pensar em algo seguindo essa logica: if getCreatureName(cid) == "Clefable" then verificar se possui uma criatura "criature17" se caso sim, remover a "criature17", e daí transformar o clefable em outra "criature17" O problema é que o local = criature17 é random, não sei se o script consegue localizar pelo "criature17". Porém, esse evento addEvent(function() if (criature17) then doSendMagicEffect(getThingPos(criature17), fail) doRemoveCreature(criature17) end end, tempo_remover * 60 * 1000) end funciona perfeitamente pra remover o pokemon criado depois de 2 minutos. Então acredito que dá pra chamar a criature por criature17, só não estou conseguindo elimina-la após a verificação do if getCreatureName(cid) == "Clefable" then
-
Script muda pokemon, e servidor faz novo respawn do antigo, duplicando eles.
.Qual servidor você utiliza como base? KPDO Você tem o código disponível? Se tiver publique-o aqui: function onThink(cid, interval) local clefable = { [0] = {pokemon = 'clefable [1] s'}, [1] = {pokemon = 'clefable [2] s'}, [2] = {pokemon = 'clefable [3] s'}, } local tempo_remover = 2 -- minutos local fail = 2 if getCreatureName(cid) == "Clefable" then local criature17 = doCreateMonster(clefable[math.random(0,3)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) addEvent(function() if (criature17) then doSendMagicEffect(getThingPos(criature17), fail) doRemoveCreature(criature17) end end, tempo_remover * 60 * 1000) end return true end Boa tarde. Segue meu script que transforma um pokemon X em um pokemon Y. O meu problema está que: Exemplo: Pokemon respawna com nome Clefable. O script muda ele para clefable [1]. Passa-se 60 segundos, e o servidor respawna outro Clefable, visto que não tem mais um Clefable, e sim um Clefable [1]. Minha solução temporária foi excluir o Clefable [1] após X tempo. Mas gostaria que o servidor não respawnasse outro, enquanto o Clefable [1] não seja morto. É possivel? a base do meu servidor é KPDO, sem sources, e até onde eu saiba, sem a função onspawn.
-
[AJUDA] Definir level minimo e máximo em creaturescript POKETIBIA
@Storm Realizei diversos testes aqui, e conclui que: Funciona: isPlayer(target) and isMonster(cid) then O pokemon do mapa se transforma quando o player aparece no mapa (sem seu pokemon solto) Não funciona: if isPlayer(cid) and isMonster(target) then Quando o player aparece no mapa com o pokemon solto não funciona. Tentei alterar o isMonster(target) para isSummon(target) e para if isPlayer(getCreatureMaster(target)) sem sucesso.
-
[AJUDA] Definir level minimo e máximo em creaturescript POKETIBIA
@Storm É que no caso o KPDO não tem sources. O servidor já está 100%, esses sistemas são apenas adicionais.. pra mim não compensa perder anos de trabalho no KPDO pra começar outro do 0 de novo. Acho que vou concluir em deixar do jeito que está, sem spawn por level de player, e sim aleatório. De qualquer forma obrigado pelo seu tempo!
-
[AJUDA] Definir level minimo e máximo em creaturescript POKETIBIA
@Storm Coloquei isso e continua sem dar erros na distro, porém não muda nada.. creaturescript.xml <event type="combat" name="Pokelvl" event="script" value="Pokelvl.lua"/> rattata.xml <event name="Pokelvl"/> Testei também adicionando o registerCreatureEvent(cid, "pokelvl") no login.lua (que não era necessário no script onThink) também sem resultados.
-
[AJUDA] Definir level minimo e máximo em creaturescript POKETIBIA
@Storm Alterei conforme o script, arrumei as tabelas e o creaturescript.. Abri o servidor, quando o player acha o pokemon, ele não se transforma, nem quando ataca/mata. Não dá nenhum erro na distro. Testei com e sem o <event name="Pokelvl"/> no xml do pokemon. Testei com um char level 10. Ao alterar esse script para combat, acredito que o pokemon só vá se transformar quando for atacado/atacar, correto? Um pokemon passivo se manteria sem level até ser atacado. Talvez realmente seja a unica forma de identificar um player. No think, ele se transforma ao aparecer algum player na tela, visualmente falando seria melhor, mas acho que no think ele não consegue verificar o lvl do player que ativou o script.. local pokes1020 = { [0] = {pokemon = 'rattata [1] s'}, [1] = {pokemon = 'rattata [1] s'}, [2] = {pokemon = 'rattata [1] s'}, } local pokes2030 = { [0] = {pokemon = 'rattata [2] s'}, [1] = {pokemon = 'rattata [2] s'}, [2] = {pokemon = 'rattata [2] s'}, } function onCombat(cid, target) if isPlayer(target) then if getCreatureName(cid) == "Rattata" then if getPlayerLevel(target) >= 5 and getPlayerLevel(target) <= 20 then local criature = doCreateMonster(pokes1020[math.random(0,2)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) elseif getPlayerLevel(target) >= 21 then local criature = doCreateMonster(pokes2030[math.random(0,2)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) end end end return true end
-
[AJUDA] Definir level minimo e máximo em creaturescript POKETIBIA
@Storm Vou simplificar o codigo pra facilitar a visualização: function onThink(cid, interval) local rattatalvltest = { [0] = {pokemon = 'rattata [1] s'}, [1] = {pokemon = 'rattata [1] s'}, [2] = {pokemon = 'rattata [1] s'}, } local rattatalvl5 = { [0] = {pokemon = 'rattata [2] s'}, [1] = {pokemon = 'rattata [2] s'}, [2] = {pokemon = 'rattata [2] s'}, } if getCreatureName(cid) == "Rattata" then local criature = doCreateMonster(rattatalvltest[math.random(0,1)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) end return true end Esse é o codigo funcionando. Resumidamente é um sistema de lvl em pokemons selvagens (super gambiarra, para um servidor KPDO). O servidor sumona um rattata. Quando o player aparece na tela onde está ele, o codigo transforma ele em um rattata [1] (com level). O level seria configuravel de acordo com o level do player que o encontrou. Por exemplo: Players lvl 1-20 apareçam pokemons de um "local rattatalvl20", players lvl 21-40 apareçam pokemons de um "local rattatalvl40" Saca? por isso a necessidade de criar um if getPlayerLevel(cid) >= 1 and getPlayerLevel(cid) <= 20 then e colocar a parte da troca de pokemons dentro de cada um. Desde já obrigado! Ah, só para completar, o script é acionado através do xml do pokemon, em <event name="Pokelvl"/> creaturescripts .xml: <event type="think" name="Pokelvl" event="script" value="Pokelvl.lua"/>
-
[AJUDA] Definir level minimo e máximo em creaturescript POKETIBIA
@StormMas como faço isso se quem ativa o script é um player aleatório (o primeiro que aparece na tela)?
-
[AJUDA] Definir level minimo e máximo em creaturescript POKETIBIA
Pessoal preciso de uma ajuda se possivel. Tenho um creaturescript que transforma pokemon X em Y quando o player aparece na tela. funciona perfeitamente. if getCreatureName(cid) == "Rattata" then local criature = doCreateMonster(rattatalvltest[math.random(0,1)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) end return true end Gostaria de fazer com que se o player que acionou o script for lvl entre 10 e 20 ele sumone apartir de uma tabela "Pokes1020", e se o level for entre 21 e 40 de uma tabela "Pokes2140" Acontece que ou eu errei o script, ou o script não consegue olhar o level do player que acionou isso. Tentei da seguinte forma: if getCreatureName(cid) == "Rattata" then if getPlayerLevel(cid) >= 10 and getPlayerLevel(cid) <= 20 then local criature = doCreateMonster(Pokes1020[math.random(0,1)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) elseif getPlayerLevel(cid) >= 21 and getPlayerLevel(cid) <= 40 then local criature = doCreateMonster(Pokes1020[math.random(0,1)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) end return true end O erro apresentado na distro é attempt to compare number with boolean. Ja tentei trocar os numeros por local level = X e substituir lá pelo X..Y..Z..(editado) Conversar em #?scripting
-
Como coloca para todos pokemon capturar Fica Perfect 100%
data/lib catchrate.lua
-
Problema com pokemons adicionados no sv.
.Utilizo o servidor KPDO e adicionei um pokemon novo. Registrei em monsters.xml e em lib/pokemons.lua Aparentemente ainda falta ser registrado em algum local. Os pokemons até funcionam 100%, porém quando adicionei o sistema de avisar que dropou stones, dá erro na linha local corpse = getMonsterInfo(getCreatureName(target)).lookCorpse dá erro na distro: attempt to index a boolean value stack traceback da linha -> local corpse = getMonsterInfo(getCreatureName(target)).lookCorpse na função -> function onKill(cid, target, lastHit) O que acontece in-game é que o pokemon morre mas não se torna corpse, e fica sem nome/vida conforme imagem: Só da erro no pokemon que foi feito do 0. Grato!