Postado Fevereiro 18, 2016 9 anos 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).
Postado Fevereiro 21, 2016 9 anos Opa, não tinha visto a resposta no tópico, perdão. Ao meu ver está tudo correto sim, você alterou certinho o que tinha que alterar. ➥ Regras | Seções OTServ | Seções BOT
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.