private static bool CheckIfNewSp(int Index_, ulong SEXP) { ulong tmpLong = Player.Stats[Index_].SkillpointBar + SEXP; if (tmpLong >= 400) { ulong tmpDiv = tmpLong / 400; Player.Stats[Index_].SkillpointBar = (ushort)(tmpLong - 400 * tmpDiv); Player.Stats[Index_].Skillpoints += (ushort)tmpDiv; Mastery.SPUpdate(Index_); return(true); } else { Player.Stats[Index_].SkillpointBar += (ushort)SEXP; return(false); } }
unsafe public static void ProcessData(byte[] buffer, int Index) { reader = new PacketReader(buffer, buffer.Length); reader.ModifyIndex(6); TPacket *tmpPacket = Silkroad.ToTPacket(buffer); if (debug) { Console.WriteLine("[ProcessData][{0:X}][{1} bytes][Index {2}]\n{3}\n", tmpPacket->opcode, tmpPacket->size, Index, BitConverter.ToString(buffer, 6, tmpPacket->size).Replace('-', ' ')); } //Console.WriteLine("{0}", tmpPacket->opcode); switch (tmpPacket->opcode) { case CLIENT_OPCODES.GAME_CLIENT_KEEP_ALIVE: case CLIENT_OPCODES.GAME_CLIENT_ACCEPT_HANDSHAKE: /*if(debug) * Debugx.DumpBuffer(buffer, 1, tmpPacket->opcode, tmpPacket->size);*/ //hansh(Index); Auth.SendServerInfo(Index); //force cliente acept xD break; case CLIENT_OPCODES.GAME_CLIENT_INFO: Auth.SendServerInfo(Index); break; case CLIENT_OPCODES.GAME_CLIENT_PATCH_REQUEST: Auth.SendPatchInfo(Index); break; case CLIENT_OPCODES.GAME_CLIENT_AUTH: Auth.OnAuth(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_CHARACTER: Character.OnCharacter(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_INGAME_REQUEST: Character.OnIngameRequest(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_INGAME_NOTIFY: Players.OnIngameNotify(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_CHARACTER_STATE: Character.OnState(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_MOVEMENT: Movement.OnMovement(tmpPacket->data, Index); break; case CLIENT_OPCODES.GAME_CLIENT_CLOSE: OnGameQuit(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_EMOTION: PlayerAction.OnEmotion(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_ITEM_MOVE: Items.MoveItem(tmpPacket->data, Index); break; case CLIENT_OPCODES.GAME_CLIENT_CHAT: Chat.OnChat(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_TARGET: Players.OnTarget(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_MASTERYUPDATE: Mastery.OnMasteryUpdate(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_SKILLUPDATE: Mastery.OnSkillUpdate(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_STR_UPDATE: Stats.STRUpdate(Index); break; case CLIENT_OPCODES.GAME_CLIENT_INT_UPDATE: Stats.INTUpdate(Index); break; case CLIENT_OPCODES.GAME_CLIENT_PLAYER_ACTION: PlayerAction.Action(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_RESPAWN: Character.ReSpawnMe(Index); break; case CLIENT_OPCODES.GAME_CLIENT_GM: GameMaster.OnGM(reader, Index); break; case CLIENT_OPCODES.GAME_CLIENT_ITEM_USE: Items.OnUseItem(reader, Index); break; default: Console.WriteLine("Default Opcode:{0}", tmpPacket->opcode); break; } }