Post Original:
http://www.gs-zone.org/evento_rey_vs_rey_base_tk8O.html
Muestra de lo que podemos lograr:
http://www.youtube.com/watch?v=gd2r8eAbAsY&list=UUJwZNZ0Tc5liptVsa2vpKfQ&index=6&feature=plcp
Explicacion:
bueno para los qe jugaron bender ao capas que ya saben como es , igual lo explico cortito.
Son 2 equipos , en los cuales, cuando el evento se inicia, se elige (al azar) un rey para cada equipo, y cada jugador de cada equipo es transportado a su base, bueno y quien mata al rey primero seria el ganador, cuando morís a los 3 segundos sos revivido y transportado a tu base, acá les dejo el módulo.
- Option Explicit
- '******** Modulo Adaptado por Samke ********
- Type tEquiposRey
- UserIndex() As Integer
- Rey As Integer
- CContados As Byte
- End Type
- Public Type Rey
- Equipo1 As tEquiposRey
- Equipo2 As tEquiposRey
- Cupos As Byte
- CuentaCupos As Byte
- Hay As Boolean
- Cerrado As Boolean
- End Type
- Public Type uREY
- iRey As Byte
- EsperaRevivir As Byte
- iEvento As Boolean
- End Type
- Public sRey As Rey
- 'CONSTANTES
- Public Const MAPA_REY As Integer = 190
- Public Const TEAM1_X As Byte = 50
- Public Const TEAM1_Y As Byte = 50
- Public Const TEAM2_X As Byte = 50
- Public Const TEAM2_Y As Byte = 50
- Public Sub REY_START(ByVal Cupos As Byte)
- ' \ Author : maTih.-
- ' \ Note : Iniciamos el evento
- Dim sCupos As Byte
- sCupos = (Cupos / 2)
- With sRey
- .Cupos = Cupos
- .CuentaCupos = 0
- .Equipo1.CContados = 0
- .Equipo2.CContados = 0
- .Equipo1.Rey = 0
- .Equipo2.Rey = 0
- ReDim .Equipo1.UserIndex(1 To sCupos) As Integer
- ReDim .Equipo2.UserIndex(1 To sCupos) As Integer
- End With
- End Sub
- Public Sub REY_GO()
- ' \ Author : maTih.-
- ' \ Note : Mandamos a peliar
- Dim LoopC As Long
- With sRey
- 'RANDOMIZE REYS
- .Equipo1.Rey = REY_DameRey(1)
- .Equipo2.Rey = REY_DameRey(2)
- 'MENSAJE DE CONSOLA
- Call SendData(SendTarget.ToMap, MAPA_REY, 0, "||El REY Del equipo 1 es : " UserList(.Equipo1.Rey).name & " y el del equipo 2 es : " & UserList(.Equipo2.Rey).name & " que empieze la masacre!" & FONTTYPE_GUILD)
- 'CERRAMOS PARA QUE NO ENTRE MÁS GENTE
- .Cerrado = True
- 'vamos desde LBOUND to UBOUND
- For LoopC = LBound(.Equipo1.UserIndex()) To UBound(.Equipo2.UserIndex())
- 'ID VALIDA?
- If UserList(.Equipo1.UserIndex(LoopC)).ConnID <> -1 Then
- 'WARP A LA BASE
- WarpUserChar .Equipo1.UserIndex(LoopC), MAPA_REY, TEAM1_X + LoopC, TEAM1_Y + LoopC
- 'FLAGS
- UserList(.Equipo1.UserIndex(LoopC)).reyUser.iRey = 1
- UserList(.Equipo2.UserIndex(LoopC)).reyUser.iEvento = True
- End If
- 'ID VALIDA?
- If UserList(.Equipo2.UserIndex(LoopC)).ConnID <> -1 Then
- 'WARP A LA BASE
- WarpUserChar .Equipo2.UserIndex(LoopC), MAPA_REY, TEAM2_X + LoopC, TEAM2_Y + LoopC
- 'FLAGS
- UserList(.Equipo2.UserIndex(LoopC)).reyUser.iRey = 2
- UserList(.Equipo2.UserIndex(LoopC)).reyUser.iEvento = True
- End If
- Next LoopC
- End With
- End Sub
- Public Sub REY_MensajeTeams(ByVal TeamRey As Byte, ByVal MENSAJE As String)
- ' \ Author : maTih.-
- ' \ Note : Envia un mensaje al teamRey
- Dim LoopC As Long
- 'MANEJAMOS TEAM1 O TEAM2
- If TeamRey = 1 Then
- '1 TO UBOUND USERINDEXS
- For LoopC = 1 To UBound(sRey.Equipo1.UserIndex())
- If UserList(sRey.Equipo1.UserIndex(LoopC)).ConnID <> -1 Then
- Call SendData(SendTarget.ToIndex, sRey.Equipo1.UserIndex(LoopC), 0, MENSAJE & FONTTYPE_CITIZEN)
- End If
- Next LoopC
- Else
- For LoopC = 1 To UBound(sRey.Equipo2.UserIndex())
- If UserList(sRey.Equipo2.UserIndex(LoopC)).ConnID <> -1 Then
- Call SendData(SendTarget.ToIndex, sRey.Equipo2.UserIndex(LoopC), 0, MENSAJE & FONTTYPE_CITIZEN)
- End If
- Next LoopC
- End If
- End Sub
- Public Sub REY_MuereIndex(ByVal UserMuerto As Integer)
- ' \ Author : maTih.-
- ' \ Note : Controla las muertes de los usuarios
- With UserList(UserMuerto)
- If REY_UserEsRey(UserMuerto, .reyUser.iRey) Then
- REY_Finish TeamWinner
- Exit Sub
- End If
- .reyUser.EsperaRevivir = 3
- End With
- End Sub
- Public Sub REY_SegundoRevivirUsuario(ByVal UserIndex As Integer)
- ' \ Author : maTih.-
- ' \ Note : Segundos (3) para revivir el usuario cuando muere.
- With UserList(UserIndex).reyUser
- Dim XPos As Byte
- Dim YPos As Byte
- XPos = IIf(.iRey = 1, TEAM1_X, TEAM1_Y)
- YPos = IIf(.iRey = 1, TEAM2_X, TEAM2_Y)
- .EsperaRevivir = .EsperaRevivir - 1
- If .EsperaRevivir <= 0 Then
- .EsperaRevivir = 0
- RevivirUsuario UserIndex
- WarpUserChar UserIndex, MAPA_REY, XPos, YPos
- End If
- End With
- End Sub
- Public Sub REY_DisconnectUser(ByVal UserDis As Integer)
- ' \ Author : maTih.-
- ' \ Note : Controla las muertes de los usuarios
- With UserList(UserDis)
- WarpUserChar UserDis, 1, 58, 45
- REY_MensajeTeams .reyUser.iRey, .name & " Se ha desconectado."
- End With
- End Sub
- Public Sub REY_Finish(ByVal TeamWinner As Byte)
- ' \ Author : maTih.-
- ' \ Note : Termina el evento y lleva a todos a su casa
- Dim LoopC As Long
- With sRey.Equipo1
- For LoopC = LBound(.UserIndex()) To UBound(.UserIndex())
- 'ID VALIDA?
- If UserList(.UserIndex(LoopC)).ConnID <> -1 Then
- WarpUserChar .UserIndex(LoopC), 1, 68 + LoopC, 45 + LoopC
- Call SendData(SendTarget.ToIndex, .UserIndex(LoopC), 0, "||El evento ha finalizado, ah ganado el equipo " & TeamWinner & FONTTYPE_GUILD)
- End If
- Next LoopC
- End With
- With sRey.Equipo2
- For LoopC = LBound(.UserIndex()) To UBound(.UserIndex())
- 'ID VALIDA?
- If UserList(.UserIndex(LoopC)).ConnID <> -1 Then
- WarpUserChar .UserIndex(LoopC), 1, 58 + LoopC, 45 + LoopC
- Call SendData(SendTarget.ToIndex, .UserIndex(LoopC), 0, "||El evento ha finalizado, ah ganado el equipo " & TeamWinner & FONTTYPE_GUILD)
- End If
- Next LoopC
- End With
- End Sub
- Public Function REY_DameRey(ByVal TeamRey As Byte) As Integer
- ' \ Author : maTih.-
- ' \ Note : Devuelve un usuario random como rey
- Dim rRey As Integer
- If TeamRey = 1 Then
- rRey = RandomNumber(LBound(sRey.Equipo1.UserIndex()), UBound(sRey.Equipo1.UserIndex()))
- rRey = sRey.Equipo1.UserIndex(rRey)
- Else
- rRey = RandomNumber(LBound(sRey.Equipo2.UserIndex()), UBound(sRey.Equipo2.UserIndex()))
- rRey = sRey.Equipo2.UserIndex(rRey)
- End If
- REY_DameRey = rRey
- End Function
- Public Function REY_UserEsRey(ByVal UserIndex As Integer, ByVal TeamRey As Byte) As Boolean
- ' \ Author : maTih.-
- ' \ Note : Devuelve si UserIndex es el Rey del TeamRey
- If TeamRey = 1 Then
- REY_UserEsRey = (sRey.Equipo1.Rey = UserIndex)
- Else
- REY_UserEsRey = (sRey.Equipo2.Rey = UserIndex)
- End If
- End Function
- Public Function REY_UserDameTag(ByVal UserIndex As Integer)
- ' \ Author : maTih.-
- ' \ Note : Devuelve el Tag de userIndex by su team
- With UserList(UserIndex).reyUser
- REY_UserDameTag = UserList(UserIndex).name & " <Equipo " & .iRey & ">"
- End With
- End Function
desp es facil lo van leyendo y van poniendo en el sub userdie , closesocket , refreshcharstatus, etc etc.
Saludos







641![Dragon Ancestral [3] Dragon Ancestral [3]](./images/ranks/Rango32.gif)

![Newbie [4] Newbie [4]](./images/ranks/Rango3.gif)

![Dragon Ancestral [5] Dragon Ancestral [5]](./images/ranks/Rango34.gif)
