Ir para conteúdo

Ajuda, Spell De Transformação


akiraspirith

Posts Recomendados

eu to fazendo um sistema de transformação no meu ot, quero fazer com que o player transforme-se em um determinado monstro por algum tempo, o script eh esse:

 

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)

setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)

 

local condition = createConditionObject(CONDITION_ATTRIBUTES)

setConditionParam(condition, CONDITION_PARAM_SUBID, 1)

setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)

setConditionParam(condition, CONDITION_PARAM_TICKS, 2 * 60 * 1000)

setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, -10)

 

local combat2 = createCombatObject()

setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)

setCombatParam(combat2, COMBAT_PARAM_AGGRESSIVE, FALSE)

 

local condition2 = createConditionObject(CONDITION_REGENERATION)

setConditionParam(condition2, CONDITION_PARAM_SUBID, 2)

setConditionParam(condition2, CONDITION_PARAM_BUFF, TRUE)

setConditionParam(condition2, CONDITION_PARAM_TICKS, 2 * 60 * 1000)

setConditionParam(condition2, CONDITION_PARAM_HEALTHGAIN, 25)

setConditionParam(condition2, CONDITION_PARAM_HEALTHTICKS, 1500)

 

local combat3 = createCombatObject()

setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)

setCombatParam(combat3, COMBAT_PARAM_AGGRESSIVE, FALSE)

 

local condition3 = createConditionObject(CONDITION_ATTRIBUTES)

setConditionParam(condition3, CONDITION_PARAM_SUBID, 3)

setConditionParam(condition3, CONDITION_PARAM_BUFF, TRUE)

setConditionParam(condition3, CONDITION_PARAM_TICKS, 2 * 60 * 1000)

setConditionParam(condition3, CONDITION_PARAM_STAT_MAGICLEVEL, 2)

 

function onCastSpell(cid, var,param)

pos = getCreaturePosition(cid)

 

local mana = (400)

if getCreatureMana(cid) then (essa eh a linha q esta dando erro)

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)

doSendMagicEffect(pos, CONST_ME_POFF)

return LUA_ERROR

end

if(doCombat(cid, combat, var) ~= LUA_NO_ERROR) then

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

doSendMagicEffect(pos, CONST_ME_POFF)

 

return LUA_ERROR

end

doSetCreatureOutfit(cid,{lookType = 16, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = getCreatureOutfit(cid).lookAddons},2 * 60 * 1000)

doAddCondition(cid, condition)

if param == bixos[1]

then

end

doAddCondition(cid, condition2)

doAddCondition(cid, condition3)

doCreatureAddMana(cid, -mana, FALSE)

doPlayerAddSpentMana(cid, mana)

return LUA_NO_ERROR

end

 

O ERRO Q ESTA DANDO EH ESSE:

 

data/spells/scripts/druidbear.lua:36: attempt to call global 'getCreatureMana' (a nil value)

 

por favor alguem me ajude

Link para o comentário
Compartilhar em outros sites

amigo double topic nao é permitido

tome mais cuidado quando for postar

e espere até que alguem possa resolver seu pedido

 

estarei reportando para que fechem o outro topico

abraços

 

Link para o comentário
Compartilhar em outros sites

Substitua por este:

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 2 * 60 * 1000)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, -10)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
setCombatParam(combat2, COMBAT_PARAM_AGGRESSIVE, FALSE)

local condition2 = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition2, CONDITION_PARAM_SUBID, 2)
setConditionParam(condition2, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition2, CONDITION_PARAM_TICKS, 2 * 60 * 1000)
setConditionParam(condition2, CONDITION_PARAM_HEALTHGAIN, 25)
setConditionParam(condition2, CONDITION_PARAM_HEALTHTICKS, 1500)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
setCombatParam(combat3, COMBAT_PARAM_AGGRESSIVE, FALSE)

local condition3 = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition3, CONDITION_PARAM_SUBID, 3)
setConditionParam(condition3, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition3, CONDITION_PARAM_TICKS, 2 * 60 * 1000)
setConditionParam(condition3, CONDITION_PARAM_STAT_MAGICLEVEL, 2)

function onCastSpell(cid, var,param)
pos = getCreaturePosition(cid)

local mana = 400
if getPlayerMana(cid) < mana then 
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)
doSendMagicEffect(pos, CONST_ME_POFF)
return LUA_ERROR
end
if(doCombat(cid, combat, var) ~= LUA_NO_ERROR) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
doSendMagicEffect(pos, CONST_ME_POFF)

return LUA_ERROR
end
doSetCreatureOutfit(cid,{lookType = 16, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = getCreatureOutfit(cid).lookAddons},2 * 60 * 1000)
doAddCondition(cid, condition)
if param == bixos[1]
then
end
doAddCondition(cid, condition2)
doAddCondition(cid, condition3)
doCreatureAddMana(cid, -mana, FALSE)
doPlayerAddSpentMana(cid, mana)
return LUA_NO_ERROR
end

 

 

flw

Link para o comentário
Compartilhar em outros sites

Foi malz, nem vi q tinha postado duas vezes, tava querendo editar axo q fiz foi postar de novo xD

 

VLW KRA deu certo ^^ num imaginei q faltava o "< mana" ¬¬" tava mudando colocando a mana tipo -400 xD mais eh assim msm vivendo e aprendendo, com o player ja deu certo agora queria pro pet...

 

apocarai, eu queria colocar essa spell para transformar meu pet, tipo eu dizer uma palavra e ele vira um outro monstro por algum tempo tipo esse script ai de cima mais sendo com o pet, se pode me ajudar?

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

Eh esse eh o meu pet system:

 

petSystemExhaustion = 0 --in secods, 0 = no exhausted.

frases = {"Men, im still exhausted!", "Ok, in one momment", "afff, again?!", "meh, one second"}

lenght = 39 -- maximun lenght the !petsay can have...

manaGainTicks = 3000 --

--how fast the pet gains mana

manaGainAmmount = 20 --//

manaGainPerLevel = 30 -- mana that gains the pet for each level the player gain

magicLevelRate = 10 -- how faster the pet will gain mlvl compared to real tibia,,

base = 2000 --base storage. All storages will depend of this number

storages = {

petMag = base,

petUid = base+1,

petExha = base+2,

petDamage = base+3,

petManaSpent = base+4,

petIsOnline = base+5,

petMana = base+6,

petIsHealing = base+7,

petCap = base+8,

petSystemExhaustion = base+9

}

 

petItems = {}

maxItems = 10 --Max items the pet can carry

--lol V

x = 0 y = function() x = x + 1 end table.foreach(storages, y)

for i = 1, maxItems do

petItems = base+x+i

end

--Pets, dependiong on the level

pets =

{

{vocations = {4, 8}, pets =

{{level = 350, name = "Juggernaut"}, {level = 255, name = "Dark Torturer"}, {level = 190, name = "Hellfire Fighter"}, {level = 120, name = "Hydra"}, {level = 80, name = "Quara Hydromancer"}, {level = 50, name = "Cyclops Smith"}, {level = 40, name = "Demon Skeleton"}, {level = 30, name = "Barbarian Skullhunter"}, {level = 20, name = "Monk"}, {level = 10, name = "Bear"}, {level = 0, name = "Wolf"}}

},

{vocations = {1, 5}, pets =

{{level = 7, name = "Ferumbras"}, {level = 260, name = "Demon"}, {level = 180, name = "Betrayed Wraith"}, {level = 120, name = "Diabolic Imp"}, {level = 80, name = "Braindeath"}, {level = 50, name = "Ice Golem"}, {level = 40, name = "Acolyte Of The Cult"}, {level = 30, name = "Barbarian Headsplitter"}, {level = 20, name = "Dark Monk"}, {level = 10, name = "Polar Bear"}, {level = 0, name = "Cave Rat"}}

},

{vocations = {2, 6}, pets =

{{level = 7, name = "Ferumbras"}, {level = 260, name = "Hand of Cursed Fate"}, {level = 175, name = "Phantasm"}, {level = 120, name = "Frost Dragon"}, {level = 80, name = "Massive Water Elemental"}, {level = 50, name = "Water Elemental"}, {level = 40, name = "Dwarf Geomancer"}, {level = 30, name = "Barbarian Brutetamer"}, {level = 20, name = "Assassin"}, {level = 10, name = "Lion"}, {level = 0, name = "Rat"}}

},

{vocations = {3, 7}, pets =

{{level = 350, name = "Orshabaal"}, {level = 260, name = "Plaguesmith"}, {level = 185, name = "Destroyer"}, {level = 120, name = "Dragon Lord"}, {level = 80, name = "Quara Hydromancer Scout"}, {level = 50, name = "Orc Leader"}, {level = 40, name = "Elf Arcanist"}, {level = 30, name = "Barbarian Bloodwalker"}, {level = 20, name = "Hunter"}, {level = 10, name = "Panda"}, {level = 0, name = "Bat"}}

}

}

--attacks of the pet. !petattack "param

--It's pretty easy how to config, I think it doesn't need an extra explanation.

attacks = {{param = "a1", theFunction = false, offensive = 1, needLevel = 1, self = 0, needMag = 0, manaSpent = 1, exhausted = 1, range = 6, combatType = COMBAT_ENERGYDAMAGE, combatAni = CONST_ME_ENERGYAREA, area = 2,

formula = {maxb = 0.4, maxa = 30, minb = 0.5, mina = 0},

},

{param = "a2", theFunction = false, offensive = 1, needLevel = 1, self = 0, needMag = 0, manaSpent = 1, exhausted = 1, range = 0, combatType = COMBAT_PHYSICALDAMAGE, combatAni = CONST_ME_HITAREA, area = 2,

formula = {maxb = 0.6, maxa = 30, minb = 1.2, mina = 0},

},

{param = "a3", theFunction = false, offensive = 1, needLevel = 1, self = 0, needMag = 0, manaSpent = 100, exhausted = 1, range = 3, combatType = COMBAT_FIREDAMAGE, combatAni = CONST_ME_FIREAREA, area = 6,

formula = {maxb = 0.6, maxa = 30, minb = 1.2, mina = 0}

},

{param = "a4", theFunction = false, offensive = 1, needLevel = 0, self = 0, needMag = 0, manaSpent = 1, exhausted = 1, range = 1, combatType = COMBAT_ENERGYDAMAGE, combatAni = CONST_ME_ENERGYAREA, area = 1,

formula = {maxb = 0.13, maxa = 0, minb = 0.262, mina = 0}

},

{param = "a5", theFunction = false, offensive = -1, needLevel = 1, self = 1, needMag = 0, manaSpent = 1, exhausted = 2, range = 0, combatType = COMBAT_HEALING, combatAni = CONST_ME_MAGIC_BLUE, area = 1,

formula = {maxb = 0.4, maxa = 20, minb = 0.7, mina = 0}

},

{param = "a6", theFunction = false, offensive = 1, needLevel = 1, self = 0, needMag = 0, manaSpent = 1, exhausted = 2, range = 0, combatType = COMBAT_PARAM_DISTANCEEFFECT, combatAni = CONST_ANI_FIRE, area = 8,

formula = {maxb = 1.0, maxa = 50, minb = 1.7, mina = 0}

},

{param = "paralize", needLevel = 1, needMag = 0, manaSpent = 300, exhausted = 2,

theFunction = function (parameters)

daPet = getPlayerStorageValue(parameters.cid, storages.petUid)

if getCreatureTarget(daPet) ~= 0 then

doAddCondition(getCreatureTarget(parameters.cid), 4)

end

end

},

{param = "speed", needLevel = 10, needMag = 4, manaSpent = 60, exhausted = 2,

theFunction = function (parameters)

doAddCondition(getPlayerStorageValue(parameters.cid, storages.petUid), 11)

end

},

{param = "double fire", needLevel = 1, needMag = 0, manaSpent = 220, exhausted = 2,

theFunction = function (parameters)

 

 

local myAttack = formulaAttack(getPlayerLevel(parameters.cid), getPlayerStorageValue(parameters.cid, storages.petMag), 0.7, 0, 1.0, 0)

function doAreaCombatHealthEx(params)

local randoms = {[1] = math.random(-2, 2),

[2] = math.random(-2, 2)

}

 

local attackCreature = getPlayerStorageValue(parameters.cid, storages.petUid)

if getCreatureTarget(getPlayerStorageValue(parameters.cid, storages.petUid)) ~= 0 then

attackCreature = getCreatureTarget(getPlayerStorageValue(parameters.cid, storages.petUid))

end

local posa = getCreaturePosition(attackCreature)

doAreaCombatHealth(getPlayerStorageValue(parameters.cid, storages.petUid), COMBAT_FIREDAMAGE, {x = posa.x + randoms[1], y = posa.y + randoms[2], z = posa.z}, 1, -params.myAttack.minD, -params.myAttack.maxD, CONST_ME_FIREAREA)

doSendDistanceShoot(getCreaturePosition(getPlayerStorageValue(parameters.cid, storages.petUid)), {x = posa.x + randoms[1], y = posa.y + randoms[2], z = posa.z}, CONST_ANI_FIRE)

 

end

doAreaCombatHealthEx({cid = parameters.cid, target = getCreaturePosition(attackCreature), myAttack = myAttack})

for i = 1, 7 do

addEvent(doAreaCombatHealthEx, 200*i, {cid = parameters.cid, target = getCreaturePosition(attackCreature), myAttack = myAttack})

end

end

}

}

function setExhausted(cid)

setPlayerStorageValue(cid, storages.petSystemExhaustion, os.clock()+1)

end

function formulaAttack(magicLevel, level, maxb, maxa, minb, mina)

return {minD = (level * 2 + magicLevel * 3) * (1 + mina) + minb,

maxD = (level * 2 + magicLevel * 3) * (1 + maxb) + maxa

}

end

 

function isExhausted(cid)

if isPlayer(cid) == 1 then

local CRONOMETRO = getPlayerStorageValue(cid, storages.petSystemExhaustion)

local CRONOMETRO2 = os.clock()

local TIEMPO = os.difftime(CRONOMETRO2, CRONOMETRO)

if petSystemExhaustion - TIEMPO > petSystemExhaustion or CRONOMETRO == -1 then

setPlayerStorageValue(cid, storages.petSystemExhaustion, CRONOMETRO2+1)

return 0

end

if petSystemExhaustion - TIEMPO <= 0 then

return 0

end

end

return 1

end

 

function addMana(a)

local cid = a.cid

local petManaMax = getPlayerLevel(cid)*manaGainPerLevel

if getPlayerStorageValue(cid, storages.petMana) < petManaMax then

if petManaMax - getPlayerStorageValue(cid, storages.petMana) < 10 then

setPlayerStorageValue(cid, storages.petMana, getPlayerStorageValue(cid, storages.petMana) + petManaMax - getPlayerStorageValue(cid, storages.petMana))

else

setPlayerStorageValue(cid, storages.petMana, getPlayerStorageValue(cid, storages.petMana) + 10)

end

addEvent(addMana, manaGainTicks, {cid = cid})

else

setPlayerStorageValue(cid, storages.petIsHealing, 0)

end

end

 

 

eu queria mais ou menos assim: !pet (invocar um "orc") !transform (transforma o "orc" em um "orc warrior" por algum tempo, tipo assim) saco?

 

vlw

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

×
×
  • Criar Novo...