Site Game


Unirse al foro, es rápido y fácil

Site Game
Site Game
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.
Site Game


No estás conectado. Conéctate o registrate

Sistema de Deathmatch [Funcional en version 11.5]

Ir abajo  Mensaje [Página 1 de 1.]

Slymnes

Slymnes
Administrador
Administrador

Acá les dejo una guia de como programar un sistema de Deathmatch en Argentum Online 11.5.

El sistema es asi:

Mediante un Npc, se irá al deathmatch, una ves que estes hay y mueras tipear /SALIRDEATH. Si intentas hacerlo en otro mapa no te dejara. Cada vez que ingrese un usuario se lo dirá a todos, y al salir igual. Tiene un extra para ver cuantos usuarios hay. /INFODEATH. Jaja.


Prosigamos que tengo sueño, todo en el servidor:

Buscamos:

Código:
Guardiascaos = 8

Debajo ponemos:

Código:
Deathmath = 10

Es el 10, porque el nueve lo tengo en uso, ponelo como quieras porque lo lei desde tipo, no el número.

Ahora buscamos:

Código:
Case "/ONLINE"
'No se envia más la lista completa de usuarios
N = 0
For LoopC = 1 To LastUser
If UserList(LoopC).name <> "" And UserList(LoopC).flags.Privilegios <= PlayerType.Consejero Then
N = N + 1
End If
Next LoopC
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||Número de usuarios: " & N & FONTTYPE_INFO)
Exit Sub

Debajo ponemos:

Código:
'Mithrandir - Deathmatch
Case "/DEATH"
'Estas muerto?
If UserList(UserIndex).flags.Muerto = 1 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||¡¡Estas muerto!!" & FONTTYPE_INFO)
Exit Sub
End If
'Mithrandir
'Estas en death?
If UserList(UserIndex).flags.EnDeath = 1 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||¡Ya te encuentras en deathmatch!" & FONTTYPE_INFO)
Exit Sub
End If
'Se asegura que el target es un npc
If UserList(UserIndex).flags.TargetNPC = 0 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||Primero tenes que seleccionar un personaje, hace click izquierdo sobre el." & FONTTYPE_INFO)
Exit Sub
End If
'Si no es el death no.
If Npclist(UserList(UserIndex).flags.TargetNPC).NPCtype <> eNPCType.Deathmath Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||Primero debes hacer click sobre el organizador." & FONTTYPE_INFO)
Exit Sub
End If
'Distancia ^^
If Distancia(Npclist(UserList(UserIndex).flags.TargetNPC).Pos, UserList(UserIndex).Pos) > 3 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||Estás demasiado lejos del organizador." & FONTTYPE_INFO)
Exit Sub
End If
'Si el mapa esta lleno, nos dice
If MapInfo(1).NumUsers = 10 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||El deathmath solo soporta 10 usuarios, espera un momento." & FONTTYPE_INFO)
Exit Sub
End If
'Estamos en deathmatch
Call WarpUserChar(UserIndex, 1, 50, 50, True)
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||Has ingresado al deathmatch." & FONTTYPE_INFO)
Call SendData(SendTarget.ToAll, UserIndex, 0, "||" & UserList(UserIndex).name & " ha ingresado al deathmatch." & FONTTYPE_INFO)
UserList(UserIndex).flags.EnDeath = 1
'Mithrandir

Case "/INFODEATH"
'Avisamos los cuantos hay
If MapInfo(1).NumUsers = 0 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||Actualmente no hay usuarios en el deathmatch." & FONTTYPE_INFO)
ElseIf MapInfo(1).NumUsers = 1 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||Actualmente hay 1 usuario en deathmath" & FONTTYPE_INFO)
ElseIf MapInfo(1).NumUsers < 1 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||Actualmente hay: " & MapInfo(1).NumUsers & " usuarios en deathmatch." & FONTTYPE_INFO)
Exit Sub
End If
'Mithrandir
'Salgamos que nos matan
Case "/SALIRDEATH"
If UserList(UserIndex).flags.EnDeath = 0 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||No estas en deathmatch." & FONTTYPE_INFO)
Else
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||Has regresado a la ciudad." & FONTTYPE_INFO)
Call SendData(SendTarget.ToAll, UserIndex, 0, "||" & UserList(UserIndex).name & " se ha retirado del deathmatch." & FONTTYPE_INFO)
Call WarpUserChar(UserIndex, 1, 50, 50, True)
UserList(UserIndex).flags.EnDeath = 0
Exit Sub
End If
'Mithrandir - Deathmatch

Ahora, en el "/SALIR" agregamos debajo de:

Código:
If UserList(UserIndex).flags.Paralizado = 1 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||No puedes salir estando paralizado." & FONTTYPE_WARNING)
Exit Sub
End If

Lo siguiente:

Código:
If UserList(UserIndex).flags.EnDeath = 1 Then
Call SendData(SendTarget.ToIndex, UserIndex, 0, "||No puedes salir estando en deathmatch." & FONTTYPE_WARNING)
Exit Sub
End If

Ahora nos falta el flag Endeath, buscamos:

Código:
Paralizado As Byte

Debajo ponemos:

Código:
EnDeath As Byte

Buscamos:

Código:
UserList(UserIndex).flags.Navegando = CByte(UserFile.GetValue("FLAGS", "Navegando"))

Y arriba ponemos:

Código:
'Death - Mithrandir
UserList(UserIndex).flags.EnDeath = CByte(UserFile.GetValue("FLAGS", "EnDeath"))

Buscamos:

Código:
Call WriteVar(UserFile, "FLAGS", "Paralizado", CStr(UserList(UserIndex).flags.Paralizado))

Debajo ponemos:

Código:
'Death - Mithrandir
Call WriteVar(UserFile, "FLAGS", "EnDeath", CStr(UserList(UserIndex).flags.EnDeath))

Con esto ya leeria el flag, y esta todo declarado ahora solo falta crear el Npc. Que tiene que ser Npctype=10, y si pusieron otro pongan el número ese..

Muchas gracias. Espero que sirva.

Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.