Postado Janeiro 11, 2012 13 anos Nome: Sewing Straight (costura em linha reta) Versão testada: The Forgotten Server 8.54 Autor: Jedian Explicação: Abaixo \/ Olá galera, aqui eu denovo com outro post, que espero que seja útil pra vocês. Pois é, eu só posto spells, mas é que o resto, praticamente não tem o que inventar, sim, tem, mas o que está exatamente ao alcance de um scripter, nem fácil demais, nem impossível pra ele, é praticamente inexistente, por isso é difícil pra nós, scripters, na minha opinião, demonstrar exatamente o potencial de cada um, e em spells, cada um faz do seu jeito, ficando ruim ou não, é perfeita pra cada um que a faz, estou pensando muito em outros sistemas pra vocês, sério, mas tá difícil. Mudando de assunto, vamos a magia, pensei nela esfregando pedras a ideia seria uma magia que faz uma espada "costurar em linha reta"(como o nome diz) para frente do personagem de acordo com o tipo de arma usada, aí, se houver um target, ela vai até ele e dá "costuradas" conforme a distância que percorreu até chegar nele, quanto mais perto, mais "costuradas" e vice-versa. Vamos instalar: em data/spells/scripts copie um arquivo e cole-o, renomeie para algum nome, apague todo o conteúdo e cole isso dentro: if getPlayerWeapon(cid).uid ~= 0 then doSendAnimatedText(getThingPos(cid), 'Sewing', 144) addEvent(doSendAnimatedText, 350, getThingPos(cid), 'Straight!', 144) if isCreature(getCreatureTarget(cid)) then local function gotarget(cid, pos, n) if isCreature(getCreatureTarget(cid)) then local n = n or 0 local pos = pos or getCreaturePosition(cid) local topos = getThingPos(getCreatureTarget(cid)) local dir = getRetDirToPos(pos, topos) if n < 8 then if not(pos.x == topos.x and pos.y == topos.y) then pos = getPosByDir(pos, dir) end doAreaCombatHealth(cid, 1, pos, 0, -(getPlayerSkillLevel(cid, t[getItemWeaponType(getPlayerWeapon(cid).uid)][2])*1.6), -(getPlayerSkillLevel(cid, t[getItemWeaponType(getPlayerWeapon(cid).uid)][2])*2.3), 255) doSendDistanceShoot({x=pos.x-2,y=pos.y-2,z=pos.z}, pos, t[getItemWeaponType(getPlayerWeapon(cid).uid)][1]) addEvent(gotarget, 80, cid, pos, n+1) end end end gotarget(cid) else n = 0 while n < 8 do n = n + 1 local front = getPosByLookDist(cid, n) if not getTilePzInfo(front) then addEvent(doSendDistanceShoot, n*80, {x=front.x-2, y=front.y-2, z=front.z},front, t[getItemWeaponType(getPlayerWeapon(cid).uid)][1]) addEvent(doAreaCombatHealth, n*80, cid, 1, front, 0, -(getPlayerSkillLevel(cid, t[getItemWeaponType(getPlayerWeapon(cid).uid)][2])*1.6), -(getPlayerSkillLevel(cid, t[getItemWeaponType(getPlayerWeapon(cid).uid)][2])*2.3), 255) end end end else return doPlayerSendCancel(cid, 'You need a weapon to cast it.') end return true end local function getPosByLookDist(cid, quant) -- by Jedian local pos = getPlayerPosition(cid) if getPlayerLookDir(cid) == 0 then return {x = pos.x, y = pos.y - quant, z = pos.z} elseif getPlayerLookDir(cid) == 1 then return {x = pos.x + quant, y = pos.y, z = pos.z} elseif getPlayerLookDir(cid) == 2 then return {x = pos.x, y = pos.y + quant, z = pos.z} elseif getPlayerLookDir(cid) == 3 then return {x = pos.x - quant, y = pos.y, z = pos.z} end end local function getRetDirToPos(pos1, pos2) local retdirs = { [0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 2, [5] = 1, [6] = 3, [7] = 0} return retdirs[getDirectionTo(pos1, pos2)] end local t = { [1] = {24, SKILL_SWORD}, [2] = {26, SKILL_CLUB}, [3] = {25, SKILL_AXE} } function onCastSpell(cid, var) -- by Jedian salve e feche, agora em spells.xml adicione a seguinte tag: <instant name="Sewing Straight" words="sewing straight" lvl="35" mana="0" prem="0" needweapon="1" exhaustion="2000" needlearn="0" event="script" value="nome.lua"></instant> edite o nome do arquivo e ajeite conforme as preferências. Pronto, está instalado, nenhuma foto, pois não dá pra ter uma ideia muito boa com elas :S testem e critiquem aí. Editado Janeiro 12, 2012 13 anos por Jedian Nova versão, fórmula por skill. (veja o histórico de edições) Scripter
Postado Janeiro 11, 2012 13 anos Gostei! Bem interessante Só acho que deveria usar o skill do personagem como base de dano, junto com o level também claro, mas não SÓ o level. Mas curti. Parabéns Espero ver mais spells Abraços. rena.to
Postado Janeiro 11, 2012 13 anos Autor @Equipe Avatar Online Valeu pelo apoio galera .-. @Renato Obrigado pelo comentário, realmente fica mais realista usar o skill, já que usa o tipo da arma, porque não usar skill? Vou incrementar depois, obrigado Concerteza vai ver mais spells @Topic Continuem comentando galera. Scripter
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.