• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Moveevents] piso que si hay un player en la sala no deje entrar a nadie mas

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    akane

    akane
    Miembro
    Miembro
    Hola a todos, busco un script en donde si entro a una sala, los demás players no puedan entrar hasta que yo salga de la sala.

    estoy ocupando tfs 0.4

    Muchas gracias Very Happy

    2 participantes

    SoyFabi

    SoyFabi
    Miembro
    Miembro
    Colocas esta funcion en algun lugar de libs (Si no funciona o salen errores, entonces coloca la function en un lugar del scripts)
    data/libs/050-function
    Código:
    function getPlayerSpectators(centerPos, rangeX, rangeY, multifloor)
       multifloor = multifloor and true or false -- multifloor is optional, default 'false'
       local list = {}
       local spectators = getSpectators(centerPos, rangeX, rangeY, multifloor)
       if spectators then -- spectators may be 'nil' on TFS 0.4
          for _, cid in pairs(spectators) do
             if isPlayer(cid) then
                table.insert(list, cid)
             end
          end
       end

       return list
    end

    Para utilizarza en un scripts:
    Código:
    local spectators = getPlayerSpectators({x = XXX, y = XXX, z = X}, 7, 7, false)
    for _, spectator in ipairs(spectators) do
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Text!")
        return true
    end

    Ejemplo:
    Código:
    local areaC = {
     centerPosition = {x = 159, y = 388, z = 7},
     rangeX = 5,
     rangeY = 5,
     multifloor = false
    }

    function onUse(cid, item, fromPosition, itemEx, toPosition)
     local spectators = getPlayerSpectators(areaC.centerPosition, areaC.rangeX, areaC.rangeY, areaC.multifloor)
     local spectators = getPlayerSpectators({x = XXX, y = XXX, z = X}, 7, 7, false)
     for _, spectator in ipairs(spectators) do
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "La sala esta ocupada, vuelve en otro momento.")
     return true
     end

     return true
    end

    2 participantes

    akane

    akane
    Miembro
    Miembro
    no hace nada el script

    2 participantes

    SoyFabi

    SoyFabi
    Miembro
    Miembro
    Probe este movements y funciona bien.

    Código:
    function getPlayerSpectators(centerPos, rangeX, rangeY, multifloor)
       multifloor = multifloor and true or false -- multifloor is optional, default 'false'
       local list = {}
       local spectators = getSpectators(centerPos, rangeX, rangeY, multifloor)
       if spectators then -- spectators may be 'nil' on TFS 0.4
          for _, cid in pairs(spectators) do
             if isPlayer(cid) then
                table.insert(list, cid)
             end
          end
       end

       return list
    end

    local areaC = {
     centerPosition = {x = 159, y = 388, z = 7},
     rangeX = 5,
     rangeY = 5,
     multifloor = false
    }

    function onStepIn(cid, item, position, fromPosition)
     local spectators = getPlayerSpectators(areaC.centerPosition, areaC.rangeX, areaC.rangeY, areaC.multifloor)
     for _, spectator in ipairs(spectators) do
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "La sala esta ocupada, vuelve en otro momento.")
     doTeleportThing(cid, fromPosition, true)
     return true
     end
     return true
    end

    Aqui colocas la posicion del centro de la room:
    Código:
    {x = 159, y = 388, z = 7},
    con su anchura del cuadrado,
    rangeY = 5, son 5 hacia arriba o abajo.
    rangeX = 5, son 5 hacia izquierda o derecha.

    2 participantes

    akane

    akane
    Miembro
    Miembro
    el script no funciona, cuando entra el primer player funciona todo bien, pero si entra el segundo al ir avanzando se pone la pantalla en negro

    2 participantes

    SoyFabi

    SoyFabi
    Miembro
    Miembro
    Prueba este:
    Código:

    local BossRoom = {
       areaSalaBoss = {{x = 158, y = 386, z = 7}, {x = 161, y = 389, z = 7}},
    }

    function onStepIn(cid, item, position, fromPosition)
       function checkPlayersInRoom()
          local player_room = 0
          for x = BossRoom.areaSalaBoss[1].x, BossRoom.areaSalaBoss[2].x do
             for y = BossRoom.areaSalaBoss[1].y, BossRoom.areaSalaBoss[2].y do
                for z = BossRoom.areaSalaBoss[1].z, BossRoom.areaSalaBoss[2].z do
                   local pos = {x=x, y=y, z=z,stackpos = 253}
                   local thing = getThingfromPos(pos)
                   if thing.itemid > 0 and isPlayer(thing.uid) == true then
                      player_room = player_room+1
                   end
                end
             end
          end
          return player_room
       end
       
       if checkPlayersInRoom() > 1 then
          doPlayerSendTextMessage(cid,19, "There is already a team in the boss room.")
          doTeleportThing(cid, fromPosition, true)
          return true
       end
       
       return true
    end

    2 participantes

    akane

    akane
    Miembro
    Miembro
    muchas gracias bro, ahí si me funcionó

    2 participantes

    Contenido patrocinado


    2 participantes

    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.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).