ahh desisto AOSHOASOHSA muita coisa pra edita '-' muit aideia na cabeça . aiai seu eu não não fosse empregado ![]()
- Fórum
- OTServ
- Suporte
- Tópicos Sem Resposta
- [Encerrado] [Pokemon] Dúvidas? - Pda
[Encerrado] [Pokemon] Dúvidas? - Pda
Por lucashgas, 10 de jan. de 2012 em Tópicos Sem Resposta
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

a velo achu q tem algu nas source q faz isso.. pq ja tentei de TUDO, tudo ms.. e nd adianto.. ;x
@all
o bug do logout do fly ainda continua.. mais tarde posto o meu login.lua 100% ... ;p
Vlw man, rep+Alguem me ajuda, como faço pra AUMENTAR A VELOCIDADE e TIRAR PERDA DE LIFE DEBAIXO D'AGUA?
data/movements/scripts/drown.lua ctrl + f procure por -20 troque por 0 ai não vai perde life, agora aumenta a velo não sei!
@Slicer
é osso, minha quest da Water Stone é no fundo do mar ![]()
Editado Fevereiro 9 por Snott
Vlw man, rep+Alguem me ajuda, como faço pra AUMENTAR A VELOCIDADE e TIRAR PERDA DE LIFE DEBAIXO D'AGUA?
data/movements/scripts/drown.lua ctrl + f procure por -20 troque por 0 ai não vai perde life, agora aumenta a velo não sei!
@Slicer
é osso, minha quest da Water Stone é no fundo do mar
Quando eu tava tentando editar a velocidade dos pokemons tipo agua debaixo do mar...ao invez de aumenta a deles eu tinha conseguido fazer aumentar a do player,,,so q agora n lembro como era .-.
Fiz de cabeça aqui tenta usa isso :
local condition = createConditionObject(CONDITION_DROWN)
setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -0)
setConditionParam(condition, CONDITION_PARAM_TICKS, -0)
setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 2000)
function PlayerSpeedOn(cid,nSpeed)
setPlayerStorageValue(cid,sBike,getCreatureSpeed(cid))
doChangeSpeed(cid,-getCreatureSpeed(cid))
doChangeSpeed(cid,nSpeed)
end
function PlayerSpeedOff(cid)
doChangeSpeed(cid,-getCreatureSpeed(cid))
doChangeSpeed(cid,getPlayerStorageValue(cid,sBike))
end
function onStepIn(cid, item, position, fromPosition)
if(isPlayer(cid)) then
PlayerSpeedOn(cid,900)
end
return true
end
function onStepOut(cid, item, position, fromPosition)
PlayerSpeedOff(cid)
return true
end
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

@all
o brun123 nos trollo lgl.. ;/ colocando o sistema de morte nas sources... eu tava tentando compara as pos na hora q o player morre e a hora q ele volta pra poder retirar o fly, ride... MAS... percebi q quando o player morre ele eh mandado pro CP antes de da logout.. ou seja.. a pos depois de morre ja eh a do CP.. ;/ na boa.. esgotei minhas ideias... ;x fly e ride soh o brun123 pra arruma..!!
me ajuda ae veja ae mano esse dae
Alguem sabe me responder se o quanto os pokes hitam no melee é por status ? Porque se alguem bota um poke +50 fica ridiculo batendo 3-5 k no melee, assim fica dificil balancear.
@all
o brun123 nos trollo lgl.. ;/ colocando o sistema de morte nas sources... eu tava tentando compara as pos na hora q o player morre e a hora q ele volta pra poder retirar o fly, ride... MAS... percebi q quando o player morre ele eh mandado pro CP antes de da logout.. ou seja.. a pos depois de morre ja eh a do CP.. ;/ na boa.. esgotei minhas ideias... ;x fly e ride soh o brun123 pra arruma..!!
Bom tava pensando aqui...só dando uma ideia...não teria como fazer uma outra função sei la..que xecasse a vida do player...e caso ela xegasse a 0 retire o fly e tp ele pro cp..antes da própria funcao do servidor?
E uma duvida....se no login.lua...a parte que faz com que o player volte montado no fly...o que aconteceria se retirasse ela...pra ele voltar sem fly e com o pokemon healado na ball...
@all
o brun123 nos trollo lgl.. ;/ colocando o sistema de morte nas sources... eu tava tentando compara as pos na hora q o player morre e a hora q ele volta pra poder retirar o fly, ride... MAS... percebi q quando o player morre ele eh mandado pro CP antes de da logout.. ou seja.. a pos depois de morre ja eh a do CP.. ;/ na boa.. esgotei minhas ideias... ;x fly e ride soh o brun123 pra arruma..!!
Bom tava pensando aqui...só dando uma ideia...não teria como fazer uma outra função sei la..que xecasse a vida do player...e caso ela xegasse a 0 retire o fly e tp ele pro cp..antes da própria funcao do servidor?
E uma duvida....se no login.lua...a parte que faz com que o player volte montado no fly...o que aconteceria se retirasse ela...pra ele voltar sem fly e com o pokemon healado na ball...
Acho que seria impossivel o player logar depois.
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

pra fla a real.. pelo q intendi o player n chega a morre ms.. antes dele morre, acredito eu, a source ja manda o player pro CP, heala a vida dele e desloga ele... acredito q n tem como fazer de outro jeito.. ;x e sobre tirar a parte do fly do login.. oia.. se o player desloga no chao, blz, daria pra fazer o poke volta pra ball e ele sair do fly.. -iria fica estranhu mas..- o problema taria caso ele deslogue voando emcima da agua, montanha... qlqr outra coisa do genero... ;x soh o brun ms pra arruma isso.. eu n INTENDO pq ele fez isso de por na source.. mas.. fazer oq neh? ;/
É tenso kkkk...mas enfim esse n e um bug tao grave....mas ianda e bug...so nos resta esperaro xD
To tentano colocar aquele sistem do barco que se move aqui...sabe se tem como edita ele pra fica indo evindo sozinho?
info
Grupo: Visconde
Registrado: 14/08/11
Posts: 320
Reputação: +34
Gênero: Masculino

Quanto ao não morrer ja tentou morrer com o
registerCreatureEvent(cid, "Death")
pois no creaturescripts/scripts/login.lua ele esta seguido de
--registerCreatureEvent(cid, "Death")
Então eu não testei mas se tirar e testar acho que vai morre normalmente.
@EDIT
Morreu sim rs. perdeu 2lv \o/
obs: que bug é esse do fly e ride?
Editado Fevereiro 9 por SoulOroshie
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

EDIT** Agora sim funcionando 100% trocando a ball no surf depois de morto.. eh soh copiar denovo o login.lua e o exp.lua... ;p
bugs arrumados... aiai.. segue oq fazer..
Para arruma os bugs de morrer de FLY, RIDE, SURF, DIVE...
1* va na pasta creaturescripts/scripts/exp.lua e apague tudo dentro e cole isso no lugar...
local combats = {
[PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC},
[GRASSDAMAGE] = {cor = COLOR_GRASS},
[POISONEDDAMAGE] = {cor = COLOR_GRASS},
[MORTALGASDAMAGE] = {cor = COLOR_POISON},
[FIREDAMAGE] = {cor = COLOR_FIRE2},
[bURNEDDAMAGE] = {cor = COLOR_BURN},
[WATERDAMAGE] = {cor = COLOR_WATER},
[iCEDAMAGE] = {cor = COLOR_ICE},
[NORMALDAMAGE] = {cor = COLOR_NORMAL},
[GUILLOTINEDAMAGE] = {cor = COLOR_NORMAL},
[FLYDAMAGE] = {cor = COLOR_FLYING},
[GHOSTDAMAGE] = {cor = COLOR_GHOST},
[NIGHTMAREDAMAGE] = {cor = COLOR_GHOST},
[GROUNDDAMAGE] = {cor = COLOR_GROUND},
[ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC},
[THUNDERWAVEDAMAGE] = {cor = COLOR_ELECTRIC},
[ROCKDAMAGE] = {cor = COLOR_ROCK},
[bUGDAMAGE] = {cor = COLOR_BUG},
[FIGHTDAMAGE] = {cor = COLOR_FIGHTING},
[sEISMICTOSSDAMAGE] = {cor = COLOR_FIGHTING},
[DRAGONDAMAGE] = {cor = COLOR_DRAGON},
[POISONDAMAGE] = {cor = COLOR_POISON},
[DARKDAMAGE] = {cor = COLOR_DARK},
[sTEELDAMAGE] = {cor = COLOR_STEEL},
}
local function doHeal(cid, amount)
doCreatureAddHealth(cid, amount)
doSendMagicEffect(getThingPos(cid), 12)
doSendAnimatedText(getThingPos(cid), "+"..amount.."", 65)
end
local function sendPlayerDmgMsg(cid, text)
if not isCreature(cid) then return true end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, text)
end
local spcevo = {
["Poliwhirl"] = {"Poliwrath", "Politoed"},
["Gloom"] = {"Bellossom", "Vileplume"},
["Tyrogue"] = {"Hitmonchan", "Hitmontop", "Hitmonlee"}}
local function doEvolveWild(cid)
if not isCreature(cid) or getCreatureHealth(cid) <= 0 then return true end
local name = getCreatureName(cid)
local evolution = "none"
if spcevo[name] then
evolution = spcevo[name][math.random(1, #spcevo[name])]
elseif poevo[name] then
evolution = poevo[name].evolution
end
local a = getPokemonStatus(name)
if not a or evolution == "none" then return true end
local pk = {}
local players = getSpectators(getThingPos(cid), 7, 7)
if players then
for pp = 1, #players do
local this = players[pp]
if isCreature(this) and isPlayer(this) and (getCreatureTarget(this) == cid or getDamageMapPercent(this, cid) > 0) then
doSendMagicEffect(getThingPos(this), 173)
local expstring = cid.."expEx"
pk[this] = getItemAttribute(getPlayerSlotItem(this, 8).uid, expstring)
doItemSetAttribute(getPlayerSlotItem(this, 8).uid, expstring, 0)
end
end
end
local level = getPokemonLevel(cid)
local pos = getThingPos(cid)
local gender = getCreatureSkull(cid)
local lifepercentage = 1 - ((getCreatureHealth(cid) * 1.3) / getCreatureMaxHealth(cid))
local lookdir = getCreatureLookDir(cid)
local status = {}
status.offense = getOffense(cid) + a.off * 8
status.defense = getDefense(cid) + a.def * 8
status.agi = getSpeed(cid) + a.agi * 8
status.spatk = getSpecialAttack(cid) + a.spatk * 8
status.vit = getVitality(cid) + a.vit * 4
doRemoveCreature(cid)
local evo = doCreateMonster(evolution, pos)
setWildPokemonLevel(evo, level, status)
doCreatureSetLookDir(evo, lookdir)
doCreatureSetSkullType(evo, gender)
doCreatureAddHealth(evo, -getCreatureMaxHealth(evo) * lifepercentage)
doSendMagicEffect(getThingPos(evo), 18)
for attacker, experience in pairs (pk) do
doWildAttackPlayer(evo, attacker)
local expstring = evo.."expEx"
local exp = experience or 0
doItemSetAttribute(getPlayerSlotItem(attacker, 8).uid, expstring, exp)
end
sendFinishEvolutionEffect(evo, true)
addEvent(sendFinishEvolutionEffect, 550, evo, true)
addEvent(sendFinishEvolutionEffect, 1050, evo)
end
local races = {
[4] = {cor = COLOR_FIRE2},
[6] = {cor = COLOR_WATER},
[7] = {cor = COLOR_NORMAL},
[8] = {cor = COLOR_FIRE2},
[9] = {cor = COLOR_FIGHTING},
[10] = {cor = COLOR_FLYING},
[11] = {cor = COLOR_GRASS},
[12] = {cor = COLOR_POISON},
[13] = {cor = COLOR_ELECTRIC},
[14] = {cor = COLOR_GROUND},
[15] = {cor = COLOR_PSYCHIC},
[16] = {cor = COLOR_ROCK},
[17] = {cor = COLOR_ICE},
[18] = {cor = COLOR_BUG},
[19] = {cor = COLOR_DRAGON},
[20] = {cor = COLOR_GHOST},
[21] = {cor = COLOR_STEEL},
[22] = {cor = COLOR_DARK},
[1] = {cor = 180},
[2] = {cor = 180},
[3] = {cor = 180},
[5] = {cor = 180},
}
local damages = {MORTALGASDAMAGE, GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE, NIGHTMAREDAMAGE, GUILLOTINEDAMAGE, SEISMICTOSSDAMAGE}
local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE}
local ignored = {NIGHTMAREDAMAGE, GUILLOTINEDAMAGE, MORTALGASDAMAGE, SEISMICTOSSDAMAGE, PSYCHOSHIFTDAMAGE, POISONEDDAMAGE, BURNEDDAMAGE}
local ignoremiss = {NIGHTMAREDAMAGE, MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE}
local ignorecritical = {MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE, NIGHTMAREDAMAGE}
local cannotkill = {MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE, NIGHTMAREDAMAGE}
function onStatsChange(cid, attacker, type, combat, value)
if combat == FLYSYSTEMDAMAGE then return false end
if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV
local damageCombat = combat
if damageCombat == THUNDERWAVEDAMAGE then
damageCombat = ELECTRICDAMAGE
elseif damageCombat == PSYCHOSHIFTDAMAGE then
damageCombat = PSYCHICDAMAGE
end
if getPlayerStorageValue(cid, 33) >= 1 then -- funcionamento do self destruction
if isCreature(attacker) then
return false
end
return true
end
if not isCreature(attacker) or cid == attacker then
if not isInArray(fixdamages, combat) and combats[combat] then
doSendAnimatedText(getThingPos(cid), value, combats[combat].cor)
end
return true
end
--------------------------------------------------
if combat == SLEEP_POWDERDAMAGE then
if not isSummon(cid) and not isSummon(attacker) and not isPlayer(attacker) then
return false
end
if isPlayer(cid) then
return false
end
if isNpcSummon(cid) and getCreatureTarget(cid) ~= attacker then
return false
end
if isSummon(cid) and isSummon(attacker) then
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
return false
end
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
return false
end
end
doSleep(cid, value, true)
return false
end
--------------------------------------------------
if combat == HEALINGDAMAGE then
local healing = math.abs(value)
if not isSummon(cid) and not isSummon(attacker) and not isPlayer(attacker) then
doHeal(cid, healing)
return false
end
if isSummon(cid) and isSummon(attacker) then
if getPlayerStorageValue(getCreatureMaster(cid), 990) >= 1 then
return false
end
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
doHeal(cid, healing)
return false
end
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
doHeal(cid, healing)
return false
end
end
return false
end
--------------------------------------------------
if combat == POISON_POWDERDAMAGE then
if not isSummon(cid) and not isSummon(attacker) and not isPlayer(attacker) then
return false
end
if isNpcSummon(cid) and getCreatureTarget(cid) ~= attacker then
return false
end
if isSummon(cid) and isSummon(attacker) then
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
return false
end
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
return false
end
end
local master = attacker
if isSummon(attacker) then master = getCreatureMaster(attacker) end
addEvent(doAdvancedPoison, 2500, attacker, master, cid, getPlayerStorageValue(attacker, 919231), value, getPlayerStorageValue(cid, 3893))
return false
end
--------------------------------------------------
if isPlayer(attacker) then
local valor = value
if valor > getCreatureHealth(cid) then
valor = getCreatureHealth(cid)
end
if combat == COMBAT_PHYSICALDAMAGE then
return false
end
if combat == PHYSICALDAMAGE then
doSendMagicEffect(getThingPos(cid), 3)
doSendAnimatedText(getThingPos(cid), valor, races[getMonsterInfo(getCreatureName(cid)).race].cor)
end
if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then
doSendAnimatedText(getThingPos(cid), valor, combats[damageCombat].cor)
end
if #getCreatureSummons(attacker) >= 1 and not isInArray({POISONEDDAMAGE, BURNEDDAMAGE}, combat) then
doPlayerSendTextMessage(attacker, MESSAGE_STATUS_DEFAULT, "Your "..getPokeName(getCreatureSummons(attacker)[1]).." dealt "..valor.." damage to "..getSomeoneDescription(cid)..".")
end
return true
end
--------------------------------------------------
if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then
return false
end
--------------------------------------------------
if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then
local valor = 0
if combat == COMBAT_PHYSICALDAMAGE then
valor = getOffense(attacker)
else
valor = getSpecialAttack(attacker)
end
valor = valor * playerDamageReduction
valor = valor * math.random(83, 117) / 100
if valor >= getCreatureHealth(cid) then
valor = getCreatureHealth(cid)
end
valor = math.floor(valor)
if valor >= getCreatureHealth(cid) then
if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then
doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 17000, 0)
setPlayerStorageValue(cid, 17001, 0)
setPlayerStorageValue(cid, 63215, -1)
doChangeSpeed(cid, PlayerSpeed)
local item = getPlayerSlotItem(cid, 8)
local btype = getPokeballType(item.itemid)
if #getCreatureSummons(cid) <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
end
end
end
end
doCreatureAddHealth(cid, -valor, 3, 180)
if not isPlayer(cid) then
addEvent(sendPlayerDmgMsg, 5, cid, "You lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".")
end
return false
end
--------------------------------------------------
if type == STATSCHANGE_HEALTHGAIN then
if cid == attacker then
return true
end
if not isSummon(cid) and isSummon(attacker) then
return false
end
if isSummon(cid) and isSummon(attacker) and getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
return false
end
return true
end
--------------------------------------------------
if isMonster(attacker) and getPlayerStorageValue(attacker, 201) ~= -1 then
if isPlayer(cid) then
return false
end
if getPlayerStorageValue(getCreatureMaster(cid), ginasios[getPlayerStorageValue(attacker, 201)].storage) ~= 1 then
return false
end
end
--------------------------------------------------
if isMonster(cid) and getPlayerStorageValue(cid, 201) ~= -1 then
if getPlayerStorageValue(getCreatureMaster(attacker), ginasios[getPlayerStorageValue(cid, 201)].storage) ~= 1 then
return false
end
end
--------------------------------------------------
--------------------------------------------------
local multiplier = 1
local miss = (getSpeed(cid) - getSpeed(attacker)) * 0.26
local poketype1 = pokes[getCreatureName(cid)].type
local poketype2 = pokes[getCreatureName(cid)].type2
if getCreatureCondition(cid, CONDITION_INVISIBLE) then
return false
end
if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then
if isInArray(effectiveness[damageCombat].super, poketype1) then
multiplier = multiplier * 2
end
if isInArray(effectiveness[damageCombat].super, poketype2) then
multiplier = multiplier * 2
end
if isInArray(effectiveness[damageCombat].weak, poketype1) then
multiplier = multiplier * 0.5
end
if isInArray(effectiveness[damageCombat].weak, poketype2) then
multiplier = multiplier * 0.5
end
if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
multiplier = multiplier * 0
end
elseif combat == COMBAT_PHYSICALDAMAGE then
if isGhostPokemon(cid) and not isGhostPokemon(attacker) then
doSendMagicEffect(getThingPos(cid), 3)
return false
end
if getCreatureCondition(attacker, CONDITION_INVISIBLE) and not isGhostPokemon(attacker) then
if not isInArray({"Clefable", "Wigglytuff"}, getCreatureName(attacker)) then
return false
end
end
if miss > 0 and math.random(1, 100) <= miss and not isSleeping(cid) and not getCreatureCondition(cid, CONDITION_PARALYZE) then
doSendMagicEffect(getThingPos(cid), 211)
doSendAnimatedText(getThingPos(cid), "MISS", 215)
return false
end
end
--------------------------------------------------
local valor = value
if multiplier > 2 then
multiplier = 2
elseif multiplier == 0.25 then
multiplier = 0.5
end
--------------------------------------------------
local function resetMiss(cid)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 88726, -1)
end
if getPlayerStorageValue(cid, 88726) ~= 1 and miss > 0 and math.random(1, 100) <= miss and damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignoremiss, combat) and not isSleeping(cid) and not getCreatureCondition(cid, CONDITION_PARALYZE) then
doSendMagicEffect(getThingPos(cid), 211)
doSendAnimatedText(getThingPos(cid), "MISS", 215)
doTeleportThing(cid, getClosestFreeTile(cid, getThingPos(cid)), false)
doSendMagicEffect(getThingPos(cid), 211)
doFaceCreature(cid, getThingPos(attacker))
setPlayerStorageValue(cid, 88726, 1)
addEvent(resetMiss, 2200, cid)
return false
end
if not isSummon(attacker) and not isSummon(cid) then
return false
end
if isSummon(cid) and isSummon(attacker) then
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
return false
end
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
return false
end
end
if isSleeping(attacker) then
return false
end
local randomRange = math.random(83, 117) / 100
local block = 0
if combat == COMBAT_PHYSICALDAMAGE then
block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid)))
if getPokemonGender(attacker) == SEX_MALE then
block = block + 0.2
end
if getPokemonGender(cid) == SEX_FEMALE then
block = block - 0.2
end
valor = getOffense(attacker) * block
else
block = 1 - (getSpecialDefense(cid) / (getSpecialAttack(attacker) + getSpecialDefense(cid)))
valor = valor * block * generalSpecialAttackReduction
if isSummon(cid) then
valor = valor * summonSpecialDamageReduction - getPokemonLevel(cid) / 2
end
end
valor = valor * multiplier
valor = valor * randomRange
if isSummon(attacker) then
valor = valor * getHappinessRate(attacker)
else
valor = valor * summonReduction
end
valor = math.floor(valor)
if combat == NIGHTMAREDAMAGE then
local div = 8
if isSummon(attacker) and not isSummon(cid) then
div = 4
end
valor = math.floor(getCreatureMaxHealth(cid)/div)
elseif combat == GUILLOTINEDAMAGE then
if isGhostPokemon(cid) then
doSendMagicEffect(getThingPos(cid), 3)
return false
end
local gDmg = 0.5
if isSummon(attacker) and not isSummon(cid) then
gDmg = 0.7
end
valor = getCreatureMaxHealth(cid) * gDmg
elseif combat == SEISMICTOSSDAMAGE then
valor = getPokemonLevel(attacker) * 10
elseif combat == BURNEDDAMAGE then
valor = value * getResistance(cid, FIREDAMAGE)
elseif combat == POISONEDDAMAGE then
valor = value * getResistance(cid, POISONDAMAGE)
end
if valor <= 0 then
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
return false
end
if math.random(1, 100) == 4 and not isInArray(ignorecritical, combat) then
doSendAnimatedText(getThingPos(attacker), "CRITICAL", 215)
valor = valor * 2
end
if combat == PSYCHOSHIFTDAMAGE and isCreature(cid) then
if not isPlayer(cid) then
local pos = getThingPos(cid)
pos.x = pos.x + math.random(-4,4)
pos.y = pos.y + math.random(-4,4)
for a = 1, 6 do
if not canWalkOnPos(pos, true, true, true, true, false) or not isSightClear(getThingPos(cid), pos, false) then
pos = getThingPos(cid)
pos.x = pos.x + math.random(-4,4)
pos.y = pos.y + math.random(-4,4)
end
end
if not canWalkOnPos(pos, true, true, true, true, false) then
pos = getClosestFreeTile(cid, getThingPos(cid))
end
if not canWalkOnPos(pos, true, true, true, true, false) then
pos = getThingPos(cid)
end
doTeleportThing(cid, pos, false)
end
doSendMagicEffect(getThingPos(cid), math.random(12, 14))
end
if combat == THUNDERWAVEDAMAGE then
doCreatureAddCondition(cid, thunderwavecondition)
end
if valor >= getCreatureHealth(cid) then
if isInArray(cannotKill, combat) and isPlayer(cid) then
valor = getCreatureHealth(cid) - 1
else
valor = getCreatureHealth(cid)
end
end
--- REFLECT --------------------------------
if not isPlayer(cid) and getPlayerStorageValue(cid, 34) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE then
doSendMagicEffect(getThingPos(cid), 135)
doSendAnimatedText(getThingPos(cid), "REFLECT", COLOR_GRASS)
setPlayerStorageValue(cid, 34, -1)
return false
end
--------------------------------------------
if hasMimicWall(cid) then
doSendMagicEffect(getThingPos(cid), 135)
local dmgText = ""..valor..""
local a = getPlayerStorageValue(cid, 878)
setPlayerStorageValue(cid, 878, a - valor)
local k = getPlayerStorageValue(cid, 878)
if k <= 0 then
local b = getTileItemById(getThingPos(cid), 11440)
if b.uid > 1 then doRemoveItem(b.uid, 1) end
local c = getTileItemById(getThingPos(cid), 11439)
if c.uid > 1 then doRemoveItem(c.uid, 1) end
dmgText = ""..a..""
doSendMagicEffect(getThingPos(cid), 3)
end
doSendAnimatedText(getThingPos(cid), dmgText, 215)
return false
end
if isSummon(attacker) and not isSummon(cid) and not isPlayer(cid) then
local expstring = cid.."expEx"
if getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, expstring) == null then
doItemSetAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, expstring, 0)
end
local exp = valor / getCreatureMaxHealth(cid)
local ball = getPlayerSlotItem(getCreatureMaster(attacker), 8).uid
doItemSetAttribute(ball, expstring, getItemAttribute(ball, expstring) + exp)
if getItemAttribute(ball, expstring) > 1 then
doItemSetAttribute(ball, expstring, 1)
end
end
if isSummon(cid) and getCreatureHealth(cid) <= (getCreatureMaxHealth(cid)*0.08) and not exhaustion.get(getCreatureMaster(cid), 88726) then
exhaustion.set(getCreatureMaster(cid), 88726, 11)
doSendMagicEffect(getThingPos(cid), 178)
end
if isSummon(attacker) then
if combat == COMBAT_PHYSICALDAMAGE then
doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255)
else
doTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255)
end
if not isSummon(cid) and not isPlayer(cid) and math.random(1, wildEvolveChance) == math.random(1, wildEvolveChance) then
addEvent(doEvolveWild, math.random(1, 2500), cid)
end
else
if combat ~= COMBAT_PHYSICALDAMAGE then
doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)
else
doCreatureAddHealth(cid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(cid)).race].cor)
end
if isSummon(cid) then
addEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Your "..getCreatureName(cid).." lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".")
end
end
local percent = 8 + math.ceil(valor / getCreatureMaxHealth(cid) * 100)
if getCreatureHealth(cid) == 0 or percent <= 0 then return false end
local runCond = false
if math.random(100) <= percent then
runCond = true
end
if runCond then
local condPos = getThingPos(cid)
local color = 215
local text = ""
local effect = 2
if damageCombat == FIREDAMAGE and not isBurning(cid) then
doAdvancedBurn(attacker, isPlayer(getCreatureMaster(attacker)) and getCreatureMaster(attacker) or 0, cid, getPokemonLevel(attacker) * 2, math.random(5, 12))
color = COLOR_FIRE2
text = "BURNING"
effect = 15
elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) and randomCond == checkCond then
doAdvancedPoison(attacker, isPlayer(getCreatureMaster(attacker)) and getCreatureMaster(attacker) or 0, cid, getPokemonLevel(attacker) * 2, math.random(4, 20))
color = COLOR_GRASS
text = "POISONED"
effect = 8
end
doSendMagicEffect(getThingPos(cid), effect)
addEvent(doSendAnimatedText, 5, condPos, text, color)
end
----------------------------------------PASSIVAS-----------------------------------------
------------------------------"Counter Helix" - "Giro Ball"------------------------------
-- [outfit normal] = {out = outfit girando, efeitos}
local OutFit = {
[366] = {out = 496, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --scyther
[912] = {out = 918, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Scizor
[1317] = {out = 849, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Shiny Scyther
[952] = {out = 1193, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Hitmontop
[909] = {out = 1194, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --pineco
[910] = {out = 1192, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Forretress
}
--acima do efeito 255 n aparece -pelo menos aki- entao fica esse por enquanto... ;x
--efeito vermelho => {cima = 261, direita = 263, esquerda = 264, baixo = 262}
if isSummon(cid) then
if OutFit[getCreatureOutfit(cid).lookType] then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local outfitt = OutFit[getCreatureOutfit(cid).lookType]
local function doWingAttack(cid, a, damage, min, max)
local damagearea = {}
local effectpos = getThingPosWithDebug(cid)
local effect = 255
if a == 0 then
effect = outfitt.cima
effectpos.x = effectpos.x + 1
effectpos.y = effectpos.y - 1
damagearea = wingdn
elseif a == 1 then
effect = outfitt.direita
effectpos.x = effectpos.x + 2
effectpos.y = effectpos.y + 1
damagearea = wingde
elseif a == 2 then
effect = outfitt.baixo
effectpos.x = effectpos.x + 1
effectpos.y = effectpos.y + 2
damagearea = wingds
elseif a == 3 then
effect = outfitt.esquerda
effectpos.x = effectpos.x - 1
effectpos.y = effectpos.y + 1
damagearea = wingdw
end
doSendMagicEffect(effectpos, effect)
if damage then
local look = getCreatureOutfit(cid).lookType
if look == 366 or look == 1317 then --scyther e shiny scyther
doAreaCombatHealth(cid, BUGDAMAGE, getThingPosWithDebug(cid), damagearea, -min, -max, CONST_ME_NONE)
elseif look == 952 then --hitmontop
doAreaCombatHealth(cid, FIGHTINGDAMAGE, getThingPosWithDebug(cid), damagearea, -min, -max, CONST_ME_NONE)
else --resto
doAreaCombatHealth(cid, STEELDAMAGE, getThingPosWithDebug(cid), damagearea, -min, -max, CONST_ME_NONE)
end
end
end
local dire = getCreatureLookDir(cid)
local cpos = getThingPosWithDebug(cid)
local min = getWildPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getWildPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSetCreatureOutfit(cid, {lookType = OutFit[getCreatureOutfit(cid).lookType].out}, -1)
local function doDance(cid, dir, damage, min, max)
if not isCreature(cid) then return true end
doCreatureSetLookDir(cid, dir)
doWingAttack(cid, dir, damage, min, max)
end
for times = 0, 2 do
for directions = 0, 3 do
addEvent(doDance, times * 300, cid, directions, true, min, max)
end
end
local function doChangeO(cid, dir, pos)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 32623, 0) --proteçao
doRemoveCondition(cid, CONDITION_OUTFIT)
if getThingPosWithDebug(cid).x == pos.x and getThingPosWithDebug(cid).y == pos.y then
doCreatureSetLookDir(cid, dir)
end
end
addEvent(doChangeO, 2 * 300 + 10, cid, dire, cpos)
end
end
end
-------------------------------------------Passiva de fogo e trovao-------------------------------------
local Fire_Thunder = {"Magmar", "Shiny Magmar", "Electabuzz", "Shiny Electabuzz"}
--["Nome"] = {effeito, damage}
local eff = {
["Magmar"] = {15, FIREDAMAGE},
["Shiny Magmar"] = {15, FIREDAMAGE},
["Electabuzz"] = {207, ELECTRICDAMAGE},
["Shiny Electabuzz"] = {207, ELECTRICDAMAGE},
}
if isSummon(cid) then
local e = getCreatureMaster(cid)
if isInArray(Fire_Thunder, getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local min = getWildPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getWildPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
local function sendFireEff(cid, dir, eff, damage)
if not isCreature(cid) then return true end
doAreaCombatHealth(cid, damage, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, eff)
end
local function doSpinFire(cid)
if not isCreature(cid) then return true end
local t = {
[1] = SOUTHWEST,
[2] = SOUTH,
[3] = SOUTHEAST,
[4] = EAST,
[5] = NORTHEAST,
[6] = NORTH,
[7] = NORTHWEST,
[8] = WEST,
[9] = SOUTHWEST,
}
for a = 1, 17 do
if not t[a] then
addEvent(sendFireEff, a * 140, cid, t[a-8], eff[getCreatureName(cid)][1], eff[getCreatureName(cid)][2])
else
addEvent(sendFireEff, a * 140, cid, t[a], eff[getCreatureName(cid)][1], eff[getCreatureName(cid)][2])
end
end
setPlayerStorageValue(cid, 32623, 0) --proteçao
end
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSpinFire(cid, false, cid)
end
end
end
---------------------------------------------passiva Hitmonlee----------------------------------
--[outfit] = outfit chutando,
local hitmonlees = {
[371] = 652, --hitmonlee
[1300] = 652, --shiny hitmonlee
[877] = 878, --elite hitmonlee PxG
}
--DETALHE: shiny hitmonlee n tem a sprite dele chutando.. pelo menos eu n achei..
--entao deixei a sprite do hitmonlee normal atacando...
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Shiny Hitmonlee" or name == "Hitmonlee" then
if isCreature(getCreatureTarget(getCreatureMaster(cid))) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if isSleeping(cid) then return true end
if getDistanceBetween(getThingPos(cid), getThingPos(getMasterTarget(cid))) > 1 then
return false
end
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local function doChangeHitmon(cid)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 32623, 0) --proteçao
doRemoveCondition(cid, CONDITION_OUTFIT)
end
local min = getWildPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getWildPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSetCreatureOutfit(cid, {lookType = hitmonlees[getCreatureOutfit(cid).lookType]}, -1)
doTargetCombatHealth(cid, getMasterTarget(cid), FIGHTINGDAMAGE, -min, -max, 255)
addEvent(doChangeHitmon, 700, cid)
end
end
end
end
-------------------------------------------Passiva Hitmonchan-------------------------------------
local hitmonchans = {
["Hitmonchan"] = {
[0] = {out = 559, eff = 112, type = FIGHTINGDAMAGE}, --outfit normal
[1] = {out = 1075, eff = 35, type = FIREDAMAGE}, --outfit fogo
[2] = {out = 1077, eff = 48, type = ELECTRICDAMAGE}, --outfit raio
[3] = {out = 1078, eff = 43, type = ICEDAMAGE}, --outfit gelo
[4] = {out = 1076, eff = 140, type = GHOSTDAMAGE} --outfit ghost
},
["Shiny Hitmonchan"] = {
--aconcelho trocar a outfit do shiny hitmonchan pela do elite hitmonchan do PO...
[0] = {out = 837, eff = 112, type = FIGHTINGDAMAGE}, --outfit normal
[1] = {out = 1080, eff = 35, type = FIREDAMAGE}, --outfit fogo
[2] = {out = 1081, eff = 48, type = ELECTRICDAMAGE}, --outfit raio
[3] = {out = 1082, eff = 43, type = ICEDAMAGE}, --outfit gelo
[4] = {out = 1079, eff = 140, type = GHOSTDAMAGE} --outfit ghost
}
}
local monchanOUT = {837, 1080, 1081, 1082, 1079}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Shiny Hitmonchan" or name == "Hitmonchan" then
if isCreature(getCreatureTarget(getCreatureMaster(cid))) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if isSleeping(cid) then return true end
if getDistanceBetween(getThingPos(cid), getThingPos(getMasterTarget(cid))) > 1 then
return false
end
if getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke") == "Shiny Hitmonchan" and not isInArray(monchanOUT, getCreatureOutfit(cid).lookType) then
return false --proteçao pro script n funcionar com o shiny monchan com outfit diferente da do elite...
end --script soh funciona com outfit do elite hirmonchan do PO...
local min = getWildPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getWildPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
local hands = getItemAttribute(getPlayerSlotItem(e, 8).uid, "hands")
doSendDistanceShoot(getThingPos(cid), getThingPos(getMasterTarget(cid)), 39)
doTargetCombatHealth(cid, getMasterTarget(cid), hitmonchans[name][hands].type, -min, -max, 255)
local target = getThingPos(getMasterTarget(cid))
target.x = target.x + 1
if hands == 4 then
doSendMagicEffect(target, hitmonchans[name][hands].eff)
else
doSendMagicEffect(getThingPos(getMasterTarget(cid)), hitmonchans[name][hands].eff)
end
end
end
end
end
-------------------------------------------passiva psyduck e golcuck------------------------------------------
local ducks = {"Golduck", "Psyduck", "Shiny Golduck", "Shiny Psyduck"}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if isInArray(ducks, name) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local min = getWildPokemonLevel(cid)*5 --nao sei como funciona o sistema de dano...
local max = getWildPokemonLevel(cid)*10 --nao sei como funciona o sistema de dano...
local function damage(cid)
if isCreature(cid) then
setPlayerStorageValue(cid, 32623, 1) --proteçao
doAreaCombatHealth(cid, PSYCHICDAMAGE, getThingPosWithDebug(cid), confusion, -min, -max, 136)
end
end
for i = 1, 7 do
addEvent(damage, i*500, cid)
end
setPlayerStorageValue(cid, 32623, 0) --proteçao
end
end
end
-----------------------------------------passiva kangaskhan-----------------------------------
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Kangaskhan" or name == "Shiny Kangaskhan" then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
local min = getWildPokemonLevel(cid)*10 --nao sei como funciona o sistema de dano...
local max = getWildPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), eshock, -min, -max, 255)
local sps = getThingPosWithDebug(cid)
sps.x = sps.x+1
sps.y = sps.y+1
doSendMagicEffect(sps, 127)
end
end
end
--------------------------------------passiva raichu---------------------------------------------------
arr = {
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 2, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1}
}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
local target = 0
if name == "Raichu" or name == "Shiny Raichu" then
if getPlayerStorageValue(cid, 253) >= 0 then
return true
end
local uid = checkAreaUid(getCreaturePosition(cid), arr, 1, 1)
for _,pid in pairs(uid) do
if isCreature(pid) then
if getCreatureTarget(pid) == cid then
target = target+1
end
end
end
if target == 0 then
return true
end
if target == (1 or 2) then
chance = 15 --15%
elseif target == (3 or 4) then
chance = 20 --20%
elseif target == (5 or 6) then
chance = 30 --30%
end
if math.random(1, 100) <= chance then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
setPlayerStorageValue(cid, 253, 1)
doSendAnimatedText(getThingPos(cid), "FOCUS", 144)
end
end
end
-------------------------------------passiva wiggly------------------------------------
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Wigglytuff" or name == "Shiny Wigglytuff" then
if math.random(1, 100) <= 10 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
doAreaCombatHealth(cid, SLEEP_POWDERDAMAGE, getThingPosWithDebug(cid), powders, -6, -10, 33)
end
end
end
------------------------------------- /PASS DRAGON ---------------------------------------
local DracoFury = {"Gyarados", "Shiny Gyarados", "Dratini", "Shiny Dratini", "Dragonair", "Shiny Dragonair", "Dragonite", "Shiny Dragonite"}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if isInArray(DracoFury, name) then
if math.random(1, 100) <= 10 then --Chance 4 = 4% Acho, Mais Fica A Sua Escolha
if getPlayerStorageValue(cid, 32623) == 1 then
return false
end
local function effect(params)
if isCreature(params.cid) then
doSendMagicEffect(getThingPos(params.cid), 12)
end
end
setPlayerStorageValue(cid, 32623, 1)
local function doReduceOffenseDefense(cid, qnt)
if not isCreature(cid) then return true end
local a = getDefense(cid)
local A = getOffense(cid)
setPlayerStorageValue(cid, 1002, a - qnt)
setPlayerStorageValue(cid, 1001, A - qnt)
end
local function doDoubleOffenseDefense(cid)
if not isCreature(cid) then return true end
local a = getDefense(cid)
local A = getOffense(cid)
setPlayerStorageValue(cid, 1002, a * 2)
setPlayerStorageValue(cid, 1001, A * 1.5)
local b = getDefense(cid)
local c = b - a
local B = getOffense(cid)
local C = B - A
addEvent(doReduceOffenseDefense, 15 * 1500 + 40, cid, c)
addEvent(doReduceOffenseDefense, 15 * 1500 + 40, cid, C)
end
setPlayerStorageValue(cid, 32623, 0)
doDoubleOffenseDefense(cid)
for times = 0, 15 do
addEvent(effect, 1500 * times + 40, {cid = cid})
end
setPlayerStorageValue(cid, 32623, 1)
end
end
end
return false
end
depois continue na pasta creaturescript/script/ e abra o arquivo login.lua e substitua oq estiver dentro por isso..
local config = {
loginMessage = getConfigValue('loginMessage'),
useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}
local flys = {
["Moltres"] = {229, 2300}, -- moltres
["Articuno"] = {230, 2100}, -- artic
["Zapdos"] = {224, 2600}, -- zapdos
["Mew"] = {232, 2200}, -- 1000
["Mewtwo"] = {233, 2200},-- two
["Dragonite"] = {221, 1300},-- nite
["Pidgeot"] = {222, 900}, -- geot
["Fearow"] = {226, 800}, -- fearow
["Aerodactyl"] = {227, 1100}, -- aero
["Charizard"] = {216, 1000}, -- chari
["Porygon"] = {316, 600}, -- porygon
["Shiny Moltres"] = {229, 2300}, -- Shiny moltres
["Shiny Articuno"] = {1018, 2100}, -- Shiny artic
["Shiny Zapdos"] = {1019, 2600}, -- Shiny zapdos
["Shiny Mew"] = {1022, 2200}, -- Shiny 1000
["Shiny Mewtwo"] = {1021, 2200},-- Shiny two
["Shiny Dragonite"] = {1020, 1300},-- Shiny nite
["Shiny Pidgeot"] = {996, 900}, -- Shiny geot
["Shiny Fearow"] = {997, 800}, -- Shiny fearow
["Shiny Aerodactyl"] = {1017, 1100}, -- Shiny aero
["Shiny Charizard"] = {995, 1000}, -- Shiny chari
["Shiny Porygon"] = {1016, 600}, -- Shiny porygon
["Porygon2"] = {648, 890}, -- 2
["Skarmory"] = {649, 1000}, -- skarmory
["Crobat"] = {652, 1190}, -- crobat
}
local rides = {
["Tauros"] = {128, 580}, -- tauros
["Ninetales"] = {129, 800}, -- kyuubi
["Rapidash"] = {130, 800}, -- rapid
["Ponyta"] = {131, 410}, -- ponyta
["Rhyhorn"] = {132, 400}, -- rhyhorn
["Arcanine"] = {12, 900}, -- arcan
["Onix"] = {126, 450}, -- onix
["Venusaur"] = {134, 390}, -- venu
["Dodrio"] = {133, 750}, -- dodrio
["Doduo"] = {135, 420}, -- doduo
["Shiny Tauros"] = {1024, 580}, -- tauros
["Shiny Ninetales"] = {999, 800}, -- kyuubi
["Shiny Rapidash"] = {1005, 800}, -- rapid
["Shiny Ponyta"] = {1004, 410}, -- ponyta
["Shiny Rhyhorn"] = {1023, 400}, -- rhyhorn
["Shiny Arcanine"] = {1003, 900}, -- arcan
["Shiny Onix"] = {126, 450}, -- onix
["Shiny Venusaur"] = {1040, 390}, -- venu
["Shiny Dodrio"] = {1007, 750}, -- dodrio
["Shiny Doduo"] = {1006, 420}, -- doduo
["Crystal Onix"] = {293, 480}, -- cristal onix
["Steelix"] = {646, 750}, -- steelix
["Meganium"] = {685, 720}, -- meganium
["Bayleef"] = {686, 555}, -- bayleef
["Stantler"] = {687, 595}, -- stantler
["Houndoom"] = {647, 820}, -- houndoom
["Piloswine"] = {689, 450}, -- piloswine
["Mareep"] = {688, 400}, -- marip
}
local surf = {
["Poliwag"] = {lookType=278, speed = 320},
["Poliwhirl"] = {lookType=137, speed = 480},
["Seaking"] = {lookType=269, speed = 520},
["Dewgong"] = {lookType=183, speed = 700},
["Blastoise"] = {lookType=184, speed = 850},
["Tentacruel"] = {lookType=185, speed = 750},
["Lapras"] = {lookType=186, speed = 960},
["Gyarados"] = {lookType=187, speed = 1050},
["Omastar"] = {lookType=188, speed = 680},
["Kabutops"] = {lookType=189, speed = 840},
["Poliwrath"] = {lookType=190, speed = 680},
["Vaporeon"] = {lookType=191, speed = 800},
["Staryu"] = {lookType=266, speed = 385},
["Starmie"] = {lookType=267, speed = 685},
["Goldeen"] = {lookType=268, speed = 355},
["Seadra"] = {lookType=270, speed = 655},
["Golduck"] = {lookType=271, speed = 760},
["Squirtle"] = {lookType=273, speed = 365},
["Wartortle"] = {lookType=275, speed = 605},
["Tentacool"] = {lookType=277, speed = 340},
["Snorlax"] = {lookType=300, speed = 500},
["Shiny Poliwag"] = {lookType=1010, speed = 320},
["Shiny Poliwhirl"] = {lookType=1011, speed = 480},
["Shiny Seaking"] = {lookType=1027, speed = 520},
["Shiny Dewgong"] = {lookType=1015, speed = 700},
["Shiny Blastoise"] = {lookType=1002, speed = 850},
["Shiny Tentacruel"] = {lookType=1014, speed = 750},
["Shiny Lapras"] = {lookType=1031, speed = 960},
["Shiny Gyarados"] = {lookType=1030, speed = 1050},
["Shiny Omastar"] = {lookType=1033, speed = 680},
["Shiny Kabutops"] = {lookType=1034, speed = 840},
["Shiny Poliwrath"] = {lookType=1012, speed = 680},
["Shiny Vaporeon"] = {lookType=1032, speed = 800},
["Shiny Staryu"] = {lookType=1028, speed = 385},
["Shiny Starmie"] = {lookType=1029, speed = 685},
["Shiny Goldeen"] = {lookType=1026, speed = 355},
["Shiny Seadra"] = {lookType=1025, speed = 655},
["Shiny Golduck"] = {lookType=1009, speed = 760},
["Shiny Squirtle"] = {lookType=1000, speed = 365},
["Shiny Wartortle"] = {lookType=1001, speed = 605},
["Shiny Tentacool"] = {lookType=1013, speed = 340},
["Shiny Snorlax"] = {lookType=1035, speed = 500},
["Mantine"] = {lookType=636, speed = 820},
["Totodile"] = {lookType=637, speed = 360},
["Croconow"] = {lookType=638, speed = 590},
["Feraligatr"] = {lookType=645, speed = 900},
["Marill"] = {lookType=639, speed = 340},
["Azumarill"] = {lookType=642, speed = 680},
["Quagsire"] = {lookType=643, speed = 740},
["Kingdra"] = {lookType=644, speed = 1020},
["Octillery"] = {lookType=641, speed = 600},
["Wooper"] = {lookType=640, speed = 315},
}
function onLogin(cid)
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 100)
doCreatureSetDropLoot(cid, false)
local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
str = str
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
elseif(accountManager == MANAGER_NAMELOCK) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
elseif(accountManager == MANAGER_ACCOUNT) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
end
if getCreatureName(cid) == "Account Manager" then
local outfit = {}
if accountManagerRandomPokemonOutfit then
outfit = {lookType = getPokemonXMLOutfit(oldpokedex[math.random(151)][1])}
else
outfit = accountManagerOutfit
end
doSetCreatureOutfit(cid, outfit, -1)
return true
end
if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
end
local outfit = {}
if getPlayerVocation(cid) == 0 then
doPlayerSetMaxCapacity(cid, 0)
doPlayerSetVocation(cid, 1)
setPlayerStorageValue(cid, 86228, 0)
setPlayerStorageValue(cid, 862281, 0)
setCreatureMaxMana(cid, 6)
doPlayerAddSoul(cid, -getPlayerSoul(cid))
setPlayerStorageValue(cid, 19898, 0)
if getCreatureOutfit(cid).lookType == 128 then
outfit = {lookType = 510, lookHead = math.random(0, 132), lookBody = math.random(0, 132), lookLegs = math.random(0, 132), lookFeet = math.random(0, 132)}
elseif getCreatureOutfit(cid).lookType == 136 then
outfit = {lookType = 511, lookHead = math.random(0, 132), lookBody = math.random(0, 132), lookLegs = math.random(0, 132), lookFeet = math.random(0, 132)}
end
doCreatureChangeOutfit(cid, outfit)
end
registerCreatureEvent(cid, "WatchTv")
registerCreatureEvent(cid, "StopWatchingTv")
registerCreatureEvent(cid, "WalkTv")
registerCreatureEvent(cid, "RecordTv")
--registerCreatureEvent(cid, "deadd")
--registerCreatureEvent(cid, "Death")
registerCreatureEvent(cid, "PlayerLogout")
registerCreatureEvent(cid, "WildAttack")
registerCreatureEvent(cid, "Idle")
registerCreatureEvent(cid, "PokemonIdle")
registerCreatureEvent(cid, "EffectOnAdvance")
registerCreatureEvent(cid, "GeneralConfiguration")
registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, "LookSystem")
registerCreatureEvent(cid, "T1")
registerCreatureEvent(cid, "T2")
if getPlayerStorageValue(cid, 99284) == 1 then
setPlayerStorageValue(cid, 99284, -1)
end
doChangeSpeed(cid, -(getCreatureSpeed(cid)))
if getPlayerStorageValue(cid, 17000) >= 1 then -- fly
local item = getPlayerSlotItem(cid, 8)
local poke = getItemAttribute(item.uid, "poke")
doChangeSpeed(cid, getPlayerStorageValue(cid, 54844))
doRemoveCondition(cid, CONDITION_OUTFIT)
doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1)
local apos = getFlyingMarkedPos(cid)
apos.stackpos = 0
if getTileThingByPos(apos).itemid <= 2 then
doCombatAreaHealth(cid, FIREDAMAGE, getFlyingMarkedPos(cid), 0, 0, 0, CONST_ME_NONE)
doCreateItem(460, 1, getFlyingMarkedPos(cid))
end
doTeleportThing(cid, apos, false)
local posicao = getTownTemplePosition(getPlayerTown(cid))
markFlyingPos(cid, posicao)
elseif getPlayerStorageValue(cid, 63215) >= 1 then -- surf
local item = getPlayerSlotItem(cid, 8)
local poke = getItemAttribute(item.uid, "poke")
doSetCreatureOutfit(cid, {lookType = surf[poke].lookType + 351}, -1)
doChangeSpeed(cid, getPlayerStorageValue(cid, 54844))
elseif getPlayerStorageValue(cid, 17001) >= 1 then -- ride
local item = getPlayerSlotItem(cid, 8)
local poke = getItemAttribute(item.uid, "poke")
if rides[poke] then
doChangeSpeed(cid, getPlayerStorageValue(cid, 54844))
doRemoveCondition(cid, CONDITION_OUTFIT)
doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1)
else
setPlayerStorageValue(cid, 17001, -1)
doChangeSpeed(cid, PlayerSpeed)
end
local posicao2 = getTownTemplePosition(getPlayerTown(cid))
markFlyingPos(cid, posicao2)
elseif getPlayerStorageValue(cid, 13008) >= 1 then -- dive
if not isInArray({5405, 5406, 5407, 5408, 5409, 5410}, getTileInfo(getThingPos(cid)).itemid) then
setPlayerStorageValue(cid, 13008, 0)
doChangeSpeed(cid, PlayerSpeed)
doRemoveCondition(cid, CONDITION_OUTFIT)
return true
end
if getPlayerSex(cid) == 1 then
doSetCreatureOutfit(cid, {lookType = 1034, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet}, -1)
else
doSetCreatureOutfit(cid, {lookType = 1035, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet}, -1)
end
doChangeSpeed(cid, 800)
elseif getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 7 then
doChangeSpeed(cid, 140*getPlayerGroupId(cid))
else
doChangeSpeed(cid, PlayerSpeed)
end
return true
end
em seguida.. pra quem quiser o DIVE SYSTEM 100% trocando de outfit e continuando com outfit depois de da logout.. segue abaixo..
vah a pasta talkactions/scripts/ quem ja estiver com os scripts do DIVE so troque os arquivos... quem ainda n estiver com o sistema de DIVE e quiser coloca-lo crie 2 arquivos .lua na pasta talkactions com o nome <-> !dive.lua e !back.lua <-> e cole isso dentro deles..
!dive.lua ...
function onSay(cid, words, param, channel)
if getPlayerStorageValue(cid,63215) >=1 then
pos = getCreaturePosition(cid)
if pos.z ~= 7 then return false end
npos = {x=pos.x, y=pos.y, z=pos.z + 1}
local grounds = {5405, 5406, 5407, 5408, 5409, 5410}
if (not isInArray(grounds, getTileThingByPos(npos).itemid)) then
return doPlayerSendCancel(cid, "You cannot dive here.")
end
if doTeleportThing(cid, npos) then
doSendMagicEffect(npos, 14)
if getPlayerSex(cid) == 1 then
doSetCreatureOutfit(cid, {lookType = 1034, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)
else
doSetCreatureOutfit(cid, {lookType = 1035, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)
end
setPlayerStorageValue(cid, 63215, 0)
setPlayerStorageValue(cid, 13008, 1)
local item = getPlayerSlotItem(cid, 8)
local pokemon = getItemAttribute(item.uid, "poke")
local x = pokes[pokemon]
if getItemAttribute(item.uid, "nick") then
doCreatureSay(cid, "".."Good job "..getItemAttribute(item.uid, "nick").." !", 1)
else
doCreatureSay(cid, "".."Good job "..getItemAttribute(item.uid, "poke").." !", 1)
end
local pk = getCreatureSummons(cid)[1]
doChangeSpeed(pk, getCreatureSpeed(cid)+300)
doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, PlayerSpeed+300)
doTeleportThing(pk, getThingPos(cid), true)
doCreatureSetLookDir(pk, getCreatureLookDir(cid))
adjustStatus(pk, item.uid, true, false, true)
end
else
return doPlayerSendCancel(cid, "You cannot dive here.")
end
return TRUE
end
!back.lua ...
function onSay(cid, words, param, channel)
divepos = getCreaturePosition(cid)
npos2 = getPlayerMasterPos(cid)
poszao = {x=divepos.x, y=divepos.y, z=7}
pos = getCreaturePosition(cid)
local waters = {11756, 4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}
local poke = {'Poliwag', 'Poliwhirl', 'Seaking', 'Dewgong', 'Blastoise', 'Tentacruel', 'Lapras', 'Gyarados', 'Omastar', 'Kabutops',
'Vaporeon', 'Staryu', 'Starmie', 'Goldeen', 'Seadra', 'Golduck', 'Squirtle', 'Wartortle', 'Tentacool', 'Snorlax', 'Poliwrath', 'Shiny Poliwag',
'Shiny Poliwhirl', 'Shiny Seaking', 'Shiny Dewgong', 'Shiny Blastoise', 'Shiny Tentacruel', 'Shiny Lapras', 'Shiny Gyarados', 'Shiny Omastar',
'Shiny Kabutops', 'Shiny Vaporeon', 'Shiny Staryu', 'Shiny Starmie', 'Shiny Goldeen', 'Shiny Seadra', 'Shiny Golduck', 'Shiny Squirtle',
'Shiny Wartortle', 'Shiny Tentacool', 'Shiny Snorlax', 'Shiny Poliwrath', "Mantine", "Totodile", "Croconow", "Feraligatr", "Marill",
"Azumarill", "Quagsire", "Wooper", "Octillery", "Kingdra"}
if getCreatureOutfit(cid).lookType == 316 or getCreatureOutfit(cid).lookType == 648 then
doSendMagicEffect(fromPosition, 136)
end
if (getPlayerStorageValue(cid, 63215) >= 1 or getPlayerStorageValue(cid, 17000) >= 1) then
return true
end
if #getCreatureSummons(cid) == 0 then
doPlayerSendCancel(cid, "You need a pokemon to dive.")
return true
end
if (not isInArray(poke, getPokemonName(getCreatureSummons(cid)[1]))) then
doPlayerSendCancel(cid, "This pokemon cannot dive.")
return true
end
if (not isInArray(waters, getTileThingByPos(poszao).itemid)) then
doPlayerSendCancel(cid, "You cant up here.")
return true
end
if pos.z >= 8 then
if doTeleportThing(cid, poszao) == true then
doSendMagicEffect(poszao, 14)
end
else return print("Erro ao utilizar comando !back")
end
if pos.z <=7 then
doPlayerSendCancel(cid, "Você precisa estar mergulhando para usar este comando.")
return true
end
setPlayerStorageValue(cid, 13008, 0)
end
depois volte na pasta talkactions.. e abra o arquivo talkactions.xml.. e adicione essas 2 tags.. lembrando q essa parte eh soh pra quem n tem ainda o sistema de DIVE...
<talkaction words="!dive" event="script" value="!dive.lua"/> <talkaction words="!back" event="script" value="!back.lua"/>
lembrando denovo... os sistemas n fui eu q criei, soh editei eles.. creditos pros criadores dos scripts, q n lembro agora sorry... qlqr bug reporte!!
Editado Fevereiro 9 por Slicer
Quanto ao não morrer ja tentou morrer com o
registerCreatureEvent(cid, "Death")pois no creaturescripts/scripts/login.lua ele esta seguido de
--registerCreatureEvent(cid, "Death")
Então eu não testei mas se tirar e testar acho que vai morre normalmente.
EDIT
Morreu sim rs. perdeu 2lv \o/
obs: que bug é esse do fly e ride?
Qnd vc esta de fly e reloga ainda de fly...quando vc estiver voando por ai e morrer montado no fly...vc vai voltar no lugar em vc deslogo montado em fly...é quase e um meio de salva uma posição,,,,






info
Grupo: Cavaleiro
Registrado: 14/08/11
Posts: 154
Reputação: +10
data/movements/scripts/drown.lua ctrl + f procure por -20 troque por 0 ai não vai perde life, agora aumenta a velo não sei!