MA
pedido

Dano de Spell Fixo

Por markindoot, 16 de nov. de 2013 em Scripts

dano de spell fixo
resolvido
otserv
tibia
script
21
2.1k
markindootM
16 de novembro de 2013 às 00:21
Falae Galera do Xtibia, eu queria pedir uma coisa um tanto simples para vocês,

queria que essa spell abaixo tenha um attack fixo de 600~700 que almentasse conforme o level (Só conforme o level)




local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)

setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 50, 60, 80, 1200)


local area = createCombatArea(AREA_BEAM7, AREADIAGONAL_BEAM7)

setCombatArea(combat, area)


function onCastSpell(cid, var)

local ITEM_ID = 7901

local item = getPlayerSlotItem(cid, 1)

if item.uid <= 1 or item.itemid ~= ITEM_ID then

doPlayerSendTextMessage(cid, 27, "Você não possui o helmo.")

return false

end

return doCombat(cid, combat, var)

end


function onCastSpell(cid, var)


if isExhausted(cid, "!chamas") == FALSE then

return doCombat(cid, combat, var), setCooldown(cid, "!chamas", 3)

end


return FALSE, doPlayerSendCancel(cid, "You are exhausted.")

end





e tenho uma duvida sobre esse script...

queria saber se tem como faser só usar esta spell se tiver usando o outfit {258}

se o player nao estiver com o outfit, aparecer uma animated text: "Você não está na moto para usar este outfit!!"


esperando a resposta, espero que alguem atenda a minha duvida que é um pouco mais dificinha =D


Abraço!

OriGMO
16 de novembro de 2013 às 00:59

Fala cara se tiver funcionando essa spell ae,acredito eu que vá funcionar as modificaçoes que fiz,nao testei,teste e qualquer coisa avise.

Só achei que ficou errado a mensagem que voce pediu pra colocar,pois a spell nao dá outfit,e na mensagem fala "Voce nao está na moto para usar este outfit",seria "para usar esse poder" ou algo assim nao? Mas ai é só editar a mensagem ali no script.

Boa sorte.

 

local ataquemin, ataquemax = 600, 700

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
local area = createCombatArea(AREA_BEAM7, AREADIAGONAL_BEAM7)
setCombatArea(combat, area)
function onGetFormulaValues(cid, level, skill, attack, factor)
local levelTotal = level * 1.9
return -(levelTotal + ataquemin), -(levelTotal + ataquemax)
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
local ITEM_ID = 7901
local item = getPlayerSlotItem(cid, 1)
if getCreatureOutfit(cid) == 258 then
if item.uid <= 1 or item.itemid ~= ITEM_ID then
doPlayerSendTextMessage(cid, 27, "Você não possui o helmo.")
return false
end
doCombat(cid, combat, var)
else
doPlayerSendTextMessage(cid, 27, "Você não está na moto para usar este outfit!")
return false
end
function onCastSpell(cid, var)
if isExhausted(cid, "!chamas") == FALSE then
return doCombat(cid, combat, var), setCooldown(cid, "!chamas", 3)
end
return FALSE, doPlayerSendCancel(cid, "You are exhausted.")
end
markindootM
16 de novembro de 2013 às 01:54

nao pow, tpw eu queria que verificasse o outft do player e só poderia lançar a spell se tivesse com o outfit 258


post-357805-0-23070100-1384574052_thumb.png

da esse erro ai

 

OriGMO
16 de novembro de 2013 às 11:31

Sim é exatamente o que fiz,o que falei pra voce que acho que voce que falou errado foi essa mensagem ae,nao tem sentido.

 

 

 

local ataquemin, ataquemax = 600, 700

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
local area = createCombatArea(AREA_BEAM7, AREADIAGONAL_BEAM7)
setCombatArea(combat, area)
function onGetFormulaValues(cid, level, skill, attack, factor)
local levelTotal = level * 1.9
return -(levelTotal + ataquemin), -(levelTotal + ataquemax)
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
local ITEM_ID = 7901
local item = getPlayerSlotItem(cid, 1)
if getCreatureOutfit(cid) == 258 then
if item.uid <= 1 or item.itemid ~= ITEM_ID then
doPlayerSendTextMessage(cid, 27, "Você não possui o helmo.")
return false
end
doCombat(cid, combat, var)
else
doPlayerSendTextMessage(cid, 27, "Você não está na moto para usar este outfit!")
return false
end
end
function onCastSpell(cid, var)
if isExhausted(cid, "!chamas") == FALSE then
return doCombat(cid, combat, var), setCooldown(cid, "!chamas", 3)
end
return FALSE, doPlayerSendCancel(cid, "You are exhausted.")
end
markindootM
16 de novembro de 2013 às 17:05

agora nao deu nenhum erro e até funcionou mas player que não ta com o outfit 258 ainda pode usar a spell

gonorreiaswatG
16 de novembro de 2013 às 17:27

Vou tentar montar pra ti aqui.

Já edito

 

 

-edit-

Teste o script abaixo, se der algum erro no launcher ou caso não funcione, poste para resolvermos... pois não estou em casa então não testei.

 

 

local ataquemin, ataquemax = 600, 700
 
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
 
local area = createCombatArea(AREA_BEAM7, AREADIAGONAL_BEAM7)
setCombatArea(combat, area)
 
function onGetFormulaValues(cid, level, skill, attack, factor)
local levelTotal = level * 1.9
    return -(levelTotal + ataquemin), -(levelTotal + ataquemax)
end
 
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
 
function onCastSpell(cid, var)
local ITEM_ID = 7901
local item = getPlayerSlotItem(cid, 1)
    if getCreatureOutfit(cid) ~= 258 then
        doPlayerSendCancel(cid, "Voce precisa estar na moto para usar esta magia!")
    elseif item.uid <= 1 or item.itemid ~= ITEM_ID then
        doPlayerSendCancel(cid, "Voce nao possui o helmo.")
    else
        doCombat(cid, combat, var)
    end
end
 
function onCastSpell(cid, var)
    if isExhausted(cid, "!chamas") == FALSE then
    return doCombat(cid, combat, var), setCooldown(cid, "!chamas", 3)
end
    return FALSE, doPlayerSendCancel(cid, "You are exhausted.")
end

 

Boa sorte.

Editado Novembro 16 por Adriano Swatt

markindootM
16 de novembro de 2013 às 19:13

ainda nada, o player usa a spell sem ter o outfit.

zipter98Z
16 de novembro de 2013 às 19:25

O player tem que clicar em algum item para montar na moto? Ou essa outfit da moto é só uma outfit "normal"? Se for a primeira opção, suponho que bastaria setar uma storage no player ao montar na moto, e, nesse script da spell, verificasse essa storage.

Editado Novembro 16 por zipter98

gonorreiaswatG
16 de novembro de 2013 às 19:28

ainda nada, o player usa a spell sem ter o outfit.

O player precisa estar usando o helmo na cabeça para usar a magia?

 

E como foi dito acima, o outfit da moto é com action ou escolhe como outfit normal?

 

Ele precisa apenas ter o item na backpack e estar com a outfit 258 para usar?

 

Posso tentar refazer aqui...

ja edito.

 

 

-edit-

Testa este abaixo:

local ataquemin, ataquemax = 600, 700
 
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
 
local area = createCombatArea(AREA_BEAM7, AREADIAGONAL_BEAM7)
setCombatArea(combat, area)
 
function onGetFormulaValues(cid, level, skill, attack, factor)
local levelTotal = level * 1.9
    return -(levelTotal + ataquemin), -(levelTotal + ataquemax)
end
 
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
 
function onCastSpell(cid, var)
local ITEM_ID = 7901
    if getCreatureOutfit(cid).lookType ~= 258 and getPlayerSlotItem(cid, CONST_SLOT_HEAD).itemid ~= ITEM_ID then
        doPlayerSendCancel(cid, "Voce precisa estar na moto e com capacete para usar esta magia!")
    else
        doCombat(cid, combat, var)
    end
end
 
function onCastSpell(cid, var)
    if isExhausted(cid, "!chamas") == FALSE then
    return doCombat(cid, combat, var), setCooldown(cid, "!chamas", 3)
end
    return FALSE, doPlayerSendCancel(cid, "You are exhausted.")
end

Boa sorte.

Editado Novembro 16 por Adriano Swatt

markindootM
16 de novembro de 2013 às 19:42

O player tem que clicar em algum item para montar na moto? Ou essa outfit da moto é só uma outfit "normal"? Se for a primeira opção, suponho que bastaria setar uma storage no player ao montar na moto, e, nesse script da spell, verificasse essa storage.

issso mesmo, tinha esquecido, o player tem que dar use na moto para ter o outfit, ai se ele der use dnv o outfit sai...

tpw, para usar a spell, ele tem que tar montado na moto.

o script da moto é este!

 

 

local outfits = {

[0] = {lookType = 101},
[1] = {lookType = 258}
}
local speed = 500 --qnt velo o player vai ficar
function onUse(cid, item, fromPosition, itemEx, toPosition)
local out = outfits[getPlayerSex(cid)]
if not out then return true end
local speed_final = speed + getCreatureSpeed(cid)
if getCreatureOutfit(cid).lookType == out.lookType then
doRemoveCondition(cid, CONDITION_OUTFIT)
doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, getCreatureBaseSpeed(cid))
else
doSetCreatureOutfit(cid, outfits[getPlayerSex(cid)], -1)
doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, speed_final)
end
return true
end

e a tag é: <action itemid="7901" event="script" value="motoca.lua"/>
tpw assim: Deu use na moto (Montou) deu Use denovo (Desmontou) o script ta funfando, o negocio é só a spells, que tem que usar só se o player tiver montado na moto.
gonorreiaswatG
16 de novembro de 2013 às 19:48

Testa o que postei e se não der, tentamos fazer por storage.

 

-edit-

Ah tah, tinha um errinho básico e corrigi, teste o script novamente.

Editado Novembro 16 por Adriano Swatt

zipter98Z
16 de novembro de 2013 às 19:52

Se o do Adriano não funcionar, tenta assim:

Moto:

local outfits = {
[0] = {lookType = 101},
[1] = {lookType = 258}
}
local speed = 500 --qnt velo o player vai ficar
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
local out = outfits[getPlayerSex(cid)]
if not out then return true end
 
local speed_final = speed + getCreatureSpeed(cid)
 
if getCreatureOutfit(cid).lookType == out.lookType then
   doRemoveCondition(cid, CONDITION_OUTFIT)
   setPlayerStorageValue(cid, 112001, -1)
   doChangeSpeed(cid, -getCreatureSpeed(cid))
   doChangeSpeed(cid, getCreatureBaseSpeed(cid))
else
   doSetCreatureOutfit(cid, outfits[getPlayerSex(cid)], -1)
   setPlayerStorageValue(cid, 112001, 1)
   doChangeSpeed(cid, -getCreatureSpeed(cid))
   doChangeSpeed(cid, speed_final)
end
return true
end
Spell:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 50, 60, 80, 1200)
 
local area = createCombatArea(AREA_BEAM7, AREADIAGONAL_BEAM7)
setCombatArea(combat, area)
 
function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end
 
function onCastSpell(cid, var)
 
if getPlayerStorageValue(cid, 112001) < 1 then
return doPlayerSendCancel(cid, "Você não pode fazer isso.")
end

if isExhausted(cid, "!chamas") == FALSE then
return doCombat(cid, combat, var), setCooldown(cid, "!chamas", 3)
end
 
return FALSE, doPlayerSendCancel(cid, "You are exhausted.")
end

Ou

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 50, 60, 80, 1200)
 
local area = createCombatArea(AREA_BEAM7, AREADIAGONAL_BEAM7)
setCombatArea(combat, area)
 
function onCastSpell(cid, var)
 
if getPlayerStorageValue(cid, 112001) < 1 then
return doPlayerSendCancel(cid, "Você não pode fazer isso.")
end

if isExhausted(cid, "!chamas") == FALSE then
return doCombat(cid, combat, var), setCooldown(cid, "!chamas", 3)
end
 
return FALSE, doPlayerSendCancel(cid, "You are exhausted.")
end

edit: Adriano, não sei se é só impressão minha, mas acho que você só verificou se o player está usando a outfit 258 (no caso, a outfit versão male). Se for isso mesmo que eu percebi, tenta fazer como tá no script da moto. Uma tabela com as outfits, uma variável que verifica a outfit dependendo do sexo do player e, depois,

getCreatureOutfit(cid).lookType ~= variável

Editado Novembro 16 por zipter98

markindootM
16 de novembro de 2013 às 20:25

 

Se o do Adriano não funcionar, tenta assim:

Moto:

local outfits = {
[0] = {lookType = 101},
[1] = {lookType = 258}
}
local speed = 500 --qnt velo o player vai ficar
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
local out = outfits[getPlayerSex(cid)]
if not out then return true end
 
local speed_final = speed + getCreatureSpeed(cid)
 
if getCreatureOutfit(cid).lookType == out.lookType then
   doRemoveCondition(cid, CONDITION_OUTFIT)
   setPlayerStorageValue(cid, 112001, -1)
   doChangeSpeed(cid, -getCreatureSpeed(cid))
   doChangeSpeed(cid, getCreatureBaseSpeed(cid))
else
   doSetCreatureOutfit(cid, outfits[getPlayerSex(cid)], -1)
   setPlayerStorageValue(cid, 112001, 1)
   doChangeSpeed(cid, -getCreatureSpeed(cid))
   doChangeSpeed(cid, speed_final)
end
return true
end
Spell:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 50, 60, 80, 1200)
 
local area = createCombatArea(AREA_BEAM7, AREADIAGONAL_BEAM7)
setCombatArea(combat, area)
 
function onCastSpell(cid, var)
    local ITEM_ID = 7901
    local item = getPlayerSlotItem(cid, 1)
    if item.uid <= 1 or item.itemid ~= ITEM_ID then
        doPlayerSendTextMessage(cid, 27, "Você não possui o helmo.")
    return false
    end
    if getPlayerStorageValue(cid, 112001) < 1 then
        return doSendAnimatedText(getThingPos(cid), "Você não está na moto para usar esta spell!!", 215)
    end
    return doCombat(cid, combat, var)
end
 
function onCastSpell(cid, var)
 
if isExhausted(cid, "!chamas") == FALSE then
return doCombat(cid, combat, var), setCooldown(cid, "!chamas", 3)
end
 
return FALSE, doPlayerSendCancel(cid, "You are exhausted.")
end

edit: Adriano, não sei se é só impressão minha, mas acho que você só verificou se o player está usando a outfit 258 (no caso, a outfit versão male). Se for isso mesmo que eu percebi, tenta fazer como tá no script da moto. Uma tabela com as outfits, uma variável que verifica a outfit dependendo do sexo do player e, depois,

getCreatureOutfit(cid).lookType ~= variável

 

@zipter

nao funfou e o hit nen pega mais no bixo e nen em players

 

@ adriano

também nao foi ainda.

zipter98Z
16 de novembro de 2013 às 20:41

Editei meu post acima. Não sei se do jeito que eu fiz vai funcionar (até porque, não sou bom com spells ._.), mas se mesmo assim quiser testar.

gonorreiaswatG
16 de novembro de 2013 às 20:58

Ah sim, verdade, são dois outfits, nem reparei porque o topico ele só colocou 1.

 

@markindoot

Me diz uma coisa, está testando com ambos outfits?

pois coloquei para verificar apenas o 258.

 

Estou um pouco ocupado agora, mas se quiser faço novamente mais tarde.