Advertisement
Luciano_fuentes

Untitled

Dec 19th, 2016
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.80 KB | None | 0 0
  1. Option Explicit
  2. '***************
  3. 'AUTOR: Toyz - Luciano
  4. 'FECHA: 19/12/16
  5. '***************
  6.  
  7. Private Const Tiempo_Cancelamiento As Integer = 180
  8.  
  9. Public Const NPC_DAGA_RUSA As Integer = 1050
  10. Public INDEX_NPC_DAGA_RUSA_ONLINE As Integer
  11.  
  12. Private Type tUsuario
  13. ID As Integer
  14. Posicion As WorldPos
  15. End Type
  16.  
  17. Private Type tDagaRusa
  18. Activo As Boolean
  19. Usuarios() As tUsuario
  20. Conteo As Integer
  21. Cupos As Byte
  22. CoordenadasEspera As WorldPos
  23. CoordenadasArena As WorldPos
  24. Premio As Long
  25. Inscripcion As Long
  26. Total As Byte
  27. Restantes As Byte
  28. AtacoUser As Integer
  29. Head As Integer
  30. Heading As eHeading
  31. Body As Integer
  32. End Type
  33.  
  34. Private DagaRusa As tDagaRusa
  35.  
  36. Public Sub Carga_DagaRusa()
  37.  
  38. Dim Leer As clsIniReader
  39. Set Leer = New clsIniReader
  40. Call Leer.Initialize(App.Path & "\Dat\DagaRusa.dat")
  41.  
  42. With DagaRusa.CoordenadasArena
  43. .Map = CInt(Leer.GetValue("EVENTO", "Mapa_Espera"))
  44. .X = CByte(Leer.GetValue("EVENTO", "X_Espera"))
  45. .Y = CByte(Leer.GetValue("EVENTO", "Y_Espera"))
  46. End With
  47.  
  48. With DagaRusa.CoordenadasEspera
  49. .Map = CInt(Leer.GetValue("EVENTO", "Mapa_Arena"))
  50. .X = CByte(Leer.GetValue("EVENTO", "X_Arena"))
  51. .Y = CByte(Leer.GetValue("EVENTO", "Y_Arena"))
  52. End With
  53.  
  54. End Sub
  55.  
  56. Public Sub Armar_DagaRusa(ByVal ID As Integer, ByVal Cupos As Byte, ByVal Premio As Long, ByVal Inscripcion As Long)
  57.  
  58. With DagaRusa
  59. If .Activo = True Then
  60. Call WriteConsoleMsg(ID, "Daga Rusa> El evento ya está en curso.", FontTypeNames.FONTTYPE_GUILD)
  61. Exit Sub
  62. End If
  63.  
  64. If Cupos > 16 Then Cupos = 16
  65. If Cupos < 2 Then Cupos = 2
  66.  
  67. .Cupos = Cupos
  68. .Inscripcion = Inscripcion
  69. .Premio = Premio
  70. .Total = .Cupos
  71. .Restantes = .Total
  72. .Activo = True
  73. .Conteo = Tiempo_Cancelamiento
  74.  
  75. ReDim .Usuarios(1 To .Cupos) As tUsuario
  76. Call SendData(SendTarget.ToAll, 0, PrepareMessageConsoleMsg("Daga Rusa> " & .Cupos & " Cupos, Incripción" & IIf(.Inscripcion > 0, " de: " & .Inscripcion & " Monedas de oro, ", " Gratis, ") & IIf(.Premio > 0, "Premio de: " & .Premio & " Monedas de oro.", " No hay premio.") & " Manden /DAGARUSA si desean participar.", FontTypeNames.FONTTYPE_GUILD))
  77. End With
  78.  
  79. End Sub
  80.  
  81. Public Sub Entrar_DagaRusa(ByVal ID As Integer)
  82.  
  83. Dim ID_DagaRusa As Byte
  84. Dim LoopC As Long
  85.  
  86. With DagaRusa
  87. If Puede_Entrar(ID) = False Then _
  88. Exit Sub
  89.  
  90. Call WriteConsoleMsg(ID, "Has ingresado al evento" & IIf(.Inscripcion > 0, ", se te han descontado " & .Inscripcion & " monedas de oro.", vbNullString) & ". Espera a que el cupo se complete. ¡Suerte en el campo de batalla!", FontTypeNames.FONTTYPE_GUILD)
  91.  
  92. UserList(ID).Stats.GLD = UserList(ID).Stats.GLD - .Inscripcion
  93. ID_DagaRusa = DagaRusa_ID
  94. UserList(ID).flags.EnDagaRusa = ID_DagaRusa
  95.  
  96. .Cupos = .Cupos - 1
  97. .Usuarios(ID_DagaRusa).ID = ID
  98. .Usuarios(ID_DagaRusa).Posicion = UserList(ID).Pos
  99.  
  100. With DagaRusa.CoordenadasEspera
  101. WarpUserChar ID, .Map, .X, .Y, False
  102. End With
  103.  
  104. WritePauseToggle ID
  105. WriteUpdateGold ID
  106.  
  107. If .Cupos = 0 Then
  108. For LoopC = 1 To .Total
  109. WarpUserChar .Usuarios(LoopC).ID, .CoordenadasArena.Map, .CoordenadasArena.X + LoopC, .CoordenadasArena.Y, True
  110. Next LoopC
  111. Call SendData(SendTarget.ToAll, 0, PrepareMessageConsoleMsg("Daga Rusa> El cupo ha sido completado!", FontTypeNames.FONTTYPE_GUILD))
  112. .Conteo = 10
  113. SpawnNpc NPC_DAGA_RUSA, .CoordenadasArena, False, False
  114. End If
  115. End With
  116.  
  117. End Sub
  118.  
  119. Private Function DagaRusa_ID() As Byte
  120.  
  121. Dim LoopC As Long
  122.  
  123. With DagaRusa
  124. For LoopC = 1 To .Total
  125. If .Usuarios(LoopC).ID = 0 Then
  126. DagaRusa_ID = LoopC
  127. Exit Function
  128. End If
  129. Next LoopC
  130. End With
  131.  
  132. End Function
  133.  
  134. Private Function Puede_Entrar(ByVal ID As Integer) As Boolean
  135.  
  136. Puede_Entrar = False
  137.  
  138. If UserList(ID).flags.Muerto > 0 Then
  139. Call WriteConsoleMsg(ID, "Estás muerto.", FontTypeNames.FONTTYPE_GUILD)
  140. Exit Function
  141. End If
  142.  
  143. 'If UserList(ID).flags.EnJDH > 0 Then
  144. ' Call WriteConsoleMsg(ID, "Estás en los Juegos del Hambre.", FontTypeNames.FONTTYPE_GUILD)
  145. ' Exit Function
  146. 'End If
  147.  
  148. 'If UserList(ID).flags.EnPlantes > 0 Then
  149. ' Call WriteConsoleMsg(ID, "Ya estás en Plantes Automáticos.", FontTypeNames.FONTTYPE_GUILD)
  150. ' Exit Function
  151. 'End If
  152.  
  153. If UserList(ID).flags.EnDagaRusa > 0 Then
  154. Call WriteConsoleMsg(ID, "Ya estás en el en Daga Rusa.", FontTypeNames.FONTTYPE_GUILD)
  155. Exit Function
  156. End If
  157.  
  158. If DagaRusa.Activo = False Then
  159. Call WriteConsoleMsg(ID, "El evento no está en curso.", FontTypeNames.FONTTYPE_GUILD)
  160. Exit Function
  161. End If
  162.  
  163. If DagaRusa.Cupos = 0 Then
  164. Call WriteConsoleMsg(ID, "El evento ya no tiene cupos disponibles.", FontTypeNames.FONTTYPE_GUILD)
  165. Exit Function
  166. End If
  167.  
  168. If UserList(ID).Stats.GLD < DagaRusa.Inscripcion Then
  169. Call WriteConsoleMsg(ID, "No tienes el oro suficiente.", FontTypeNames.FONTTYPE_GUILD)
  170. Exit Function
  171. End If
  172.  
  173. If Not UserList(ID).Pos.Map = 1 Then
  174. Call WriteConsoleMsg(ID, "Tienes que estar en Ullathorpe para poder ingresar al evento", FontTypeNames.FONTTYPE_GUILD)
  175. Exit Function
  176. End If
  177.  
  178. Puede_Entrar = True
  179.  
  180. End Function
  181.  
  182. Public Sub Contar_DagaRusa()
  183.  
  184. Dim LoopC As Long
  185. Dim LoopX As Long
  186. Dim ID_DagaRusa As Byte
  187.  
  188. With DagaRusa
  189. If .Conteo = 0 Then
  190. .Conteo = -1
  191. If .Activo = True Then
  192. If .Cupos = 0 And .Premio = 0 Then
  193. SendData SendTarget.ToAll, 0, PrepareMessageConsoleMsg("Daga Rusa> Ya!", FontTypeNames.FONTTYPE_FIGHT)
  194. With Npclist(INDEX_NPC_DAGA_RUSA_ONLINE)
  195. DagaRusa.Body = .Char.Body
  196. DagaRusa.Head = .Char.Head
  197. DagaRusa.Heading = .Char.Heading
  198. .Movement = DagaRusaAI
  199. End With
  200. ' Npclist(INDEX_NPC_DAGA_RUSA_ONLINE).Movement = DagaRusa
  201. Call IA_NPC_DAGARUSA(INDEX_NPC_DAGA_RUSA_ONLINE)
  202. ElseIf .Premio > 0 Then
  203. SendData SendTarget.ToAll, 0, PrepareMessageConsoleMsg("Daga Rusa> Evento cancelado por falta de participantes, se ha devuelto el oro por la inscripción.", FontTypeNames.FONTTYPE_GUILD)
  204. Cancelar_DagaRusa
  205. End If
  206. End If
  207. End If
  208. If .Conteo > 0 Then
  209. If .Cupos = 0 And .Premio = 0 Then _
  210. SendData SendTarget.ToAll, 0, PrepareMessageConsoleMsg("Daga Rusa> " & .Conteo, FontTypeNames.FONTTYPE_GUILD)
  211. .Conteo = .Conteo - 1
  212. End If
  213. End With
  214. End Sub
  215.  
  216. Public Sub IA_NPC_DAGARUSA(ByVal NpcIndex As Integer)
  217.  
  218. Dim Y As Long
  219. Dim X As Long
  220. Dim UI As Integer
  221. Dim tHeading As Byte
  222.  
  223. With Npclist(NpcIndex)
  224. For Y = .Pos.Y - RANGO_VISION_Y To .Pos.Y + RANGO_VISION_Y
  225. For X = .Pos.X - RANGO_VISION_Y To .Pos.X + RANGO_VISION_Y
  226. If X >= MinXBorder And X <= MaxXBorder And Y >= MinYBorder And Y <= MaxYBorder Then
  227. UI = MapData(.Pos.Map, X, Y).UserIndex
  228. If UI <> DagaRusa.AtacoUser Then
  229. If Distancia(.Pos, UserList(UI).Pos) <= 1 Then
  230. Call SistemaCombate.NpcDaño(NpcIndex, UI)
  231. DagaRusa.AtacoUser = UI
  232. End If
  233. End If
  234. End If
  235. Next X
  236. Next Y
  237. tHeading = FindDirection(.Pos, UserList(UI).Pos)
  238. Call MoveNPCChar(NpcIndex, tHeading)
  239. End With
  240.  
  241. End Sub
  242.  
  243. Private Function ID_Usuario() As Byte
  244.  
  245. Dim LoopC As Long
  246.  
  247. For LoopC = 1 To DagaRusa.Total
  248. If DagaRusa.Usuarios(LoopC).ID > 0 Then
  249. ID_Usuario = LoopC
  250. Exit For
  251. End If
  252. Next LoopC
  253.  
  254. End Function
  255.  
  256. Public Sub Apuñalado_DagaRusa(ByVal ID As Integer)
  257.  
  258. Dim ID_DagaRusa As Byte
  259.  
  260. ID_DagaRusa = UserList(ID).flags.EnDagaRusa
  261. UserList(ID).flags.EnDagaRusa = 0
  262.  
  263. With DagaRusa
  264. .Restantes = .Restantes - 1
  265. If .Restantes > 1 Then SendData SendTarget.ToAll, 0, PrepareMessageConsoleMsg("Daga Rusa> Quedan " & .Restantes & " participantes.", FontTypeNames.FONTTYPE_GUILD)
  266. Call WriteConsoleMsg(ID, "Daga Rusa> ¡Has perdido, has sido descalificado. ¡Suerte para la próxima!", FontTypeNames.FONTTYPE_GUILD)
  267. WarpUserChar ID, .Usuarios(ID_DagaRusa).Posicion.Map, .Usuarios(ID_DagaRusa).Posicion.X, .Usuarios(ID_DagaRusa).Posicion.Y, False
  268. .Usuarios(ID_DagaRusa).ID = 0
  269. If .Restantes = 1 Then Finalizar
  270. End With
  271.  
  272. End Sub
  273.  
  274. Private Sub Finalizar()
  275.  
  276. Dim LoopC As Long
  277. Dim Dame_ID As Byte
  278. Dim ID As Integer
  279.  
  280. With DagaRusa
  281. Dame_ID = ID_Usuario
  282. ID = .Usuarios(Dame_ID).ID
  283. SendData SendTarget.ToAll, 0, PrepareMessageConsoleMsg("Daga Rusa> Ganador del evento: " & UserList(ID).name & " se lleva una cantidad de " & .Premio & " monedas de oro, felicitaciones!", FontTypeNames.FONTTYPE_GUILD)
  284. UserList(ID).Stats.GLD = UserList(ID).Stats.GLD + .Premio
  285.  
  286. WriteUpdateGold ID
  287. UserList(ID).flags.EnDagaRusa = 0
  288. .Premio = 0
  289. WarpUserChar ID, .Usuarios(Dame_ID).Posicion.Map, .Usuarios(Dame_ID).Posicion.X, .Usuarios(Dame_ID).Posicion.Y, False
  290. Limpiar
  291. QuitarNPC (INDEX_NPC_DAGA_RUSA_ONLINE)
  292. End With
  293. End Sub
  294.  
  295. Public Sub Cancelar_DagaRusa()
  296.  
  297. Dim LoopC As Long
  298.  
  299. With DagaRusa
  300.  
  301. If .Activo = False Then Exit Sub
  302.  
  303. For LoopC = 1 To .Total
  304. If .Usuarios(LoopC).ID > 0 Then
  305. WarpUserChar .Usuarios(LoopC).ID, .Usuarios(LoopC).Posicion.Map, .Usuarios(LoopC).Posicion.X, .Usuarios(LoopC).Posicion.Y, False
  306. UserList(.Usuarios(LoopC).ID).flags.EnDagaRusa = 0
  307. UserList(.Usuarios(LoopC).ID).Stats.GLD = UserList(.Usuarios(LoopC).ID).Stats.GLD + .Inscripcion
  308.  
  309. WriteConsoleMsg .Usuarios(LoopC).ID, "El evento ha sido cancelado, se te ha devuelto el costo de la inscripción.", FontTypeNames.FONTTYPE_GUILD
  310. WriteUpdateGold .Usuarios(LoopC).ID
  311. End If
  312. Next LoopC
  313. End With
  314.  
  315. SendData SendTarget.ToAll, 0, PrepareMessageConsoleMsg("Daga Rusa> Evento fue cancelado por un Game Master.", FontTypeNames.FONTTYPE_GUILD)
  316. Limpiar
  317.  
  318. End Sub
  319.  
  320. Public Sub Desconexion_DagaRusa(ByVal ID As Integer)
  321.  
  322. If UserList(ID).flags.EnDagaRusa = 0 Then Exit Sub
  323.  
  324. With DagaRusa
  325. WarpUserChar ID, .Usuarios(UserList(ID).flags.EnDagaRusa).Posicion.Map, .Usuarios(UserList(ID).flags.EnDagaRusa).Posicion.X, .Usuarios(UserList(ID).flags.EnDagaRusa).Posicion.Y, True
  326. .Usuarios(UserList(ID).flags.EnDagaRusa).ID = 0
  327. UserList(ID).flags.EnDagaRusa = 0
  328. .Cupos = .Cupos + 1
  329. WritePauseToggle ID
  330. End With
  331.  
  332. End Sub
  333.  
  334. Private Sub Limpiar()
  335.  
  336. With DagaRusa
  337. .Activo = False
  338. .Conteo = -1
  339. .Cupos = 0
  340. .Inscripcion = 0
  341. .Premio = 0
  342. .Restantes = 0
  343. .Total = 0
  344. .Head = 0
  345. .Body = 0
  346. .AtacoUser = 0
  347. ' .Heading = SOUTH
  348. Erase .Usuarios()
  349. End With
  350. INDEX_NPC_DAGA_RUSA_ONLINE = 0
  351. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement