[Aportes indexados] Sistema de Duelos

Estado
Cerrado para nuevas respuestas.

MrMan

Associate Director @ Wayfair
Miembro del equipo
Sistema Basico de Duelos:
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
 

0xDEADBEEF

Vicinity of obscenity
Ex-Staff
PERDON por revivir... xo esq tengo una duda sobre el codigo... y lo necesito.....

donde dice

MrMan dijo:
En Un modulo aparte:
Donde va todo esto...?

Gracias... x adelantado...

y xdon por revivir.......

Saludos!!!
 

Grefu

GeNio a SeKaS
Ex-Staff
•Parra dijo:
PERDON por revivir... xo esq tengo una duda sobre el codigo... y lo necesito.....

donde dice

MrMan dijo:
En Un modulo aparte:
Donde va todo esto...?

Gracias... x adelantado...

y xdon por revivir.......

Saludos!!!
Todas las funciones que definen son publicas, asi que tienes que crear un modulo nuevo con el nombre que quieras y pegar el codigo dentro
 

0xDEADBEEF

Vicinity of obscenity
Ex-Staff
Codeado.. y va joya!!!
ahora solo me falta testearlo.....
cuando lo testee les pongo un edit...

MUXISIMAS GRACIAS Mr.Man.......

y sobretodo.. perdon por revive....

Saludos!!

Edit: alguien q me explicara como funciona...? porq no tengo ni idea y no se como podria testearlo.. aun no se muy bien leer codigo..... asi q gracias d todas formas...


............
 

Ice Wolf

Oráculo Lvl 4
Perdon x revivir pero necesito saber como probarlo en el server.. y como hacer para qe el /duelo me lleve a determinado mapa..

Desde ya gracias
 

DarkThom

Oráculo Lvl 3
Para Transportarse Usa el "Call WarpUserChar"

No tengo ni la menor idea de 0.12.0 cuando lo consiga te digo
 

About

Director del Proyecto
DarkThom dijo:
Para Transportarse Usa el "Call WarpUserChar"

No tengo ni la menor idea de 0.12.0 cuando lo consiga te digo

Acá te lo zipie :p

<a href="http://www.fileden.com/files/2006/9/26/" class="postlink" rel="nofollow" onClick="window.open(this.href);return false;">http://www.fileden.com/files/2006/9/26/</a> ... liente.rar
 

Ice Wolf

Oráculo Lvl 4
Este sistema no anda..


Todo muy lindo. pero si pones /duelo no pasa nada.

En ningun lado tiene el Call WarpUserChar...

yo saqe el codigo de otro lado.

Pero qiero saber como ago para qe si el User muere en tal mapa le aparezca Has perdido el duelo y le saqe 150k y lo mande a ulla.

Grax.

Y Sory x revivir.
 
Estado
Cerrado para nuevas respuestas.
Arriba