Ir para conteúdo

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


lucashgas

Posts Recomendados

Como eu tiro level system? Que ao inves de ser baseado nos status, seja baseado no level do player (Igual PXG) Valendo REP+

 

Cara é quase impossivel tirar o lv system do servidor, entendam isso.

Link para o comentário
Compartilhar em outros sites

Bug in Console :

 

 

[05/02/2012 15:42:10] [Error - CreatureScript Interface]

[05/02/2012 15:42:10] data/creaturescripts/scripts/shiny.lua:onThink

[05/02/2012 15:42:10] Description:

[05/02/2012 15:42:10] data/creaturescripts/scripts/shiny.lua:2: bad argument #2 to 'random' (number expected, got nil)

[05/02/2012 15:42:10] stack traceback:

[05/02/2012 15:42:10] [C]: in function 'random'

[05/02/2012 15:42:10] data/creaturescripts/scripts/shiny.lua:2: in function <data/creaturescripts/scripts/shiny.lua:1>

 

 

Please help me.I am english player ;(

Link para o comentário
Compartilhar em outros sites

Como eu tiro level system? Que ao inves de ser baseado nos status, seja baseado no level do player (Igual PXG) Valendo REP+

 

pra vc tirar level system vc tem que ter as sources e quem tem acc as sources

só brun123 só ele pode fazer isso :)

Link para o comentário
Compartilhar em outros sites

@ALL

Ae pessoal coloquei o Dive System que o picachul disponibilizou, só q dou goto no gyarados que está no fundo do mar e solto meu tentacruel e dou !dive e fica falando isso You cannot dive here.

Alguem pode me ajudar?

REP+

Link para o comentário
Compartilhar em outros sites

@Slicer

Eu instalei o seu sistema de Ataques Passivos, e depois disso os pokemons (summons) nao estao batendo hit nenhum, eles usar o poder so que nao tira vida do poke que estou atacando. Esta aparecendo o seguinte erro:

 

 

 


[05/02/2012 15:09:42] [Error - CreatureScript Interface] 
[05/02/2012 15:09:42] data/creaturescripts/scripts/exp.lua:onStatsChange
[05/02/2012 15:09:42] Description: 
[05/02/2012 15:09:42] data/lib/some functions.lua:270: attempt to compare nil with number
[05/02/2012 15:09:42] stack traceback:
[05/02/2012 15:09:42]  data/lib/some functions.lua:270: in function 'getHappinessRate'
[05/02/2012 15:09:42]  data/creaturescripts/scripts/exp.lua:427: in function <data/creaturescripts/scripts/exp.lua:129>

 

 

 

Eu fiz uma pequena edição no exp.lua (na linha 130), mas nao acho que possa ser isso. Mesmo assim estou colocando abaixo o meu exp.lua:

 

 


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 (isPlayer(getCreatureMaster(cid))) then
       doCreatureExecuteTalkAction(getCreatureMaster(cid), "/pokeread")
   end

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)

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, hitmonchans[name][hands].eff)

     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

return false
end

 

 

 

Desde já Agradeço

Link para o comentário
Compartilhar em outros sites

Tipo eu tenho todos os portraid configurado no item.otb so que não consigo colocar na barra de colldown. Onde eu configuro a imagem dessa barra ? Os poke normais ja venho certo, isso so com os shinys.

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

Tipo eu tenho todos os portraid configurado no item.otb so que não consigo colocar na barra de colldown. Onde eu configuro a imagem dessa barra ? Os poke normais ja venho certo, isso so com os shinys.

 

vc tem que entender sobre scripts

para editar fica em

 

data\lib\cooldown bar.lua

Link para o comentário
Compartilhar em outros sites

Tipo eu tenho todos os portraid configurado no item.otb so que não consigo colocar na barra de colldown. Onde eu configuro a imagem dessa barra ? Os poke normais ja venho certo, isso so com os shinys.

 

vc tem que entender sobre scripts

para editar fica em

 

data\lib\cooldown bar.lua

Eu tenho uma noção média, vou tentar aqui.Vlws.

Link para o comentário
Compartilhar em outros sites

@yahooABC

manin.. nenhum poke ta batendo nd? seja skill, atk fisico ou passiva? tem certeza q n mexese em nd no sistema de happy? pq como podes ver o erro da quando ele tenta pegar a "felicidade" do poke... e denovo.. aki ta funcionando 100% do jeito q eu postei.. e tu eh o 2* a postar q os pokes n tao dando dano... -2* de +/- 60 q baixaram...- entao acredito q tu tenha mexido em algu.. ;x em outro lugar talvez...

 

@Maguito

lembrando q o ID usado na barra de CD n eh o ID do items.otb... e sim do .dat...

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

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