BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Pedido] checkPositionsByDirections(pos)

[Pedido] checkPositionsByDirections(pos)

#1 [Pedido] checkPositionsByDirections(pos) el Vie Ene 29, 2016 10:08 am

Belerofonte


Administrador
Basado en 0.3.6

Requiero de una función que se encargue de crear un borde terrenal en el sqm pisado dependiendo de si se detecta el sqm id: 424 (o si así lo prefieres: 448) en cualquiera de las direcciones: Norte, Sur, Este y Oeste. Ignorando: Nodeste, Nodoeste, Sudeste, Sudoeste.

Es decir:
[Tienes que estar registrado y conectado para ver esa imagen]
Si el jugador pisa el suelo amarillo se verifica que en las direcciones(Norte, Sur, Este y Oeste) se haye el suelo gris y se crea un borde verde distinto cada vez, dependiendo del suelo de alrededor. Ignorando el suelo negro de las esquinas.

Todos los sqm amarillos poseerán un mismo actionid para activar el script. Se crea el borde justo detrás del jugador para que así, vaya dejando como una estela del borde ese a su paso.



Edito:
Código:
  local borders = {11983, 11984, 11985, 11986, 11987, 11988, 11989, 11990, 11991, 11992, 11993} -- Todos.

  local config = {
    resetAid = 8830,
    roadAid = 8831,
  }

  local checkTiles = { -- {Borde} dependiendo de [{la/s dirección/es}]
    [{WEST, NORTH}] = {11983},
    [{WEST}] = {11984},
    [{WEST, SOUTH}] = {11985},
    [{NORTH, EAST}] = {11986},
    [{EAST}] = {11987},
    [{SOUTH, EAST}] = {11988},
    [{SOUTH}] = {11989},
    [{NORTH}] = {11990},
    [{WEST, EAST}] = {11991},
    [{NORTH, SOUTH}] = {11992},
    --[{NORTH, SOUTH, EAST, WEST}] = {11993},
  }

  -- local checkTiles = {
    -- [NORTH] = {},--{11983, 11986, 11990, 11992}, --poner --{11984, 11985, 11987, 11988, 11989, 11991, 11993}, -- restar
    -- [EAST] = {},--{11986, 11987, 11988, 11991}, --poner
    -- [SOUTH] = {},--{11985, 11988, 11989, 11992}, --poner
    -- [WEST] = {},--{11983, 11984, 11985, 11991}, --poner
  -- }

function onStepIn(cid, item, position, fromPosition, itemEx, toPosition)

    if isPlayer(cid) then
      local pos = getThingPos(cid)
        pos.stackpos = 1

        if isInArray(borders, getThingfromPos(pos).itemid) then -- erase
            doSendMagicEffect(pos, CONST_ME_POFF)
            doRemoveItem(getTileThingByPos(pos).uid, 1)
        end
    end

  return true
end

function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)

    if isPlayer(cid) then
        if item.actionid == config.roadAid then -- track

          local pos = getThingPos(cid)
            pos.stackpos = 1
            if not isInArray(borders, getThingfromPos(pos).itemid) then

                for k, v in pairs(checkTiles) do

                  local a = getPosByDir(getThingPos(item.uid), k[1], 1)
                  local b = getPosByDir(getThingPos(item.uid), k[2], 1)
                    a.stackpos, b.stackpos = 0, 0
                    if getTileThingByPos(a).itemid == 424 and getTileThingByPos(b).itemid == 424 then
                        doSendMagicEffect(a, CONST_ME_TELEPORT)
                        doSendMagicEffect(b, CONST_ME_TELEPORT)
                        print('tracked: ' .. v[1])
                        doCreateItem(v[1], 1, lastPosition)
                      return true
                    end

                    -- if getTileThingByPos(a).itemid == 424 then
                        -- doSendMagicEffect(a, CONST_ME_TELEPORT)
                        -- print('border: ' .. v[1])
                        -- doCreateItem(v[1], 1, getThingPos(cid))
                      -- return true
                    -- end
                end
            end
        end
    end

  return true
end
Creo que casi lo tengo, pero al habilitar el párrafo de código de abajo del todo va mal.



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.

 

¿Quién está en línea?

En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .