GS-Zone

Sistema de Muertes por Usuarios (SMU, Adaptación) Ir al Indice

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

20

Nota » 05 Ene 2012 15:50

Sistema de Muertes por Usuarios (SMU)


Función del sistema :

Introducción :

•Al iniciarse el servidor... por medio de un timer, se selecciona un usuario al azar de TODOS los que se encuentren conectados. El sistema está hecho para que se seleccione a un usuario considerablemente poderoso según sus status. (Nivel, oro,etc). Al seleccionarse este usuario, el mismo será denominado como 'Buscado' de las tierras del Argentum.

¿Que función cumple este código/sistema?
•La función que cumple principalmente es fomentar la matanzas entre usuarios (agite).

Otros...
•El personaje buscado no podrá acceder a mapas seguros, si lo hace, no será más un usuario buscado y se seleccionará a otro automáticamente.
•Si el personaje buscado desconecta del servidor, el mismo buscará a otro personaje.
•Si el personaje buscado, es asesinado por otro personaje, el buscado pederá 1.000.000 monedas de oros, mientras que el que lo asesinó las ganará. Luego de esto el servidor seleccionará a un nuevo usuario random que se encuentre conectado.

A todo esto... ¿De que sirve ser un personaje buscado si tenés tantas contras?
El personaje que tenga la característica de ser buscado, tendrá como recompensa 1.000.000 monedas de oros cada 10/15 minutos de supervivencia, sin embargo, hay un tiempo límite, una vez llegado a los 40 minutos de supervivencia, se seleccionará a un nuevo usuario o bien personaje. (Está permitido que sólo se entregue tres (3) veces la recompensa, por ende ganará 3KK (3.000.000 monedas de oros).

Requisitos para ser usuario buscado

•Ser criminal.
•En su defecto, ser nivel máximo o 5 niveles menos.
•Tener posesión de 1.000.000 monedas de oros o más. (Pueden cambiar la cantidad ya que se guarda en una constante en el módulo del sistema).
•Encontrarse en un mapa INSEGURO.
•No estar muerto.
•Y no ser ADMINISTRADOR (GM).

Si no hay un usuario con estas características conectado, no se seleccionará a ninguno. Cualquier error sin importancia podria ser 'ignorado' por asi decirlo ya que se utiliza goto error.

SERVIDOR

1-Creamos un nuevo módulo con cualquier nombre (yo lo nombré como "mod_Busquedas" sin las comillas"), y ponemos en su interior lo siguiente:


'
  1. $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  2. '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  3. 'Author: J.A.O (Juan Agu$tín Oliva) / AGUSHH
  4. 'mod_Buscados
  5. '    ---
  6. 'MODULO FUNCTION ; CAZA DE PERSONAJES ONLINE
  7. '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  8. '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  9.  
  10. Option Explicit
  11.  
  12. Public Const RECOMPENZA_BUSCADO = 999999
  13. Public Const MINUTOS_BUSQUEDA = 40
  14.  
  15. '///JAO/// _
  16. Con esto verificamos que no exista ningún usuario buscado, asi evitamos _
  17. buguear todo =P / A ESTA FUNCIÓN NO LE DAMOS USO EN ESTE CÓDIGO.
  18.  
  19. Private Function ExisteUserBuscado(ByVal UserIndex As Integer) As Boolean
  20. If UserList(UserIndex).Buscado > 0 Then
  21. ExisteUserBuscado = True
  22. Else
  23. ExisteUserBuscado = False
  24. End If
  25. End Function
  26.  
  27. Public Sub BuscaUsuarioACazar()
  28. On Error GoTo jao
  29. Dim i As Integer
  30. Dim UserCazado As Byte
  31. For i = 1 To LastUser
  32. If i < 1 Then Exit Sub
  33. With UserList(i)
  34. If BuscadoExistente = True Then Exit Sub
  35. If Criminal(i) = True And UserList(i).Stats.ELV >= STAT_MAXELV - 5 And UserList(i).Stats.GLD > RECOMPENZA_BUSCADO And MapInfo(.Pos.Map).Pk = True And UserList(i).flags.Muerto = 0 And UserList(i).flags.Privilegios < PlayerType.Consejero Then   ' 1kk JAO
  36. UserCazado = 1
  37. Else
  38. UserCazado = 0
  39. End If
  40. If UltimoIndexBuscado = i Then UserCazado = 0
  41.  
  42. '''''''JAO'''''''
  43. If UserCazado > 0 Then
  44. UserList(i).Buscado = 1
  45. UserList(i).TiempoBuscado = 0
  46. UltimoIndexBuscado = i
  47. BuscadoExistente = True
  48. Call SendData(SendTarget.ToIndex, UserIndex, 0, "||" & UCase$(UserList(i).name) & " es el nuevo buscado de las tierras de Argentum." & FONTTYPE_CENTINELA)
  49. Else
  50. 'Call SendData(SendTarget.ToIndex, UserIndex, 0, "||No hay ningún buscado en este momento..." & FONTTYPE_CENTINELA)
  51. End If
  52. End With
  53. Next i
  54. jao:  'JAO
  55. End Sub
  56.  
  57. 'FUNCIÓN DEL CÓDIGO : _
  58. Cada X tiempo se verifica que no exista ningún personaje buscado, si es asi se selecciona uno al azar de todos los personajes onlines existentes. El personaje buscado tiene muchos beneficios, por ejemplo, cada X cantidad de tiempo se le otorga una considerable cantidad de oro. La contra es que al ser asesinado, perderá 1.000.000 monedas de oros (no es una gran perdida ya que ganaría cerca de 3kk). El usuario buscado tiene un límite de 40 minutos con esta caracteristica, una vez concurridos esos 40 minutos, se elije a un nuevo usuario.
  59. 'CONDICIONES ... _
  60. Si un usuario asesina al usuario buscado, se elejirá otro usuario al azar. El usuario que asesinó al usuario buscado ganará 1kk, mientras que el usuario buscado los perderá. _
  61. Si el usuario buscado se desconecta, busca a uno nuevo _
  62. El usuario buscado debe estar en un mapa inseguro, no ser newbie, ser criminal y no ser administrador/gm. _
  63. Solo puede existir un personaje buscado .


2-Buscamos:

  1. If MapData(Map, X, Y).TileExit.Map > 0 Then


Y debajo ponemos:

  1.                   'SMU (Adaptacion)
  2.                 If UserList(UserIndex).Buscado > 0 And MapInfo(UserList(UserIndex).Pos.Map).Pk = True Then
  3.                 'Damos el mensaje de que el usuario 'escapoó'
  4.                 Call SendData(SendTarget.ToIndex, UserIndex, 0, "||" & UserList(UserIndex).name & " ha escapado..." & FONTTYPE_INFO)
  5.                 UserList(UserIndex).Buscado = 0
  6.                 UserList(UserIndex).TiempoBuscado = 0
  7.                 BuscadoExistente = False
  8.                 'Buscamos uno nuevo ;-)
  9.                 Call BuscaUsuarioACazar
  10.                 End If


3-Buscamos:

  1. Sub ContarMuerte(ByVal Muerto As Integer, ByVal Atacante As Integer)


Y en el mismo sub, buscamos:



y debajo ponemos:

  1.      If UserList(Muerto).Buscado > 0 Then
  2.     UserList(Atacante).Stats.GLD = UserList(Atacante).Stats.GLD + val(RECOMPENZA_BUSCADO + 1)
  3.     UserList(Muerto).Stats.GLD = UserList(Muerto).Stats.GLD - val(RECOMPENZA_BUSCADO + 1)
  4.     UserList(Muerto).Buscado = 0
  5.     UserList(Muerto).TiempoBuscado = 0
  6.     BuscadoExistente = False
  7.     Call BuscaUsuarioACazar ' buscamos otro... JAO
  8.     End If


4-Buscamos:



y debajo ponemos:

  1.  Buscado As Byte
  2.     TiempoBuscado As Byte


5-En el módulo declaraciones, debajo del Option Explicit agregamos lo siguiente:

  1. Public BuscadoExistente As Boolean
  2. Public UltimoIndexBuscado As Integer


6-Creamos un Timer en el Frmmain del Servidor con el nombre timBusquedas y con un intervalo de 10000 (Enable = True)

Una ves Creado el Timer, le ponemos de codigo:

  1. Dim i As Integer
  2. For i = 1 To LastUser
  3.  
  4. 'JAO : _
  5. Con esto buscamos a un usuario, si no habia ningúno...
  6. If UserList(i).Buscado < 1 Then
  7. Call BuscaUsuarioACazar
  8. End If
  9.  
  10. If UserList(i).Buscado > 0 Then
  11. UserList(i).TiempoBuscado = UserList(i).TiempoBuscado + 1
  12. End If
  13.  
  14. Dim JAOK As Byte
  15. JAOK = JAOK + 1
  16. If JAOK = 12 And UserList(i).Buscado > 0 Then
  17. Call SendData(SendTarget.ToAll, i, 0, "|Buscados> " & UCase$(UserList(i).name) & " se ubica en el mapa " & UserList(i).pos.map & ". Aquél que logre asesinarlo, al pasar el tiempo obtendrá grandes recompensas." & FONTTYPE_CENTINELA)
  18. JAOK = 0
  19. End If
  20.  
  21. If UserList(i).TiempoBuscado = MINUTOS_BUSQUEDA - 30 Then
  22. UserList(i).Stats.gld = UserList(i).Stats.gld + val(RECOMPENZA_BUSCADO + 1)
  23. Call SendUserStatsBox(i)
  24. Call SendData(SendTarget.ToAll, i, 0, "||Recibes " & RECOMPENZA_BUSCADO + 1 & " monedas de oros por supervivir." & FONTTYPE_CENTINELA)
  25. ElseIf UserList(i).TiempoBuscado = MINUTOS_BUSQUEDA / 2 Then
  26. UserList(i).Stats.gld = UserList(i).Stats.gld + val(RECOMPENZA_BUSCADO + 1)
  27. Call SendUserStatsBox(i)
  28. Call SendData(SendTarget.ToAll, i, 0, "||Recibes " & RECOMPENZA_BUSCADO + 1 & " monedas de oros por supervivir." & FONTTYPE_CENTINELA)
  29. ElseIf UserList(i).TiempoBuscado = MINUTOS_BUSQUEDA - 5 Then
  30. UserList(i).Stats.gld = UserList(i).Stats.gld + val(RECOMPENZA_BUSCADO + 1)
  31. Call SendUserStatsBox(i)
  32. Call SendData(SendTarget.ToAll, i, 0, "||Recibes " & RECOMPENZA_BUSCADO + 1 & " monedas de oros por supervivir." & FONTTYPE_CENTINELA)
  33. End If
  34.  
  35. If UserList(i).TiempoBuscado >= MINUTOS_BUSQUEDA Then
  36. UserList(i).Buscado = 0
  37. UserList(i).TiempoBuscado = 0
  38. BuscadoExistente = False
  39. Call BuscaUsuarioACazar
  40. End If
  41.  
  42. Next i


7-Buscamos:

  1. Sub CloseSocket(ByVal UserIndex As Integer)


Y en el mismo sub, buscamos:

  1.   If Centinela.RevisandoUserIndex = UserIndex Then _
  2.         Call modCentinela.CentinelaUserLogout


Y debajo ponemos:

  1.    If UserList(UserIndex).Buscado > 0 Then
  2.      UserList(UserIndex).Buscado = 0
  3.      UserList(UserIndex).TiempoBuscado = 0
  4.      BuscadoExistente = False
  5.      Call BuscaUsuarioACazar
  6.      End If


Todos los Créditos a Agushh por hacer este sistema, yo solo lo adapte.

Espero que les sirva, Nos vemos!

Gran parte del código es funcional, ya que lo Testie, cualquier cosa comenten que repararemos el error (y)
Este mensaje ha obtenido 10 Monedas de Oro.


Imagen
414
Destructor de Mentes [5]
Registrado: Años de membresía
Mensajes: 726
Aportes: 14

Nota » 05 Ene 2012 15:57

Muy bueno Leo, seguí así que estás creciendo un montón, te dejo unas monedas

mica.khalem@gmail.com

•Parra escribió:Pf que locura xD ...
Que has hecho? xD


Imagen


FAN DE BLIZZARD
God is gay
368
Administrador
Registrado: 5 Años de membresía!
Ubicación: Capital Federal
Mensajes: 3013
Aportes: 19
Premios: 1
Mister Programador AO (1)

Nota » 05 Ene 2012 16:02

Che deja de pasarme tus aportes por el msn ¬¬ yo lo voy a ver (na mentira )


Buen Aporte como estamos HOY :P :D

Imagen
Maestro del Gremio de Ladrones
768
Dragon Ancestral [1]
Registrado: Años de membresía
Ubicación: Polinesia
Mensajes: 2469
Aportes: 9
Premios: 1
Embajador (1)

Nota » 05 Ene 2012 16:53

QUE BUEN SISTEMA!! LO PONGO A MI PROYECTO Y LO MODIFICO BASTANTE (en el tema de requisitos y ganancias)...
Graciaaaaaaaasssssss

Imagen
Zaphir AO Staff - dylanalan
769
Dragon Ancestral [2]
Registrado: Años de membresíaAños de membresía
Ubicación: Pehuajó
Mensajes: 2825
Aportes: 27

Nota » 05 Ene 2012 17:11

Muy lindo aporte me encante 100% seguro que lo pongo en mi sv pero con puntos de torneo

PD: ESTARIA BUENO QUE ESTE SISTEMA FUNCIONE CDO HAY + DE X NUMERO DE USUARIOS ;s PARA LOS SERVIDORES CHICO SERIA MUY FRUTA....
PD2: Esto es la recompensa :
If UserList(i).TiempoBuscado = MINUTOS_BUSQUEDA - 30 Then
UserList(i).Stats.gld = UserList(i).Stats.gld + val(RECOMPENZA_BUSCADO + 1)
Call SendUserStatsBox(i)
Call SendData(SendTarget.ToAll, i, 0, "||Recibes " & RECOMPENZA_BUSCADO + 1 & " monedas de oros por supervivir." & FONTTYPE_CENTINELA)
ElseIf UserList(i).TiempoBuscado = MINUTOS_BUSQUEDA / 2 Then
UserList(i).Stats.gld = UserList(i).Stats.gld + val(RECOMPENZA_BUSCADO + 1)
Call SendUserStatsBox(i)
Call SendData(SendTarget.ToAll, i, 0, "||Recibes " & RECOMPENZA_BUSCADO + 1 & " monedas de oros por supervivir." & FONTTYPE_CENTINELA)
ElseIf UserList(i).TiempoBuscado = MINUTOS_BUSQUEDA - 5 Then
UserList(i).Stats.gld = UserList(i).Stats.gld + val(RECOMPENZA_BUSCADO + 1)
Call SendUserStatsBox(i)
Call SendData(SendTarget.ToAll, i, 0, "||Recibes " & RECOMPENZA_BUSCADO + 1 & " monedas de oros por supervivir." & FONTTYPE_CENTINELA)
End If

Yo uso senluc(no c nada de programacion), tendria que poner esto para puntos de torneo
UserList(UserIndex).Stats.PuntosTorneo = UserList(UserIndex).Stats.PuntosTorneo + x ¿?
PD3:MUY LINDO :P

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

Nota » 05 Ene 2012 17:55

apapap
Muy bueno gracias ^^

Imagen
Ninja en progreso
929 (+5)
Dragon Ancestral [5]
Registrado: Años de membresía
Ubicación: • olivos •
Mensajes: 4103
Aportes: 13

Nota » 05 Ene 2012 17:55

Te ganaste mis monedas hoy!

Buen aporte :ok:

Imagen


Gaara escribió:Me Caen Mal El Tipo De Personas Que Cuando Estas leveleando En Gathering(Por ejemplo)
Viene Un Neutro y te mata...Volves y Te Mata Lo Bardeas y le avisa al Gm y Te banea :@
Barrilete cósmico ^^
364
Aprendiz [6]
Registrado: Años de membresía
Ubicación: en mi casa
Mensajes: 439
Aportes: 2

Nota » 05 Ene 2012 18:06

Exelente me gusto mucho, te tiro una idea para un plus:
Si al usuario que buscan no lo pueden encontrar/matar cada x tiempo le den algo , osea .
Me buscan ami no me pueden encontrar o matar cada 10 min me den algo .

Imagen
Intento de Programer
306
Oraculo [1]
Registrado: Años de membresía
Mensajes: 1127
Aportes: 10

Nota » 05 Ene 2012 18:11

Pentra lo que dijiste esta:
El personaje buscado tiene muchos beneficios, por ejemplo, cada X cantidad de tiempo se le otorga una considerable cantidad de oro. La contra es que al ser asesinado, perderá 1.000.000 monedas de oros (no es una gran perdida ya que ganaría cerca de 3kk). El usuario buscado tiene un límite de 40 minutos con esta caracteristica, una vez concurridos esos 40 minutos, se elije a un nuevo usuario.
PD: ALGUN BUEN USUARIO QUE PONGA QUE DE PUNTOS DE TORNEO SE GANARA MI MONEDITAS

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

Nota » 05 Ene 2012 19:27

Bieen leeo! PERO QUE NO TE PEGEN LOS APORTES

Imagen
Staff Tierras Legendarias
405
Oraculo [5]
Registrado: Años de membresía
Ubicación: Villa del parque
Mensajes: 1927
Aportes: 9

Nota » 05 Ene 2012 19:29

Mafia escribió:Bieen leeo! PERO QUE NO TE PEGEN LOS APORTES


Idem

Imagen
Ninja en progreso
929 (+5)
Dragon Ancestral [5]
Registrado: Años de membresía
Ubicación: • olivos •
Mensajes: 4103
Aportes: 13

Nota » 05 Ene 2012 19:41

Muy buen aporte :ok:

Imagen
Imagen
Imagen
Para mas información sobre los servidores , hacer link en las imágenes.
·Azkerth! escribió:Dale para adelanta , que estas criticas no te tiren abajo sino te motiven a mejorar.
Alexis Montalvan
652
Dragon Ancestral [1]
Registrado: Años de membresía
Ubicación: San Isidro
Mensajes: 2320
Aportes: 21

Nota » 05 Ene 2012 19:49

miqueas150 escribió:
Mafia escribió:Bieen leeo! PERO QUE NO TE PEGEN LOS APORTES


Idem


Imagen

Vas bien pibe, si me dejar una fotito demostrando la funcionalidad de 10!.

El más grande, lejos.
Imagen

Alkair escribió:32px alto x 32px ancho, en total creo que unos 64cm2

Jajajajaja xD

Rta:
Sobre lo de los centímetros, y bue, estaba viendo como pasarlo.
64pixels2 (?


1024 px^2
¡Libertad con responsabilidad!
743
Moderador
Registrado: Años de membresíaAños de membresía
Ubicación: San Francisco
Mensajes: 4948
Aportes: 38
Premios: 6
Campeón de Futbol (1) Mejor amigo del año (1) Usuario omnipresente (1) Embajador (3)

Nota » 05 Ene 2012 20:01

Buen aporte (:, muy lindo la verdad.

Saludos!

Imagen

Imagen

TE AMO SKYFUN SOS MI FANNNNNNNNNNNNNNNNNNNNN
HAO Staff
409
Dragon Ancestral [2]
Registrado: Años de membresía
Ubicación: Buenos Aires
Mensajes: 2745
Aportes: 28
Premios: 1
Embajador (1)

Nota » 05 Ene 2012 20:47

Gracias por respetar créditos, por ello, te mereces aunque sea unas moneditas ;-)

Honrada sea aquella guitarra que puede llegar a hablar, y glorificado sea aquel hombre que le enseña.
Aventurero Argentum
262
Destructor de Mentes [6]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 774
Aportes: 16

Siguiente

Volver a AO 0.11.5

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados