Ir para conteúdo

hs2m4ever

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    hs2m4ever deu reputação a xWhiteWolf em Magia que Empurra   
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_COMBAT_NONE) local arr = { {1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {0, 1, 0}, {0, 3, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, } local area = createCombatArea(arr) setCombatArea(combat, area) local function doPushCreature(uid,direction,distance,time)    if isCreature(uid) == TRUE then    local rand = (2*math.random(0,1))-1    local rand2 = math.random(-1,0)       if direction == 0 then       signal = {0,rand,-rand,rand,-rand,0,-1,-1,-1,0,0,0}       elseif direction == 1 then       signal = {1,1,1,0,0,0,0,rand,-rand,rand,-rand,0}       elseif direction == 2 then       signal = {0,rand,-rand,rand,-rand,0,1,1,1,0,0,0}       elseif direction == 3 then       signal = {-1,-1,-1,0,0,0,0,rand,-rand,rand,-rand,0}       elseif direction == 4 then       signal = {-1,rand2,(-rand2)-1,0,1,rand2+1,rand2,0}       elseif direction == 5 then       signal = {1,-rand2,-((-rand2)-1),0,1,rand2+1,rand2,0}       elseif direction == 6 then       signal = {-1,rand2,(-rand2)-1,0,-1,(-rand2)-1,rand2,0}       else       signal = {1,-rand2,-((-rand2)-1),0,-1,(-rand2)-1,rand2,0}       end    local pos = getThingPos(uid)    nsig = #signal    nvar = 0        repeat    nvar = nvar+1        newpos = {x=pos.x+(signal[nvar]),y=pos.y+(signal[(nsig/2)+nvar]),z=pos.z}    newtile = {x=newpos.x,y=newpos.y,z=newpos.z,stackpos=0}     until getTileThingByPos(newtile).uid ~= 0 and hasProperty(getTileThingByPos(newtile).uid,3) == FALSE and queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2)             if canWalk(newpos) == TRUE then       if distance == nil or distance == 1 then       doTeleportThing(uid,newpos,TRUE)          else       distance = distance-1       doTeleportThing(uid,newpos,TRUE)          if time ~= nil then          addEvent(doPushCreature,time,uid,direction,distance,time)          else          addEvent(doPushCreature,500,uid,direction,distance,500)          end              end    end   end end  local function getPosfromArea(cid,area) icenter = math.floor(table.getn(area)/2)+1 jcenter = math.floor(table.getn(area[1])/2)+1 center = area[icenter] ivar = table.getn(area) jvar = table.getn(area[1]) i = table.getn(area)^2 j = table.getn(area[1])^2    if center[jcenter] == 3 then    local pos = getThingPos(cid)       if getPlayerLookDir(cid) == 0 then  effectpos = {x=pos.x,y=pos.y-1,z=pos.z}  signal = {-1,1,1,2}       elseif getPlayerLookDir(cid) == 1 then effectpos = {x=pos.x+1,y=pos.y,z=pos.z}       signal = {1,-1,2,1}       elseif getPlayerLookDir(cid) == 2 then   effectpos = {x=pos.x,y=pos.y+1,z=pos.z}  signal = {1,-1,1,2}       else effectpos = {x=pos.x-1,y=pos.y,z=pos.z}       signal = {-1,1,2,1}       end  doSendMagicEffect(effectpos, 2)    else    signal = {-1,1,1,2}    end POSITIONS = {}   P = 0      repeat pvar = {0,0} I = area[ivar] J = I[jvar] i = i-1 j = j-1    if J == 1 then       if jvar < jcenter then         pvar[signal[3]] = signal[1]*math.abs((jcenter-jvar))        elseif jvar > jcenter then         pvar[signal[3]] = signal[2]*math.abs((jcenter-jvar))        end              if ivar < icenter then         pvar[signal[4]] = signal[1]*math.abs((icenter-ivar))        elseif ivar > icenter then       pvar[signal[4]] = signal[2]*math.abs((icenter-ivar))       end    end          if jvar > 1 then    jvar = (jvar-1)    elseif ivar > 1 then    jvar = table.getn(area[1])    ivar = (ivar-1)    end   local pos = getThingPos(cid) local areapos = {x=pos.x+(pvar[1]),y=pos.y+(pvar[2]),z=pos.z}      if pos.x ~= areapos.x or pos.y ~= areapos.y then    P = P+1    POSITIONS[P] = areapos    end    until i <= 0 and j <= 0 return POSITIONS end function canWalk(pos, creature, pz, proj) -- nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end local creature = getTopCreature(pos) if creature.type > 0 then return false end if getTilePzInfo(pos) and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onCastSpell(cid, var) pos = getPosfromArea(cid,arr) n = 0 while n < #pos do n = n+1 thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253}    if isCreature(getThingfromPos(thing).uid) == TRUE then    doPushCreature(getThingfromPos(thing).uid,getPlayerLookDir(cid))    doSendAnimatedText(getThingPos(cid), "GET OFF", 215)    end end return doCombat(cid, combat, var)end
  2. Gostei
    hs2m4ever deu reputação a xWhiteWolf em Magia que Empurra   
    Bom galera, a um tempo atrás um amigo pediu uma magia que empurrasse e minha primeira iniciativa foi dar uma procura por aí. A maioria dos scripts que eu achei não funcionava, o resto funcionava cheio dos mais variados bugs então eu decidi pegar um desses scripts como base e fazer a magia que empurra.   
    Testado e funcionando em TFS 0.3.6 (Crying Damson).

    Não lembro de onde eu peguei e nem quem fez porque o autor não colocou créditos no script mas quero deixar bem claro de que 
    80% dos créditos vão pra esse pessoa, visto que eu apenas me baseei na metodologia dele pra fazer o script funcionar sem bugs
    Sem mais delongas, vamos ao script:




    OBS: Ele está 200% funcional, não empurra pra dentro de pz e nem buga de nenhuma forma.   

    Agora no spells.xml adicione: 
    <instant name="Get off here" words="exani grav" lvl="160"  mana="500" prem="1" direction="1" exhaustion="2000" needlearn="0" event="script" value="empurrar.lua"> <vocation id="6"/> <vocation id="7"/> <vocation id="5"/> </instant> Faça bom proveito!! 


    EDIT: Algumas imagens pra vocês


     

     
    PS: Dano adicionado pelo membro @Emersonssss ;]
  3. Gostei
    hs2m4ever deu reputação a xWhiteWolf em Magia que Empurra   
    remove isso do script 
    setCombatParam(combat, COMBAT_PARAM_EFFECT, 2) agora procura essa parte:
      if getPlayerLookDir(cid) == 0 then
          signal = {-1,1,1,2}
          elseif getPlayerLookDir(cid) == 1 then
          signal = {1,-1,2,1}
          elseif getPlayerLookDir(cid) == 2 then
          signal = {1,-1,1,2}
          else
          signal = {-1,1,2,1}
          end
       else
       signal = {-1,1,1,2}
       end

    aqui ele tá pegando a direção do player... como vc quer que a magia solte um efeito na frente dele é só adicionar posições de acordo com a direção que ele tá olhando, sendo que
    NORTH = 0 EAST = 1 SOUTH = 2 WEST = 3 local pos = getThingPos(uid)

    então se a direção que ele ta olhando for 0, o SQM na frente dele vai ser 
     effectpos = {x=pos.x+1,y=pos.y,z=pos.z}
    se for 1 a posição será
     effectpos = {x=pos.x,y=pos.y+1,z=pos.z}
    se for 2 a posição será 
     effectpos = {x=pos.x-1,y=pos.y,z=pos.z}
    se for 3, a posição será
     effectpos = {x=pos.x,y=pos.y-1,z=pos.z}

    daí é só colocar pra mandar o magic effect que vc quiser na posição effectpos.

Informação Importante

Confirmação de Termo