GS-Zone

Mapa con límite de usuarios Ir al Indice

Moderadores: Moderadores de Argentum, Especialistas de Argentum, Especialistas de Programación

9

Nota » 02 Feb 2012 22:00

Alguien me podria dar una mano con esto?
Con el título me refiero a cómo hacer para poner un Límite de usuarios en X mapa..
Por ejemplo quiero ponerle el límite de usuarios de 4 personas, y que si una otra persona quisiera entrar le saltara en la consola, el mapa esta lleno
Como podria hacer?
<NEWBIE>
51
Newbie [1]
Registrado: Enero 2012
Mensajes: 32

Nota » 02 Feb 2012 22:02

Moveuserchar creo

if mapinfo(MAPA).NUMUSERS = 4 THEN
EXIT SUB

Imagen
@lautamarino
531
Oraculo [5]
Registrado: Octubre 2011
Mensajes: 2035
Aportes: 46
Premios: 1
Embajador (1)

Nota » 02 Feb 2012 22:04

En el SERVER:

En el DoTileEvents:

Busca:
  1. Else 'No es Faccionario
  2.                         Call WriteConsoleMsg(UserIndex, "Solo se permite entrar al mapa si eres miembro de alguna facción.", FontTypeNames.FONTTYPE_INFO)
  3.                         Call ClosestStablePos(UserList(UserIndex).Pos, nPos)
  4.                        
  5.                         If nPos.x <> 0 And nPos.Y <> 0 Then
  6.                             Call WarpUserChar(UserIndex, nPos.Map, nPos.x, nPos.Y, FxFlag)
  7.                         End If
  8.                     End If


Abajo pones:

  1. ElseIf MapInfo(DestPos.Map).name = MapInfo(3).name Then
  2.                    If MapInfo(3).NumUsers >= 4 Then
  3.                      Call WriteConsoleMsg(UserIndex, "El mapa ya tiene el máximo de usuarios.", FontTypeNames.FONTTYPE_INFO)
  4.                         Call ClosestStablePos(UserList(UserIndex).Pos, nPos)
  5.                        If nPos.x <> 0 And nPos.Y <> 0 Then
  6.                             Call WarpUserChar(UserIndex, nPos.Map, nPos.x, nPos.Y, FxFlag)
  7.                         End If


Esto sería unicamente mediante un teleport.
Última edición por Anelark el 02 Feb 2012 22:05, editado 1 vez en total
Usuario Registrado
148
Newbie [5]
Registrado: Diciembre 2011
Mensajes: 160
Aportes: 1

Nota » 02 Feb 2012 22:10

Tambien podria ser asi

  1. If MapInfo(3).NumUsers >= 4 Then exit sub
Usuario Registrado
104
Aprendiz [1]
Registrado: Años de membresíaAños de membresíaAños de membresíaAños de membresía
Mensajes: 213
Aportes: 3

Nota » 02 Feb 2012 22:18

Storax escribió:Tambien podria ser asi

  1. If MapInfo(3).NumUsers >= 4 Then exit sub



Lo que va entre paréntesis (3) es el nº de mapa que quiero limitar de usuarios?
Porque lo que yo quiero no es que entren con teleports, sino por un traslado de mapas, me entendes?

Anelark escribió:En el SERVER:

En el DoTileEvents:

Busca:
MOSTRAR TODO EL CÓDIGO | NUMERO DE LINEA | OCULTAR/MOSTRAR | SELECCIONAR TODO
Else 'No es Faccionario
Call WriteConsoleMsg(UserIndex, "Solo se permite entrar al mapa si eres miembro de alguna facción.", FontTypeNames.FONTTYPE_INFO)
Call ClosestStablePos(UserList(UserIndex).Pos, nPos)

If nPos.x <> 0 And nPos.Y <> 0 Then
Call WarpUserChar(UserIndex, nPos.Map, nPos.x, nPos.Y, FxFlag)
End If
End If


Abajo pones:

MOSTRAR TODO EL CÓDIGO | NUMERO DE LINEA | OCULTAR/MOSTRAR | SELECCIONAR TODO
ElseIf MapInfo(DestPos.Map).name = MapInfo(3).name Then
If MapInfo(3).NumUsers >= 4 Then
Call WriteConsoleMsg(UserIndex, "El mapa ya tiene el máximo de usuarios.", FontTypeNames.FONTTYPE_INFO)
Call ClosestStablePos(UserList(UserIndex).Pos, nPos)
If nPos.x <> 0 And nPos.Y <> 0 Then
Call WarpUserChar(UserIndex, nPos.Map, nPos.x, nPos.Y, FxFlag)
End If


Y como haria para aplicar ese codigo , pero no con teleports, sino con traslados de mapa.
<NEWBIE>
51
Newbie [1]
Registrado: Enero 2012
Mensajes: 32

Nota » 02 Feb 2012 22:25

DCH escribió:
Storax escribió:Tambien podria ser asi

  1. If MapInfo(3).NumUsers >= 4 Then exit sub



Lo que va entre paréntesis (3) es el nº de mapa que quiero limitar de usuarios?
Porque lo que yo quiero no es que entren con teleports, sino por un traslado de mapas, me entendes?

Anelark escribió:En el SERVER:

En el DoTileEvents:

Busca:
MOSTRAR TODO EL CÓDIGO | NUMERO DE LINEA | OCULTAR/MOSTRAR | SELECCIONAR TODO
Else 'No es Faccionario
Call WriteConsoleMsg(UserIndex, "Solo se permite entrar al mapa si eres miembro de alguna facción.", FontTypeNames.FONTTYPE_INFO)
Call ClosestStablePos(UserList(UserIndex).Pos, nPos)

If nPos.x <> 0 And nPos.Y <> 0 Then
Call WarpUserChar(UserIndex, nPos.Map, nPos.x, nPos.Y, FxFlag)
End If
End If


Abajo pones:

MOSTRAR TODO EL CÓDIGO | NUMERO DE LINEA | OCULTAR/MOSTRAR | SELECCIONAR TODO
ElseIf MapInfo(DestPos.Map).name = MapInfo(3).name Then
If MapInfo(3).NumUsers >= 4 Then
Call WriteConsoleMsg(UserIndex, "El mapa ya tiene el máximo de usuarios.", FontTypeNames.FONTTYPE_INFO)
Call ClosestStablePos(UserList(UserIndex).Pos, nPos)
If nPos.x <> 0 And nPos.Y <> 0 Then
Call WarpUserChar(UserIndex, nPos.Map, nPos.x, nPos.Y, FxFlag)
End If


Y como haria para aplicar ese codigo , pero no con teleports, sino con traslados de mapa.


Es lo mismo u.u

Pensa vos nomas un teleport para llevar a alguien a otro lado que tiene?

UN TRASLADO

Para pasar de un mapa a otro mapa que hay?

UN TRASLADO

por lo cual el codigo te sirve-

Mapinfo(NUMERO DE MAPA VA ACA)
Este mensaje ha obtenido 3 Monedas de Oro.

Usuario Registrado
148
Newbie [5]
Registrado: Diciembre 2011
Mensajes: 160
Aportes: 1

Nota » 02 Feb 2012 22:42

Anelark escribió:Y como haria para aplicar ese codigo , pero no con teleports, sino con traslados de mapa.

Es lo mismo u.u
Pensa vos nomas un teleport para llevar a alguien a otro lado que tiene?
UN TRASLADO
Para pasar de un mapa a otro mapa que hay?
UN TRASLADO
por lo cual el codigo te sirve-
Mapinfo(NUMERO DE MAPA VA ACA)[/quote]

Muchas gracias y perdon por la ignorancia..
Apenas pueda lo pruebo !
P.D: Si quisiera más de un mapa que tengan limitaciones de usuarios, solamente repito el code cambiando Mapinfo(nº mapa)
<NEWBIE>
51
Newbie [1]
Registrado: Enero 2012
Mensajes: 32

Nota » 02 Feb 2012 22:58

No hace falta que vuelvas a poner todo de nuevo simplemente agrega una "," al lado del mapa que habias puesto antes por ej :

  1. ElseIf MapInfo(DestPos.Map).name = MapInfo(3, 4).name Then
  2.                    If MapInfo(3, 4).NumUsers >= 4 Then
  3.                      Call WriteConsoleMsg(UserIndex, "El mapa ya tiene el máximo de usuarios.", FontTypeNames.FONTTYPE_INFO)
  4.                         Call ClosestStablePos(UserList(UserIndex).Pos, nPos)
  5.                        If nPos.x <> 0 And nPos.Y <> 0 Then
  6.                             Call WarpUserChar(UserIndex, nPos.Map, nPos.x, nPos.Y, FxFlag)
  7.                         End If


y asi.
Este mensaje ha obtenido 3 Monedas de Oro.

Usuario Registrado
104
Aprendiz [1]
Registrado: Años de membresíaAños de membresíaAños de membresíaAños de membresía
Mensajes: 213
Aportes: 3

Nota » 03 Feb 2012 03:05

Storax escribió:Tambien podria ser asi

  1. If MapInfo(3).NumUsers >= 4 Then exit sub


No, no podría ser así, hay que hacer todas las validaciones que hice ahí (en el post de anelark que en realidad es un code mio)
si no no hace nada
Unknown Pleasures
277
Newbie [4]
Registrado: Diciembre 2011
Mensajes: 102
Aportes: 6


Volver a AO 0.13.x

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados