Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ''
- ' Handles incoming data.
- '
- ' @param userIndex The index of the user sending the message.
- Public Sub HandleIncomingData(ByVal UserIndex As Integer)
- '***************************************************
- 'Author: Juan Martín Sotuyo Dodero (Maraxus)
- 'Last Modification: 01/09/07
- '
- '***************************************************
- On Error Resume Next
- Dim packetID As Byte
- packetID = UserList(UserIndex).incomingData.PeekByte()
- 'Does the packet requires a logged user??
- If Not (packetID = ClientPacketID.ThrowDices _
- Or packetID = ClientPacketID.LoginExistingChar _
- Or packetID = ClientPacketID.LoginNewChar) Then
- 'Is the user actually logged?
- If Not UserList(UserIndex).flags.UserLogged Then
- Call CloseSocket(UserIndex)
- Exit Sub
- 'He is logged. Reset idle counter if id is valid.
- ElseIf packetID <= LAST_CLIENT_PACKET_ID Then
- UserList(UserIndex).Counters.IdleCount = 0
- End If
- ElseIf packetID <= LAST_CLIENT_PACKET_ID Then
- UserList(UserIndex).Counters.IdleCount = 0
- 'Is the user logged?
- If UserList(UserIndex).flags.UserLogged Then
- Call CloseSocket(UserIndex)
- Exit Sub
- End If
- End If
- ' Ante cualquier paquete, pierde la proteccion de ser atacado.
- UserList(UserIndex).flags.NoPuedeSerAtacado = False
- Select Case packetID
- Case ClientPacketID.LoginExistingChar 'OLOGIN
- Call HandleLoginExistingChar(UserIndex)
- Case ClientPacketID.ThrowDices 'TIRDAD
- Call HandleThrowDices(UserIndex)
- Case ClientPacketID.LoginNewChar 'NLOGIN
- Call HandleLoginNewChar(UserIndex)
- Case ClientPacketID.Talk ';
- Call HandleTalk(UserIndex)
- Case ClientPacketID.Yell '-
- Call HandleYell(UserIndex)
- Case ClientPacketID.Whisper '\
- Call HandleWhisper(UserIndex)
- Case ClientPacketID.Walk 'M
- Call HandleWalk(UserIndex)
- Case ClientPacketID.RequestPositionUpdate 'RPU
- Call HandleRequestPositionUpdate(UserIndex)
- Case ClientPacketID.Attack 'AT
- Call HandleAttack(UserIndex)
- Case ClientPacketID.PickUp 'AG
- Call HandlePickUp(UserIndex)
- Case ClientPacketID.RequestAtributes 'ATR
- Call HandleRequestAtributes(UserIndex)
- Case ClientPacketID.RequestFame 'FAMA
- Call HandleRequestFame(UserIndex)
- Case ClientPacketID.RequestSkills 'ESKI
- Call HandleRequestSkills(UserIndex)
- Case ClientPacketID.RequestMiniStats 'FEST
- Call HandleRequestMiniStats(UserIndex)
- Case ClientPacketID.CommerceEnd 'FINCOM
- Call HandleCommerceEnd(UserIndex)
- Case ClientPacketID.CommerceChat
- Call HandleCommerceChat(UserIndex)
- Case ClientPacketID.UserCommerceEnd 'FINCOMUSU
- Call HandleUserCommerceEnd(UserIndex)
- Case ClientPacketID.UserCommerceConfirm
- Call HandleUserCommerceConfirm(UserIndex)
- Case ClientPacketID.BankEnd 'FINBAN
- Call HandleBankEnd(UserIndex)
- Case ClientPacketID.UserCommerceOk 'COMUSUOK
- Call HandleUserCommerceOk(UserIndex)
- Case ClientPacketID.UserCommerceReject 'COMUSUNO
- Call HandleUserCommerceReject(UserIndex)
- Case ClientPacketID.Drop 'TI
- Call HandleDrop(UserIndex)
- Case ClientPacketID.CastSpell 'LH
- Call HandleCastSpell(UserIndex)
- Case ClientPacketID.LeftClick 'LC
- Call HandleLeftClick(UserIndex)
- Case ClientPacketID.DoubleClick 'RC
- Call HandleDoubleClick(UserIndex)
- Case ClientPacketID.Work 'UK
- Call HandleWork(UserIndex)
- Case ClientPacketID.UseSpellMacro 'UMH
- Call HandleUseSpellMacro(UserIndex)
- Case ClientPacketID.UseItem 'USA
- Call HandleUseItem(UserIndex)
- Case ClientPacketID.CraftBlacksmith 'CNS
- Call HandleCraftBlacksmith(UserIndex)
- Case ClientPacketID.CraftCarpenter 'CNC
- Call HandleCraftCarpenter(UserIndex)
- Case ClientPacketID.WorkLeftClick 'WLC
- Call HandleWorkLeftClick(UserIndex)
- Case ClientPacketID.SpellInfo 'INFS
- Call HandleSpellInfo(UserIndex)
- Case ClientPacketID.EquipItem 'EQUI
- Call HandleEquipItem(UserIndex)
- Case ClientPacketID.ChangeHeading 'CHEA
- Call HandleChangeHeading(UserIndex)
- Case ClientPacketID.ModifySkills 'SKSE
- Call HandleModifySkills(UserIndex)
- Case ClientPacketID.Train 'ENTR
- Call HandleTrain(UserIndex)
- Case ClientPacketID.CommerceBuy 'COMP
- Call HandleCommerceBuy(UserIndex)
- Case ClientPacketID.BankExtractItem 'RETI
- Call HandleBankExtractItem(UserIndex)
- Case ClientPacketID.CommerceSell 'VEND
- Call HandleCommerceSell(UserIndex)
- Case ClientPacketID.BankDeposit 'DEPO
- Call HandleBankDeposit(UserIndex)
- Case ClientPacketID.ForumPost 'DEMSG
- Call HandleForumPost(UserIndex)
- Case ClientPacketID.MoveSpell 'DESPHE
- Call HandleMoveSpell(UserIndex)
- Case ClientPacketID.MoveBank
- Call HandleMoveBank(UserIndex)
- Case ClientPacketID.UserCommerceOffer 'OFRECER
- Call HandleUserCommerceOffer(UserIndex)
- Case ClientPacketID.Online '/ONLINE
- Call HandleOnline(UserIndex)
- Case ClientPacketID.Quit '/SALIR
- Call HandleQuit(UserIndex)
- Case ClientPacketID.RequestAccountState '/BALANCE
- Call HandleRequestAccountState(UserIndex)
- Case ClientPacketID.PetStand '/QUIETO
- Call HandlePetStand(UserIndex)
- Case ClientPacketID.PetFollow '/ACOMPAÑAR
- Call HandlePetFollow(UserIndex)
- Case ClientPacketID.ReleasePet '/LIBERAR
- Call HandleReleasePet(UserIndex)
- Case ClientPacketID.TrainList '/ENTRENAR
- Call HandleTrainList(UserIndex)
- Case ClientPacketID.Rest '/DESCANSAR
- Call HandleRest(UserIndex)
- Case ClientPacketID.Meditate '/MEDITAR
- Call HandleMeditate(UserIndex)
- Case ClientPacketID.Resucitate '/RESUCITAR
- Call HandleResucitate(UserIndex)
- Case ClientPacketID.Heal '/CURAR
- Call HandleHeal(UserIndex)
- Case ClientPacketID.Help '/AYUDA
- Call HandleHelp(UserIndex)
- Case ClientPacketID.RequestStats '/EST
- Call HandleRequestStats(UserIndex)
- Case ClientPacketID.CommerceStart '/COMERCIAR
- Call HandleCommerceStart(UserIndex)
- Case ClientPacketID.BankStart '/BOVEDA
- Call HandleBankStart(UserIndex)
- Case ClientPacketID.Enlist '/ENLISTAR
- Call HandleEnlist(UserIndex)
- Case ClientPacketID.Information '/INFORMACION
- Call HandleInformation(UserIndex)
- Case ClientPacketID.Reward '/RECOMPENSA
- Call HandleReward(UserIndex)
- Case ClientPacketID.UpTime '/UPTIME
- Call HandleUpTime(UserIndex)
- Case ClientPacketID.Inquiry '/ENCUESTA ( with no params )
- Call HandleInquiry(UserIndex)
- Case ClientPacketID.CentinelReport '/CENTINELA
- Call HandleCentinelReport(UserIndex)
- Case ClientPacketID.CouncilMessage '/BMSG
- Call HandleCouncilMessage(UserIndex)
- Case ClientPacketID.RoleMasterRequest '/ROL
- Call HandleRoleMasterRequest(UserIndex)
- Case ClientPacketID.GMRequest '/GM
- Call HandleGMRequest(UserIndex)
- Case ClientPacketID.bugReport '/_BUG
- Call HandleBugReport(UserIndex)
- Case ClientPacketID.ChangeDescription '/DESC
- Call HandleChangeDescription(UserIndex)
- Case ClientPacketID.Punishments '/PENAS
- Call HandlePunishments(UserIndex)
- Case ClientPacketID.ChangePassword '/CONTRASEÑA
- Call HandleChangePassword(UserIndex)
- Case ClientPacketID.Gamble '/APOSTAR
- Call HandleGamble(UserIndex)
- Case ClientPacketID.InquiryVote '/ENCUESTA ( with parameters )
- Call HandleInquiryVote(UserIndex)
- Case ClientPacketID.LeaveFaction '/RETIRAR ( with no arguments )
- Call HandleLeaveFaction(UserIndex)
- Case ClientPacketID.BankExtractGold '/RETIRAR ( with arguments )
- Call HandleBankExtractGold(UserIndex)
- Case ClientPacketID.BankDepositGold '/DEPOSITAR
- Call HandleBankDepositGold(UserIndex)
- Case ClientPacketID.Denounce '/DENUNCIAR
- Call HandleDenounce(UserIndex)
- Case ClientPacketID.Ping '/PING
- Call HandlePing(UserIndex)
- Case ClientPacketID.GMCommands 'GM Messages
- Call HandleGMCommands(UserIndex)
- Case ClientPacketID.InitCrafting
- Call HandleInitCrafting(UserIndex)
- Case ClientPacketID.Home
- Call HandleHome(UserIndex)
- Case ClientPacketID.ShareNpc
- Call HandleShareNpc(UserIndex)
- Case ClientPacketID.StopSharingNpc
- Call HandleStopSharingNpc(UserIndex)
- Case ClientPacketID.Consulta
- Call HandleConsulta(UserIndex)
- Case ClientPacketID.RequestClaseForm
- Call HandleRequestClaseForm(UserIndex)
- Case ClientPacketID.EligioClase
- Call HandleEligioClase(UserIndex)
- Case ClientPacketID.EligioFaccion
- Call HandleEligioFaccion(UserIndex)
- Case ClientPacketID.RequestFaccionForm
- Call HandleRequestFaccionForm(UserIndex)
- Case ClientPacketID.RequestRecompensaForm
- Call HandleRequestRecompensaForm(UserIndex)
- Case ClientPacketID.EligioRecompensa
- Call HandleEligioRecompensa(UserIndex)
- Case ClientPacketID.RequestGuildWindow
- Call HandleRequestGuildWindow(UserIndex)
- Case ClientPacketID.GuildFoundate
- Call HandleGuildFoundate(UserIndex)
- Case ClientPacketID.GuildConfirmFoundation
- Call HandleGuildConfirmFoundation(UserIndex)
- Case ClientPacketID.GuildRequest
- Call HandleGuildRequest(UserIndex)
- Case Else
- 'ERROR : Abort!
- Call CloseSocket(UserIndex)
- End Select
- 'Done with this packet, move on to next one or send everything if no more packets found
- If UserList(UserIndex).incomingData.Length > 0 And Err.Number = 0 Then
- Err.Clear
- Call HandleIncomingData(UserIndex)
- ElseIf Err.Number <> 0 And Not Err.Number = UserList(UserIndex).incomingData.NotEnoughDataErrCode Then
- 'An error ocurred, log it and kick player.
- Call LogError("Error: " & Err.Number & " [" & Err.description & "] " & " Source: " & Err.Source & _
- vbTab & " HelpFile: " & Err.HelpFile & vbTab & " HelpContext: " & Err.HelpContext & _
- vbTab & " LastDllError: " & Err.LastDllError & vbTab & _
- " - UserIndex: " & UserIndex & " - producido al manejar el paquete: " & CStr(packetID))
- Call CloseSocket(UserIndex)
- Else
- 'Flush buffer - send everything that has been written
- Call FlushBuffer(UserIndex)
- End If
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement