Sistema Basico de Duelos:
Arriba de :
poner:
En Un modulo aparte:
En el modulo TCP, en el evento "CloseUser", Debajo de
agregar:
En el modulo UsUaRiOs , en el evento UserDie, después de
agregar:
En El Modulo SistemaCombate , en el evento UsuarioAtacadoPorUsuario, antes de” If UserList(AttackerIndex).GuildInfo.GuildName = "" Or UserList(VictimIndex).GuildInfo.GuildName = "" Then”:
poner:
En el mismo modulo SistemaCombate, en el evento PuedeAtacar , después de “T = TriggerZonaPelea(AttackerIndex, VictimIndex)” :
En el mismo modulo, en el evento PuedeAtacar, después de “If Not Criminal(VictimIndex) And UserList(AttackerIndex).Faccion.ArmadaReal = 1 Then
Call SendData(ToIndex, AttackerIndex, 0, "||Los soldados del Ejercito Real tienen prohibido atacar ciudadanos." & FONTTYPE_WARNING)
PuedeAtacar = False
Exit Function
End If” :
En el Modulo modHechizos en el evento PuedeLanzar, después de “ If Distancia(UserList(UserIndex).Pos, wp2) > 18 Then
'UserList(UserIndex).Flags.AdministrativeBan = 1
'Call SendData(ToAll, 0, 0, "||Los Dioses han desterrado a " & UserList(UserIndex).Name & FONTTYPE_INFO)
'Call LogHackAttemp(UserList(UserIndex).Name & " IP:" & UserList(UserIndex).ip & " trato de lanzar un spell desde otro mapa.")
'Call Cerrar_Usuario(UserIndex)
Exit Function
End If”:
En el modulo Declaraciones , en el “Type UserFlags”, después de : TomoPocion As Boolean
TipoPocion As Byte:
agregar:
Atte. Mr Man
Editado por Khalem para hacerlo más entendible
Arriba de :
Código:
Case "/ONLINE"
poner:
Código:
Case "/DUELO"
'¿Esta el user muerto?
If UserList(UserIndex).flags.Muerto = 1 Then
Call SendData(ToIndex, UserIndex, 0, "||¡¡Estas muerto!!" & FONTTYPE_INFO)
Exit Sub
End If
'¿El target es un NPC valido?
If UserList(UserIndex).flags.TargetUser > 0 Then
If UserList(UserList(UserIndex).flags.TargetUser).flags.Muerto = 1 Then
Call SendData(ToIndex, UserIndex, 0, "||¡¡El User Con Al que quieres desafiar a Duelo Esta Muerto!!" & FONTTYPE_INFO)
Exit Sub
End If
If UserList(UserList(UserIndex).flags.TargetUser).flags.EstaEnduelo = True Then
Call SendData(ToIndex, UserIndex, 0, "||Ya Esta En duelo, Esperá a que termine!!" & FONTTYPE_INFO)
Exit Sub
End If
If UserList(UserIndex).flags.TargetUser = UserIndex Then
Call SendData(ToIndex, UserIndex, 0, "||No podes Hacer Duelo Con vos Mismo." & FONTTYPE_WARNING)
Exit Sub
End If
If UserList(UserList(UserIndex).flags.TargetUser).flags.EsperandoDuelo = True Then
If UserList(UserList(UserIndex).flags.TargetUser).flags.Oponente = UserIndex Then
Call ComensarDuelo(UserIndex, UserList(UserIndex).flags.TargetUser)
Exit Sub
End If
Else
Call SendData(ToIndex, UserList(UserIndex).flags.TargetUser, 0, "|| " & UserList(UserIndex).Name & " Te A Retado a Duelo, para aceptar Escribe /Duelo y cliquea al PJ ~255~0~0~1~0")
Call SendData(ToIndex, UserIndex, 0, "|| Retaste A Duelo a " & UserList(UserList(UserIndex).flags.TargetUser).Name & " ~255~0~0~1~0")
UserList(UserIndex).flags.EsperandoDuelo = True
UserList(UserIndex).flags.Oponente = UserList(UserIndex).flags.TargetUser
Exit Sub
End If
Else
Call SendData(ToIndex, UserIndex, 0, "||Primero hace click izquierdo sobre el personaje." & FONTTYPE_INFO)
End If
Exit Sub
En Un modulo aparte:
Código:
'Duelo
Public Sub ComensarDuelo(ByVal UserIndex As Integer, ByVal TIndex As Integer)
UserList(UserIndex).flags.EstaEnduelo = True
UserList(UserIndex).flags.Oponente = TIndex
UserList(TIndex).flags.EstaEnduelo = True
UserList(TIndex).flags.Oponente = UserIndex
Call SendData(ToIndex, TIndex, 0, "||El duelo comenzo !!!!!!!! ~255~0~0~1~0")
Call SendData(ToIndex, UserIndex, 0, "||El duelo comenzo !!!!!!!! ~255~0~0~1~0")
End Sub
Public Sub ResetDuelo(ByVal UserIndex As Integer, ByVal TIndex As Integer)
UserList(UserIndex).flags.EsperandoDuelo = False
UserList(UserIndex).flags.Oponente = 0
UserList(UserIndex).flags.EstaEnduelo = False
UserList(TIndex).flags.EsperandoDuelo = False
UserList(TIndex).flags.Oponente = 0
UserList(TIndex).flags.EstaEnduelo = False
End Sub
Public Sub TerminarDuelo(ByVal Ganador As Integer, ByVal Perdedor As Integer)
Call SendData(ToIndex, Ganador, 0, "||Le has Ganado El duelo A " & UserList(Perdedor).Name & " ~255~0~0~1~0")
Call SendData(ToIndex, Perdedor, 0, "||" & UserList(Perdedor).Name & " Te A Ganado El Duelo." & " ~255~0~0~1~0")
Call ResetDuelo(Ganador, Perdedor)
End Sub
En el modulo TCP, en el evento "CloseUser", Debajo de
Código:
If Ayuda.Existe(UserList(UserIndex).Name) Then Call Ayuda.Quitar(UserList(UserIndex).Name)
agregar:
Código:
'Pierde el Duelo
If UserList(UserIndex).flags.EstaEnduelo = True Then
Call TerminarDuelo(UserList(UserIndex).flags.Oponente, UserIndex)
End If
En el modulo UsUaRiOs , en el evento UserDie, después de
Código:
'<< Cambiamos la apariencia del char >>
agregar:
Código:
If UserList(UserIndex).flags.Navegando = 0 Then
UserList(UserIndex).Char.Body = iCuerpoMuerto
UserList(UserIndex).Char.Head = iCabezaMuerto
UserList(UserIndex).Char.ShieldAnim = NingunEscudo
UserList(UserIndex).Char.WeaponAnim = NingunArma
UserList(UserIndex).Char.CascoAnim = NingunCasco
Else
UserList(UserIndex).Char.Body = iFragataFantasmal ';)
End If” :
If UserList(UserIndex).flags.EstaEnduelo = True Then
Call TerminarDuelo(UserList(UserIndex).flags.Oponente, UserIndex)
End If
En El Modulo SistemaCombate , en el evento UsuarioAtacadoPorUsuario, antes de” If UserList(AttackerIndex).GuildInfo.GuildName = "" Or UserList(VictimIndex).GuildInfo.GuildName = "" Then”:
poner:
Código:
If UserList(AttackerIndex).flags.EstaEnduelo = True And UserList(VictimIndex).flags.EstaEnduelo = True Then
Exit Sub
End If
En el mismo modulo SistemaCombate, en el evento PuedeAtacar , después de “T = TriggerZonaPelea(AttackerIndex, VictimIndex)” :
Código:
If UserList(VictimIndex).flags.EstaEnduelo = True And UserList(AttackerIndex).flags.EstaEnduelo = True Then
PuedeAtacar = True
Exit Function
End If
En el mismo modulo, en el evento PuedeAtacar, después de “If Not Criminal(VictimIndex) And UserList(AttackerIndex).Faccion.ArmadaReal = 1 Then
Call SendData(ToIndex, AttackerIndex, 0, "||Los soldados del Ejercito Real tienen prohibido atacar ciudadanos." & FONTTYPE_WARNING)
PuedeAtacar = False
Exit Function
End If” :
Código:
'Se Asegura Que la Victima no esta en duelo
If UserList(VictimIndex).flags.EstaEnduelo = True Then
If UserList(AttackerIndex).flags.Oponente <> VictimIndex Then
Call SendData(ToIndex, AttackerIndex, 0, "||¡¡No podes atacar a un Personaje En duelo!! " & FONTTYPE_WARNING)
PuedeAtacar = False
Exit Function
End If
End If
En el Modulo modHechizos en el evento PuedeLanzar, después de “ If Distancia(UserList(UserIndex).Pos, wp2) > 18 Then
'UserList(UserIndex).Flags.AdministrativeBan = 1
'Call SendData(ToAll, 0, 0, "||Los Dioses han desterrado a " & UserList(UserIndex).Name & FONTTYPE_INFO)
'Call LogHackAttemp(UserList(UserIndex).Name & " IP:" & UserList(UserIndex).ip & " trato de lanzar un spell desde otro mapa.")
'Call Cerrar_Usuario(UserIndex)
Exit Function
End If”:
Código:
'Se Asegura que la victima no esta en duelo
If UserList(UserIndex).flags.TargetUser <> 0 Then
'If UserList(UserIndex).flags.Oponente <> UserList(UserIndex).flags.TargetUser Then PuedeLanzar = False
If UserList(UserList(UserIndex).flags.TargetUser).flags.EstaEnduelo = True Then
If UserList(UserList(UserIndex).flags.TargetUser).flags.Oponente = UserIndex Then
PuedeLanzar = True
Else
Call SendData(ToIndex, UserIndex, 0, "||¡¡No podes atacar a un Personaje En duelo!! " & FONTTYPE_WARNING)
PuedeLanzar = False
End If
End If
End If
En el modulo Declaraciones , en el “Type UserFlags”, después de : TomoPocion As Boolean
TipoPocion As Byte:
agregar:
Código:
EsperandoDuelo As Boolean
EstaEnduelo As Boolean
Oponente As Integer
Atte. Mr Man
Editado por Khalem para hacerlo más entendible