BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[PEDIDO] Zona para 1 persona

[PEDIDO] Zona para 1 persona

#1 [PEDIDO] Zona para 1 persona el Mar Ago 02, 2016 11:50 pm

Hellscors


Miembro
Por más que busqué no encontre y lo mas parecido fue este:

[Tienes que estar registrado y conectado para ver este vínculo]

e ignorando que esta dificilmente explicado ,le entendi jaja ,pero no aplica en esto porque en ese script si el player se salia de la zona solo ( y no logeando o porque haya muerto ) ,decia que aun habia alguien dentro cuando ya no estaba y por lo tanto ,no dejaba pasar.

Es un script en el cual al entrar por un teleport a una zona 13x13 (es pequeña) no deje entrar a otros hasta que el que este adentro ,se salga ,o lo saque (ya sea porque murio ,porque logeo o por "x" razon)

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

#2 Re: [PEDIDO] Zona para 1 persona el Miér Ago 03, 2016 11:31 pm

Hellscors


Miembro
@Bump

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

#3 Re: [PEDIDO] Zona para 1 persona el Jue Ago 04, 2016 12:28 am

royal kaito


Miembro
hola amigo, podrias explicar mejor para que usaras ese script ??
asi talvez podrias aclarar mejor la pregunta y poder ayudarte

una cosa mas, tengo años que no estoy en el rollo de los ots, aun hay gente por aqui y jugando ot servers como antes xD?

#4 Re: [PEDIDO] Zona para 1 persona el Jue Ago 04, 2016 4:05 am

Belerofonte


Administrador
Server\Data\Creaturescripts\... Login.lua (el archivo ya existente) ...justo debajo de: function onLogin(cid)
Código:
   local Room = {
        izq = {x = 828, y = 1047, z = 7}, -- Coordenada de la esquina superior izquierda del área.
        der = {x = 840, y = 1059, z = 7}, -- Coordenada de la esquina inferior derecha del área.
    }
    if isInRange(getThingPos(cid), Room.izq, Room.der) then
        doTeleportThing(cid, getPlayerMasterPos(cid))
    end



Server\Data\Movements\... Movements.xml
Código:
    <movevent type="StepIn" uniqueid="13007" event="script" value="Private Room.lua"/>
    <movevent type="AddItem" tileitem="1" uniqueid="13007" event="script" value="Private Room.lua"/>
13007 o el que gustes es el que ha de ir al portal.

Server\Data\Movements\Scripts\... Private Room.lua
Código:
local Room = {
    ent = {x = 834, y = 1053, z = 7}, -- Coordenada de dentro del área, hacia donde entrará el jugador.
    izq = {x = 828, y = 1047, z = 7}, -- Coordenada de la esquina superior izquierda del área.
    der = {x = 840, y = 1059, z = 7}, -- Coordenada de la esquina inferior derecha del área.
    msg = 'The room is occupied.', -- Mensaje que saldrá si el cuarto está ocupado.
}

function onStepIn(cid, item, position, fromPosition, toPosition)
    if getPlayersInArea(Room.izq, Room.der) > 0 and not isPlayerGhost(cid) then
        return doTeleportThing(cid, fromPosition, false), doPlayerSendCancel(cid, Room.msg)
    end

    if isPlayer(cid) then
        if not isPlayerGhost(cid) then doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) end
        doTeleportThing(cid, Room.ent)
        if not isPlayerGhost(cid) then doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) end
    end
    return true
end

function onAddItem(moveitem, tileitem, position, cid)
    doSendMagicEffect(position, CONST_ME_TELEPORT)
    doTeleportThing(moveitem.uid, Room.ent)
    doSendMagicEffect(getThingPos(moveitem.uid), CONST_ME_TELEPORT)
end

function getPlayersInArea(from, to)
    local sum = 0
    for xx = from.x, to.x, 1 do
        for yy = from.y, to.y, 1 do
            local pid = getTopCreature({x = xx, y = yy, z = from.z}).uid
            if isPlayer(pid) and not isPlayerGhost(pid) then
                sum = sum + 1
            end
        end
    end
    return sum
end



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]

#5 Re: [PEDIDO] Zona para 1 persona el Jue Ago 04, 2016 4:49 pm

Hellscors


Miembro
@Belero ,pero si pienso poner muchas zonas asi ,en login.lua que hago? osea debajo de

Código:
local Room = {
        izq = {x = 828, y = 1047, z = 7}, -- Coordenada de la esquina superior izquierda del área.
        der = {x = 840, y = 1059, z = 7}, -- Coordenada de la esquina inferior derecha del área.
    }
    if isInRange(getThingPos(cid), Room.izq, Room.der) then
        doTeleportThing(cid, getPlayerMasterPos(cid))
    end

le pongo otro ?
Código:
local Room = {
        izq = {x = 828, y = 1047, z = 7}, -- Coordenada de la esquina superior izquierda del área.
        der = {x = 840, y = 1059, z = 7}, -- Coordenada de la esquina inferior derecha del área.
    }
    if isInRange(getThingPos(cid), Room.izq, Room.der) then
        doTeleportThing(cid, getPlayerMasterPos(cid))
    end

PD: Si me quieres cambiar este script por uno de un sqm que al pisarlo te logie (si se te hace mas facil) ya que yo tengo un script pero solo tiene funcion Onlogin ,es decir para que pueda pasar otro player el de adentro tiene que logear a fuerza. y lo que haria yo es cuando lo saque (en la posicion que lo sacó) poner el sqm que te logie y seria otra solucion Sad

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

#6 Re: [PEDIDO] Zona para 1 persona el Vie Ago 05, 2016 2:42 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:@Belero ,pero si pienso poner muchas zonas asi ,en login.lua que hago?
Creaturescripts\Scripts\... Login.lua
Código:
   local Room = {
       {
           izq = {x = 828, y = 1047, z = 7}, -- Coordenada de la esquina superior izquierda del área.
           der = {x = 840, y = 1059, z = 7}, -- Coordenada de la esquina inferior derecha del área.
       },

       {
           izq = {x = 842, y = 1047, z = 7}, -- Coordenada de la esquina superior izquierda del área.
           der = {x = 845, y = 1050, z = 7}, -- Coordenada de la esquina inferior derecha del área.
       },

   -- Siguiente zona...
   }

   for _, each in ipairs(Room) do
       if isInRange(getThingPos(cid), each.izq, each.der) then
           doTeleportThing(cid, getPlayerMasterPos(cid))
       end
   end

Movements\... Movements.xml:
Código:
<movevent type="StepIn" uniqueid="13007; 13008" event="script" value="Private Room.lua"/>
 <movevent type="AddItem" tileitem="1" uniqueid="13007; 13008" event="script" value="Private Room.lua"/>
Cada uniqueid de cada teleport allá. Y en la tabla Rooms del siguiente script

Movements\Scripts\... Private Room.lua
Código:
local Rooms = {
    msg = 'The room is occupied.', -- Mensaje que saldrá si el cuarto está ocupado.

    [13007] = {
        ent = {x = 834, y = 1053, z = 7}, -- Coordenada de dentro del área, hacia donde entrará el jugador.
        izq = {x = 828, y = 1047, z = 7}, -- Coordenada de la esquina superior izquierda del área.
        der = {x = 840, y = 1059, z = 7}, -- Coordenada de la esquina inferior derecha del área.
    },

    [13008] = {
        izq = {x = 842, y = 1047, z = 7}, -- Coordenada de la esquina superior izquierda del área.
        der = {x = 845, y = 1050, z = 7}, -- Coordenada de la esquina inferior derecha del área.
        ent = {x = 843, y = 1048, z = 7}, -- Coordenada de la esquina inferior derecha del área.
    },

    -- Siguiente zona...
}

function onStepIn(cid, item, position, fromPosition, toPosition)
    local v = Rooms[item.uid]
    if v and isPlayer(cid) then
        if getPlayersInArea(v.izq, v.der) > 0 and not isPlayerGhost(cid) then
            return doTeleportThing(cid, fromPosition, false), doPlayerSendCancel(cid, v.msg)
        end

        if not isPlayerGhost(cid) then doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) end
            doTeleportThing(cid, v.ent)
        if not isPlayerGhost(cid) then doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) end
    end
    return true
end

function onAddItem(moveitem, tileitem, position, cid)
    local v = Rooms[tileitem.uid]
    if v then
        doSendMagicEffect(position, CONST_ME_TELEPORT)
        doTeleportThing(moveitem.uid, v.ent)
        doSendMagicEffect(getThingPos(moveitem.uid), CONST_ME_TELEPORT)
    end
end

function getPlayersInArea(from, to)
    local sum = 0
    for xx = from.x, to.x, 1 do
        for yy = from.y, to.y, 1 do
            local pid = getTopCreature({x = xx, y = yy, z = from.z}).uid
            if isPlayer(pid) and not isPlayerGhost(pid) then
                sum = sum + 1
            end
        end
    end
    return sum
end



[Tienes que estar registrado y conectado para ver este vínculo] escribió:PD: Si me quieres cambiar este script por uno de un sqm que al pisarlo te logie (si se te hace mas facil) ya que yo tengo un script pero solo tiene funcion Onlogin ,es decir para que pueda pasar otro player el de adentro tiene que logear a fuerza. y lo que haria yo es cuando lo saque (en la posicion que lo sacó) poner el sqm que te logie y seria otra solucion Sad

Contaba con que harías cualquier portal normal con el remeres en dicha zona privada, para que sea la salida. ¿No crees que es mejor eso? Lo del login.lua solo lo puse para que no hagan trampas y no puedan estar más de 1 al mismo tiempo en la misma zona.



Fuente: [Tienes que estar registrado y conectado para ver este vínculo] (como ya te puse en 2013 )



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]

#7 Re: [PEDIDO] Zona para 1 persona el Vie Ago 05, 2016 8:51 pm

Hellscors


Miembro
@Belero
Ya lo probé y si funciona ,peroooooo (xd) ,no aparece el mensaje que dice "este room esta ocupado" ,y ese script solo funciona en el piso? porque lo queria para un teleport ;d ,o solo le cambio el uniqueid por actionid?

Y si puedes decirme / explicarme / aconsejarme (8
esta parte para que es?

para cuando pongan items o ?


PD: Olvida lo del teleport ,lo preferí en piso ,pero no olvides lo del mensajito xD

http://www.blacktibia.org/t32971-86-prestige-imperia-ot-server-h

#8 Re: [PEDIDO] Zona para 1 persona el Sáb Ago 06, 2016 5:20 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:@Belero
Ya lo probé y si funciona ,peroooooo (xd) ,no aparece el mensaje que dice "este room esta ocupado" ,

return doTeleportThing(cid, fromPosition, false), doPlayerSendCancel(cid, v.msg)
:down:  :down:  :down:  :down:  :down:  :down:  :down:  :down:  :down:  :down:  :down:  :down:  :down:  :down:  :down:  :down:  :down: :down: :down:
return doTeleportThing(cid, fromPosition, false), doPlayerSendCancel(cid, Rooms.msg)



[Tienes que estar registrado y conectado para ver este vínculo] escribió:y ese script solo funciona en el piso? porque lo queria para un teleport ;d ,o solo le cambio el uniqueid por actionid?
Sí, no importa el objeto en donde lo pongas. Lo puedes poner en un portal, piso, o en cualquier objeto siempre que se pueda pisar. Sé que ya no lo quieres así, lo digo solo para que lo sepas para una próxima vez c:

Al ponerle el uniqueidal al portal y aceptar te saldría un mensaje notificándote de que la coordenada puesta {0, 0, 0} es incorrecta bla bla bla, y la opción de si quieres editarla. Le das a "no" y listo.



[Tienes que estar registrado y conectado para ver este vínculo] escribió:Y  si puedes decirme / explicarme / aconsejarme (8
esta parte para que es?
Código:
<movevent type="AddItem" tileitem="1" uniqueid="13007; 13008" event="script" value="Private Room.lua"/>
para cuando pongan items o ?
Correcto, eso junto con:
Código:
function onAddItem(moveitem, tileitem, position, cid)
    local v = Rooms[tileitem.uid]
    if v then
        doSendMagicEffect(position, CONST_ME_TELEPORT)
        doTeleportThing(moveitem.uid, v.ent)
        doSendMagicEffect(getThingPos(moveitem.uid), CONST_ME_TELEPORT)
    end
end
Es para que los objetos que se depositen ahí sean teletransportados a la Private Room. Es un simple detallito, como los portales que crees desde el remeres ya tienen esa acción incorporada... pues, para que se les parezcan a esos.
...Y no se quede ilógicamente el objeto encima del portal.

Aunque, si no lo quieres, simplemente borras la línea y esa parte de código anterior.



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]

#9 Re: [PEDIDO] Zona para 1 persona el Vie Ago 12, 2016 1:59 pm

erick3234


Novato
Buenas una pregunta amigo ese scrip se puede usar con un moster que al morir deje un tp y solo la persona que lo mato pueda pasar? o hay que modificarle algo?

#10 Re: [PEDIDO] Zona para 1 persona Hoy a las 8:48 pm

Contenido patrocinado


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 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 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 .