Ir para conteúdo

Featured Replies

Postado
  • Autor

bom, fazem quase 24hrs desde o meu ultimo post.

consegui resolver o problema de distro que eu estava enfrentando e decidi q ia testar o script agora.

mas ao bater o olho no script percebi um engano.

acompanhe comigo:

local storage, escudo = 40955, 2520

function onCastSpell(cid, var)
local slot1, slot2 = getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid, getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid
local target, pos =  getCreatureTarget(cid), getCreaturePosition
    if isPlayer(target) then   
        if slot1 == escudo or slot2 == escudo then     
            setPlayerStorageValue(target, storage, 1)	
            doCreatureSay(target, 'Charged!', TALKTYPE_MONSTER)	
            doSendMagicEffect(pos(target), CONST_ME_STUN)	
            addEvent(function()	    
                setPlayerStorageValue(target, storage, -1)		
                doCreatureSay(target, 'Charged lost!', TALKTYPE_MONSTER)		
                doSendMagicEffect(pos(target), CONST_ME_MAGIC_GREEN)	
            end, 4000)
        else   
            doSendMagicEffect(pos(cid), CONST_ME_POFF)  
           return doPlayerSendCancel(cid, 'Você só pode usar esta magia com o escudo "'.. getItemNameById(escudo) ..'" equiipado.') and false
        end
    else
        doSendMagicEffect(pos(cid), CONST_ME_POFF)
       return doPlayerSendCancel(cid, 'Você só pode usar em jogadores.') and false
    end
   return true
end

provavelmente eu expliquei errado, mas não é o player que ataca que precisa ter escudo, mas sim o player que recebe a magia.

ele só pode conseguir o storage caso tenha determinado escudo, mas acho que é bem mais simples de resolver, veja se estou certo.

local storage, escudo = 40955, 2520

function onCastSpell(cid, var)
local target, pos =  getCreatureTarget(cid), getCreaturePosition
local slot1, slot2 = getPlayerSlotItem(target, CONST_SLOT_RIGHT).itemid, getPlayerSlotItem(target, CONST_SLOT_LEFT).itemid
    if isPlayer(target) then   
        if slot1 == escudo or slot2 == escudo then     
            setPlayerStorageValue(target, storage, 1)	
            doCreatureSay(target, 'Charged!', TALKTYPE_MONSTER)	
            doSendMagicEffect(pos(target), CONST_ME_STUN)	
            addEvent(function()	    
                setPlayerStorageValue(target, storage, -1)		
                doCreatureSay(target, 'Charged lost!', TALKTYPE_MONSTER)		
                doSendMagicEffect(pos(target), CONST_ME_MAGIC_GREEN)	
            end, 4000)
        else   
           return false
        end
    else
        doSendMagicEffect(pos(cid), CONST_ME_POFF)
       return doPlayerSendCancel(cid, 'Você só pode usar em jogadores.') and false
    end
   return true
end

no caso eu mudei o local slot para que o player que seja verificado seja o Target e não o cid(player que executa a ação).

julguei preciso mudar a ordem do local target, acredito q ele precise ser declarado antes de ser usado (talvez tenha sido irrelevante).

e no else que retornava a função, deletei completamente as informações dele pois o player que está atacando n precisa receber nenhuma mensagem do tipo.

diga-me se errei em algo haha (por favor).

  • Respostas 6
  • Visualizações 448
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Fiz um aqui pra você, veja se lhe agrada: local storage, escudo = 40955, 2520 function onCastSpell(cid, var) local slot1, slot2 = getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid, getPlayerSlotIte

  • Sim é possível declarar um else para cada if, sobre a função no meio da frase, acho que da maneira que eu coloquei deu a entender errado, coloquei essas aspas para citar o nome do shield na frase, ent

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo