@UP
4
1.4k
info
Grupo: Visconde
Registrado: 27/01/13
Posts: 443
Reputação: +83
Gênero: Masculino

31 de maio de 2015 às 08:54
info
Grupo: Visconde
Registrado: 27/01/13
Posts: 443
Reputação: +83
Gênero: Masculino

03 de junho de 2015 às 09:04
@UP
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gênero: Masculino

03 de junho de 2015 às 23:43
Melhor resposta
Tente assim:@UP
local porcentagem = 40 -- Porcentagem de dano que será bloqueado
local pt_br = true
function onStatsChange(cid, attacker, type, combat, value)
local lang = {"You lose %d hitpoints (damage protected by amulet: %x).","Você perdeu %d pontos de vida (proteção do amuleto: %x)."}
local reset = 9235
if not isCreature(attacker) then
return false
end
if getPlayerSlotItem(cid, 2).itemid == 2218 then
if getPlayerStorageValue(cid, reset) == 2 then
setPlayerStorageValue(cid, reset, 1)
return true
else
local new_dmg = math.ceil(((100 - porcentagem) / 100) * value)
setPlayerStorageValue(cid, reset, 2)
doTargetCombatHealth(attacker, cid, combat, -new_dmg, -new_dmg, -1)
doPlayerSendCancel(cid, (pt_br and lang[2]:format(new_dmg, value-new_dmg) or lang[1]:format(new_dmg, value-new_dmg)))
end
end
return true
end
Tópico movido para a seção de dúvidas e pedidos resolvidos.


info
Grupo: Visconde
Registrado: 27/01/13
Posts: 443
Reputação: +83
Gênero: Masculino
Olá, estou com esse script de amuleto em meu servidor, ele consiste em proteger o player em x% de monstros, porém estou com um problema, testei aqui e funcionou apenas com players, funcionou perfeitamente com players, apesar de que as vezes aparece que a porcentagem protegida foi de: 1b~e. Acho que o valor é muito grande e os números bugam, porém além desse bugzinho, com monstros o amuleto não funcionou, teria como arrumar isso? Ficaria muito grato. Tipo, pode colocar só para monstros ou só para players, ou ambos, não importa, desde que funcione.
Script:
local porcentagem = 40 -- Porcentagem de dano que será BLO-QUE-A-DO
local pt_br = true
function onStatsChange(cid, attacker, type, combat, value)
local lang = {"You lose %d hitpoints (damage protected by amulet: %x).","Você perdeu %d pontos de vida (proteção do amuleto: %x)."}
local reset = 9235
if getPlayerSlotItem(cid,2).itemid == 2218 then
if type == 1 or type == 3 then
if getPlayerStorageValue(cid,reset) == 2 then
setPlayerStorageValue(cid,reset,1)
return true
else
local new_dmg = math.ceil(((100-porcentagem)/100)*value)
setPlayerStorageValue(cid,reset,2)
doTargetCombatHealth(attacker, cid, combat, -new_dmg, -new_dmg, -1)
doPlayerSendCancel(cid,(pt_br and lang[2]:format(new_dmg, value-new_dmg) or lang[1]:format(new_dmg, value-new_dmg)))
return false
end
end
end
return true
end