BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[PEDIDO] Arena Tp

[PEDIDO] Arena Tp

#1 [PEDIDO] Arena Tp el Sáb Jun 07, 2014 5:10 pm

Archonth


Estudiante
Buenas tardes compañeros de Black Tibia.
Lo que ando buscando es un ''TP'' el cual detecte que cuando hayan 2 players en el destino del ''TP'' este se cierre.
Como para el uso de una arena.

De esta manera solo se podria 1 vs 1 en la arena   
Saludos, Espero alguien pueda ayudar.. ya que esto le servira a muchos aqui en el foro :)Saludines

[Tienes que estar registrado y conectado para ver esa imagen]

#2 Re: [PEDIDO] Arena Tp el Miér Jun 18, 2014 9:33 am

Archonth


Estudiante
@BUMP

#3 Re: [PEDIDO] Arena Tp el Miér Jun 18, 2014 12:29 pm

Belerofonte


Administrador
Script & Comentario actualizados. 29/Junio/2014


Te vas a tu Servidor/Data/Mods/... copias un archivo.xml y lo pegas en esa misma carpeta, le cambias el nombre
que tenga por el de ColiseoSystem.xml (o el que quieras), lo abres & sutitúyes todo lo que haya dentro a cambio de lo siguiente:
Código:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Coliseo System" version="Tested on 0.3.6" author="Belero" contact="http://www.blacktibia.org/u3171" enabled="yes">
<description>
• Si un jugador entra, será informado a todo el Servidor.
• Cada vez que alguien entre, lo hará al azar en cualquier parte.
• Limitación configurable de jugadores peleando dentro al mismo tiempo.
• Aparece Efecto Mágico + Texto Animado encima del Portal de entrada avisando si ya está lleno o se puede entrar.
• Si se logean estando dentro de los márgenes que forman la Arena, serán llevados a sus correspondientes Templos, para evitar que hagan trampas.
• Puntuación competitíva al Ganar/Perder. Ejemeplo: "Archonth (Número de veces que le ha ganado a Belerofonte) VS Belerofonte (Número de veces que le ha ganado a Archonth)".
</description>
<config name="Coliseo"><![CDATA[
--------###CONFIGURACIÓN ABAJO###--------
config = {
  fromp = {x=1276, y=877, z=6}, -- Coordenada de la ESQUINA SUPERIOR IZQUIERDA del cuadrilátero que forme el Coliseo.
  to = {x=1280, y=880, z=6}, -- Coordenada de la ESQUINA INFERIOR DERECHA del cuadrilátero que forme el Coliseo.
  limit = 2, -- Número límite de jugadores que podrán pelear dentro del Coliseo.  
  msg = "Ya hay un duelo.", -- Mensaje que le saldrá al jugador que intente entrar excediéndo el límite de jugadores.
  tpUID = 7391, -- UniqueID que le hayas puesto al Teleport de entrada al Coliseo.
status = {
 -- "TEXTO", COLOR, EFECTO MÁGICO,
    "Arena", COLOR_GREEN, CONST_ME_MAGIC_GREEN,
    "Full", COLOR_RED, CONST_ME_MAGIC_RED,
          }
          }
--------###CONFIGURACIÓN ARRIBA###--------
]]></config>
<lib name="Coliseo-Lib"><![CDATA[ -- Función que chequea si hay jugadores en un área.
function getPlayersInArea(fromp, to) -- CyberM was here.
  local sum = 0
    for xx = fromp.x, to.x, 1 do
        for yy = fromp.y, to.y, 1 do
            for zz = fromp.z, to.z, 1 do
              local pid = getTopCreature({x = xx, y = yy, z = fromp.z}).uid
                if isPlayer(pid) and getPlayerGroupId(pid) == 1 then
                    sum = sum+1
                end
            end
        end
    end
  return sum
end
]]></lib>
<movevent type="StepIn" uniqueid="7391" event="script"><![CDATA[ -- Entrada al Coliseo.
 domodlib('Coliseo')
 domodlib('Coliseo-Lib')
function onStepIn(cid, item, pos, fromPos, toPos)
    if getPlayersInArea(config.fromp, config.to) ~= config.limit and getPlayerGroupId(cid) == 1 then
            doSendMagicEffect(pos, CONST_ME_TELEPORT)
            doTeleportThing(cid, {x=math.random(config.fromp.x, config.to.x), y=math.random(config.fromp.y, config.to.y),z=math.random(config.fromp.z, config.to.z)})
            doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
            doBroadcastMessage(getPlayerName(cid) .. " ha entrado en la Arena.", MESSAGE_INFO_DESCR)
 else
         doPlayerSendCancel(cid, config.msg)
         doSendMagicEffect(toPos, CONST_ME_POFF)
         doTeleportThing(cid, toPos)
    end
    if getPlayerGroupId(cid) > 1 then
        doTeleportThing(cid, {x=math.random(config.fromp.x, config.to.x), y=math.random(config.fromp.y, config.to.y),z=math.random(config.fromp.z, config.to.z)})
    end
  return true
end
]]></movevent>
<globalevent name="FightStatus" interval="1" event="script"><![CDATA[ -- Efecto & Texto animado si hay alguien o no.
 domodlib('Coliseo')
 domodlib('Coliseo-Lib')
function onThink(interval, lastExecution)
    if getPlayersInArea(config.fromp, config.to) ~= config.limit then
        doSendAnimatedText(getThingPos(config.tpUID), config.status[1], config.status[2])
        doSendMagicEffect (getThingPos(config.tpUID), config.status[3])
    else
      doSendAnimatedText(getThingPos(config.tpUID), config.status[4], config.status[5])
      doSendMagicEffect (getThingPos(config.tpUID), config.status[6])
    end
  return true
end
]]></globalevent>
<event type="kill" name="FightPoints" event="script"><![CDATA[ -- Ganador (Puntos) VS Perdedor (Puntos)
 domodlib('Coliseo')
function onKill(cid, target)
    if isPlayer(cid) and isPlayer(target) then
      local nameTRG = getPlayerGUID(target)+59000
      local nameKIL = getPlayerGUID(cid)+59000
        if isInRange(getThingPosition(cid), config.fromp, config.to) then
            if getPlayerStorageValue(cid, nameTRG) < 0 then
                setPlayerStorageValue(cid, nameTRG, 0)
            end
            if isInRange(getThingPosition(target), config.fromp, config.to) then
                if getPlayerStorageValue(target, nameKIL) < 0 then
                    setPlayerStorageValue(target, nameKIL, 0)  
                end
            end
            setPlayerStorageValue(cid, nameTRG, getPlayerStorageValue(cid, nameTRG)+1)
            doPlayerSendTextMessage (target, MESSAGE_STATUS_CONSOLE_BLUE, getPlayerName(target) .. "(" .. getPlayerStorageValue(target, nameKIL) .. ") VS " .. getPlayerName(cid) .. "(" .. getPlayerStorageValue(cid, nameTRG) .. ")")
            doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_BLUE, getPlayerName(cid) .. "(" .. getPlayerStorageValue(cid, nameTRG) .. ") VS " .. getPlayerName(target) .. "(" .. getPlayerStorageValue(target, nameKIL) .. ")")
        end
    end
  return true
end
]]></event>
<event type="login" name="FightRegister" event="script"><![CDATA[ -- Si se logea dentro, será expulsado para evitar trampas.
 domodlib('Coliseo')
  registerCreatureEvent(cid, "FightPoints")
    if isInRange(getThingPos(cid), config.fromp, config.to) and getPlayerGroupId(cid) == 1 then
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    end
  return true
]]></event>
</mod>

Has de editar esas variables de arriba dependiéndo de sus mini-explicaciones:
--------###CONFIGURACIÓN ABAJO###--------
config = {
 from = {x=917, y=1037, z=8}, -- Coordenada de la ESQUINA SUPERIOR IZQUIERDA del cuadrilátero que forme el Coliseo.
 to = {x=921, y=1040, z=8}, -- Coordenada de la ESQUINA INFERIOR DERECHA del cuadrilátero que forme el Coliseo.
 limit = 2, -- Número límite de jugadores que podrán entrar al mismo tiempo dentro del Coliseo.
 msg = "Ya hay un duelo.", -- Mensaje que le saldrá al jugador que intente entrar excediéndo el límite de jugadores.
 tpUID = 7391, -- UniqueID que le hayas puesto al Teleport de entrada al Coliseo.
status = {
-- "TEXTO", COLOR textual, EFECTO MÁGICO,
   "Arena", COLOR_GREEN, CONST_ME_MAGIC_GREEN, -- Si se puede entrar.
   "Full", COLOR_RED, CONST_ME_MAGIC_RED, -- Si está lleno.
        }
        }
--------###CONFIGURACIÓN ARRIBA###--------

Más el uniqueid de la línea número 40:
<movevent type="StepIn" uniqueid="7391" event="script">
Poniéndo el número que no estés usando ya en otro script, el cual has de ponerlo en el Portal de entrada al Coliseo con el Remeres.

Y el interval de la línea número 60:
<globalevent name="BoxeoStatus" interval="1000" event="script">
Poniéndo el tiempo que ha de tanscurrir para que salga la notificación de EfectoMágico+TextoAnimado encima del Portal de entrada, que avisa si el Coliseo está operativo o ya hay gente luchando.

Por último has de "pintar" con el Remeres, la zona del Coliseo con la herramienta "PVP Zone Tool".

PD: Al entrar, el jugador será llevado a cualquiera de los lugares al azar de dentro del Coliseum.
Lo puse así porque tiene un pequeño fallito, si entra un jugador a un lugar determinado, quedándose ahí sin moverse y luego entra otro en esa misma posición pues el script no detectará que ya se ha excedido el límite de jugadores y podrán seguir entrando todos los que quieran. No supe cómo arreglarlo Okay



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]

#4 Re: [PEDIDO] Arena Tp el Miér Dic 23, 2015 2:09 pm

Krápula


Miembro
colocar algo asi como
Código:
Minimo lvl 50 maximo 70  
Minimo lvl 71  maximo 100
Minimo lvl 101 maximo 120
Minimo lvl 121 maximo 150
Minimo lvl 150 maximo 200

Para que pueda ser mas equilibrado

[Tienes que estar registrado y conectado para ver este vínculo]  Taba buscando que pedirte para joderte no mas la vida 1 reto pegueño

#5 Re: [PEDIDO] Arena Tp Hoy a las 4:11 am

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 .