Advertisement
Luciano_fuentes

handleincomingdata

Apr 22nd, 2017
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.29 KB | None | 0 0
  1. ''
  2. ' Handles incoming data.
  3. '
  4. ' @param userIndex The index of the user sending the message.
  5.  
  6. Public Sub HandleIncomingData(ByVal UserIndex As Integer)
  7. '***************************************************
  8. 'Author: Juan Martín Sotuyo Dodero (Maraxus)
  9. 'Last Modification: 01/09/07
  10. '
  11. '***************************************************
  12. On Error Resume Next
  13. Dim packetID As Byte
  14.  
  15. packetID = UserList(UserIndex).incomingData.PeekByte()
  16.  
  17. 'Does the packet requires a logged user??
  18. If Not (packetID = ClientPacketID.ThrowDices _
  19. Or packetID = ClientPacketID.LoginExistingChar _
  20. Or packetID = ClientPacketID.LoginNewChar) Then
  21.  
  22. 'Is the user actually logged?
  23. If Not UserList(UserIndex).flags.UserLogged Then
  24. Call CloseSocket(UserIndex)
  25. Exit Sub
  26.  
  27. 'He is logged. Reset idle counter if id is valid.
  28. ElseIf packetID <= LAST_CLIENT_PACKET_ID Then
  29. UserList(UserIndex).Counters.IdleCount = 0
  30. End If
  31. ElseIf packetID <= LAST_CLIENT_PACKET_ID Then
  32. UserList(UserIndex).Counters.IdleCount = 0
  33.  
  34. 'Is the user logged?
  35. If UserList(UserIndex).flags.UserLogged Then
  36. Call CloseSocket(UserIndex)
  37. Exit Sub
  38. End If
  39. End If
  40.  
  41. ' Ante cualquier paquete, pierde la proteccion de ser atacado.
  42. UserList(UserIndex).flags.NoPuedeSerAtacado = False
  43.  
  44. Select Case packetID
  45. Case ClientPacketID.LoginExistingChar 'OLOGIN
  46. Call HandleLoginExistingChar(UserIndex)
  47.  
  48. Case ClientPacketID.ThrowDices 'TIRDAD
  49. Call HandleThrowDices(UserIndex)
  50.  
  51. Case ClientPacketID.LoginNewChar 'NLOGIN
  52. Call HandleLoginNewChar(UserIndex)
  53.  
  54. Case ClientPacketID.Talk ';
  55. Call HandleTalk(UserIndex)
  56.  
  57. Case ClientPacketID.Yell '-
  58. Call HandleYell(UserIndex)
  59.  
  60. Case ClientPacketID.Whisper '\
  61. Call HandleWhisper(UserIndex)
  62.  
  63. Case ClientPacketID.Walk 'M
  64. Call HandleWalk(UserIndex)
  65.  
  66. Case ClientPacketID.RequestPositionUpdate 'RPU
  67. Call HandleRequestPositionUpdate(UserIndex)
  68.  
  69. Case ClientPacketID.Attack 'AT
  70. Call HandleAttack(UserIndex)
  71.  
  72. Case ClientPacketID.PickUp 'AG
  73. Call HandlePickUp(UserIndex)
  74.  
  75. Case ClientPacketID.RequestAtributes 'ATR
  76. Call HandleRequestAtributes(UserIndex)
  77.  
  78. Case ClientPacketID.RequestFame 'FAMA
  79. Call HandleRequestFame(UserIndex)
  80.  
  81. Case ClientPacketID.RequestSkills 'ESKI
  82. Call HandleRequestSkills(UserIndex)
  83.  
  84. Case ClientPacketID.RequestMiniStats 'FEST
  85. Call HandleRequestMiniStats(UserIndex)
  86.  
  87. Case ClientPacketID.CommerceEnd 'FINCOM
  88. Call HandleCommerceEnd(UserIndex)
  89.  
  90. Case ClientPacketID.CommerceChat
  91. Call HandleCommerceChat(UserIndex)
  92.  
  93. Case ClientPacketID.UserCommerceEnd 'FINCOMUSU
  94. Call HandleUserCommerceEnd(UserIndex)
  95.  
  96. Case ClientPacketID.UserCommerceConfirm
  97. Call HandleUserCommerceConfirm(UserIndex)
  98.  
  99. Case ClientPacketID.BankEnd 'FINBAN
  100. Call HandleBankEnd(UserIndex)
  101.  
  102. Case ClientPacketID.UserCommerceOk 'COMUSUOK
  103. Call HandleUserCommerceOk(UserIndex)
  104.  
  105. Case ClientPacketID.UserCommerceReject 'COMUSUNO
  106. Call HandleUserCommerceReject(UserIndex)
  107.  
  108. Case ClientPacketID.Drop 'TI
  109. Call HandleDrop(UserIndex)
  110.  
  111. Case ClientPacketID.CastSpell 'LH
  112. Call HandleCastSpell(UserIndex)
  113.  
  114. Case ClientPacketID.LeftClick 'LC
  115. Call HandleLeftClick(UserIndex)
  116.  
  117. Case ClientPacketID.DoubleClick 'RC
  118. Call HandleDoubleClick(UserIndex)
  119.  
  120. Case ClientPacketID.Work 'UK
  121. Call HandleWork(UserIndex)
  122.  
  123. Case ClientPacketID.UseSpellMacro 'UMH
  124. Call HandleUseSpellMacro(UserIndex)
  125.  
  126. Case ClientPacketID.UseItem 'USA
  127. Call HandleUseItem(UserIndex)
  128.  
  129. Case ClientPacketID.CraftBlacksmith 'CNS
  130. Call HandleCraftBlacksmith(UserIndex)
  131.  
  132. Case ClientPacketID.CraftCarpenter 'CNC
  133. Call HandleCraftCarpenter(UserIndex)
  134.  
  135. Case ClientPacketID.WorkLeftClick 'WLC
  136. Call HandleWorkLeftClick(UserIndex)
  137.  
  138. Case ClientPacketID.SpellInfo 'INFS
  139. Call HandleSpellInfo(UserIndex)
  140.  
  141. Case ClientPacketID.EquipItem 'EQUI
  142. Call HandleEquipItem(UserIndex)
  143.  
  144. Case ClientPacketID.ChangeHeading 'CHEA
  145. Call HandleChangeHeading(UserIndex)
  146.  
  147. Case ClientPacketID.ModifySkills 'SKSE
  148. Call HandleModifySkills(UserIndex)
  149.  
  150. Case ClientPacketID.Train 'ENTR
  151. Call HandleTrain(UserIndex)
  152.  
  153. Case ClientPacketID.CommerceBuy 'COMP
  154. Call HandleCommerceBuy(UserIndex)
  155.  
  156. Case ClientPacketID.BankExtractItem 'RETI
  157. Call HandleBankExtractItem(UserIndex)
  158.  
  159. Case ClientPacketID.CommerceSell 'VEND
  160. Call HandleCommerceSell(UserIndex)
  161.  
  162. Case ClientPacketID.BankDeposit 'DEPO
  163. Call HandleBankDeposit(UserIndex)
  164.  
  165. Case ClientPacketID.ForumPost 'DEMSG
  166. Call HandleForumPost(UserIndex)
  167.  
  168. Case ClientPacketID.MoveSpell 'DESPHE
  169. Call HandleMoveSpell(UserIndex)
  170.  
  171. Case ClientPacketID.MoveBank
  172. Call HandleMoveBank(UserIndex)
  173.  
  174. Case ClientPacketID.UserCommerceOffer 'OFRECER
  175. Call HandleUserCommerceOffer(UserIndex)
  176.  
  177. Case ClientPacketID.Online '/ONLINE
  178. Call HandleOnline(UserIndex)
  179.  
  180. Case ClientPacketID.Quit '/SALIR
  181. Call HandleQuit(UserIndex)
  182.  
  183. Case ClientPacketID.RequestAccountState '/BALANCE
  184. Call HandleRequestAccountState(UserIndex)
  185.  
  186. Case ClientPacketID.PetStand '/QUIETO
  187. Call HandlePetStand(UserIndex)
  188.  
  189. Case ClientPacketID.PetFollow '/ACOMPAÑAR
  190. Call HandlePetFollow(UserIndex)
  191.  
  192. Case ClientPacketID.ReleasePet '/LIBERAR
  193. Call HandleReleasePet(UserIndex)
  194.  
  195. Case ClientPacketID.TrainList '/ENTRENAR
  196. Call HandleTrainList(UserIndex)
  197.  
  198. Case ClientPacketID.Rest '/DESCANSAR
  199. Call HandleRest(UserIndex)
  200.  
  201. Case ClientPacketID.Meditate '/MEDITAR
  202. Call HandleMeditate(UserIndex)
  203.  
  204. Case ClientPacketID.Resucitate '/RESUCITAR
  205. Call HandleResucitate(UserIndex)
  206.  
  207. Case ClientPacketID.Heal '/CURAR
  208. Call HandleHeal(UserIndex)
  209.  
  210. Case ClientPacketID.Help '/AYUDA
  211. Call HandleHelp(UserIndex)
  212.  
  213. Case ClientPacketID.RequestStats '/EST
  214. Call HandleRequestStats(UserIndex)
  215.  
  216. Case ClientPacketID.CommerceStart '/COMERCIAR
  217. Call HandleCommerceStart(UserIndex)
  218.  
  219. Case ClientPacketID.BankStart '/BOVEDA
  220. Call HandleBankStart(UserIndex)
  221.  
  222. Case ClientPacketID.Enlist '/ENLISTAR
  223. Call HandleEnlist(UserIndex)
  224.  
  225. Case ClientPacketID.Information '/INFORMACION
  226. Call HandleInformation(UserIndex)
  227.  
  228. Case ClientPacketID.Reward '/RECOMPENSA
  229. Call HandleReward(UserIndex)
  230.  
  231. Case ClientPacketID.UpTime '/UPTIME
  232. Call HandleUpTime(UserIndex)
  233.  
  234. Case ClientPacketID.Inquiry '/ENCUESTA ( with no params )
  235. Call HandleInquiry(UserIndex)
  236.  
  237. Case ClientPacketID.CentinelReport '/CENTINELA
  238. Call HandleCentinelReport(UserIndex)
  239.  
  240. Case ClientPacketID.CouncilMessage '/BMSG
  241. Call HandleCouncilMessage(UserIndex)
  242.  
  243. Case ClientPacketID.RoleMasterRequest '/ROL
  244. Call HandleRoleMasterRequest(UserIndex)
  245.  
  246. Case ClientPacketID.GMRequest '/GM
  247. Call HandleGMRequest(UserIndex)
  248.  
  249. Case ClientPacketID.bugReport '/_BUG
  250. Call HandleBugReport(UserIndex)
  251.  
  252. Case ClientPacketID.ChangeDescription '/DESC
  253. Call HandleChangeDescription(UserIndex)
  254.  
  255. Case ClientPacketID.Punishments '/PENAS
  256. Call HandlePunishments(UserIndex)
  257.  
  258. Case ClientPacketID.ChangePassword '/CONTRASEÑA
  259. Call HandleChangePassword(UserIndex)
  260.  
  261. Case ClientPacketID.Gamble '/APOSTAR
  262. Call HandleGamble(UserIndex)
  263.  
  264. Case ClientPacketID.InquiryVote '/ENCUESTA ( with parameters )
  265. Call HandleInquiryVote(UserIndex)
  266.  
  267. Case ClientPacketID.LeaveFaction '/RETIRAR ( with no arguments )
  268. Call HandleLeaveFaction(UserIndex)
  269.  
  270. Case ClientPacketID.BankExtractGold '/RETIRAR ( with arguments )
  271. Call HandleBankExtractGold(UserIndex)
  272.  
  273. Case ClientPacketID.BankDepositGold '/DEPOSITAR
  274. Call HandleBankDepositGold(UserIndex)
  275.  
  276. Case ClientPacketID.Denounce '/DENUNCIAR
  277. Call HandleDenounce(UserIndex)
  278.  
  279. Case ClientPacketID.Ping '/PING
  280. Call HandlePing(UserIndex)
  281.  
  282. Case ClientPacketID.GMCommands 'GM Messages
  283. Call HandleGMCommands(UserIndex)
  284.  
  285. Case ClientPacketID.InitCrafting
  286. Call HandleInitCrafting(UserIndex)
  287.  
  288. Case ClientPacketID.Home
  289. Call HandleHome(UserIndex)
  290.  
  291. Case ClientPacketID.ShareNpc
  292. Call HandleShareNpc(UserIndex)
  293.  
  294. Case ClientPacketID.StopSharingNpc
  295. Call HandleStopSharingNpc(UserIndex)
  296.  
  297. Case ClientPacketID.Consulta
  298. Call HandleConsulta(UserIndex)
  299.  
  300. Case ClientPacketID.RequestClaseForm
  301. Call HandleRequestClaseForm(UserIndex)
  302.  
  303. Case ClientPacketID.EligioClase
  304. Call HandleEligioClase(UserIndex)
  305.  
  306. Case ClientPacketID.EligioFaccion
  307. Call HandleEligioFaccion(UserIndex)
  308.  
  309. Case ClientPacketID.RequestFaccionForm
  310. Call HandleRequestFaccionForm(UserIndex)
  311.  
  312. Case ClientPacketID.RequestRecompensaForm
  313. Call HandleRequestRecompensaForm(UserIndex)
  314.  
  315. Case ClientPacketID.EligioRecompensa
  316. Call HandleEligioRecompensa(UserIndex)
  317.  
  318. Case ClientPacketID.RequestGuildWindow
  319. Call HandleRequestGuildWindow(UserIndex)
  320.  
  321. Case ClientPacketID.GuildFoundate
  322. Call HandleGuildFoundate(UserIndex)
  323.  
  324. Case ClientPacketID.GuildConfirmFoundation
  325. Call HandleGuildConfirmFoundation(UserIndex)
  326.  
  327. Case ClientPacketID.GuildRequest
  328. Call HandleGuildRequest(UserIndex)
  329.  
  330. Case Else
  331. 'ERROR : Abort!
  332. Call CloseSocket(UserIndex)
  333. End Select
  334.  
  335. 'Done with this packet, move on to next one or send everything if no more packets found
  336. If UserList(UserIndex).incomingData.Length > 0 And Err.Number = 0 Then
  337. Err.Clear
  338. Call HandleIncomingData(UserIndex)
  339.  
  340. ElseIf Err.Number <> 0 And Not Err.Number = UserList(UserIndex).incomingData.NotEnoughDataErrCode Then
  341. 'An error ocurred, log it and kick player.
  342. Call LogError("Error: " & Err.Number & " [" & Err.description & "] " & " Source: " & Err.Source & _
  343. vbTab & " HelpFile: " & Err.HelpFile & vbTab & " HelpContext: " & Err.HelpContext & _
  344. vbTab & " LastDllError: " & Err.LastDllError & vbTab & _
  345. " - UserIndex: " & UserIndex & " - producido al manejar el paquete: " & CStr(packetID))
  346. Call CloseSocket(UserIndex)
  347.  
  348. Else
  349. 'Flush buffer - send everything that has been written
  350. Call FlushBuffer(UserIndex)
  351. End If
  352. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement