GS-Zone

Autoinvocación de PJS Ir al Indice

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

11

Nota » 05 Feb 2012 23:41

Cómo sería masomenos para hacer un sistema de autoinvocacion de usuarios a mapa x, que para entrar a X mapa tengan que ponerse 2 usuarios en X pos y X mapa por ejemplo, un usuario se pone en la poss 1 , 50 , 50 y el otro usuario se pone en la poss 1, 50 , 51 y automaticamente los transporte a otro mapa,si uno solo se pone en 1,50 50 no funcione, solamente con los DOS usuarios en esas distintas posiciones, me fije en el aporte de invocacion de npc de matih.-(sistema_de_invocacion_invi_con_alpha_tjyg.html) (que en ciertas ocasiones se asimila al sistema que quiero implementar) pero no sabría que tocar.. capaz no tiene nada que ver

si alguno puede darme una mano le agradecería mucho, saludos



Pienso que sería algo con esto en el
Sub DoTileEvents
If MapData(mapa, posX, posY).UserIndex > 0 And MapData(mapa, posX, posY).UserIndex > 0 And MapData(mapa, posX, posY).UserIndex > 0 Then
...
Última edición por DCH el 06 Feb 2012 00:00, editado 2 veces en total
<NEWBIE>
51
Newbie [1]
Registrado: Enero 2012
Mensajes: 32

Nota » 06 Feb 2012 02:09

Fijate implementalo hasta la mitad xD
fijete que en una dice edit

Imagen
Ninja en progreso
909
Dragon Ancestral [5]
Registrado: Años de membresía
Ubicación: • olivos •
Mensajes: 4086
Aportes: 13

Nota » 06 Feb 2012 02:39

miqueas150 escribió:Fijate implementalo hasta la mitad xD
fijete que en una dice edit


Lo logré hacer y el code me quedó así ( Me basé en el invocar bestia de maTih.-)
En DoTileEvents

If MapData(112, 13, 55).UserIndex > 0 And MapData(112, 15, 55).UserIndex > 0 Then
retador(1) = MapData(mapa, 13, 55).UserIndex
retador(2) = MapData(mapa, 15, 55).UserIndex
Call WarpUserChar(retador(1), 296, 54, 43, True)
Call WarpUserChar(retador(2), 296, 63, 43, True)
End If


Declarar
Public retador(1 To 2) As Integer
Public Const mapa As Integer = 112


Pero ahora tengo un problema, quiero limitar cantidad de usuarios al mapa que me lleva esto, pero como es warpuserchar y no por traslados, no me funciona, tendrías idea de como podría hacer? Como que "Los retos están ocupados" o algo ... probé con esto

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

Pero te deja de andar el code que yo implementé,o sea que no sirve eso
Última edición por DCH el 06 Feb 2012 02:40, editado 2 veces en total
<NEWBIE>
51
Newbie [1]
Registrado: Enero 2012
Mensajes: 32

Nota » 06 Feb 2012 02:46

Es esa linea que vos dijiste.

If MapData(mapa, 59, 60).UserIndex > 0 And MapData(mapa, 60, 60).UserIndex > 0 Then

Le sacas un y listo.

Pero igual creo que mejor seria esto:

Busca HandleWalk

y tiene que tener una linea asi : call moveuserchar(argumentos)

abajo pone esto:

  1.                If UserList(UserIndex).Pos.Map = mapa Then
  2.                     If UserList(UserIndex).Pos.X = posX Then
  3.                         If UserList(UserIndex).Pos.Y = posY Then
  4.                             If MapData(mapa, posX + 1, posY) > 0 Then
  5.                                 'ACA VA LO QUE TIENE QUE PASAR
  6.                             End If
  7.                         End If
  8.                     End If
  9.                 End If



Tenes que cambiar donde dice mapa, posx y posy

Lo hice con varios ifs ya que en visual basic es mas rapido asi que usando el and.
Aguante River Plate ! ! !
897 (+5)
Moderador
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Villa adelina, Vicente Lopez.
Mensajes: 14425
Aportes: 304
Premios: 10
Señor Moderador (3) Señor Reglamento (1) Aportes (2) Embajador (3) Detector de Bugs (1)

Nota » 06 Feb 2012 03:00

Franeg95 escribió:
  1.                If UserList(UserIndex).Pos.Map = mapa Then
  2.                     If UserList(UserIndex).Pos.X = posX Then
  3.                         If UserList(UserIndex).Pos.Y = posY Then
  4.                             If MapData(mapa, posX + 1, posY) > 0 Then
  5.                                 'ACA VA LO QUE TIENE QUE PASAR
  6.                             End If
  7.                         End If
  8.                     End If
  9.                 End If



Tenes que cambiar donde dice mapa, posx y posy
Lo hice con varios ifs ya que en visual basic es mas rapido asi que usando el and.

2 preguntas
1) If MapData(mapa, posX + 1, posY) > 0 Then que significa ese posx+1?
2) Donde pusiste 'aca va lo que tiene que pasar, ¿sería el mapa el cual quiero limitar cantidad de usuarios?
<NEWBIE>
51
Newbie [1]
Registrado: Enero 2012
Mensajes: 32

Nota » 06 Feb 2012 09:42

  1. If MapData(112, 13, 55).UserIndex > 0 And MapData(112, 15, 55).UserIndex > 0 Then
  2. retador(1) = MapData(mapa, 13, 55).UserIndex
  3. retador(2) = MapData(mapa, 15, 55).UserIndex
  4. Call WarpUserChar(retador(1), 296, 54, 43, True)
  5. Call WarpUserChar(retador(2), 296, 63, 43, True)
  6. End If
  7.  


Remplazalo por:

  1.  
  2. If MapInfo(mapa).NumUsers >= CANTIDADMAXIMADEUSUARIOS Then
  3. Call WriteConsoleMsg(UserIndex, "Ya hay gente en ese mapa.", FontTypeNames.FONTTYPE_INFO)
  4. If MapData(112, 13, 55).UserIndex > 0 And MapData(112, 15, 55).UserIndex > 0 And MapInfo(MAPA).NumUsers = 0 Then
  5. retador(1) = MapData(mapa, 13, 55).UserIndex
  6. retador(2) = MapData(mapa, 15, 55).UserIndex
  7. Call WarpUserChar(retador(1), 296, 54, 43, True)
  8. Call WarpUserChar(retador(2), 296, 63, 43, True)
  9. End If
  10. End If
  11.  


Supongo que así debería funcionar. Fijate.

Director Madnait AO

http://madnait-ao.ucoz.com

Imagen

Imagen
Director Madnait AO
215
Newbie [6]
Registrado: Años de membresía
Mensajes: 195
Aportes: 3

Nota » 06 Feb 2012 09:53

DCH escribió:
Franeg95 escribió:
  1.                If UserList(UserIndex).Pos.Map = mapa Then
  2.                     If UserList(UserIndex).Pos.X = posX Then
  3.                         If UserList(UserIndex).Pos.Y = posY Then
  4.                             If MapData(mapa, posX + 1, posY) > 0 Then
  5.                                 'ACA VA LO QUE TIENE QUE PASAR
  6.                             End If
  7.                         End If
  8.                     End If
  9.                 End If



Tenes que cambiar donde dice mapa, posx y posy
Lo hice con varios ifs ya que en visual basic es mas rapido asi que usando el and.

2 preguntas
1) If MapData(mapa, posX + 1, posY) > 0 Then que significa ese posx+1?
2) Donde pusiste 'aca va lo que tiene que pasar, ¿sería el mapa el cual quiero limitar cantidad de usuarios?



Lo de posX y posY es la posicion, eso lo tenes que cambiar vos para donde queres que caiga el usuario y lo del limite de usuarios no esta en ese codigo creo
Suerte

Imagen
Usuario Registrado
378
Aprendiz [1]
Registrado: Años de membresía
Mensajes: 221

Nota » 06 Feb 2012 14:47

DCH decime expresamente que queres hacer?
Aguante River Plate ! ! !
897 (+5)
Moderador
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Villa adelina, Vicente Lopez.
Mensajes: 14425
Aportes: 304
Premios: 10
Señor Moderador (3) Señor Reglamento (1) Aportes (2) Embajador (3) Detector de Bugs (1)

Nota » 06 Feb 2012 17:12

Franeg95 escribió:DCH decime expresamente que queres hacer?


creo que quiere algo como lapsus ao, que 2 usuarios se paraban en X posicion y los sumoneaba a la sala de invocaciones.

EJ:

Pepito se para en la posicion 1,50,50
Pepita se para en la posicion 1,50,51

y los sumonea a los 2 al mapa 25,50,50 (Ejemplo) xd..
Mayra Arduini (L
524
Aprendiz [7]
Registrado: Mayo 2011
Mensajes: 468
Aportes: 7

Nota » 06 Feb 2012 18:59

Franeg95 escribió:DCH decime expresamente que queres hacer?

un sistema de retos2vs2 simple, que su unica complejidad seria esa, de limitar el mapa, que ni con warpuserchar se pueda ir al mapa de retos si éste está lleno, el code que yo hice a partir de la invocacion de bestia de matih me anduvo bien , pero no puedo limitar el mapa a 4 usuarios
Última edición por DCH el 06 Feb 2012 18:59, editado 1 vez en total
<NEWBIE>
51
Newbie [1]
Registrado: Enero 2012
Mensajes: 32

Nota » 06 Feb 2012 19:46

La pregunta para saber si hay tantos usuarios en el mapa es :

if mapinfo(mapa).numusers > 3 then

Ahi preguntas si la cantidad de usuarios en ese mapa es mayor a 3 ( 4 seria el tope) que no lo deje entrar.

Es mejor asi en vez de = 4 o >=4 por las dudas que tengas un gm invisible.
Aguante River Plate ! ! !
897 (+5)
Moderador
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Villa adelina, Vicente Lopez.
Mensajes: 14425
Aportes: 304
Premios: 10
Señor Moderador (3) Señor Reglamento (1) Aportes (2) Embajador (3) Detector de Bugs (1)


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