GS-Zone

Gran Poder Zona Segura. Ir al Indice

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

10
Este tema se encuentra cerrado.

Nota » 09 Ene 2012 20:24

Hola como están.
Me base un poco en el sistema de GRAN PODER de CarDiego:
Queria saber como hacer para que en zonas seguras NO este el GRAN PODER sin BUG´s.

La forma que se me ocurrio fue:

En el Sub WarpUserChar debajo de:
  1. 'Seguis invisible al pasar de mapa
  2.     If (UserList(userindex).flags.Invisible = 1 Or UserList(userindex).flags.Oculto = 1) And (Not UserList(userindex).flags.AdminInvisible = 1) Then
  3.         Call SendToUserArea(userindex, "NOVER" & UserList(userindex).char.CharIndex & ",1", EncriptarProtocolosCriticos)
  4.     End If


poner:
  1. If MapInfo(UserList(UserIndex).Pos.Map).Pk = False And UserIndex = GranPoder Then
  2.         Call OtorgarGranPoder(0)
  3.         Call SendData(SendTarget.ToAll, 0, 0, "||" & UserList(UserIndex).name & " ha perdido el GRAN PODER estar en una zona segura" & FONTTYPE_ORO)
  4.     End If


eso es para que cuando entre en una zona segura le quite el gran poder y lo vuelva a sortear, esto funciona de 10!

ahora el rompecabezas, para que cuando lo vuelva a sortear y no le toque a un usuario que este en zona segura:

en el Sub OtorgarGranPoder buscamos:
  1. If UserList(userindex).flags.Muerto = 1 Then


y lo reemplazamos por:
  1. If UserList(userindex).flags.Muerto = 1 or MapInfo(UserList(UserIndex).Pos.Map).Pk = False Then


Me funciona bien, pero si no hay nadie en una zona insegura, supongamos que estan todos en la ciudad y toca sortear el gran poder ¡CAE EL SV! ¿wtf?
Última edición por Wiky Wiky el 09 Ene 2012 20:26, editado 2 veces en total

.
Imagen
47 (+5)
Aprendiz [5]
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Unknown
Mensajes: 405
Aportes: 7

Nota » 09 Ene 2012 20:33

If UserList(userindex).flags.Muerto = 1 and MapInfo(UserList(UserIndex).Pos.Map).Pk = False Then
Debe tirar desbordamiento el timer, pasa el timer del gran poder

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

Nota » 09 Ene 2012 20:36

  1. Private Sub tGranPoder_Timer()
  2. Static Minutoss As Integer
  3.  
  4. Minutoss = Minutoss + 1
  5. If Minutoss >= 2 Then
  6.     Minutoss = 0
  7.     If GranPoder = 0 Then
  8.        OtorgarGranPoder (0)
  9.     Else
  10.         Call SendData(SendTarget.toall, 0, 0, "PRE12," & UserList(GranPoder).name & "," & UserList(GranPoder).Pos.Map)
  11.         Call SendData(SendTarget.ToPCArea, GranPoder, UserList(GranPoder).Pos.Map, "CFX" & UserList(GranPoder).char.CharIndex & "," & 40 & "," & 0)
  12.         Call SendData(SendTarget.ToPCArea, GranPoder, UserList(GranPoder).Pos.Map, "TW47")
  13.     End If
  14. Else
  15.     If GranPoder > 0 Then Call SendData(SendTarget.ToPCArea, GranPoder, UserList(GranPoder).Pos.Map, "CFX" & UserList(GranPoder).char.CharIndex & "," & 40 & "," & 0)
  16.  
  17. End If
  18. End Sub
  19.  

.
Imagen
47 (+5)
Aprendiz [5]
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Unknown
Mensajes: 405
Aportes: 7

Nota » 09 Ene 2012 20:36

Pone que si no hay 50 users(por ejemplo) que se suspenda el sorteo del gran poder, de los 50 alguno va a estar en insegura :P

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 ^^
359
Aprendiz [6]
Registrado: Años de membresía
Ubicación: en mi casa
Mensajes: 439
Aportes: 2

Nota » 09 Ene 2012 20:40

  1. Function HayUserEnInsegura(byref RandomResult as integer) as boolean
  2.  
  3. dim LoopC as long
  4. dim ArrayUser() as integer
  5. dim JAJA as byte
  6. DIM GG AS BYTE
  7.  
  8. jaja = 0
  9.  
  10. for loopc = 1 to lastuser
  11.   if mapinfo(userlist(loopc).pos.map).pk = false then
  12.    jaja=jaja + 1
  13.    redim preserver arrayuser(1 to jaja) as integer
  14.    arrayuser(jaja) = loopc
  15.   end if
  16. next loopc
  17.  
  18. GG = RANDOMNUMBER(LBOUND(ARRAYUSER()), UBOUND(ARRAYUSER()))
  19.  
  20. RANDOMRESULT = ARRAYUSER(GG)
  21.  
  22. hayusereninsegura = (jaja > 0)
  23.  
  24. end function


usas esa funcion para fijarte si hay un usuario en insegura, Y le pasas como parametro en donde qeres guardar el gran poder..

ejemplo

dim UserPoder as integer

call hayusereninsegura(userpoder)

y en la variable "UserPoder" te qeda el index

LyRan escribió:Buenos Dias amigos y programadores de Gs Zone, Me gustaria pedirle la amabilidad de una ayuda con un cliente editado para mi Ao casero, Osea me explico, yo juego Ao con varios amigos y ellos todos usan cheat y no me gusta eso me gustaria que alguien me ayudara a crear un cliente editado con auto poteo de ambas potas a la ves ya sea que se alla gastado Mana lanzando algun hechis y comienze a potear solo hasta estar completamente el Mana, igual para la salud y poteo rapido para ambos.
mAnco programEr
799
Oraculo [5]
Registrado: Años de membresíaAños de membresía
Ubicación: Bolivia
Mensajes: 2299
Aportes: 109

Nota » 09 Ene 2012 23:58

no me funcionó matih.- me sigue pasando lo mismo.
Por ahí estoy haciendo algo mal yo. ¿Otra opción?

.
Imagen
47 (+5)
Aprendiz [5]
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Unknown
Mensajes: 405
Aportes: 7

Nota » 10 Ene 2012 00:09

Postea el sub OtorgarGranPoder
172
Aprendiz [7]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 486
Aportes: 3

Nota » 10 Ene 2012 00:11

  1. Sub OtorgarGranPoder(userindex As Integer)
  2. Dim LoopC As Integer
  3. Dim EncontroIdeal As Boolean
  4.  
  5. If LastUser = 0 Then Exit Sub
  6. If userindex = 0 Then
  7.     GranPoder = 0
  8.     Do While EncontroIdeal = False And LoopC < 500
  9.         LoopC = LoopC + 1
  10.         userindex = RandomNumber(1, LastUser)
  11.        
  12.         If UserList(userindex).flags.Privilegios = PlayerType.User And _
  13.            UserList(userindex).flags.UserLogged = True And UserList(userindex).flags.Muerto = 0 Then
  14.            
  15.             EncontroIdeal = True
  16.             Exit Do
  17.            
  18.         End If
  19.     Loop
  20.     If Not EncontroIdeal Then
  21.         userindex = 0
  22.         GranPoder = 0
  23.     End If
  24. End If
  25. If userindex > 0 Then
  26.     If UserList(userindex).flags.Muerto = 1 Then
  27.         Call OtorgarGranPoder(0)
  28.     Exit Sub
  29. End If
  30.    
  31.     GranPoder = userindex
  32.     Call SendData(SendTarget.toall, 0, 0, "PRE7," & UserList(userindex).name & "," & UserList(userindex).Pos.Map)
  33. End If
  34.  
  35.  
  36. End Sub

.
Imagen
47 (+5)
Aprendiz [5]
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Unknown
Mensajes: 405
Aportes: 7

Nota » 10 Ene 2012 00:29

Wiky Wiky escribió:
  1. Sub OtorgarGranPoder(userindex As Integer)
  2. Dim LoopC As Integer
  3. Dim EncontroIdeal As Boolean
  4.  
  5. If LastUser = 0 Then Exit Sub
  6. If userindex = 0 Then
  7.     GranPoder = 0
  8.     Do While EncontroIdeal = False And LoopC < 500
  9.         LoopC = LoopC + 1
  10.         userindex = RandomNumber(1, LastUser)
  11.        
  12.         If UserList(userindex).flags.Privilegios = PlayerType.User And _
  13.            UserList(userindex).flags.UserLogged = True And UserList(userindex).flags.Muerto = 0 Then
  14.            
  15.             EncontroIdeal = True
  16.             Exit Do
  17.            
  18.         End If
  19.     Loop
  20.     If Not EncontroIdeal Then
  21.         userindex = 0
  22.         GranPoder = 0
  23.     End If
  24. End If
  25. If userindex > 0 Then
  26.     If UserList(userindex).flags.Muerto = 1 Then
  27.         Call OtorgarGranPoder(0)
  28.     Exit Sub
  29. End If
  30.    
  31.     GranPoder = userindex
  32.     Call SendData(SendTarget.toall, 0, 0, "PRE7," & UserList(userindex).name & "," & UserList(userindex).Pos.Map)
  33. End If
  34.  
  35.  
  36. End Sub



Si no encuentra a nadie que cumpla los requisitos, UserIndex es igual a 0, y al final haces GranPoder = Userindex, ergo, GranPoder = 0. Después, haces Userlist(userindex).name, y UserIndex es 0, por ahí puede haber un problema. No hay un usuario al que se le asigne el 0 como índice (almenos no recuerdo que sea así :P)

  1.    If Not EncontroIdeal Then
  2.         userindex = 0
  3.         GranPoder = 0
  4.     End If


¿Por qué no terminar el sub ahi? Si ya sabes que no encontraste a nadie a quien puedas darle el poder. Después el timer se encargará de buscar de nuevo.

De todas formas, el sub está bastante sucio, fijate que se puede limpiar ;)
172
Aprendiz [7]
Registrado: Años de membresíaAños de membresíaAños de membresía
Mensajes: 486
Aportes: 3

Nota » 10 Ene 2012 01:48

Gracias chicos.
Todo resuelto ;)
Última edición por Wiky Wiky el 10 Ene 2012 06:20, editado 7 veces en total

.
Imagen
47 (+5)
Aprendiz [5]
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Unknown
Mensajes: 405
Aportes: 7

Este tema se encuentra cerrado.

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