Ir para conteúdo
  • Cadastre-se

(Resolvido)Erro ao usar Spell de Buff


Ir para solução Resolvido por Storm,

Posts Recomendados

Olá, estou trabalhando ainda em um nto, direcionado para war e ser 4fun em geral, consegui arrumar muitos erros que estavam no servidor

e cheguei na parte de spells de buff com animações bem grande mas que não se encaixavam bem no char sendo então o problema a position que estava

para concertar isso fui pegando scripts de outros buffs e colando encima , mudando então apenas o effeito e a position, o problema é que agora eu mudo o effeito e vai em outra spell mesmo assim.

esse buff como exemplo 

 

local tempo = 60 -- tempo em segundos.

local effect = {126} -- effect no player, caso queira apenas 1, basta remover os outros numeros.


local ml = 35 -- quantos ira aumentar o skill de ML

local skillfist = 35 -- quantos ira aumentar o skill de Fist

local skillsword = 35 -- quantos ira aumentar o skill de Sword

local skillaxe = 35 -- quantos ira aumentar o skill de Axe

local skillclub = 35 -- quantos ira aumentar o skill de Club

local skilldistance = 35 -- quantos ira aumentar o skill de Distance

local skillshield = 35 -- quantos ira aumentar o skill de Shield

local health = 100 -- A cada 1 segundo quantos aumentar de vida

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
     

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, ml)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, skillsword)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, skillaxe)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, skillclub)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, skilldistance)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, skillshield)
setConditionParam(condition, CONDITION_PARAM_OUTFIT, outfit)
setCombatCondition(combat, condition)
     
local condition = createConditionObject(CONDITION_HASTE)
setConditionParam(condition, CONDITION_PARAM_SPEED, 250)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setCombatCondition(combat, condition)
     
local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)
setCombatCondition(combat, condition)
            
function magicEffect34(tempo2,tempo3,cid)
if (isCreature(cid)) then
    if getPlayerStorageValue(cid, 102053) > 0 and getCreatureCondition(cid, CONDITION_REGENERATION, 1) then
        for i=1, #effect do
        local position = {x=getPlayerPosition(cid).x, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
doSendMagicEffect(position, effect)  
        end
    end
end
end
                  
function onCastSpell(cid, var)
if getPlayerStorageValue(cid, 102053) ~= 1 or getCreatureCondition(cid, CONDITION_REGENERATION, 1) == false then
    doCombat(cid, combat, var)
doPlayerSendTextMessage(cid,27,'jutsu esta ativado.') 
 doPlayerSay(cid, '...', TALKTYPE_ORANGE_1)
    tempo2 = 0
    while (tempo2 ~= (tempo*1000)) do
        addEvent(magicEffect34, tempo2, tempo2, tempo*1000, cid)
        tempo2 = tempo2 + 300
    end
    setPlayerStorageValue(cid, 102053,1) -- storage verifica transformado, quando = 1 player esta transformado.
        doCreatureSay(cid, "Souryuu Kyuuheki", TALKTYPE_MONSTER)
else
    doPlayerSendCancel(cid, "Sorry, you are transformed.")
end
end

 

 

vai direto nesse buff:

 

 

 

local tempo = 60 -- tempo em segundos.
local effect = {117} -- effect no player, caso queira apenas 1, basta remover os outros numeros.
     
local ml = 10 -- quantos ira aumentar o skill de ML
local skillfist = 15 -- quantos ira aumentar o skill de Fist
local skillsword = 15 -- quantos ira aumentar o skill de Sword
local skillaxe = 15 -- quantos ira aumentar o skill de Axe
local skillclub = 15 -- quantos ira aumentar o skill de Club
local skilldistance = 15 -- quantos ira aumentar o skill de Distance
local skillshield = 15 -- quantos ira aumentar o skill de Shield
local health = 100 -- A cada 1 segundo quantos aumentar de vida
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
     
local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, ml)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, skillsword)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, skillaxe)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, skillclub)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, skilldistance)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, skillshield)
setConditionParam(condition, CONDITION_PARAM_OUTFIT, outfit)
setCombatCondition(combat, condition)
     
local condition = createConditionObject(CONDITION_HASTE)
setConditionParam(condition, CONDITION_PARAM_SPEED, 250)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setCombatCondition(combat, condition)
     
local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)
setCombatCondition(combat, condition)
            
function magicEffect551(tempo2,tempo3,cid)
if (isCreature(cid)) then
    if getPlayerStorageValue(cid, 102053) > 0 and getCreatureCondition(cid, CONDITION_REGENERATION, 1) then
        for i=1, #effect do
        local position = {x=getPlayerPosition(cid).x+2, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
doSendMagicEffect(position, effect)  
        end
    end
end
end
                  
function onCastSpell(cid, var)
local position127 = {x=getPlayerPosition(cid).x, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
if getPlayerStorageValue(cid, 102053) ~= 1 or getCreatureCondition(cid, CONDITION_REGENERATION, 1) == false then
    doCombat(cid, combat, var)
    tempo2 = 0
    while (tempo2 ~= (tempo*1000)) do
        addEvent(magicEffect551, tempo2, tempo2, tempo*1000, cid)
        tempo2 = tempo2 + 300
    end
    setPlayerStorageValue(cid, 102053,1) -- storage verifica transformado, quando = 1 player esta transformado.
    doCreatureSay(cid, "Mangekyou Susano", TALKTYPE_MONSTER)
    doSendMagicEffect(position127, 246)
else
    doPlayerSendCancel(cid, "Sorry, you are transformed.")
end
end

 

agradeceria muito se alguém me ajudasse !

 

 

 

 


 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.

copiei o script errado no segundo, perdão.

agora arrumei

Editado por Zyros
script errado (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Zyros 

local tempo = 180 -- tempo em segundos.
local efeito = 98 -- effect no player, caso queira apenas 1, basta remover os outros numeros.

local ml = 40 -- quantos ira aumentar o skill de ML
local skillfist = 0 -- quantos ira aumentar o skill de Fist
local skillsword = 40 -- quantos ira aumentar o skill de Sword
local skillaxe = 40 -- quantos ira aumentar o skill de Axe
local skillclub = 40 -- quantos ira aumentar o skill de Club
local skilldistance = 40 -- quantos ira aumentar o skill de Distance
local skillshield = 0 -- quantos ira aumentar o skill de Shield
local health = 350 -- A cada 1 segundo quantos aumentar de vida
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, ml)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, skillsword)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, skillaxe)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, skillclub)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, skilldistance)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, skillshield)
setConditionParam(condition, CONDITION_PARAM_OUTFIT, outfit)
setCombatCondition(combat, condition)

local condition = createConditionObject(CONDITION_HASTE)
setConditionParam(condition, CONDITION_PARAM_SPEED, 250)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setCombatCondition(combat, condition)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
    if getCreatureCondition(cid, CONDITION_REGENERATION, 1) == false then
        doCombat(cid, combat, var)
        repeatEff(cid, efeito, tempo)
        doCreatureSay(cid, "FURIE", TALKTYPE_MONSTER)
    else
        doPlayerSendCancel(cid, "Sorry, you are transformed.")
    end
end


Depois, adicione na sua LIB:

local effsTortos = {
    --[eff] = {valores para corrigi-los},
    [175] = {x= 1, y= 0}, --naruto
    
}

function repeatEff(cid, eff, tempo)
    if not isCreature(cid) or tempo == 0 then return end
    local p = getThingPos(cid)
    if effsTortos[eff] then
        p = {x= p.x+(effsTortos[eff].x), y= p.y+(effsTortos[eff].y), z= p.z}
    end
    doSendMagicEffect(p, eff)
    addEvent(repeatEff, 500, cid, eff, tempo-1)
end

 

Link para o post
Compartilhar em outros sites

o primeiro script que tu passou ajudou,mas gostaria que me explicasse oque tu fez de diferente, vi que tirou a parte de storage, que por sinal ainda não entendo muito oque

faz e como posso encontrar os ids disso.

além do mais, o buff está lerdo , praticamente de 1 em 1 segundo !

Link para o post
Compartilhar em outros sites
  • Solução

@Zyros Tirei a storage porque não é necessário, pense comigo, se você ja pode checar pela condition regeneration, pra que você ira utilizar uma storage se você já tem outro método de verificação que consome menos memória que a storage???
Para deixar o effect mais rápido, usa assim;

local effsTortos = {
    --[eff] = {valores para corrigi-los},
    [175] = {x= 1, y= 0}, --naruto
    
}

function repeatEff(cid, eff, tempo)
    if not isCreature(cid) or tempo == 0 then return end
    local p = getThingPos(cid)
    if effsTortos[eff] then
        p = {x= p.x+(effsTortos[eff].x), y= p.y+(effsTortos[eff].y), z= p.z}
    end
    doSendMagicEffect(p, eff)
    addEvent(repeatEff, 200, cid, eff, tempo - 0.2)
end

 

Link para o post
Compartilhar em outros sites
  • 2 years later...

Primeiramente Desculpe-me por reativar o tópico!

Essa script está com um problema, estou usando ela no meu servidor e tem um probleminha. O buff acaba mas o effect continua mostrando, na proxima vez que usa o buff fica 2 buff e assim por diante. Na quarta vez que usar o buff vai ter 4 buff e o effect parece uma imagem parada de tanto effect em um lugar só. se poder me ajudar, agradeço!

 

@Storm

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo