Ir para conteúdo

[Encerrado] [Pokemon] Dúvidas? - Pda


lucashgas

Posts Recomendados

 

local scyther = {lookType = 496}

local shinyscyther = {lookType = 849}

local scythe1 = createCombatArea{

{0, 0, 0},

{0, 0, 0},

{0, 2, 0},

{1, 0, 0},

}

local scythe2 = createCombatArea{

{1, 0, 0},

{0, 0, 0},

{0, 2, 0},

}

local scythe3 = createCombatArea{

{1, 0, 0, 0},

{0, 0, 2, 0},

{0, 0, 0, 0},

}

local scythe4 = createCombatArea{

{0, 0, 0, 1},

{0, 0, 2, 0},

{0, 0, 0, 0},

}

local rollarea = createCombatArea{

{1, 1, 1},

{1, 2, 1},

{1, 1, 1},

}

function onCastSpell(cid, var)

if getCreatureCondition(getCreatureMaster(cid), CONDITION_INFIGHT) == FALSE then

return true

end

if getCreatureCondition(cid, CONDITION_OUTFIT) == true then

return true

end

doCreatureSay(cid, "Counter Helix", TALKTYPE_MONSTER)

if getCreatureOutfit(cid).lookType == 366 then

doSetCreatureOutfit(cid, scyther, -1)

doChangeSpeed(cid, -1000)

damage = 1500

elseif getCreatureOutfit(cid).lookType == 1317 then

doSetCreatureOutfit(cid, shinyscyther, -1)

doChangeSpeed(cid, -1000)

damage = 2500

end

local dmg = damage

local function damage(params)

if isCreature(params.cid) then

doAreaCombatHealth(params.cid, FLYDAMAGE, getThingPos(params.cid), rollarea, -(params.dmg), -(params.dmg), 255)

doAreaCombatHealth(params.cid, element, getThingPos(params.cid), scythe1, 0, 0, 128)

doAreaCombatHealth(params.cid, element, getThingPos(params.cid), scythe2, 0, 0, 131)

doAreaCombatHealth(params.cid, element, getThingPos(params.cid), scythe3, 0, 0, 129)

doAreaCombatHealth(params.cid, element, getThingPos(params.cid), scythe4, 0, 0, 130)

end

end

local function voltar(params)

if isCreature(params.cid) then

doRemoveCondition(params.cid, CONDITION_OUTFIT)

doChangeSpeed(cid, 1000)

doRemoveCondition(getCreatureMaster(cid),CONDITION_INFIGHT)

end

end

local vezes = 2

local delay = 600 -- não mexe

for i = 1, vezes do

addEvent(damage, delay*i, {cid = cid, dmg = dmg})

end

addEvent(voltar, 800*vezes, {cid = cid})

end

 

 

 

pode chekar spell? counter helix passive

Beleza vou checar aqui acordei agora rsrs. Qualquer coisa se funcionar eu posto como eu fiz funcionar.

 

onde fica os scripts das spells pois eu não estou axando aki...tava qrendo dar uma olhada no sleep e no hypnose mais n axo o script deles na pasta x.x

help?

data/spells/scripts/pokes/ps tão todas la.

Gente to precisando pakas dos corpoise jhoto

se alguem puder disponibilizar para mim eu fico muito grato

e tambem a pagina que ensina a mudar o corpoise dos shiy pq abra ta como dark abra

e eu queria colocar ao inves de shiny hitmonlee verde akele com a capa preta

@nibelis

depois que fica pronto passa pra noix awe

usa esse npc aki

local focus = 0

local max_distance = 8

local talk_start = 0

local conv = 0

local fighting = false

local challenger = 0

local afk_limit_time = 30 -- seconds

local afk_time = 0 -- don't change

local battle_turn = 1 -- don't change

local challenger_turn = 0 -- don't change

local time_to_fight_again = 15 -- seconds, not ms (so 30 * 60 means 30 minutes)

 

 

local cooldown_table = {}

 

 

local min_pokemons_to_battle = 4-- change to whatever you want

local number_of_pokemons = 0 -- don't change

 

local prizes = {

 

[4] = {{itemid = 2152, count = 15}, {itemid = 11453, count = 1}}}

 

local pokemons = {

{name = "Geodude", level = 28, extralevel = 2.5, sex = SEX_MALE, nick = "", ball = "super"},

{name = "Kingler", level = 32, extralevel = 5, sex = SEX_FEMALE, nick = "", ball = "normal"},

{name = "Electrode", level = 35, extralevel = 10, sex = SEX_MALE, nick = "", ball = "great"},

{name = "Gloom", level = 40, extralevel = 15, sex = SEX_MALE, nick = "", ball = "normal"}

}

 

 

local function doSummonGymPokemon(npc)

local this = npc

if not isCreature(this) then return true end

if #getCreatureSummons(this) >= 1 or focus == 0 then return true end

local it = pokemons[battle_turn]

doSummonMonster(this, it.name)

local summon = getCreatureSummons(this)[1]

local balleffect = pokeballs["normal"].effect

if it.ball and pokeballs[it.ball] then

balleffect = pokeballs[it.ball].effect

end

doSendMagicEffect(getThingPos(summon), balleffect)

setPlayerStorageValue(summon, 10000, balleffect)

setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name))

setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name)

doSetMonsterGym(summon, focus)

local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name

setWildPokemonLevel(summon, it.level, getPokemonStatus(it.name, (it.extralevel + it.level)), name, 1.5)

doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)

fighting = true

battle_turn = battle_turn + 1

end

 

local function doWinDuel(cid, npc)

if not isCreature(cid) then return true end

local this = npc

local x = prizes[number_of_pokemons]

for n = 1, #x do

doPlayerAddItem(cid, x[n].itemid, x[n].count)

end

doCreatureSay(npc, "Congratulations! You won, here is your prize.", 1)

cooldown_table[getCreatureName(cid)] = os.clock() + time_to_fight_again

setPlayerStorageValue(cid, 6278462, 1)

return true

end

 

function onCreatureSay(cid, type, msg)

 

local msg = string.lower(msg)

 

if focus == cid then

talk_start = os.clock()

end

 

if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then

 

if cooldown_table[getCreatureName(cid)] and cooldown_table[getCreatureName(cid)] - os.clock() > 0 then

selfSay("Hello "..getCreatureName(cid)..", I really enjoyed our last battle!")

conv = 10

else

selfSay("Hello "..getCreatureName(cid)..", are you up to a duel? I can give prizes if you win!")

conv = 1

end

 

focus = cid

talk_start = os.clock()

return true

end

 

if (isDuelMsg(msg) or isConfirmMsg(msg)) and (conv == 1 or conv == 10) and focus == cid then

if getPlayerStorageValue(cid, 6278462) > 0 then

selfSay("You have defeated me!")

focus = 0

return true

end

if conv == 10 then

selfSay("We have just battled! Please wait for me to recover from out last battle!")

focus = 0

return true

end

 

if not hasPokemon(cid) then

selfSay("You need pokemons to battle!")

return true

end

 

selfSay("Ok, tell me how many pokemons will fight.")

conv = 2

 

return true

end

 

if conv == 2 and focus == cid then

 

if not tonumber(msg) then

selfSay("Tell me the number of pokemons that will battle.")

return true

elseif tonumber(msg) > #pokemons then

selfSay("I have only "..#pokemons..", so the maximum is "..#pokemons.."!")

return true

elseif tonumber(msg) < min_pokemons_to_battle or tonumber(msg) < 1 then

selfSay("It has to be more than "..min_pokemons_to_battle..".")

return true

else

number_of_pokemons = tonumber(msg)

selfSay("Ok, the first that defeats "..number_of_pokemons.." wins, let's start!")

challenger = focus

setPlayerStorageValue(cid, 990, 1)

addEvent(doSummonGymPokemon, 850, getThis())

conv = 3

return true

end

 

 

return true

end

 

if isNegMsg(msg) and conv == 1 and focus == cid then

 

focus = 0

selfSay("It is better for you to refuse a battle against me!")

 

return true

end

 

if msgcontains(msg, 'bye') and focus == cid then

selfSay('Bye and do your best trainer!')

setPlayerStorageValue(focus, 990, -1)

focus = 0

return true

end

end

 

local afk_warning = false

local change = false

 

function onThink()

 

if focus == 0 then

selfTurn(2)

fighting = false

challenger = 0

change = false

challenger_turn = 0

battle_turn = 1

afk_time = 0

afk_warning = false

 

if #getCreatureSummons(getThis()) >= 1 then

setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0)

doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1]))

end

 

return true

else

 

if not isCreature(focus) then

focus = 0

return true

end

 

if fighting then

 

talk_start = os.clock()

 

if not isCreature(getCreatureTarget(getThis())) then

if #getCreatureSummons(challenger) >= 1 then

selfAttackCreature(getCreatureSummons(challenger)[1])

change = true

afk_time = 0

else

afk_time = afk_time + 0.5

if change then

change = false

challenger_turn = challenger_turn + 1

end

end

end

 

if afk_time > afk_limit_time then

setPlayerStorageValue(focus, 990, -1)

focus = 0

selfSay("I have waited too long, come back when you are ready!")

return true

end

 

if not afk_warning and afk_time > afk_limit_time / 2 then

selfSay("Where's your pokemon? Let's fight!")

afk_warning = true

end

 

 

if #getCreatureSummons(getThis()) == 0 then

if battle_turn > number_of_pokemons then

addEvent(doWinDuel, 1000, focus, getThis())

setPlayerStorageValue(focus, 990, -1)

focus = 0

return true

end

addEvent(doSummonGymPokemon, 1000, getThis())

end

 

if not hasPokemon(challenger) or challenger_turn > 6 or challenger_turn >= number_of_pokemons then

selfSay("You lost our duel! Maybe some other time you'll defeat me.")

setPlayerStorageValue(focus, 990, -1)

focus = 0

return true

end

 

end

 

local npcpos = getThingPos(getThis())

local focpos = getThingPos(focus)

 

if npcpos.z ~= focpos.z then

setPlayerStorageValue(focus, 990, -1)

focus = 0

selfSay("Bye then.")

return true

end

 

if (os.clock() - talk_start) > 30 then

selfSay("Good bye and keep training!")

setPlayerStorageValue(focus, 990, -1)

focus = 0

end

 

if getDistanceToCreature(focus) > max_distance then

setPlayerStorageValue(focus, 990, -1)

focus = 0

return true

end

 

local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))

selfTurn(dir)

end

return true

end

 

 

Cara eu sei que tem os corpse no client só tens que fazer o seguinte adicionar eles no item editor e depois configurar os corpse nos arquivos de cada pokemon jhoto quanto ao lee da capa preta e bem simples só abrir o dat editor procurar o lee da capa preta e apertar cntrl+e a você salva com o nome de lee e depois vai no lee verde e aperta cntrl+i ai você escolhe o arquivo que você salvo no caso lee, ai vai aparecer a mensagem de deseja substituir você poem sim e pronto lee mudado só compilar.

 

Ajudei Rep+

 

Tranquilo cabei de fazer a spell passive facil de mais. sem ofença.

Postando ss

 

 

passive.png

 

 

Eu estava certo sobre como fazela então vou postar a unica coisa que espero é quem fazer as outras poste pros demais.

Crie um arquivo .lua na pasta data/spells/scripts/ps com o nome de passive e cole isso dentro:

local scyther = {lookType = 496}
local shinyscyther = {lookType = 849}
local scythe1 = createCombatArea{
{0, 0, 0},
{0, 0, 0},
{0, 2, 0},
{1, 0, 0},
}
local scythe2 = createCombatArea{
{1, 0, 0},
{0, 0, 0},
{0, 2, 0},
}
local scythe3 = createCombatArea{
{1, 0, 0, 0},
{0, 0, 2, 0},
{0, 0, 0, 0},
}
local scythe4 = createCombatArea{
{0, 0, 0, 1},
{0, 0, 2, 0},
{0, 0, 0, 0},
}
local rollarea = createCombatArea{
{1, 1, 1},
{1, 2, 1},
{1, 1, 1},
}
function onCastSpell(cid, var)
if getCreatureCondition(getCreatureMaster(cid), CONDITION_INFIGHT) == TRUE then
return true
end
if getCreatureCondition(cid, CONDITION_OUTFIT) == true then
return true
end
doCreatureSay(cid, "Counter Helix", TALKTYPE_MONSTER)
if getCreatureOutfit(cid).lookType == 366 then
doSetCreatureOutfit(cid, scyther, -1)
doChangeSpeed(cid, -1000)
damage = 1500
elseif getCreatureOutfit(cid).lookType == 1317 then
doSetCreatureOutfit(cid, shinyscyther, -1)
doChangeSpeed(cid, -1000)
damage = 2500
end
local dmg = damage
local function damage(params)
if isCreature(params.cid) then
doAreaCombatHealth(params.cid, FLYDAMAGE, getThingPos(params.cid), rollarea, -(params.dmg), -(params.dmg), 255)
doAreaCombatHealth(params.cid, element, getThingPos(params.cid), scythe1, 0, 0, 128)
doAreaCombatHealth(params.cid, element, getThingPos(params.cid), scythe2, 0, 0, 131)
doAreaCombatHealth(params.cid, element, getThingPos(params.cid), scythe3, 0, 0, 129)
doAreaCombatHealth(params.cid, element, getThingPos(params.cid), scythe4, 0, 0, 130)
end
end
local function voltar(params)
if isCreature(params.cid) then
doRemoveCondition(params.cid, CONDITION_OUTFIT)
doChangeSpeed(cid, 1000)
doRemoveCondition(getCreatureMaster(cid),CONDITION_INFIGHT)
end
end
local vezes = 2
local delay = 600 -- não mexe
for i = 1, vezes do
addEvent(damage, delay*i, {cid = cid, dmg = dmg})
end
addEvent(voltar, 800*vezes, {cid = cid})
end

Sim esse é a spell anteriormente postada pelo @BLACKHERT o erro dele e dos demais foi esquecer disso que eu disse na spell a condição in fight

Que estava assim

if getCreatureCondition(getCreatureMaster(cid), CONDITION_INFIGHT) == FALSE then

e o certo e por um TRUE

if getCreatureCondition(getCreatureMaster(cid), CONDITION_INFIGHT) == TRUE then.

Feito a passive salve e feche.

Abra o arquivo spells.xml que fica em data/spells/ e adicione essa linha:

<instant name="Passive" words="spell999" lvl="1000" mana="0" event="script" value="ps/passive.lua"></instant>

 

O nome tem que ser exato ao do script da pasta data/spells/scripts/ps

o spell999 e lvl 1000 e para que players não possam conjuralas.

Feito isso sua passive esta pronta para ser posta em qualquer pokemon.

Peguei o scyther por exemplo abra ele e adicione essa linha em suas spells de atk

<attack name="Passive" interval="3698" chance="50" range="1"/>

Ficando:

 

<?xml version="1.0" encoding="UTF-8"?>

<monster name="Scyther" nameDescription="a scyther" race="bug" experience="1044" speed="177" manacost="0">

<health now="110" max="110"/>

<look type="366" head="55" body="80" legs="95" feet="113" corpse="11958"/>

<targetchange interval="10000" chance="0"/>

<strategy attack="100" defense="0"/>

<flags>

<flag summonable="1"/>

<flag attackable="1"/>

<flag hostile="1"/>

<flag illusionable="1"/>

<flag convinceable="1"/>

<flag pushable="1"/>

<flag canpushitems="0"/>

<flag canpushcreatures="0"/>

<flag targetdistance="1"/>

<flag staticattack="97"/>

<flag runonhealth="0"/>

<flag hungerdelay="20"/>

</flags>

<attacks>

<attack name="melee" interval="2000" chance="100" range="1" min="-50" max="-100"/>

<attack name="Quick Attack" interval="2570" chance="31" range="2"/>

<attack name="Slash" interval="2852" chance="29" range="1"/>

<attack name="Wing Attack" interval="3322" chance="26" range="6"/>

<attack name="Fury Cutter" interval="3040" chance="28" range="1"/>

<attack name="Agility" interval="6330" chance="17" range="6"/>

<attack name="Razor Wind" interval="3040" chance="28" range="6"/>

<attack name="Swords Dance" interval="4403" chance="20" range="6"/>

<attack name="X-Scissor" interval="3698" chance="24" range="1"/>

<attack name="Passive" interval="3698" chance="50" range="1"/>

</attacks>

<defenses armor="0" defense="0"/>

<voices interval="5000" chance="10">

<voice sentence="SCYTHER!"/>

</voices>

<loot>

<item id="12171" chance="10000" count="1" countmax="1"/>

<item id="11448" chance="100" count="1" countmax="1"/>

<item id="12167" chance="10000" count="1" countmax="1"/>

</loot>

<script>

<event name="Spawn"/>

</script>

</monster>

 

 

 

Funcionou REP+ não funcionou poste o erro eu ajudo.

Editado por SoulOroshie
Link para o comentário
Compartilhar em outros sites

Bom sei la eu to adicionando as outfits rank 5 se alguem quiser eu até post o meu outfits.xml pra todos terem as addon feitas.

Sei que muito estão é atrais dos poitraits shinys não irei faze-los pois meu item.otb esta todo diferente do que veio então ira bugar o de vcs.

Se alguem fizesse para os demais ja estaria ajudando e muito.

Link para o comentário
Compartilhar em outros sites

#nibelins

 

eu tenho um site aqui igual ao http://otpokemon.com se vc quiser para editar ..

só pedir

 

Você tem outro tipo de site para pokemon ? to querendo da uma olhada

 

Alguem tem as libs dos gyms feita e pode me passar ? eu to prescisando muito mesmo galera.

Editado por SoulOroshie
Link para o comentário
Compartilhar em outros sites

Ola amigos, boa tarde. Eu sou fã de otservers de tibia e até ja tive alguns servidores, e quando surgiu os poketibia fiquei muito animado pois tambem gosto de pokemon, mais devido a falta de tempo nao posso ler essas 118 paginas hehe.

Gostaria de saber como anda esse projeto do pokemon advanced, como esta, se tem muitos bugs ou ja arrumaram os mais criticos etc, como anda o projeto?

Obrigado.

Link para o comentário
Compartilhar em outros sites

O projeto anda bem tem bastante gente achando erros e tem alguns sempre tentando arrumar porem á muitos que so querem pedir e não ajudar. rss

Mas esta indo muito bem não sabemos ao certo se terá ou não atualizações pelo criador do projeto porem algumas pessoas do forum estão se disponibilizando a ajudar e tirar erros.

Link para o comentário
Compartilhar em outros sites

@Taiger

 

 

A grande maioria dos bugs já foram arrumados, até onde eu sei somente 1 bug critico ainda resta no servidor.

Qual seria?

 

E por favor alguem sabe concertar a cd bar sei la eu não mechi em nada e os pokes não saem tem como bugar e fazer sair 2 pokemons.

Link para o comentário
Compartilhar em outros sites

@SoulOroshie

aki o poke soh usa a passiva se eu selecionar um poke ;x e o certo seria sair ms sem selecionar nenhum poke... mas fico lgl o script.. engraçado q colocando em "defenses" a skill funciona pra pokes selvagens mas n pra de player u,U coisa estranha... ah e se n me engano.. n eh FLYDAMAGE.. e sim BUGDAMAGE ;p

Editado por Slicer
Link para o comentário
Compartilhar em outros sites

Entao, vamos começar um script de TM's ? Não sei direito como funciona... alguem explica certinho ai como funciona ele que a gente pode começar ele ;)

 

@soul isso é pq ta como attack.. coloca como defense que ele vai usar sem ter nenhum pokemon :)

Editado por RicardoSohnn
Link para o comentário
Compartilhar em outros sites

@SoulOroshie

aki o poke soh usa a passiva se eu selecionar um poke ;x e o certo seria sair ms sem selecionar nenhum poke... mas fico lgl o script.. engraçado q colocando em "defenses" a skill funciona pra pokes selvagens mas n pra de player u,U coisa estranha... ah e se n me engano.. n eh FLYDAMAGE.. e sim BUGDAMAGE ;p

LoL dessa eu não sabia que o poke saia soltando passive sem nenhum motivo a todo caso acho melhor pois assim ele sabe que só soltará a passive se ele estiver em batalha pois imagina ir com um golduck por ae soltando passive caminhando nada vê.

Entao, vamos começar um script de TM's ? Não sei direito como funciona... alguem explica certinho ai como funciona ele que a gente pode começar ele ;)

 

@soul isso é pq ta como attack.. coloca como defense que ele vai usar sem ter nenhum pokemon :)

Bom irei testar a todo caso obrigado :)

 

Quanto as TM é o seguinte e uma specie de "CD Literalmente" que e diferenciado por cores sendo essas cores as raças "vermlho fire, verde planta etc.." que pode ser usado para trocar um ataque do pokemon exemplo "m1 water gun" posso por waterball porem so com o CD azul e se caso o pokemon ja tenha a waterball não teria como colocar (pelo menos eu acho que não) os CDs podem tbm ser colocados caso o pokemon não tenha a spell exemplo magikarp só tem m1 eu poderia colocar os CD's no m2,m3 etc..

Desde que eles fossem azul *tipo agua* acho que ja deu pra entender.

CD nada mais é do que adicionar ou editar os moves do pokemon.

Indo almoçar fora daqui a pouco eu volto pra ajudar galera.

 

/\ em defense o poke de player n usa a skill.. soh os selvagens... alguem tem ideia pq disso? ;x

Sim tenho sim pois se não esta na configuration lib não será usado pelo pokemon de player somente oque está la será usado

Porem la só tem os Moves então não sei se tem mesmo como por defence por la.

Link para o comentário
Compartilhar em outros sites

@SoulOroshie

nunca jogase PO? ;x eh assim pro pessoal pescar... e ms em defense tb eh verificado se o player ta em combate... mas la.. soh de um poke ter o teu poke como alvo, tu ja fica "in fight" ;x no meu serv q eu tava editando antes de usa o PDA tinha o script de pokes de player e pokes selvagens separados.. e dai eu colocando esse teu script -q alias alguem tiro de um serv antigo q tinham postado aki no xtibia- ele funcionava em defense... isso de n funcionar em "defenses" deve ter a ver com como o brun123 faz pra um poke selvagem virar de player...

Editado por Slicer
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...