Postado Novembro 23, 2014 10 anos Este é um post popular. [CreatureScript] Armors Attack v0.1 Testado no servidor Sourcers: 0.3.6pl1 Versão 8.54 Salve galera do TibiaKing, hoje eu venho apresentar pra vocês o sistema "Armors Attack", na versão 0.1. Como funciona: Bom, se o player estiver usando um set completo (capacete, peitoral, calça e bota), como por exemplo o magma set, toda vez que ele toma um HIT, a armadura dele pode atacar todo mundo que estiver dentro de uma área (configurável), bom no script eu coloquei uma área de 2 x 2. Você pode criar várias combinações de armaduras, como por exemplo (DH, MPA, G-LEGS E BOH). Eu dentro do script, configurei o "Glacier SET e o Magma SET". Instalando No diretório "Data/CreatureScript/Scripts" crie um arquivo chamado "ArmorsAttack.lua" e dentro adicione o código abaixo local configs = { radius = {2, 2}, -- 2 X 2 validSlots = {1, 4, 7, 8}, -- Head, Body, Legs, Feet msg = "Armors Attack!", } local sets = { [1] = {items = {7900, 7899, 7894, 7891}, distaceEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, combat = COMBAT_FIREDAMAGE, chance = 20, min_max = {100, 300}}, -- Magma set [2] = {items = {7902, 7897, 7896, 7892}, distaceEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, combat = COMBAT_ICEDAMAGE, chance = 20, min_max = {100, 300}}, -- Glacier set } local function getCreaturesInArea(fromPos, toPos) local retPlayers = {} for x = fromPos.x, toPos.x do for y = fromPos.y, toPos.y do local player = getTopCreature({x=x, y=y, z=fromPos.z}) if isMonster(player.uid) then table.insert(retPlayers, player.uid) end end end return retPlayers end local function table_compare(table1, table2) local n = 0 local maxn = 0 if #table1 == #table2 then maxn = #table1 else return false end for i = 1, #table1 do for s = 1, #table2 do if table1 == table2 then n = n + 1 end end end if n == maxn then return true end return false end function onStatsChange(cid, attacker, type, combat, value) local playerSet = {} for s = 1, #configs.validSlots do if getPlayerSlotItem(cid, configs.validSlots).uid > 0 then table.insert(playerSet, getPlayerSlotItem(cid, configs.validSlots).itemid) end end for i = 1, #sets do if table_compare(sets.items, playerSet) then if math.random(100) <= sets.chance then local creatures = getCreaturesInArea({x = getThingPos(cid).x - configs.radius[1], y = getThingPos(cid).y - configs.radius[1], z = getThingPos(cid).z}, {x = getThingPos(cid).x + configs.radius[2], y = getThingPos(cid).y + configs.radius[2]}) if isPlayer(attacker) then table.insert(creatures, attacker) end doSendMagicEffect(getThingPos(cid), sets.effect) doCreatureSay(cid, configs.msg, TALKTYPE_MONSTER) for c = 1, #creatures do addEvent(function() doSendDistanceShoot(getThingPos(cid), getThingPos(creatures[c]), sets.distaceEffect) doAreaCombatHealth(cid, sets.combat, getThingPos(creatures[c]), 0, - sets.min_max[1], - sets.min_max[2], sets.effect) end, c * 100) end end end end return true end TAG: <event type="statschange" name="ArmorsAttack" event="script" value="ArmorsAttack.lua"/> Agora no "Login.lua" antes do ultimo "return true", adicione registerCreatureEvent(cid, "ArmorsAttack") Configuração: local sets = { [1] = {items = {7900, 7899, 7894, 7891}, distaceEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, combat = COMBAT_FIREDAMAGE, chance = 20, min_max = {100, 300}}, -- Magma set [2] = {items = {7902, 7897, 7896, 7892}, distaceEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, combat = COMBAT_ICEDAMAGE, chance = 20, min_max = {100, 300}}, -- Glacier set } Legenda: [2] -> ID do SET, que seria sucessivo ao anterior. (Exemplo: caso o anterior for 2, o próximo ID será 3) items -> São os ITEMS IDs do SET. distanceEffect -> efeito de distancia, que irá partir do Player as criaturas dentro da área. effect -> efeito que irá sair das criaturas, quando o distance effect chegar nelas combat -> tipo de hit chance -> chance da armadura soltar a magia min_max -> hit minimo, e hit máximo da magia da armadura. local configs = { radius = {2, 2}, -- 2 X 2 validSlots = {1, 4, 7, 8}, -- Head, Body, Legs, Feet msg = "Armors Attack!", } Legenda: radius -> área que a armadura irá conseguir atacar validSlots -> slots, que a armadura deve ser equipada. msg -> toda vez que a armadura atacar, enviará uma mensagem. Foto de demonstração do sistema. Editado Janeiro 1, 2015 10 anos por Orochi Elf (veja o histórico de edições)
Postado Novembro 23, 2014 10 anos Oi, esse script ta um lixo q merda , bom o script ta ótimo, obrigado pelo conteúdo que mentira kkk.
Postado Novembro 23, 2014 10 anos Autor Oi, esse script ta um lixo q merda , bom o script ta ótimo, obrigado pelo conteúdo que mentira kkk. Pode deixar, que vou parar de te ensinar esses lixos. ;3
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.