├── Images ├── Hero.PNG └── Maps │ ├── BicheonTown.PNG │ ├── BicheonCastle.PNG │ ├── GinkgoValley.PNG │ ├── SecretPeak1F.PNG │ ├── SecretPeak2F.PNG │ ├── BicheonValley2F.PNG │ ├── BicheonValley3F.PNG │ ├── BicheonValley4F.PNG │ ├── NefarioxRuins2F.PNG │ ├── ViperbeastPlain.PNG │ ├── DemonBullTemple1F.PNG │ ├── DemonBullTemple2F.PNG │ ├── DemonBullTemple3F.PNG │ └── PeachBlossomValley.PNG ├── Data ├── csv │ ├── EXP_PENALTY.csv │ ├── CHARACTER_GROWINDEX.csv │ ├── CHARACTER_PARTS_DEFINES.csv │ ├── ITEM_UNSEALING_ACCELERATION.csv │ ├── GUILD_POINT.csv │ ├── GUILD_SCORE.csv │ ├── GUIDE_START.csv │ ├── PET_EQUIPINFO.csv │ ├── PET_DECK.csv │ ├── EXPENSIVE_GROUP_SETTING.csv │ ├── INVENTORY_EXTEND.csv │ ├── ADS_INFO.csv │ ├── GAMEOPTION_DISABLEKEY.csv │ ├── BUFF_PARTY.csv │ ├── GUILD_INSTANCE_DUNGEON_COST.csv │ ├── INVENTORY_EXTEND_ITEM.csv │ ├── NPC_ITEM_MAKE_LIST.csv │ ├── FAME_CATEGORY.csv │ ├── CHARACTER_EXPBOOSTER_ITEM.csv │ ├── ITEM_DISPLAY.csv │ ├── CHARACTER_EXPBOOSTER.csv │ ├── COMBO.csv │ ├── GUILD_FAME_CATEGORY.csv │ ├── PK_SYSTEM.csv │ ├── GUILD_WAR_SANCTUM.csv │ ├── CHARACTER_MASTERY_SLOT.csv │ ├── INVENTORY_EXTEND_VALUE.csv │ ├── DUNGEON_TICKET_CHARGE.csv │ ├── WAYPOINT.csv │ ├── GUILD_WAR_PLUNDER_REWARD.csv │ ├── ITEM_DURABILITY_BROKENLV.csv │ ├── ITEM_BLESS_INCREASERATE.csv │ ├── ITEM_PROVIDE.csv │ ├── GUILD_WANTED.csv │ ├── ITEM_JEWEL_SLOTCOLOR.csv │ ├── GUILd_WAR_OCCUPATION_REWARD.csv │ ├── GUILD_WAR_OCCUPATION_RANKING.csv │ ├── GUILD_STATUS.csv │ ├── GUILD_DOMINION_PK_GRADE.csv │ ├── MAGICSTONE_EQUIPSLOT.csv │ ├── GUILD_WAR_SABUK_REWARD.csv │ ├── BUFF_OVERLAPCALL.csv │ ├── ITEM_UNSEALING.csv │ ├── PK_SCORE.csv │ ├── GUILD_DOMINION_EXCHANGE.csv │ ├── ITEM_MAGICORB_DEFINE.csv │ ├── DUNGEON_TICKET.csv │ ├── GUILD_CONTRIBUTION_GRADE.csv │ ├── BLACKDRAGON_DUNGEON.csv │ ├── ITEM_SUBCOOLTIME.csv │ ├── GUILD_DONATION.csv │ ├── FAME_QUEST.csv │ ├── GUILD_FAME_LEVEL.csv │ ├── PK_GRADE.csv │ ├── MAS_DEFAULTSETTING.csv │ ├── DARKALTAR.csv │ ├── CLASS_PHASE.csv │ ├── ITEM_JEWEL_PROBABILITY.csv │ ├── GUILD_SUPPLY.csv │ ├── COMMAND_MARK.csv │ ├── FAME_LEVEL.csv │ ├── GUILD_DOMINION_BUFF.csv │ ├── GUILD_DOMINION_PRIZE.csv │ ├── PET_LEVEL.csv │ ├── GUILD_COOP_MISSION_GROUP_LIST.csv │ ├── GUILD_DOMINION_STROAGE_HISTORY.csv │ ├── ITEM_MAGICORB_LEVEL.csv │ ├── DUNGEON_POSITION.csv │ ├── GUILD_WAR_SIEGE_REWARD.csv │ ├── ITEM_JEWEL_TIER.csv │ ├── NPC_ITEM_CRAFT_MATERIAL.csv │ ├── ITEM_JEWEL_COMPOSE.csv │ ├── GUILD_MONEY_EXCHANGE.csv │ ├── GUILD_MEMBER_GRADE.csv │ ├── GUILD_AUTHORITY.csv │ ├── NPCSHOWSCHEDULE.csv │ ├── CHARACTER_EMOTE.csv │ ├── ITEM_SMELTING_RATE.csv │ ├── BUFF_GUILD_DEV.csv │ ├── GUILD_WAR_PLUNDER.csv │ ├── GUILD_POSITION.csv │ ├── DECK_SYMBOL_LIST.csv │ ├── NPC_ITEM_CRAFT_GROUP.csv │ ├── GUILD_WAR_SABUK.csv │ ├── INVENTORY_ORDER.csv │ ├── CLIENT_ERROR_STRING.csv │ ├── MONTAGE.csv │ ├── CHANNEL.csv │ ├── ITEM_SET.csv │ ├── POTENTIAL_NODEUI.csv │ ├── EVENT_DROP.csv │ ├── GUILD_WAR_ALTAR.csv │ ├── GREAT_BUILDING.csv │ ├── ITEM_MAGICORB_OPTION_CHANGE.csv │ ├── MOVIEPLAY.csv │ ├── GREAT_BUILDING_STATUS.csv │ ├── ITEM_EQUIPSLOT.csv │ ├── MAS_PLAYLOG.csv │ ├── GUILD_WAR_OBJECT.csv │ ├── GUILD_WAR_STRONG_POINT.csv │ ├── PK_MODE.csv │ ├── DUNGEON_SHOP.csv │ ├── ITEM_JEWEL_COMPOSE_RESULT.csv │ ├── CHARACTER_PRESET.csv │ ├── GUILD_DOMINION.csv │ ├── GUILD_MARK.csv │ ├── ITEM_SMELTING_EFFECT.csv │ ├── GUILD_WAR_OCCUPATION.csv │ ├── MULTI_LANGUAGE.csv │ ├── GUILD_COOP_MISSION_GROUP.csv │ ├── ITEM_MATERIAL_COMPOSE_POINT.csv │ └── EVENTDATA.csv └── protobuf │ ├── packet_maching.proto │ ├── info_error_type.proto │ ├── packet_awaken.proto │ ├── packet_cost.proto │ ├── packet_matching.proto │ ├── info_item.proto │ ├── packet_tutorial.proto │ ├── packet_event_boss.proto │ ├── packet_doorobject.proto │ ├── packet_meditation.proto │ ├── packet_skill_passive.proto │ ├── packet_trigger.proto │ ├── packet_fame.proto │ ├── packet_playlog.proto │ ├── packet_game_option.proto │ ├── packet_potential.proto │ ├── packet_daily_goods.proto │ ├── packet_totem.proto │ ├── packet_zone_event.proto │ ├── packet_treasure.proto │ ├── Authentication.proto │ ├── packet_masteryslot.proto │ ├── packet_blackdragon_dungeon.proto │ ├── packet_search.proto │ ├── packet_achievement.proto │ ├── packet_closed_training.proto │ ├── packet_dungeon_ticket.proto │ ├── packet_logout.proto │ ├── AuthenticationTypes.proto │ ├── packet_block.proto │ ├── packet_character_phase.proto │ ├── packet_holy_stuff.proto │ ├── packet_secret_dungeon.proto │ ├── packet_duel.proto │ ├── packet_minion.proto │ ├── packet_gacha.proto │ ├── packet_magic_square.proto │ ├── packet_force.proto │ ├── packet_casting.proto │ ├── packet_buff.proto │ ├── packet_guild_war_common.proto │ ├── packet_object.proto │ ├── packet_dark_altar.proto │ ├── packet_gm.proto │ ├── packet_costume.proto │ ├── info_redis.proto │ ├── packet_notify.proto │ ├── packet_event_pass.proto │ ├── packet_vehicle.proto │ ├── packet_battle_pass.proto │ ├── packet_great_building.proto │ └── packet_cheat.proto ├── Locale └── Languages.cs ├── Properties ├── Settings.settings ├── Settings.Designer.cs └── AssemblyInfo.cs ├── Network ├── Packets │ ├── Exception.cs │ └── Encryption │ │ └── Encryption.cs └── WebLogin │ └── JSON │ ├── RegionCode.cs │ ├── PatchInfoJSON.cs │ └── LoginCheck.cs ├── Profiles └── example_profile.ini ├── Automation ├── Gatherer.cs └── Geometry.cs ├── Game ├── Structures.cs ├── Quest │ ├── QuestDropItem.cs │ ├── Quest.cs │ └── QuestRelation.cs ├── Stats.cs ├── WarpLocation.cs ├── Icons.cs ├── NamedStage.cs ├── Portal.cs └── Account.cs ├── Program.cs ├── App.config ├── Utilities ├── DllImport.cs └── CSVSerializer.cs ├── packages.config ├── Mir4ClientEmulator.sln └── Context └── CBase.cs /Images/Hero.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Hero.PNG -------------------------------------------------------------------------------- /Images/Maps/BicheonTown.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/BicheonTown.PNG -------------------------------------------------------------------------------- /Images/Maps/BicheonCastle.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/BicheonCastle.PNG -------------------------------------------------------------------------------- /Images/Maps/GinkgoValley.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/GinkgoValley.PNG -------------------------------------------------------------------------------- /Images/Maps/SecretPeak1F.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/SecretPeak1F.PNG -------------------------------------------------------------------------------- /Images/Maps/SecretPeak2F.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/SecretPeak2F.PNG -------------------------------------------------------------------------------- /Data/csv/EXP_PENALTY.csv: -------------------------------------------------------------------------------- 1 | "Name","EXPPenaltyID","LevelGap","EXPPenaltyPer","EXPPenaltyLimit" 2 | "1","1","20","400","4000" 3 | -------------------------------------------------------------------------------- /Images/Maps/BicheonValley2F.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/BicheonValley2F.PNG -------------------------------------------------------------------------------- /Images/Maps/BicheonValley3F.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/BicheonValley3F.PNG -------------------------------------------------------------------------------- /Images/Maps/BicheonValley4F.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/BicheonValley4F.PNG -------------------------------------------------------------------------------- /Images/Maps/NefarioxRuins2F.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/NefarioxRuins2F.PNG -------------------------------------------------------------------------------- /Images/Maps/ViperbeastPlain.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/ViperbeastPlain.PNG -------------------------------------------------------------------------------- /Images/Maps/DemonBullTemple1F.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/DemonBullTemple1F.PNG -------------------------------------------------------------------------------- /Images/Maps/DemonBullTemple2F.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/DemonBullTemple2F.PNG -------------------------------------------------------------------------------- /Images/Maps/DemonBullTemple3F.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/DemonBullTemple3F.PNG -------------------------------------------------------------------------------- /Images/Maps/PeachBlossomValley.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlSch092/Mir4-ClientEmulator/HEAD/Images/Maps/PeachBlossomValley.PNG -------------------------------------------------------------------------------- /Data/csv/CHARACTER_GROWINDEX.csv: -------------------------------------------------------------------------------- 1 | "Name","ContentsId","UiShowOnOff" 2 | "1400","1400","1" 3 | "1700","1700","1" 4 | "1800","1800","1" 5 | "3310","3310","1" 6 | -------------------------------------------------------------------------------- /Data/csv/CHARACTER_PARTS_DEFINES.csv: -------------------------------------------------------------------------------- 1 | "Name","PartsIndex" 2 | "Weapon","(21,22)" 3 | "Hair","(2)" 4 | "Skin","(3,11)" 5 | "Face","(3)" 6 | "Cos_Hair","(31)" 7 | -------------------------------------------------------------------------------- /Data/csv/ITEM_UNSEALING_ACCELERATION.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","ItemId","AccelerationTime","StringId","NeedCostId","NeedCostValue" 2 | "60","60","601200501","60","1056030","4","60" 3 | -------------------------------------------------------------------------------- /Data/csv/GUILD_POINT.csv: -------------------------------------------------------------------------------- 1 | "Name","OwnerType","GuildPointId","NameId","IconId","IconId_Small","LimitUserMax","LimitSystemMax" 2 | "1","1","1","56","19","19","100000000","110000000" 3 | -------------------------------------------------------------------------------- /Data/csv/GUILD_SCORE.csv: -------------------------------------------------------------------------------- 1 | "Name","OwnerType","GuildScoreId","NameId","IconId","IconId_Small","LimitUserMax","LimitSystemMax" 2 | "1","1","1","56","19","19","100000000","110000000" 3 | -------------------------------------------------------------------------------- /Data/protobuf/packet_maching.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message CLIENT_WORLD_MACHING_REQ { 6 | uint64 uid = 1; 7 | uint32 raid_index = 2; 8 | } 9 | -------------------------------------------------------------------------------- /Data/protobuf/info_error_type.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package Network.ErrorType; 4 | 5 | enum ErrorType { 6 | None = 0; 7 | PacketData = 1; 8 | DB = 2; 9 | } 10 | -------------------------------------------------------------------------------- /Data/csv/GUIDE_START.csv: -------------------------------------------------------------------------------- 1 | "Name","GuideId","GuideContensId","QuestId","CharacterLv","TutorialGroupId" 2 | "1","1","1700","0","0","0" 3 | "2","2","1800","0","0","0" 4 | "3","3","2100","0","30","0" 5 | -------------------------------------------------------------------------------- /Data/csv/PET_EQUIPINFO.csv: -------------------------------------------------------------------------------- 1 | "Name","EquipInfoID","TIER","EquipSlotMaxCnt" 2 | "1","1","1","0" 3 | "2","2","2","1" 4 | "3","3","3","2" 5 | "4","4","4","3" 6 | "5","5","5","4" 7 | "6","6","6","4" 8 | -------------------------------------------------------------------------------- /Data/csv/PET_DECK.csv: -------------------------------------------------------------------------------- 1 | "Name","DeckSlotNum","OpenConditionType","OpenConditionValue" 2 | "1","1","1","5" 3 | "2","2","1","10" 4 | "3","3","1","15" 5 | "4","4","3","9000005" 6 | "5","5","3","9000010" 7 | -------------------------------------------------------------------------------- /Locale/Languages.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | namespace Mir4.Locale 3 | { 4 | internal class Languages //unfinished class 5 | { 6 | 7 | 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Data/csv/EXPENSIVE_GROUP_SETTING.csv: -------------------------------------------------------------------------------- 1 | "Name","GroupId","ExpensiveCount","SchedulercycleID" 2 | "1","1","1","26" 3 | "2","2","3","26" 4 | "3","3","3","27" 5 | "4","4","6","27" 6 | "5","5","3","27" 7 | "6","6","1","27" 8 | -------------------------------------------------------------------------------- /Data/csv/INVENTORY_EXTEND.csv: -------------------------------------------------------------------------------- 1 | "Name","InventoryMaxCount","InventoryOpenCount","ExtendValueType","ExtendValue","InventoryType" 2 | "200","999","150","4","10","1" 3 | "100","100","50","91","5","2" 4 | "300","500","150","4","0","3" 5 | -------------------------------------------------------------------------------- /Data/csv/ADS_INFO.csv: -------------------------------------------------------------------------------- 1 | "Name","UniqueID","adsGetMoneyId","adsGetMoneyValue","adsViewCountLimit","getPointValue","RewardPoint","RewardPointMax","adsRewardItemId","adsViewCoolTime" 2 | "1","1","21","1","20","1","10","10","601202635","5" 3 | -------------------------------------------------------------------------------- /Data/csv/GAMEOPTION_DISABLEKEY.csv: -------------------------------------------------------------------------------- 1 | "Name","KeyId","Key" 2 | "1","1","(""LeftCommand"",""RightCommand"")" 3 | "2","2","(""F1"",""F2"",""F3"",""F4"",""F5"",""F6"",""F7"",""F8"",""F9"",""F10"",""F11"",""F12"",""LeftCommand"",""RightCommand"")" 4 | -------------------------------------------------------------------------------- /Data/protobuf/packet_awaken.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message CLIENT_GAME_UPDATE_AWAKEN { 6 | uint64 uid = 1; 7 | } 8 | 9 | message GAME_CLIENT_UPDATE_AWAKEN { 10 | int32 open_awaken_grade = 1; 11 | } 12 | -------------------------------------------------------------------------------- /Data/csv/BUFF_PARTY.csv: -------------------------------------------------------------------------------- 1 | "Name","BuffPartyId","ConditionPeople","BuffId01","BuffId02","PartyProfitValue1","PartyProfitValue2" 2 | "1","1","2","0","0","2000","0" 3 | "2","2","3","0","0","3000","0" 4 | "3","3","4","0","0","4000","0" 5 | "4","4","5","0","0","5000","0" 6 | -------------------------------------------------------------------------------- /Data/csv/GUILD_INSTANCE_DUNGEON_COST.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","ReChargeCnt","ReChargeCostType","ReChargeCostValue" 2 | "1","1","3","4","10" 3 | "2","2","5","4","20" 4 | "3","3","7","4","30" 5 | "4","4","10","4","40" 6 | "5","5","15","4","50" 7 | "6","6","10000","4","100" 8 | -------------------------------------------------------------------------------- /Data/csv/INVENTORY_EXTEND_ITEM.csv: -------------------------------------------------------------------------------- 1 | "Name","ExtendId","InventoryType","ExtendItemUseId","ExtendValue","ExtendSlotCost" 2 | "1","1","1","632000001","1","20" 3 | "2","2","1","632000002","1","30" 4 | "3","3","1","632000003","1","50" 5 | "4","4","1","632000004","1","100" 6 | -------------------------------------------------------------------------------- /Data/csv/NPC_ITEM_MAKE_LIST.csv: -------------------------------------------------------------------------------- 1 | "Name","NpcItemMakeListId","ItemMakeId" 2 | "1","1","61001" 3 | "2","1","61002" 4 | "3","1","61003" 5 | "4","1","63021" 6 | "5","1","63022" 7 | "6","1","63023" 8 | "7","1","62002" 9 | "8","1","62003" 10 | "9","1","62004" 11 | -------------------------------------------------------------------------------- /Data/protobuf/packet_cost.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message GAME_CLIENT_COST_INFO { 8 | repeated _cost_info costInfo = 1; 9 | repeated _time_ticket_info time_ticket_info = 2; 10 | } 11 | -------------------------------------------------------------------------------- /Data/protobuf/packet_matching.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message CLIENT_WORLD_MATCHING_REQ { 6 | uint64 uid = 1; 7 | uint32 dungeon_index = 2; 8 | } 9 | 10 | message WORLD_CLIENT_MATCHING_REQ { 11 | uint32 result = 1; 12 | } 13 | -------------------------------------------------------------------------------- /Data/csv/FAME_CATEGORY.csv: -------------------------------------------------------------------------------- 1 | "Name","CategoryId","CategoryType","CategoryNameStrId","CategoryIconId" 2 | "1","101","1","4300001","730126" 3 | "2","102","2","4300002","730024" 4 | "3","103","3","4300003","730027" 5 | "4","104","4","4300004","730037" 6 | "5","105","5","4300005","730129" 7 | -------------------------------------------------------------------------------- /Data/csv/CHARACTER_EXPBOOSTER_ITEM.csv: -------------------------------------------------------------------------------- 1 | "Name","ItemId","EnergyTime_Charge" 2 | "625200301","625200301","1800" 3 | "625200601","625200601","3600" 4 | "625100602","625100602","3600" 5 | "625200602","625200602","3600" 6 | "625100603","625100603","1800" 7 | "625200603","625200603","1800" 8 | -------------------------------------------------------------------------------- /Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Data/csv/ITEM_DISPLAY.csv: -------------------------------------------------------------------------------- 1 | "Name","StageID","StageMaxDisplay","CharacterMaxDisplay","DisplayTime","DisplayYaw" 2 | "101001010","101001010","50","5","180","0" 3 | "105002020","105002020","50","5","180","0" 4 | "101003060","101003060","50","5","180","0" 5 | "109001010","109001010","50","5","180","0" 6 | -------------------------------------------------------------------------------- /Data/protobuf/info_item.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message ItemOptionInfo { 6 | uint32 index = 1; 7 | uint32 value = 2; 8 | uint32 slot = 3; 9 | } 10 | 11 | message ItemJewelInfo { 12 | uint32 slot = 1; 13 | uint32 item_index = 2; 14 | } 15 | -------------------------------------------------------------------------------- /Data/protobuf/packet_tutorial.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message CLIENT_GAME_TUTORIAL_CLEAR { 6 | uint64 uid = 1; 7 | uint32 tutorial_group_index = 2; 8 | } 9 | 10 | message GAME_CLIENT_TUTORIAL_CLEAR { 11 | uint32 tutorial_group_index = 1; 12 | } 13 | -------------------------------------------------------------------------------- /Data/csv/CHARACTER_EXPBOOSTER.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","BoosterExpBonusRate","BoosterExpBonusValue","EnergyTimeMax","EnergyTime_GatherMax","EnergyTime_GatherCharge","EnergyTime_BoosterStop","UiShopGoodsId","StatusId","ShopContentsId" 2 | "1","1","10000","15000","259200","10800","10","30","1000022","(82,161)","3600" 3 | -------------------------------------------------------------------------------- /Data/csv/COMBO.csv: -------------------------------------------------------------------------------- 1 | "Name","ComboId","ComboMin","ComboMax","BuffLink","FontColor" 2 | "1","1","1","99","0","17FFF2FF" 3 | "2","2","100","199","201","FF7F1FFF" 4 | "3","3","200","299","202","FF7F1FFF" 5 | "4","4","300","399","203","FF7F1FFF" 6 | "5","5","400","499","204","FF7F1FFF" 7 | "6","6","500","0","205","FF171FFF" 8 | -------------------------------------------------------------------------------- /Data/csv/GUILD_FAME_CATEGORY.csv: -------------------------------------------------------------------------------- 1 | "Name","CategoryId","CategoryType","HighCategoryId","CategoryNameStrId","CategoryIconId","CategoryMaxValue" 2 | "1","101","1","0","0","1370001","1000000" 3 | "2","102","1","0","0","1370002","1000000" 4 | "3","103","1","0","0","1370003","1000000" 5 | "4","104","1","0","0","1370004","1000000" 6 | -------------------------------------------------------------------------------- /Data/csv/PK_SYSTEM.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","AdditionActionAbleTime","WantedRegistCostId","WantedRegistCostValue","WantedRewardCostId","WantedRewardCostValueMin","WantedRewardCostValueMax","RewardCommission","WantedAdTime","WantedMailId","FameQuestId","int" 2 | "1","1","1800","2","10000","4","50","1000","5000","720","17001","20101","0" 3 | -------------------------------------------------------------------------------- /Network/Packets/Exception.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | namespace Mir4ClientEmulator.Network.Packets 3 | { 4 | public sealed class PacketException : System.Exception 5 | { 6 | public PacketException(string message) 7 | : base(message) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_SANCTUM.csv: -------------------------------------------------------------------------------- 1 | "Name","GuildSanctumId","Shrine_ObjectId","Shrine_Posid","Sanctum_Monsterid","Sanctum_Posid","RewardBuffid","OwnDominionCheck","SanctumLifeTime","SanctumLifeTime_DevLevelValue","NeedGuildDevId","BuffLevel_GuildDevId" 2 | "1","1","900003001","100001","1110001","200001","500701","0","259200","30","103011","0" 3 | -------------------------------------------------------------------------------- /Data/csv/CHARACTER_MASTERY_SLOT.csv: -------------------------------------------------------------------------------- 1 | "Name","SlotID","SlotName","SlotIcon","SlotMaxLevel" 2 | "1","1","3000002","500027","105" 3 | "2","2","3000003","500029","105" 4 | "3","3","3000004","500023","105" 5 | "4","4","3000006","500070","105" 6 | "5","5","3000005","500032","105" 7 | "6","6","3000007","500031","105" 8 | "7","7","3000001","500037","105" 9 | -------------------------------------------------------------------------------- /Data/csv/INVENTORY_EXTEND_VALUE.csv: -------------------------------------------------------------------------------- 1 | "Name","InventoryType","SectionNumber","SectionCountMax","ExtendValueType","ExtendValue" 2 | "1","1","1","300","4","10" 3 | "2","1","2","400","4","25" 4 | "3","1","3","500","4","50" 5 | "4","1","4","999","4","100" 6 | "101","3","1","300","4","10" 7 | "102","3","2","400","4","25" 8 | "103","3","3","500","4","50" 9 | -------------------------------------------------------------------------------- /Profiles/example_profile.ini: -------------------------------------------------------------------------------- 1 | accountName 2 | accountWebLoginToken (ex. bf16fdef559d53cec3914db8edc23008c2b9f40ff6b4514ffcd6fa156a7175fc) 3 | deviceID (ex. baa2-qwx4-12ae-2itn-ZkABRVbe) 4 | CharacterName (ex. CatWarrior) 5 | steam (ex. google, steam) 6 | WorldName (ex. NA14) 7 | BottingAction (ex. None, ex. Gather) 8 | -------------------------------------------------------------------------------- /Data/csv/DUNGEON_TICKET_CHARGE.csv: -------------------------------------------------------------------------------- 1 | "Name","ChargeId","ChargeGroup","ChargeCountMin","CostType","CostValue" 2 | "1","1","1","1","4","150" 3 | "2","2","1","2","4","200" 4 | "6","6","2","1","4","150" 5 | "7","7","2","2","4","200" 6 | "11","11","3","1","4","100" 7 | "12","12","3","2","4","140" 8 | "16","16","4","1","4","150" 9 | "17","17","4","2","4","200" 10 | -------------------------------------------------------------------------------- /Data/csv/WAYPOINT.csv: -------------------------------------------------------------------------------- 1 | "Name","WayPointId","StageId","WayPointName","NeedCostId","NeedCostCount" 2 | "100001","100001","100002010","930002","2","1000" 3 | "100002","100002","100002010","930003","2","2000" 4 | "100003","100003","100002010","930004","2","3000" 5 | "100004","100004","100002010","930005","2","4000" 6 | "100005","100005","100002010","930006","2","5000" 7 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_PLUNDER_REWARD.csv: -------------------------------------------------------------------------------- 1 | "Name","Plunder_Rewardid","TaxMoneyMaxCnt","RewardObjectId01","RewardObjectCnt01","RewardObjectId02","RewardObjectCnt02","RewardObjectId03","RewardObjectCnt03","RewardObjectId04","RewardObjectCnt04","RewardObjectId05","RewardObjectCnt05" 2 | "30701","30701","150000000","900010001","40","900010002","20","900010003","10","0","0","0","0" 3 | -------------------------------------------------------------------------------- /Data/csv/ITEM_DURABILITY_BROKENLV.csv: -------------------------------------------------------------------------------- 1 | "Name","BrokenID","BrokenLV","IsDestroyed","DurabilityMinRate","Item_StatusPanaltyRate","HUD_Alarm","IconID","Color_Index" 2 | "1","1","1","0","5000","0","0","0","964001" 3 | "2","2","2","0","2000","0","1","4000002","964002" 4 | "3","3","3","0","0","2000","1","4000003","964003" 5 | "4","4","4","1","0","10000","1","4000004","964004" 6 | -------------------------------------------------------------------------------- /Automation/Gatherer.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | namespace Mir4.Scripter 3 | { 4 | public class Gatherer 5 | { 6 | public bool is_gathering { get; set; } 7 | 8 | public int gathering_stage_id { get; set; } 9 | 10 | public int gathering_type { get; set; } 11 | 12 | public Gatherer() 13 | { 14 | 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Data/csv/ITEM_BLESS_INCREASERATE.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","EquipSlotNumber","BlessGrade","IncreaseRate","NameStrId" 2 | "11","11","1","1","200","470010" 3 | "21","21","2","1","200","470011" 4 | "31","31","3","1","200","470012" 5 | "41","41","4","1","200","470013" 6 | "51","51","5","1","200","470014" 7 | "61","61","6","1","200","470015" 8 | "71","71","7","1","200","470016" 9 | "81","81","8","1","200","470017" 10 | -------------------------------------------------------------------------------- /Network/WebLogin/JSON/RegionCode.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Mir4ClientEmulator.Game 9 | { 10 | public class RootRegionCode 11 | { 12 | public string Code { get; set; } 13 | public string RegionCode { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Data/csv/ITEM_PROVIDE.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","ClassId","ItemId","ItemCount" 2 | "1","1","1","604200101","100" 3 | "2","2","1","605200101","100" 4 | "3","3","2","604200101","100" 5 | "4","4","2","605200101","100" 6 | "5","5","3","604200101","100" 7 | "6","6","3","605200101","100" 8 | "7","7","4","604200101","100" 9 | "8","8","4","605200101","100" 10 | "9","9","5","604200101","100" 11 | "10","10","5","605200101","100" 12 | -------------------------------------------------------------------------------- /Data/protobuf/packet_event_boss.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message CLIENT_GAME_BOSS_SPAWN_LIST { 6 | 7 | } 8 | 9 | message GAME_CLIENT_BOSS_SPAWN_LIST { 10 | int32 result = 1; 11 | repeated uint32 boss_tid_list = 2; 12 | } 13 | 14 | message GAME_CLIENT_BOSS_SPAWN { 15 | uint32 boss_tid = 1; 16 | } 17 | 18 | message GAME_CLIENT_BOSS_DESPAWN { 19 | uint32 boss_tid = 1; 20 | } 21 | -------------------------------------------------------------------------------- /Game/Structures.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | namespace Mir4ClientEmulator.Game 3 | { 4 | public enum MovementStates 5 | { 6 | Stop = 2, 7 | Manual = 4, 8 | AutoMove = 29 9 | } 10 | 11 | public enum CastingType 12 | { 13 | Loot = 1, 14 | JumpScroll, 15 | NoAnimation = 4, 16 | Unstuck = 6, 17 | MoveChannel = 7, 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Data/protobuf/packet_doorobject.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message _door_object_sync_info { 6 | int32 doorobject_id = 1; 7 | bool is_open = 2; 8 | } 9 | 10 | message GAME_CLIENT_SYNC_DOOR_OBJECT_STATE_IN_ZONE { 11 | repeated _door_object_sync_info doorobject_sync_info = 1; 12 | } 13 | 14 | message GAME_CLIENT_CHANGE_DOOR_OBJECT_STATE { 15 | _door_object_sync_info change_doorobject_info = 1; 16 | } 17 | -------------------------------------------------------------------------------- /Data/protobuf/packet_meditation.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message CLIENT_GAME_MEDITATION_RESERVE { 6 | uint64 uid = 1; 7 | } 8 | 9 | message GAME_CLIENT_MEDITATION_RESERVE { 10 | int32 groupId = 1; 11 | int32 slotId = 2; 12 | } 13 | 14 | message GAME_CLIENT_MEDITATION_END { 15 | uint64 uid = 1; 16 | } 17 | 18 | message GAME_CLIENT_MEDITATION_ADD_ENERGYPOINT { 19 | int32 addEnergyPoint = 1; 20 | } 21 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WANTED.csv: -------------------------------------------------------------------------------- 1 | "Name","WantedGrade","NameId","ImageId","Time","GuildMoneyId","GuildMoneyValue","KillCountLimit","KillCountLimit2","ItemId","ItemCount","RewardGuildContribution","RewardGuildFameCategory","RewardGuildFamePoint" 2 | "1","1","1063667","1900","1440","92","5000","1","5","0","0","50","102","10" 3 | "2","2","1063668","1901","720","92","3500","1","5","0","0","50","102","10" 4 | "3","3","1063669","1902","360","92","2000","1","5","0","0","50","102","10" 5 | -------------------------------------------------------------------------------- /Data/csv/ITEM_JEWEL_SLOTCOLOR.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","MainType","SubType","SlotColorType" 2 | "200","200","2","0","1" 3 | "201","201","2","1","1" 4 | "202","202","2","2","1" 5 | "203","203","2","3","1" 6 | "204","204","2","4","1" 7 | "205","205","2","5","1" 8 | "301","301","3","1","2" 9 | "302","302","3","2","3" 10 | "303","303","3","3","4" 11 | "304","304","3","4","5" 12 | "401","401","4","1","6" 13 | "402","402","4","2","7" 14 | "403","403","4","3","8" 15 | -------------------------------------------------------------------------------- /Data/csv/GUILd_WAR_OCCUPATION_REWARD.csv: -------------------------------------------------------------------------------- 1 | "Name","RewardId","Grade","GradeKillPoint","RewardGold","RewardItemId","RewardItemCount","MailPresetId","GradeIconId","RewardDefaultGold","GradeSetRate" 2 | "1","1","1","100","2500","508200002","3","0","708","1000","5" 3 | "2","2","2","50","2000","508200002","1","0","706","800","10" 4 | "3","3","3","25","1500","508200002","3","0","704","600","30" 5 | "4","4","4","15","1000","508200002","2","0","702","400","60" 6 | "5","5","5","5","500","508200002","1","0","701","200","100" 7 | -------------------------------------------------------------------------------- /Network/Packets/Encryption/Encryption.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using System.Runtime.InteropServices; 3 | 4 | namespace Mir4ClientEmulator.Network.Packets.Encryption 5 | { 6 | internal class Encryption 7 | { 8 | [DllImport("Mir4Encryption.dll", EntryPoint = "Encrypt", CallingConvention = CallingConvention.Cdecl)] //change this to whatever dll you're using for encryption 9 | public static extern int Encode(byte[] data, byte[] outData, int length); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_OCCUPATION_RANKING.csv: -------------------------------------------------------------------------------- 1 | "Name","RewardId","Grade","GradeKillPoint","RewardGold","RewardItemId","RewardItemCount","MailPresetId","GradeIconId","RewardDefaultGold","GradeSetRate" 2 | "1","1","1","100","2500","508200002","3","0","708","1000","5" 3 | "2","2","2","50","2000","508200002","1","0","706","800","10" 4 | "3","3","3","25","1500","508200002","3","0","704","600","30" 5 | "4","4","4","15","1000","508200002","2","0","702","400","60" 6 | "5","5","5","5","500","508200002","1","0","701","200","100" 7 | -------------------------------------------------------------------------------- /Data/csv/GUILD_STATUS.csv: -------------------------------------------------------------------------------- 1 | "Name","StatusID","StatusCode","StringId","ValueFormat" 2 | "101","101","0","471001","0" 3 | "102","102","0","471002","0" 4 | "103","103","0","471003","0" 5 | "104","104","0","471004","0" 6 | "105","105","0","471005","0" 7 | "201","201","0","471006","1" 8 | "106","106","0","471007","0" 9 | "107","107","0","471008","0" 10 | "108","108","0","471009","0" 11 | "109","109","0","471010","0" 12 | "110","110","0","471011","0" 13 | "301","301","0","471026","0" 14 | "999","999","0","471026","0" 15 | -------------------------------------------------------------------------------- /Data/protobuf/packet_skill_passive.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_SKILL_PASSIVE_GROUP_LIST { 8 | uint64 uid = 1; 9 | } 10 | 11 | message GAME_CLIENT_SKILL_PASSIVE_GROUP_LIST { 12 | repeated _skill_passive_group group_infos = 1; 13 | } 14 | 15 | message CLIENT_GAME_SKILL_PASSIVE_LIST { 16 | uint64 uid = 1; 17 | } 18 | 19 | message GAME_CLIENT_SKILL_PASSIVE_LIST { 20 | repeated _passive_skill_info passive_infos = 1; 21 | } 22 | -------------------------------------------------------------------------------- /Data/csv/GUILD_DOMINION_PK_GRADE.csv: -------------------------------------------------------------------------------- 1 | "Name","DominionPKId","DominionPkNameId","DominionPkIconId","DominionPKRewardType","DominionPKRewardTypeSub","DominionPKRewardValue","DominionPKDurationTime","DominionPKTargetDebuff","DominionPKCostType","DominionPKCostValue","DominionPKSimulteCnt","DominionPKResetCnt" 2 | "1","1","3350001","1900","1","5","350","86400","500200","4","500","5","10" 3 | "2","2","3350002","1901","1","5","1050","129600","500201","4","1500","3","6" 4 | "3","3","3350003","1902","1","5","2100","201600","500202","4","3000","1","2" 5 | -------------------------------------------------------------------------------- /Data/protobuf/packet_trigger.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message CLIENT_GAME_ACTIVATE_TRIGGER { 6 | uint64 uid = 1; 7 | uint32 trigger_group_id = 2; 8 | uint32 triggerid = 3; 9 | int32 link_entity_type = 4; 10 | int32 link_entity_uid = 5; 11 | } 12 | 13 | message GAME_CLIENT_ACTIVATE_TRIGGER { 14 | int32 trigger_group_id = 1; 15 | int32 triggerid = 2; 16 | } 17 | 18 | message GAME_CLIENT_SYNC_ACTIVATED_TRIGGER { 19 | int32 trigger_group_id = 1; 20 | repeated int32 triggerid = 2; 21 | } 22 | -------------------------------------------------------------------------------- /Data/csv/MAGICSTONE_EQUIPSLOT.csv: -------------------------------------------------------------------------------- 1 | "Name","SlotNumber","SlotType","SlotOpenType","SlotOpenValue1","SlotOpenValue2","EquipTier" 2 | "1","0","2","1","1","0","1" 3 | "2","1","2","1","1","0","1" 4 | "3","2","2","1","1","0","1" 5 | "4","3","2","2","6000000","2","1" 6 | "5","4","2","2","6000000","6","1" 7 | "6","5","2","2","6000000","10","1" 8 | "7","6","1","2","6000000","12","1" 9 | "8","7","2","1","121","0","2" 10 | "9","8","2","1","131","0","2" 11 | "10","9","2","1","151","0","2" 12 | "11","10","1","1","141","0","1" 13 | "12","11","1","1","161","0","2" 14 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_SABUK_REWARD.csv: -------------------------------------------------------------------------------- 1 | "Name","RewardId","MailPresetId","RewardMoneyId01","RewardMoneyCnt01","RewardMoneyId02","RewardMoneyCnt02","RewardItemUseId01","RewardItemCnt01" 2 | "101","101","20001","0","0","0","0","601202682","1" 3 | "102","102","20001","0","0","0","0","601202683","1" 4 | "103","103","20002","0","0","0","0","601202684","1" 5 | "104","104","20003","0","0","0","0","601202685","1" 6 | "201","201","20004","0","0","0","0","601202679","1" 7 | "202","202","20004","0","0","0","0","601202680","1" 8 | "203","203","20004","0","0","0","0","601202681","1" 9 | -------------------------------------------------------------------------------- /Data/csv/BUFF_OVERLAPCALL.csv: -------------------------------------------------------------------------------- 1 | "Name","OverLapCallID","OverLapCallGroupID","BuffOverlapLevel","BuffOverlapCntMin","BuffOverlapCntMax","AttachBuffID","DetachBuffID" 2 | "101","101","1","1","10","14","(500003)","(0)" 3 | "102","102","1","2","15","19","(500004)","(500003)" 4 | "103","103","1","3","20","50","(500005)","(500003,500004)" 5 | "201","201","2","1","3","5","(41011)","(0)" 6 | "202","202","2","2","6","8","(41012)","(0)" 7 | "203","203","2","3","9","10","(41013)","(0)" 8 | "301","301","3","1","1","1","(705000)","(0)" 9 | "401","401","4","1","20","20","(60030)","(0)" 10 | -------------------------------------------------------------------------------- /Data/protobuf/packet_fame.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_FAME_LIST { 8 | 9 | } 10 | 11 | message GAME_CLIENT_FAME_LIST { 12 | repeated fame_info fame_list = 1; 13 | } 14 | 15 | message GAME_CLIENT_FAME_RANK { 16 | uint64 rank = 1; 17 | uint64 score = 2; 18 | uint32 level = 3; 19 | uint64 level_exp = 4; 20 | } 21 | 22 | message GAME_CLIENT_FAME_DATA { 23 | uint64 add_score = 1; 24 | fame_info fame_data = 2; 25 | uint32 level = 3; 26 | uint64 level_exp = 4; 27 | } 28 | -------------------------------------------------------------------------------- /Data/csv/ITEM_UNSEALING.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","UnsealingType","UnsealingTime","SupportDecreaseTime","NeedCostId","NeedCostValue" 2 | "13","13","13","300","60","2","500" 3 | "31","31","31","3600","60","2","500" 4 | "42","42","42","28800","432","2","2000" 5 | "61","61","61","259200","3888","2","13000" 6 | "71","71","71","864000","12960","2","37000" 7 | "82","82","82","3888000","58320","2","5000000" 8 | "101","101","101","10800","162","2","10000" 9 | "102","102","102","10800","162","2","10000" 10 | "103","103","103","10800","162","2","10000" 11 | "104","104","104","10800","162","2","10000" 12 | -------------------------------------------------------------------------------- /Data/csv/PK_SCORE.csv: -------------------------------------------------------------------------------- 1 | "Name","PkScoreId","CombatPowerMin","CombatPowerMax","RewardScore" 2 | "1","1","10000","99999","1" 3 | "2","2","100000","199999","2" 4 | "3","3","200000","299999","3" 5 | "4","4","300000","399999","4" 6 | "5","5","400000","499999","5" 7 | "6","6","500000","599999","6" 8 | "7","7","600000","699999","7" 9 | "8","8","700000","799999","8" 10 | "9","9","800000","899999","9" 11 | "10","10","900000","999999","10" 12 | "11","11","1000000","1099999","11" 13 | "12","12","1100000","1199999","12" 14 | "13","13","1200000","1299999","15" 15 | "14","14","1300000","1500000","20" 16 | -------------------------------------------------------------------------------- /Data/protobuf/packet_playlog.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message _playlog_pk_user_info { 8 | int64 user_uid = 1; 9 | int32 class_id = 2; 10 | string nick_name = 3; 11 | int32 combat_point = 4; 12 | } 13 | 14 | message GAME_CLIENT_PLAYLOG_PK_RESULT { 15 | uint64 log_time = 1; 16 | bool win_result = 2; 17 | _playlog_pk_user_info target_info = 3; 18 | _guild_name_ui_info target_guild_info = 4; 19 | _simple_cost_info loss_cost_info = 5; 20 | repeated _simple_item_info loss_item_info_list = 6; 21 | } 22 | -------------------------------------------------------------------------------- /Data/csv/GUILD_DOMINION_EXCHANGE.csv: -------------------------------------------------------------------------------- 1 | "Name","ExchangeId","ExchangeDominionId","ExchangeStringId","MoneyId_Send","MoneyId_Receive","PayCommissionRate","PayMailPresetId","PayMoneyMinValue" 2 | "101","101","3005","1063899","12","12","3000","12025","10" 3 | "102","102","3010","1063899","12","12","3000","12025","10" 4 | "103","103","3024","1063899","12","12","3000","12025","10" 5 | "201","201","2001","1063899","12","12","3000","12025","10" 6 | "202","202","2001","1063899","4","4","3000","12026","10" 7 | "301","301","1001","1063899","12","12","3000","12025","10" 8 | "302","302","1001","1063899","4","4","3000","12026","10" 9 | -------------------------------------------------------------------------------- /Game/Quest/QuestDropItem.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 |  3 | namespace Mir4ClientEmulator.Game 4 | { 5 | public class QuestDropItem //QUEST_DROP_ITEM.csv 6 | { 7 | public int Name { get; set; } 8 | public int QuestDropId { get; set; } 9 | public int QuestType { get; set; } 10 | public int QuestId { get; set; } 11 | public int PartyType { get; set; } 12 | public int DropRate { get; set; } 13 | public int CountMin { get; set; } 14 | public int CountMax { get; set; } 15 | public int ItemId { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Data/protobuf/packet_game_option.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message _game_option_info { 6 | int32 option_type = 1; 7 | int32 value = 2; 8 | } 9 | 10 | message CLIENT_GAME_GAME_OPTION_LIST { 11 | 12 | } 13 | 14 | message GAME_CLIENT_GAME_OPTION_LIST { 15 | repeated _game_option_info game_option_list = 1; 16 | } 17 | 18 | message CLIENT_GAME_CHANGE_GAME_OPTION { 19 | int32 option_type = 1; 20 | int32 value = 2; 21 | } 22 | 23 | message GAME_CLIENT_CHANGE_GAME_OPTION { 24 | int32 result = 1; 25 | int32 option_type = 2; 26 | int32 value = 3; 27 | } 28 | -------------------------------------------------------------------------------- /Data/protobuf/packet_potential.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_POTENTIAL_UPGRADE { 8 | uint32 potential_id = 1; 9 | } 10 | 11 | message GAME_CLIENT_POTENTIAL_UPGRADE { 12 | int32 result = 1; 13 | _potential_info potential_info = 2; 14 | bool is_levelup_fail = 3; 15 | repeated _cost_info cost_info = 4; 16 | repeated _stack_item_info update_items = 5; 17 | } 18 | 19 | message GAME_CLIENT_POTENTIAL_UPGRADE_NOTI { 20 | string nickname = 1; 21 | int32 potential_id = 2; 22 | int32 level_id = 3; 23 | } 24 | -------------------------------------------------------------------------------- /Data/csv/ITEM_MAGICORB_DEFINE.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","MagicOrbLevel","MagicOrbMaxLevel","Slot01OpenLv","Slot02OpenLv","Slot03OpenLv","Slot04OpenLv","Slot05OpenLv","GrowCostType","GrowMaterialStackMax","GrowMaterialSlotCount","GrowExpRatio_MagicOrb","GrowEffectTime_Normal","GrowEffectTime_Success","GrowEffectTime_GreatSuccess","OptionChange_Auto_OptionGrade01","OptionChange_Auto_OptionGrade02","OptionChange_Auto_OptionCount01","OptionChange_Auto_OptionCount02","OptionChange_Auto_MaxRepeatCount","OptionChange_HighGradeNotice" 2 | "1","1","1","12","123","133","143","153","163","2","100","8","50","0.55","0.75","0.95","4","3","1","1","999","3" 3 | -------------------------------------------------------------------------------- /Data/protobuf/packet_daily_goods.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message GAME_CLIENT_NOTIFY_DAILY_GOODS_INFO { 8 | repeated _daily_goods_info daily_goods_info = 1; 9 | } 10 | 11 | message CLIENT_GAME_DAILY_GOODS_ADD { 12 | int32 DailyGoodsType = 1; 13 | int32 Value = 2; 14 | } 15 | 16 | message GAME_CLIENT_DAILY_GOODS_ADD { 17 | _daily_goods_info daily_goods_info = 1; 18 | repeated _cost_info character_cost = 2; 19 | } 20 | 21 | message GAME_CLIENT_NOTIFY_DAILY_GOODS_RESET { 22 | repeated _daily_goods_info daily_goods_info = 1; 23 | } 24 | -------------------------------------------------------------------------------- /Data/protobuf/packet_totem.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message GAME_CLIENT_APPEAR_TOTEM { 8 | uint64 totem_uid = 1; 9 | int32 totem_id = 2; 10 | int32 owner_type = 3; 11 | uint64 owner_uid = 4; 12 | _vector3 loc = 5; 13 | float degree = 6; 14 | int32 owner_index = 7; 15 | string owner_name = 8; 16 | } 17 | 18 | message GAME_CLIENT_ATTACK_TOTEM { 19 | uint64 totem_uid = 1; 20 | int32 attack_id = 2; 21 | _vector3 dest_pos = 3; 22 | uint64 target_uid = 4; 23 | int32 target_type = 5; 24 | float degree = 6; 25 | } 26 | -------------------------------------------------------------------------------- /Data/csv/DUNGEON_TICKET.csv: -------------------------------------------------------------------------------- 1 | "Name","DungeonTicketId","NameSid","Icon","IconGrade","IconSmall","ResetTimeHour","ResetTimeMin","DefaultMax","LimitUserMax","LimitSystemMax","ChargeGroup","ToolTipID","TicketRechargeMax","TicketItemId","TicketAutoChargeLimitCount" 2 | "1","1","2220003","230615006","3","230615006","5","0","2","99","255","1","37","2","601201601","20" 3 | "2","2","2220002","230615005","3","230615005","5","0","2","99","255","2","38","2","601201602","20" 4 | "3","3","200615003","230615003","3","230615003","5","0","2","99","255","3","39","2","601201603","0" 5 | "4","4","200615002","230615004","4","230615004","5","0","1","99","255","4","40","2","601201604","0" 6 | -------------------------------------------------------------------------------- /Data/csv/GUILD_CONTRIBUTION_GRADE.csv: -------------------------------------------------------------------------------- 1 | "Name","RankingType","Grade","GradeGuildContribution_Min","GradeGuildContribution_Max","RewardGuildPoint_Default","RewardGuildPoint_Bonus","MailPresetId1","MailPresetId2" 2 | "1","1","1","100","100000","50","10","0","0" 3 | "1","1","2","50","99","25","5","0","0" 4 | "1","1","3","30","49","15","3","0","0" 5 | "1","1","4","10","29","5","1","0","0" 6 | "1","1","5","1","9","1","2","0","0" 7 | "1","2","1","1000","1000000","500","50","0","0" 8 | "2","2","2","500","999","250","25","0","0" 9 | "3","2","3","300","499","150","15","0","0" 10 | "4","2","4","100","299","50","10","0","0" 11 | "5","2","5","1","99","10","5","0","0" 12 | -------------------------------------------------------------------------------- /Data/protobuf/packet_zone_event.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message GAME_CLIENT_ZONEEVENT_NOTIFY { 6 | int32 notify_type = 1; 7 | int32 argument01 = 2; 8 | int32 argument02 = 3; 9 | int32 argument03 = 4; 10 | } 11 | 12 | message GAME_CLIENT_ZONE_EVENT_USER_CONTROL { 13 | int32 control_type = 1; 14 | int32 control_value = 2; 15 | } 16 | 17 | message CLIENT_GAME_ZONE_EVENT_NOTIFY { 18 | int32 notify_type = 1; 19 | } 20 | 21 | message CLIENT_GAME_ZONE_EVENT_TIMER { 22 | 23 | } 24 | 25 | message GAME_CLIENT_ZONE_EVENT_TIMER { 26 | int32 timer_index = 1; 27 | int64 remaining_time = 2; 28 | } 29 | -------------------------------------------------------------------------------- /Data/protobuf/packet_treasure.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_GET_TREASURE { 8 | uint64 character_uid = 1; 9 | uint32 treasure_id = 2; 10 | } 11 | 12 | message GAME_CLIENT_GET_TREASURE { 13 | uint32 get_treasure_id = 1; 14 | } 15 | 16 | message CLIENT_GAME_TREASURE_OPEN { 17 | uint64 character_uid = 1; 18 | uint32 treasure_id = 2; 19 | } 20 | 21 | message GAME_CLIENT_TREASURE_OPEN { 22 | uint32 result = 1; 23 | _treasure_open_info treasure_info = 2; 24 | repeated _bless_info bless_info = 3; 25 | repeated _stack_item_info update_items = 4; 26 | } 27 | -------------------------------------------------------------------------------- /Data/csv/BLACKDRAGON_DUNGEON.csv: -------------------------------------------------------------------------------- 1 | "Name","BdragonID","BDragonName","BDragonInfo","BDragonThumbnail","StageId","IsShow","MinLevel","MaxLevel","NeedEnterItemID","NeedEnterItemCount","BDragonTimer","MonsterLevel","PositionLocation","ExitLocationId" 2 | "101","101","421907","4000101","430061","201500010","1","95","120","140400001","1","0","(105,130)","801","701" 3 | "102","102","421908","4000101","430062","201500020","1","105","130","140400001","1","0","(115,140)","802","701" 4 | "103","103","421909","4000101","430063","201500030","1","115","140","140400001","1","0","(125,150)","803","701" 5 | "104","104","421910","4000101","430064","201500040","1","135","0","140400001","1","0","(155,180)","804","701" 6 | -------------------------------------------------------------------------------- /Data/csv/ITEM_SUBCOOLTIME.csv: -------------------------------------------------------------------------------- 1 | "Name","SubCoolTimeID","ItemSubType","SubCoolTime","MultipleUseMax" 2 | "1","1","1","2000","500" 3 | "2","2","2","2000","500" 4 | "4","4","4","5000","1" 5 | "5","5","5","5000","1" 6 | "6","6","6","1000","1" 7 | "7","7","7","5000","1" 8 | "11","11","11","2000","1" 9 | "23","23","23","2000","1000" 10 | "24","24","24","2000","500" 11 | "28","28","28","30000","1" 12 | "29","29","29","30000","1" 13 | "30","30","30","1000","1" 14 | "31","31","31","500","1000" 15 | "33","33","33","2000","500" 16 | "34","34","34","5000","1" 17 | "35","35","35","2000","500" 18 | "36","36","36","2000","500" 19 | "37","37","37","2000","500" 20 | "38","38","38","2000","500" 21 | -------------------------------------------------------------------------------- /Data/csv/GUILD_DONATION.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","DonationType","DonationId","DonationValue","DonationCount","ResetCostId","ResetCostValue","ResetCount","RewardGuildContribution","RewardGuildPoint","RewardGuildFameCategory","RewardGuildFameLevelPoint","ExchangeRate","RewardGuildExp","RewardContribution","RewardType01","RewardId01","RewardValue01","RewardType02","RewardId02","RewardValue02" 2 | "1","1","1","2","100","10","2","10000","1","50","100","101","25","100","1","1","1","15","100","0","0","0" 3 | "2","2","1","3","10","10","2","10000","1","150","300","101","75","200","1","1","1","15","100","0","0","0" 4 | "3","3","2","90202001","10","10","2","10000","1","100","200","101","50","50","1","1","1","15","100","0","0","0" 5 | -------------------------------------------------------------------------------- /Data/csv/FAME_QUEST.csv: -------------------------------------------------------------------------------- 1 | "Name","FameQuestId","QuestTitle","CatrgoryId","PlayDataId","RewardScore" 2 | "1","20101","4300006","101","3601","5" 3 | "2","20102","4300007","101","3801","10" 4 | "3","20103","4300008","101","3603","20" 5 | "4","20201","4300009","102","4404","1" 6 | "5","20202","4300010","102","4402","2" 7 | "6","20203","4300011","102","4403","10" 8 | "7","20204","4300012","102","4405","100" 9 | "8","20301","4300013","103","4208","1" 10 | "9","20302","4300014","103","4209","20" 11 | "10","20401","4300015","104","2302","5" 12 | "11","20402","4300016","104","2401","1" 13 | "12","20403","4300017","104","2305","5" 14 | "13","20501","4300018","105","4506","5" 15 | "14","20502","4300019","105","4509","200" 16 | -------------------------------------------------------------------------------- /Data/csv/GUILD_FAME_LEVEL.csv: -------------------------------------------------------------------------------- 1 | "Name","Level","ReqExp" 2 | "1","1","100000000" 3 | "2","2","200000000" 4 | "3","3","300000000" 5 | "4","4","400000000" 6 | "5","5","500000000" 7 | "6","6","600000000" 8 | "7","7","700000000" 9 | "8","8","800000000" 10 | "9","9","900000000" 11 | "10","10","1000000000" 12 | "11","11","1100000000" 13 | "12","12","1200000000" 14 | "13","13","1300000000" 15 | "14","14","1400000000" 16 | "15","15","1500000000" 17 | "16","16","1600000000" 18 | "17","17","1700000000" 19 | "18","18","1800000000" 20 | "19","19","1900000000" 21 | "20","20","2000000000" 22 | "21","21","2100000000" 23 | "22","22","2200000000" 24 | "23","23","2300000000" 25 | "24","24","2400000000" 26 | "25","25","2500000000" 27 | -------------------------------------------------------------------------------- /Program.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using Mir4ClientEmulator.Utilities; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | 9 | namespace Mir4ClientEmulator 10 | { 11 | internal static class Program 12 | { 13 | /// 14 | /// The main entry point for the application. 15 | /// 16 | [STAThread] 17 | static void Main(string[] args) 18 | { 19 | Application.EnableVisualStyles(); 20 | Application.SetCompatibleTextRenderingDefault(false); 21 | Application.Run(new MainForm()); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Data/protobuf/Authentication.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package Network.Protocol.Authentication; 4 | 5 | import "AuthenticationTypes.proto"; 6 | 7 | message ServerInfo { 8 | int32 Index = 1; 9 | int32 State = 2; 10 | string Name = 3; 11 | string Ip = 4; 12 | int32 Port = 5; 13 | } 14 | 15 | message ClientServerAuthLogin { 16 | Packet.Type Packet = 1; 17 | Sdk.Type Sdk = 2; 18 | Os.Type Os = 3; 19 | string Device = 4; 20 | string AccountId = 5; 21 | string Version = 6; 22 | string PushId = 7; 23 | } 24 | 25 | message ServerClientAuthLogin { 26 | ErrorCode.Type Error = 1; 27 | uint64 Uid = 2; 28 | string AccessToken = 3; 29 | repeated ServerInfo ServerList = 4; 30 | } 31 | -------------------------------------------------------------------------------- /Game/Stats.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using Mir4ClientEmulator.Network; 3 | using Mir4ClientEmulator.Network.Packets.Messages; 4 | 5 | namespace Mir4.Game 6 | { 7 | public class Stats 8 | { 9 | public Client MirClient { get; set; } 10 | 11 | public uint Vigor { get; set; } 12 | public uint Rage { get; set; } 13 | 14 | public uint MaxHP { get; set; } 15 | public uint CurrentHP { get; set; } 16 | 17 | public uint MaxMana { get; set; } 18 | public uint CurrentMana { get; set; } 19 | 20 | public uint Experience { get; set; } 21 | 22 | public uint Level { get; set; } 23 | 24 | public _vector3 Position { get; set; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Data/protobuf/packet_masteryslot.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_UPGRADE_MASTERY { 8 | uint64 uid = 1; 9 | uint32 slot_number = 3; 10 | } 11 | 12 | message GAME_CLIENT_UPGRADE_MASTERY { 13 | uint32 result = 1; 14 | _cost_info costInfo = 3; 15 | repeated _stack_item_info update_items = 4; 16 | uint32 slot_number = 5; 17 | uint32 mastery_level = 7; 18 | bool is_success = 8; 19 | } 20 | 21 | message CLIENT_GAME_UPGRADE_MASTERY_LEVEL_LIMIT { 22 | 23 | } 24 | 25 | message GAME_CLIENT_UPGRADE_MASTERY_LEVEL_LIMIT { 26 | uint32 result = 1; 27 | uint32 level_limit_grade = 2; 28 | _cost_info cost_info = 3; 29 | repeated _stack_item_info update_items = 4; 30 | } 31 | -------------------------------------------------------------------------------- /Network/WebLogin/JSON/PatchInfoJSON.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Mir4ClientEmulator.Game 9 | { 10 | public class PatchInfos 11 | { 12 | public List Step0 { get; set; } 13 | public string TargetPlatform { get; set; } 14 | } 15 | 16 | public class PatchInfoJSON 17 | { 18 | public PatchInfos PatchInfos { get; set; } 19 | } 20 | 21 | public class Step0 22 | { 23 | public string FileName { get; set; } 24 | public string Size { get; set; } 25 | public string Version { get; set; } 26 | public string Crc { get; set; } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Data/csv/PK_GRADE.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","PkGradeType","PkName","PkPointMin","PkPointMax","GetPkPoint","PkMonsterKillPoint","PkChaoUserKillPoint","BuffId","PKGradeEXPPenalty","PKGradeAttachBuffId","penaltyString","PanaltyBuffReqLv","PanaltyBuffId","PanaltyBuffCnt","WantedFamePoint" 2 | "1","1","1","2710002","5000","6000","-1000","1","5","112051","0","0","0","20","500002","2","0" 3 | "2","2","2","2710003","-499","4999","-1000","1","5","112051","0","0","0","20","500002","3","10" 4 | "3","3","3","2710004","-3499","-500","-1000","1","5","112051","30","500503","1029172","20","500002","8","20" 5 | "4","4","4","2710005","-9999","-3500","-1000","1","5","112051","50","500504","1029173","20","500002","10","30" 6 | "5","5","5","2710006","-100000","-10000","-1000","1","5","112051","70","500505","1029174","20","500002","20","40" 7 | -------------------------------------------------------------------------------- /Game/WarpLocation.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 |  3 | namespace Mir4ClientEmulator.Game 4 | { 5 | public class WarpLocation 6 | { 7 | public string Name { get; set; } 8 | public int WarpId { get; set; } 9 | public int Arrival_StageId { get; set; } 10 | public string Coordinate { get; set; } //todo: change back to vector3 once fixing formatting 11 | public float RotationYaw { get; set; } 12 | public float CameraYaw { get; set; } 13 | public float CameraPitch { get; set; } 14 | public float CameraDistance { get; set; } 15 | public int WarpArrivalRadius { get; set; } 16 | 17 | public static string GetZoneNameFromStageId(long stageId) 18 | { 19 | return ""; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Data/csv/MAS_DEFAULTSETTING.csv: -------------------------------------------------------------------------------- 1 | "Name","DefaultSettingID","DefaultSettingName","DefaultSettingValue" 2 | "1","1","MacroModeLevelRequirement","30" 3 | "2","2","MacroModePlayTime_Free","60" 4 | "3","3","MacroModeMaxTime","744" 5 | "4","4","MacroModeDefaultValue_PlayMode","0" 6 | "5","5","MacroModeDefaultValue_AutoBattleRadius","0" 7 | "6","6","MacroModeDefaultValue_TracePartyLeader","0" 8 | "7","7","MacroModeDefaultValue_AutoCombackWhenRevival","1" 9 | "8","8","MacroModeDefaultValue_CounterAttack","0" 10 | "9","9","MacroModeDefaultValue_SkillUseFrequency","0" 11 | "10","10","MacroMode_DefaultValue_HpPotionZeroReturn","1" 12 | "11","11","MacroMode_DefaultValue_UseHpPotionRatio","50" 13 | "12","12","MacroMode_DefaultValue_UseMpPotionRatio","50" 14 | "13","13","MacroMode_DefaultValue_MacroModeTerminateDeathCount","0" 15 | -------------------------------------------------------------------------------- /Data/protobuf/packet_blackdragon_dungeon.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message _black_dragon_dungeon_ui_info { 6 | uint32 dungeon_id = 1; 7 | bool is_lock = 2; 8 | int32 round_info = 3; 9 | } 10 | 11 | message CLIENT_GAME_BLACKDRAGON_DUNGEON_INFO { 12 | 13 | } 14 | 15 | message GAME_CLIENT_BLACKDRAGON_DUNGEON_INFO { 16 | repeated _black_dragon_dungeon_ui_info dungeon_info = 1; 17 | int32 conquer_round_info = 2; 18 | } 19 | 20 | message CLIENT_GAME_ENTER_BLACKDRAGON_DUNGEON { 21 | uint32 enter_dungeon_id = 1; 22 | } 23 | 24 | message GAME_WORLD_ENTER_BLACKDRAGON_DUNGEON { 25 | uint32 enter_dungeon_id = 1; 26 | } 27 | 28 | message CLIENT_GAME_LEAVE_BLACKDRAGON_DUNGEON { 29 | 30 | } 31 | 32 | message GAME_WORLD_LEAVE_BLACKDRAGON_DUNGEON { 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Data/protobuf/packet_search.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_WORLD_SEARCH { 8 | int32 search_type = 1; 9 | int32 request_page = 2; 10 | string search_string = 3; 11 | int32 ui_type = 4; 12 | int32 world_id = 5; 13 | int32 receive_money_limit_type = 6; 14 | } 15 | 16 | message WORLD_CLIENT_SEARCH_GUILD { 17 | int32 request_page = 1; 18 | string search_string = 2; 19 | repeated _guild_search_info search_info = 3; 20 | int32 world_id = 4; 21 | int32 ui_type = 5; 22 | } 23 | 24 | message WORLD_CLIENT_SEARCH_CHARACTER { 25 | int32 request_page = 1; 26 | string search_string = 2; 27 | repeated _character_search_info search_info = 3; 28 | int32 ui_type = 4; 29 | int32 world_id = 5; 30 | } 31 | -------------------------------------------------------------------------------- /Data/protobuf/packet_achievement.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_CHARACTER_ACHIEVEMENT_CLEAR_REWARD { 8 | uint64 user_uid = 1; 9 | repeated uint32 request_achievement_id_list = 2; 10 | } 11 | 12 | message GAME_CLIENT_SYNC_REWARD_ACHIVEMENT { 13 | uint32 achievement_id = 1; 14 | repeated _cost_info cost_info_list = 2; 15 | repeated _character_inven_item reward_item_list = 3; 16 | } 17 | 18 | message GAME_CLIENT_REWARD_ACHIEVEMENT_LIST_RESULT { 19 | bool success_all = 1; 20 | repeated uint32 achievement_id_list = 2; 21 | uint32 error_id = 3; 22 | uint32 error_reason_achievement_id = 4; 23 | } 24 | 25 | message GAME_CLIENT_SYNC_PLAY_DATA { 26 | repeated _character_play_data_info play_data_list = 1; 27 | } 28 | -------------------------------------------------------------------------------- /Data/protobuf/packet_closed_training.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_CLOSED_TRAINING_INFO { 8 | 9 | } 10 | 11 | message GAME_CLIENT_CLOSED_TRAINING_INFO { 12 | repeated _closed_training_data training_data_list = 1; 13 | int32 total_level = 2; 14 | int32 collect_step = 3; 15 | int32 internal_injury_resistance = 4; 16 | } 17 | 18 | message CLIENT_GAME_CLOSED_TRAINING_UPGRADE { 19 | int32 status_id = 1; 20 | } 21 | 22 | message GAME_CLIENT_CLOSED_TRAINING_UPGRADE { 23 | int32 result = 1; 24 | int32 status_id = 2; 25 | int32 result_level = 3; 26 | int32 result_collectstep = 4; 27 | int32 internal_injury_resistance = 5; 28 | _cost_info cost_Info = 6; 29 | repeated _stack_item_info update_items = 7; 30 | } 31 | -------------------------------------------------------------------------------- /Data/protobuf/packet_dungeon_ticket.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_DUNGEON_TICKET_INFO { 8 | 9 | } 10 | 11 | message GAME_CLIENT_DUNGEON_TICKET_INFO { 12 | repeated _dungeon_ticket_info dungeon_ticket_info_list = 1; 13 | } 14 | 15 | message CLIENT_GAME_DUNGEON_TICKET_CHARGE { 16 | uint32 dungeon_ticket_type = 1; 17 | bool item_check = 2; 18 | } 19 | 20 | message GAME_CLIENT_DUNGEON_TICKET_CHARGE { 21 | uint32 dungeon_ticket_type = 1; 22 | _dungeon_ticket_info dungeon_ticket_info = 2; 23 | repeated _cost_info cost_infos = 3; 24 | int32 result = 4; 25 | repeated _stack_item_info del_item_list = 5; 26 | } 27 | 28 | message GAME_CLIENT_DUNGEON_TICKET_CHANGE_NOTIFY { 29 | _dungeon_ticket_info dungeon_ticket_info = 1; 30 | } 31 | -------------------------------------------------------------------------------- /App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Data/csv/DARKALTAR.csv: -------------------------------------------------------------------------------- 1 | "Name","Altar_Id","Stage_Id","Pos_Id","Monster_Id","Altar_UnsealTime","Altar_Seal_BuffId","Altar_Recovery_BuffId","Altar_StartWeek","Altar_StartWeekInterval","Altar_BattleStartDayOfWeek","Altar_BattleStartTime","Altar_BattleRunTime","Altar_BattleEnd_BuffId","Altar_RegenDay","Altar_RegenTime","Defender_DominionId","Castle_DominionId","Altar_Destroy_BuffId","Altar_Destroy_BuffApplyStageId" 2 | "101","101","201003013","200003","1000351","2022-04-01 23:59","500051","69","2022-06-26","1","4","22:00:00","3600","500052","28","21:50:00","3005","2001","0","(0)" 3 | "201","201","201003033","200003","1000352","2022-04-01 23:59","500051","69","2022-06-26","1","4","22:00:00","3600","500052","28","21:50:00","3010","2001","0","(0)" 4 | "301","301","201003043","200004","1000353","2022-04-01 23:59","500051","69","2022-06-26","1","4","22:00:00","3600","500052","28","21:50:00","3024","2001","0","(0)" 5 | -------------------------------------------------------------------------------- /Data/csv/CLASS_PHASE.csv: -------------------------------------------------------------------------------- 1 | "Name","ID","Class","PhaseClass","ClassName","ClassPortraitIcon","PhaseCreateCost","PhaseCreateCost_Value","PhaseExceptionOnOff","PhaseCreateItemUseId","ItemCount","ShopBuyId" 2 | "1","1","1","(2,3,4,5,6)","3600001","100101","(2,4,4,4,4)","(1000000,4000,8000,12000,16000)","0","1813000002","1","0" 3 | "2","2","2","(1,3,4,5,6)","3600002","100102","(2,4,4,4,4)","(1000000,4000,8000,12000,16000)","0","1813000002","1","0" 4 | "3","3","3","(1,2,4,5,6)","3600003","100103","(2,4,4,4,4)","(1000000,4000,8000,12000,16000)","0","1813000002","1","0" 5 | "4","4","4","(1,2,3,5,6)","3600004","100104","(2,4,4,4,4)","(1000000,4000,8000,12000,16000)","0","1813000002","1","0" 6 | "5","5","5","(1,2,3,4,6)","3600005","100105","(2,4,4,4,4)","(1000000,4000,8000,12000,16000)","0","1813000002","1","0" 7 | "6","6","6","(1,2,3,4,5)","3600006","100106","(2,4,4,4,4)","(1000000,4000,8000,12000,16000)","0","1813000002","1","0" 8 | -------------------------------------------------------------------------------- /Data/protobuf/packet_logout.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message WORLD_GAME_REQUEST_DICONNECT_USER { 6 | uint64 uid = 1; 7 | uint32 error_id = 2; 8 | uint32 reason = 3; 9 | } 10 | 11 | message GAME_WORLD_CMD_LOGOUT_USER { 12 | uint64 uid = 1; 13 | } 14 | 15 | message WORLD_GATEWAY_REQUEST_DICONNECT_USER { 16 | uint64 uid = 1; 17 | uint32 error_id = 2; 18 | uint32 reason = 3; 19 | uint64 account_uid = 4; 20 | string auth_key = 5; 21 | } 22 | 23 | message CLIENT_GAME_REQUEST_LOGOUT { 24 | uint32 request_type = 1; 25 | } 26 | 27 | message GAME_CLIENT_SUCCESS_LOGOUT { 28 | uint32 request_type = 1; 29 | } 30 | 31 | message GAME_CLIENT_LOGOUT_CANCEL { 32 | uint32 cancel_reason = 1; 33 | } 34 | 35 | message GAME_WORLD_REQUEST_LOGOUT { 36 | uint32 request_type = 1; 37 | } 38 | 39 | message WORLD_LOBBY_DICONNECT_USER { 40 | int32 reason = 1; 41 | } 42 | -------------------------------------------------------------------------------- /Data/csv/ITEM_JEWEL_PROBABILITY.csv: -------------------------------------------------------------------------------- 1 | "Name","ItemId","SuccessProbability" 2 | "801100002","801100002","750" 3 | "801100003","801100003","1250" 4 | "801100004","801100004","1750" 5 | "801100005","801100005","25000" 6 | "802100002","802100002","750" 7 | "802100003","802100003","1250" 8 | "802100004","802100004","1750" 9 | "802100005","802100005","25000" 10 | "803100002","803100002","750" 11 | "803100003","803100003","1250" 12 | "803100004","803100004","1750" 13 | "803100005","803100005","25000" 14 | "804100002","804100002","750" 15 | "804100003","804100003","1250" 16 | "804100004","804100004","1750" 17 | "804100005","804100005","25000" 18 | "805100002","805100002","750" 19 | "805100003","805100003","1250" 20 | "805100004","805100004","1750" 21 | "805100005","805100005","25000" 22 | "806100002","806100002","750" 23 | "806100003","806100003","1250" 24 | "806100004","806100004","1750" 25 | "806100005","806100005","25000" 26 | -------------------------------------------------------------------------------- /Data/protobuf/AuthenticationTypes.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package Network.Protocol.Authentication; 4 | 5 | message Packet { 6 | enum Type { 7 | None = 0; 8 | AuthenticationLogin = 20000; 9 | } 10 | } 11 | 12 | message Sdk { 13 | enum Type { 14 | None = 0; 15 | Pc = 1; 16 | Google = 2; 17 | Facebook = 3; 18 | Gamecenter = 4; 19 | Naver = 5; 20 | Kakao = 6; 21 | Guest = 7; 22 | } 23 | } 24 | 25 | message Os { 26 | enum Type { 27 | None = 0; 28 | Android = 1; 29 | Ios = 2; 30 | Editor = 3; 31 | Windows = 4; 32 | } 33 | } 34 | 35 | message ErrorCode { 36 | enum Type { 37 | None = 0; 38 | Success = 1; 39 | Unauthorized = 101; 40 | AccountIdEmpty = 102; 41 | AccountBlock = 103; 42 | Mysql = 201; 43 | Redis = 301; 44 | System = 901; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Data/csv/GUILD_SUPPLY.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","NameId","IconId","Enable","OpenConditionType","OpenConditionValueType","OpenConditionValue","RewardTime","RewardItemId","RewardItemCnt","MailTemplateId","RewardGiftId" 2 | "1","1","4500003","1011","1","2","101011","1","259200","0","0","0","11" 3 | "2","2","4500004","1011","1","2","101011","2","216000","0","0","0","11" 4 | "3","3","4500005","1011","1","2","101011","3","172800","0","0","0","11" 5 | "4","4","4500005","1011","1","2","101011","4","172800","0","0","0","12" 6 | "5","5","4500005","1011","1","2","101011","5","151200","0","0","0","12" 7 | "6","6","4500005","1011","1","2","101011","6","129600","0","0","0","12" 8 | "7","7","4500005","1011","1","2","101011","7","108000","0","0","0","12" 9 | "8","8","4500005","1011","1","2","101011","8","86400","0","0","0","12" 10 | "9","9","4500005","1011","1","2","101011","9","86400","0","0","0","13" 11 | "10","10","4500005","1011","1","2","101011","10","43200","0","0","0","13" 12 | -------------------------------------------------------------------------------- /Data/protobuf/packet_block.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message _block_user_info { 6 | uint64 block_user_uid = 1; 7 | string block_user_name = 2; 8 | string block_user_profile = 3; 9 | } 10 | 11 | message CLIENT_CHATTING_BLOCK_LIST { 12 | 13 | } 14 | 15 | message CHATTING_CLIENT_BLOCK_LIST_START { 16 | 17 | } 18 | 19 | message CHATTING_CLIENT_BLOCK_LIST { 20 | repeated _block_user_info block_user_list = 1; 21 | } 22 | 23 | message CHATTING_CLIENT_BLOCK_LIST_END { 24 | 25 | } 26 | 27 | message CLIENT_CHATTING_ADD_BLOCK { 28 | string block_user_name = 1; 29 | } 30 | 31 | message CHATTING_CLIENT_ADD_BLOCK { 32 | _block_user_info block_user_info = 1; 33 | uint32 result = 2; 34 | } 35 | 36 | message CLIENT_CHATTING_CANCEL_BLOCK { 37 | uint64 block_user_uid = 1; 38 | } 39 | 40 | message CHATTING_CLIENT_CANCEL_BLOCK { 41 | uint64 block_user_uid = 1; 42 | uint32 result = 2; 43 | } 44 | -------------------------------------------------------------------------------- /Data/csv/COMMAND_MARK.csv: -------------------------------------------------------------------------------- 1 | "Name","MarkId","CommandMarkType","MiniMapIconId","IconId","NameSId","EffectId" 2 | "1","1","0","5200101","5200001","5401001","1091001" 3 | "2","2","0","5200102","5200002","5401002","1091002" 4 | "3","3","0","5200103","5200003","5401003","1091003" 5 | "4","4","0","5200104","5200004","5401004","1091004" 6 | "5","5","0","5200105","5200005","5401005","1091005" 7 | "6","6","0","5200106","5200006","5401006","1091006" 8 | "7","7","0","5200107","5200007","5401007","1091007" 9 | "8","8","0","5200108","5200008","5401008","1091008" 10 | "11","11","1","0","5200011","5401011","1091011" 11 | "12","12","1","0","5200014","5401014","1091014" 12 | "13","13","1","0","5200013","5401013","1091013" 13 | "14","14","1","0","5200018","5401018","1091018" 14 | "15","15","1","0","5200012","5401012","1091012" 15 | "16","16","1","0","5200015","5401015","1091015" 16 | "17","17","1","0","5200016","5401016","1091016" 17 | "18","18","1","0","5200017","5401017","1091017" 18 | -------------------------------------------------------------------------------- /Data/csv/FAME_LEVEL.csv: -------------------------------------------------------------------------------- 1 | "Name","FameId","Level","ReqExp" 2 | "1001","1001","1","100" 3 | "1002","1002","2","200" 4 | "1003","1003","3","400" 5 | "1004","1004","4","600" 6 | "1005","1005","5","800" 7 | "1006","1006","6","1000" 8 | "1007","1007","7","1200" 9 | "1008","1008","8","1400" 10 | "1009","1009","9","1600" 11 | "1010","1010","10","1800" 12 | "1011","1011","11","2000" 13 | "1012","1012","12","2200" 14 | "1013","1013","13","2400" 15 | "1014","1014","14","2600" 16 | "1015","1015","15","2800" 17 | "1016","1016","16","3000" 18 | "1017","1017","17","3200" 19 | "1018","1018","18","3400" 20 | "1019","1019","19","3600" 21 | "1020","1020","20","3800" 22 | "1021","1021","21","4000" 23 | "1022","1022","22","4200" 24 | "1023","1023","23","4400" 25 | "1024","1024","24","4600" 26 | "1025","1025","25","4800" 27 | "1026","1026","26","5000" 28 | "1027","1027","27","5200" 29 | "1028","1028","28","5400" 30 | "1029","1029","29","5600" 31 | "1030","1030","30","5800" 32 | -------------------------------------------------------------------------------- /Data/csv/GUILD_DOMINION_BUFF.csv: -------------------------------------------------------------------------------- 1 | "Name","DominionBuffId","DominionType","DominionBuffCostType","DominionBuffCostValue","DominionBuffNameId","DominionBuffIconId","DominionBuffDescId","DominionWorldBuffId","DominionBuffCnt","NotifyMessage","DominionBuffMailID","DominionBuffDismissMailID","BUFFJUDGMENT" 2 | "1","1","1","12","10000000","3350010","4500001","3350016","500203","1","1067567","12019","0","0" 3 | "2","2","1","12","4000000","3350011","4500002","3350017","500204","1","1067568","12020","0","0" 4 | "3","3","1","12","2000000","3350012","4500003","3350018","500205","1","1067569","12021","0","0" 5 | "4","4","2","4","5000","6300308","5600008","6300312","501101","1","1086718","12103","12104","2" 6 | "5","5","2","4","5000","6300309","5600008","6300313","501102","1","1086718","12103","12104","1" 7 | "6","6","2","4","5000","6300310","5600009","6300314","501103","1","1086718","12103","12104","2" 8 | "7","7","2","4","5000","6300318","5600010","6300315","501104","1","1086718","12103","12104","1" 9 | -------------------------------------------------------------------------------- /Game/Icons.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | namespace Mir4ClientEmulator.Game 3 | { 4 | internal class Icons 5 | { 6 | public enum Gather 7 | { 8 | hand_white = 1000001, 9 | mine_white = 1000002, 10 | energy_white = 1000003, 11 | hand_green = 1000020, 12 | hand_blue = 1000021, 13 | hand_red = 1000022, 14 | hand_gold = 1000023, 15 | mine_green = 1000030, 16 | mine_blue = 1000031, 17 | mine_red = 1000032, 18 | mine_gold = 1000033, 19 | energy_green = 1000040, 20 | energy_blue = 1000041, 21 | energy_red = 1000042, 22 | energy_gold = 1000043, 23 | plant_white = 1000051, 24 | plant_green = 1000052, 25 | plant_blue = 1000053, 26 | plant_red = 1000054, 27 | plant_gold = 1000055, 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Data/csv/GUILD_DOMINION_PRIZE.csv: -------------------------------------------------------------------------------- 1 | "Name","DominionPrizeId","DominionPrizeType","DominionPrizeGrade","DominionPrizeNameId","DominionPrizeIconId","DominionPrizeLimit","DominionPrizeCostType","DominionPrizeCostValue","DominionPrizeItemId","DominionPrizeString" 2 | "1","1","2","5","3350022","1370304","1","4","2000","601202419","1067537" 3 | "2","2","2","4","3350023","1370303","3","4","1000","601202420","1067537" 4 | "3","3","2","3","3350024","1370302","5","4","500","601202421","1067537" 5 | "4","4","2","2","3350025","1370301","10","4","200","601202422","0" 6 | "5","5","2","1","3350026","1370300","50","4","100","601202423","0" 7 | "6","6","1","5","3350022","1370304","1","4","4000","601202686","1067537" 8 | "7","7","1","4","3350023","1370303","4","4","2000","601202687","1067537" 9 | "8","8","1","3","3350024","1370302","8","4","1000","601202688","1067537" 10 | "9","9","1","2","3350025","1370301","16","4","400","601202689","0" 11 | "10","10","1","1","3350026","1370300","50","4","200","601202690","0" 12 | -------------------------------------------------------------------------------- /Data/csv/PET_LEVEL.csv: -------------------------------------------------------------------------------- 1 | "Name","LevelId","TIER","Level","NextLevelId","EquipSlotCnt","PassiveLv","AddCombatPoint","LvUpNeedPetItemCount","LvUpNeedCostType01","LvUpNeedCostValue01","LvUpNeedCostType02","LvUpNeedCostValue02","LvUpNeedItemUseId01","LvUpNeedItemCount01","LvUpSuccessRate" 2 | "101","101","1","1","0","0","1","0","0","0","0","0","0","0","0","0" 3 | "201","201","2","1","0","1","1","0","0","0","0","0","0","0","0","0" 4 | "301","301","3","1","0","2","1","0","0","0","0","0","0","0","0","0" 5 | "401","401","4","1","0","3","1","0","0","0","0","0","0","0","0","0" 6 | "501","501","5","1","502","4","1","0","1","23","100","11","10000000","901001005","100","70000" 7 | "502","502","5","2","503","5","2","560","1","23","200","11","20000000","901001005","200","50000" 8 | "503","503","5","3","504","6","3","1120","1","23","300","11","30000000","901001005","300","30000" 9 | "504","504","5","4","0","7","4","1680","0","0","0","0","0","0","0","0" 10 | "601","601","6","1","0","8","1","0","0","0","0","0","0","0","0","0" 11 | -------------------------------------------------------------------------------- /Data/csv/GUILD_COOP_MISSION_GROUP_LIST.csv: -------------------------------------------------------------------------------- 1 | "Name","GuildCoopMissionListId","DevLevel","GuildCoopMissionGroupId","GroupRate" 2 | "101","101","1","1","100000" 3 | "201","201","2","1","30000" 4 | "202","202","2","2","70000" 5 | "301","301","3","1","20000" 6 | "302","302","3","2","30000" 7 | "303","303","3","3","50000" 8 | "402","402","4","2","20000" 9 | "403","403","4","3","30000" 10 | "404","404","4","4","50000" 11 | "503","503","5","3","20000" 12 | "504","504","5","4","30000" 13 | "505","505","5","5","50000" 14 | "604","604","6","4","20000" 15 | "605","605","6","5","30000" 16 | "606","606","6","6","50000" 17 | "705","705","7","5","20000" 18 | "706","706","7","6","30000" 19 | "707","707","7","7","50000" 20 | "806","806","8","6","20000" 21 | "807","807","8","7","30000" 22 | "808","808","8","8","50000" 23 | "907","907","9","7","20000" 24 | "908","908","9","8","30000" 25 | "909","909","9","9","50000" 26 | "1008","1008","10","8","20000" 27 | "1009","1009","10","9","30000" 28 | "1010","1010","10","10","50000" 29 | -------------------------------------------------------------------------------- /Data/csv/GUILD_DOMINION_STROAGE_HISTORY.csv: -------------------------------------------------------------------------------- 1 | "Name","HistoryId","HistoryGroup","HistorySubGroup","StringId" 2 | "1","1","1","0","1067204" 3 | "2","2","1","0","1067205" 4 | "100","100","2","0","1067206" 5 | "101","101","2","0","1067207" 6 | "102","102","2","0","1067208" 7 | "103","103","2","0","1067259" 8 | "104","104","2","0","1085538" 9 | "105","105","2","0","1067241" 10 | "1000","1000","3","0","1067238" 11 | "2000","2000","4","0","1067239" 12 | "2001","2001","4","0","1067240" 13 | "2002","2002","4","0","1067241" 14 | "2003","2003","4","0","1067242" 15 | "2004","2004","4","0","1067243" 16 | "2006","2006","4","0","1067260" 17 | "3","3","1","1","1086332" 18 | "106","106","2","1","1086333" 19 | "107","107","2","1","1086334" 20 | "109","109","2","1","1086335" 21 | "111","111","2","1","1086336" 22 | "1001","1001","3","1","1086337" 23 | "2008","2008","4","1","1086338" 24 | "2009","2009","4","1","1086339" 25 | "2010","2010","4","1","1086340" 26 | "2011","2011","4","1","1086341" 27 | "2012","2012","4","1","1086342" 28 | -------------------------------------------------------------------------------- /Data/protobuf/packet_character_phase.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_CHARACTER_PHASE_CREATE { 8 | int32 phase_class = 1; 9 | repeated customize_info customize_list = 2; 10 | bool is_use_item = 3; 11 | } 12 | 13 | message GAME_CLIENT_CHARACTER_PHASE_CREATE { 14 | int32 result = 1; 15 | int32 phase_class = 2; 16 | repeated _cost_info costInfo = 3; 17 | } 18 | 19 | message CLIENT_GAME_CHARACTER_PHASE { 20 | int32 phase_class = 1; 21 | } 22 | 23 | message GAME_CLIENT_CHARACTER_PHASE { 24 | int32 result = 1; 25 | int32 phase_class = 2; 26 | } 27 | 28 | message GAME_WORLD_CHARACTER_PHASE { 29 | uint64 user_uid = 1; 30 | uint64 guild_uid = 2; 31 | int32 phase_class = 3; 32 | } 33 | 34 | message CLIENT_GAME_CHARACTER_PHASE_INFO { 35 | 36 | } 37 | 38 | message GAME_CLIENT_CHARACTER_PHASE_INFO { 39 | int32 origin_class = 1; 40 | repeated _character_phase_info open_phase_info = 2; 41 | int64 update_phase_time = 3; 42 | } 43 | -------------------------------------------------------------------------------- /Data/csv/ITEM_MAGICORB_LEVEL.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","Grade","Level","ReqExp","CombatPoint" 2 | "4001","4001","4","1","12000","200" 3 | "4002","4002","4","2","12000","300" 4 | "4003","4003","4","3","14000","500" 5 | "4004","4004","4","4","14000","600" 6 | "4005","4005","4","5","14000","700" 7 | "4006","4006","4","6","18000","900" 8 | "4007","4007","4","7","18000","1000" 9 | "4008","4008","4","8","18000","1100" 10 | "4009","4009","4","9","26000","1300" 11 | "4010","4010","4","10","26000","1400" 12 | "4011","4011","4","11","28000","1500" 13 | "4012","4012","4","12","0","2000" 14 | "5001","5001","5","1","60000","600" 15 | "5002","5002","5","2","60000","900" 16 | "5003","5003","5","3","70000","1500" 17 | "5004","5004","5","4","70000","1800" 18 | "5005","5005","5","5","70000","2100" 19 | "5006","5006","5","6","90000","2700" 20 | "5007","5007","5","7","90000","3000" 21 | "5008","5008","5","8","90000","3300" 22 | "5009","5009","5","9","130000","3900" 23 | "5010","5010","5","10","130000","4200" 24 | "5011","5011","5","11","140000","4500" 25 | "5012","5012","5","12","0","6000" 26 | -------------------------------------------------------------------------------- /Data/csv/DUNGEON_POSITION.csv: -------------------------------------------------------------------------------- 1 | "Name","PositionID","StageID","Coordinate" 2 | "108","108","200400201","(X=649.000000,Y=7569.000000,Z=170.000000)" 3 | "109","109","200400201","(X=1138.000000,Y=7959.000000,Z=170.000000)" 4 | "110","110","200400201","(X=1138.000000,Y=7599.000000,Z=170.000000)" 5 | "111","111","200400201","(X=1138.000000,Y=7259.000000,Z=170.000000)" 6 | "112","112","200400201","(X=1589.000000,Y=7969.000000,Z=170.000000)" 7 | "113","113","200400201","(X=1588.000000,Y=7610.000000,Z=170.000000)" 8 | "114","114","200400201","(X=1588.000000,Y=7270.000000,Z=170.000000)" 9 | "115","115","200400201","(X=-1384.697876,Y=5779.441406,Z=170.000000)" 10 | "116","116","200400201","(X=-1156.211792,Y=6361.690430,Z=170.000000)" 11 | "117","117","200400201","(X=-976.211548,Y=6049.921875,Z=170.000000)" 12 | "118","118","200400201","(X=-806.211365,Y=5755.473633,Z=170.000000)" 13 | "119","119","200400201","(X=-770.634399,Y=6595.851563,Z=170.000000)" 14 | "120","120","200400201","(X=-592.000122,Y=6284.448242,Z=170.000000)" 15 | "121","121","200400201","(X=-422.000000,Y=5990.000000,Z=170.000000)" 16 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_SIEGE_REWARD.csv: -------------------------------------------------------------------------------- 1 | "Name","RewardId","RewardType","SiegePointMin","SiegePointMax","RewardMoneyId01","RewardMoneyCnt01","RewardMoneyId02","RewardMoneyCnt02","RewardItemUseId01","RewardItemCnt01","MailPresetId" 2 | "101","101","1","0","0","0","0","0","0","601202424","1","18002" 3 | "102","102","1","1","50","0","0","0","0","601202425","1","18001" 4 | "103","103","1","51","100","0","0","0","0","601202426","1","18001" 5 | "104","104","1","101","500","0","0","0","0","601202427","1","18001" 6 | "105","105","1","500","1000","0","0","0","0","601202428","1","18001" 7 | "106","106","1","1000","5000","0","0","0","0","601202429","1","18001" 8 | "201","201","2","0","0","0","0","0","0","601202430","1","18004" 9 | "202","202","2","1","50","0","0","0","0","601202431","1","18003" 10 | "203","203","2","51","100","0","0","0","0","601202432","1","18003" 11 | "204","204","2","101","500","0","0","0","0","601202433","1","18003" 12 | "205","205","2","500","1000","0","0","0","0","601202434","1","18003" 13 | "206","206","2","1000","5000","0","0","0","0","601202435","1","18003" 14 | "301","301","3","0","0","0","0","0","0","601202436","1","18005" 15 | -------------------------------------------------------------------------------- /Data/csv/ITEM_JEWEL_TIER.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","Tier","Grade","SlotCount","RainbowSlotCount","ComposeCostType","ComposeCostValue" 2 | "11","11","1","1","2","1","2","100" 3 | "12","12","1","2","2","1","2","500" 4 | "13","13","1","3","3","1","2","1000" 5 | "14","14","1","4","4","1","2","2000" 6 | "15","15","1","5","4","1","2","4000" 7 | "21","21","2","1","2","1","2","100" 8 | "22","22","2","2","2","1","2","500" 9 | "23","23","2","3","3","1","2","1000" 10 | "24","24","2","4","4","1","2","2000" 11 | "25","25","2","5","4","1","2","4000" 12 | "31","31","3","1","2","1","2","100" 13 | "32","32","3","2","2","1","2","500" 14 | "33","33","3","3","3","1","2","1000" 15 | "34","34","3","4","4","1","2","2000" 16 | "35","35","3","5","4","1","2","4000" 17 | "41","41","4","1","2","1","2","100" 18 | "42","42","4","2","2","1","2","500" 19 | "43","43","4","3","3","1","2","1000" 20 | "44","44","4","4","4","1","2","2000" 21 | "45","45","4","5","4","1","2","4000" 22 | "51","51","5","1","2","1","2","100" 23 | "52","52","5","2","2","1","2","500" 24 | "53","53","5","3","3","1","2","1000" 25 | "54","54","5","4","4","1","2","2000" 26 | "55","55","5","5","4","1","2","4000" 27 | -------------------------------------------------------------------------------- /Utilities/DllImport.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Runtime.InteropServices; 8 | namespace Mir4.Utilities 9 | { 10 | public static class DllImports 11 | { 12 | public const int STD_OUTPUT_HANDLE = -11; 13 | public const int MY_CODE_PAGE = 437; 14 | 15 | [DllImport("kernel32.dll", SetLastError = true)] 16 | [return: MarshalAs(UnmanagedType.Bool)] 17 | public static extern bool AllocConsole(); 18 | 19 | [DllImport("kernel32.dll", SetLastError = true)] 20 | [return: MarshalAs(UnmanagedType.Bool)] 21 | public static extern bool FreeConsole(); 22 | 23 | [DllImport("kernel32.dll", EntryPoint = "GetStdHandle",SetLastError = true,CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 24 | public static extern IntPtr GetStdHandle(int nStdHandle); 25 | 26 | [DllImport("kernel32.dll", SetLastError = true)] 27 | public static extern bool ExitProcess( uint uExitCode); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Data/csv/NPC_ITEM_CRAFT_MATERIAL.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","MaterialGroupId","GroupMaterialType","MaterialUseId","MaterialMainType","MaterialSubType","MaterialTier","MaterialGrade" 2 | "1","1","1","0","1701000004","0","0","0","0" 3 | "2","2","1","0","1701000007","0","0","0","0" 4 | "3","3","1","0","1701000009","0","0","0","0" 5 | "4","4","1","0","1701000012","0","0","0","0" 6 | "5","5","1","0","1701000013","0","0","0","0" 7 | "6","6","2","1","0","17","1","1","3" 8 | "7","7","3","1","0","17","1","1","4" 9 | "8","8","3","1","0","23","1","1","4" 10 | "9","9","4","0","1707000001","0","0","0","0" 11 | "10","10","4","1","0","17","1","1","3" 12 | "11","11","5","0","1707000002","0","0","0","0" 13 | "12","12","5","1","0","17","1","1","4" 14 | "13","13","6","1","0","17","1","1","3" 15 | "14","14","6","1","0","17","1","1","3" 16 | "15","15","7","1","0","17","1","1","3" 17 | "16","16","7","0","1701000007","0","0","0","0" 18 | "1000","1000","1000","1","0","17","1","1","3" 19 | "1001","1001","1001","1","0","17","1","1","4" 20 | "1002","1002","1002","1","0","17","1","1","5" 21 | "2001","2001","2001","1","0","23","1","1","4" 22 | "2002","2002","2002","1","0","23","1","1","5" 23 | -------------------------------------------------------------------------------- /Data/csv/ITEM_JEWEL_COMPOSE.csv: -------------------------------------------------------------------------------- 1 | "Name","UniqueID","Tier","Grade","ResultItemId","ResultProbability" 2 | "1101","1101","1","1","801200002","100" 3 | "1102","1102","1","1","801200003","100" 4 | "1103","1103","1","1","801200004","100" 5 | "1104","1104","1","1","801200005","100" 6 | "1105","1105","1","1","802200002","100" 7 | "1106","1106","1","1","802200003","100" 8 | "1107","1107","1","1","802200004","100" 9 | "1108","1108","1","1","802200005","100" 10 | "1109","1109","1","1","803200002","100" 11 | "1110","1110","1","1","803200003","100" 12 | "1111","1111","1","1","803200004","100" 13 | "1112","1112","1","1","803200005","100" 14 | "1113","1113","1","1","804200002","100" 15 | "1114","1114","1","1","804200003","100" 16 | "1115","1115","1","1","804200004","100" 17 | "1116","1116","1","1","804200005","100" 18 | "1117","1117","1","1","805200002","100" 19 | "1118","1118","1","1","805200003","100" 20 | "1119","1119","1","1","805200004","100" 21 | "1120","1120","1","1","805200005","100" 22 | "1121","1121","1","1","806200002","100" 23 | "1122","1122","1","1","806200003","100" 24 | "1123","1123","1","1","806200004","100" 25 | "1124","1124","1","1","806200005","100" 26 | -------------------------------------------------------------------------------- /packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Network/WebLogin/JSON/LoginCheck.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Mir4ClientEmulator.Network.WebLogin.JSON 9 | { 10 | public class LoginCheck 11 | { 12 | public string Code { get; set; } 13 | public string PlayerKey { get; set; } 14 | public string CSKey { get; set; } 15 | public string TokenID { get; set; } 16 | public string DeviceID { get; set; } 17 | public string LinkID { get; set; } 18 | public bool isLinkPW { get; set; } 19 | public bool isGoogleLinked { get; set; } 20 | public bool isFacebookLinked { get; set; } 21 | public bool isAppleLinked { get; set; } 22 | public bool isSteamLinked { get; set; } 23 | public bool isNewUser { get; set; } 24 | public bool IsPushAgree { get; set; } 25 | public bool IsNightPushAgree { get; set; } 26 | public string LanguageCode { get; set; } 27 | public string AgreeTermsDT { get; set; } 28 | public bool isHumanVerified { get; set; } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Data/csv/GUILD_MONEY_EXCHANGE.csv: -------------------------------------------------------------------------------- 1 | "Name","ExchangeId","ExchangeType","MoneyId_Send","MoneyId_Receive","ExchangeRate","ExchangeStringId","DonationReward_GuildExpRate","DonationReward_MoneyId","DonationReward_MoneyRate","DonationReward_MailPresetId","PayCommissionRate","PayMailPresetId","UnLockDevId","UnLockDevLevel","DonationMoneyMinValue","DonationMoneyLimit","PayMoneyMinValue","ChangeMoneyMinValue","DonationRewardContribution","DonationLevelLimit" 2 | "101","101","1","2","92","100","1063776","100","17","1000","15018","0","0","0","0","100","10000","0","0","5000","0" 3 | "102","102","1","12","93","10000","1063777","200","17","2000","15018","0","0","0","0","1","5000","0","0","1000","0" 4 | "103","103","1","11","94","10000","1063778","200","17","2000","15018","0","0","0","0","1","5000","0","0","1000","0" 5 | "104","104","1","4","91","10000","1063775","2000","17","20000","15018","0","0","0","0","1","10000","0","0","5000","40" 6 | "201","201","2","91","5","10000","1063779","0","0","0","0","3000","15015","0","0","0","0","10","0","0","0" 7 | "301","301","3","91","5","10000","1063779","0","0","0","0","3000","0","0","0","0","0","10","0","0","0" 8 | "401","401","4","91","92","200000","1063776","0","0","0","0","0","0","0","0","0","0","0","1","0","0" 9 | -------------------------------------------------------------------------------- /Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | //------------------------------------------------------------------------------ 3 | // 4 | // This code was generated by a tool. 5 | // Runtime Version:4.0.30319.42000 6 | // 7 | // Changes to this file may cause incorrect behavior and will be lost if 8 | // the code is regenerated. 9 | // 10 | //------------------------------------------------------------------------------ 11 | 12 | namespace Mir4.Properties { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.7.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 18 | 19 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 20 | 21 | public static Settings Default { 22 | get { 23 | return defaultInstance; 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Data/csv/GUILD_MEMBER_GRADE.csv: -------------------------------------------------------------------------------- 1 | "Name","MemberGradeId","GradeStrId","GradeNameId","GradeNickNameId","GradeMemberCount","GradeFrameIconId","GradeSymbolId","GradeDistributeNumber","Set_GradeOffice","Set_GradeBuff ","Set_GradePermission","GradeChangeBuffId","GradeChangeBuffFrameIconId","GradeUnlockFameLevel","GradeUnlockMoneyId","GradeUnlockMoneyValue","Can_Notice","Can_Appoint","Can_Kick_Member","Can_Invite","Can_Join_Confirm","Can_Member","Can_Alliance","Can_Declaration","Can_Occupation","Can_Shop","Can_Inventory","Can_Buff","Can_GuildSet","Can_Person","Can_Finance","Can_Diplomacy ","Can_War" 2 | "1","1","1063470","1063535","1063535","1","1370101","171","7","0","0","0","(0)","(0)","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1" 3 | "2","2","1063471","1063536","1063536","10","1370102","172","6","1","1","1","(0)","(0)","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0" 4 | "3","3","1063472","1063537","1063537","0","1370103","173","5","0","0","0","(0)","(0)","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0" 5 | "4","4","1063473","1063538","1063538","0","1370104","174","4","0","0","0","(0)","(0)","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0" 6 | -------------------------------------------------------------------------------- /Game/NamedStage.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 |  3 | using System.Numerics; 4 | 5 | namespace Mir4.Game 6 | { 7 | public class NamedStage 8 | { 9 | public int StageID { get; set; } 10 | public string StageNameSID { get; set; } 11 | 12 | //public int ChannelId { get; set; } 13 | 14 | //public int BlockSize { get; set; } 15 | //public int StageLevel { get; set; } 16 | //public int CombatPower { get; set; } 17 | 18 | //public bool AirWalkban { get; set; } 19 | //public bool DirectWarpAble { get; set; } 20 | //public bool BoardOnOff { get; set; } 21 | 22 | //public string MapMiniInfo { get; set; } 23 | //public string Gendata { get; set; } 24 | 25 | //public int StandardPosition_X { get; set; } 26 | //public int StandardPosition_Y { get; set; } 27 | 28 | //public string WayPoint { get; set; } 29 | //public string SafetyArea { get; set; } 30 | //public string SectorGrade { get; set; } 31 | 32 | //public string GatheringZone { get; set; } 33 | //public string MiningZone { get; set; } 34 | //public string SpiritZone { get; set; } 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Mir4ClientEmulator.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.3.32901.215 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mir4ClientEmulator", "Mir4ClientEmulator.csproj", "{DFCFD946-F2FD-4A0E-8E9F-1CA055D00B49}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {DFCFD946-F2FD-4A0E-8E9F-1CA055D00B49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {DFCFD946-F2FD-4A0E-8E9F-1CA055D00B49}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {DFCFD946-F2FD-4A0E-8E9F-1CA055D00B49}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {DFCFD946-F2FD-4A0E-8E9F-1CA055D00B49}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {D38A4F7C-84F4-48FB-919C-EC1E006747DF} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Data/csv/GUILD_AUTHORITY.csv: -------------------------------------------------------------------------------- 1 | "Name","AuthorityId","NameStrId","Can_Member","Can_Inventory","Can_Diplomacy","Can_War" 2 | "1","1","1101","1","0","0","0" 3 | "2","2","1102","1","0","0","0" 4 | "3","3","1103","1","0","0","0" 5 | "4","4","1104","1","0","0","0" 6 | "5","5","1105","1","0","0","0" 7 | "6","6","1132","1","0","0","0" 8 | "7","51","1106","0","0","0","0" 9 | "8","52","1110","1","0","0","0" 10 | "9","53","1111","0","1","0","0" 11 | "10","54","1112","0","1","0","0" 12 | "11","58","1134","0","1","0","0" 13 | "12","55","1107","1","0","0","0" 14 | "13","56","1108","1","0","0","0" 15 | "14","57","1109","0","0","0","1" 16 | "15","59","1142","0","0","0","1" 17 | "16","101","1113","0","0","1","0" 18 | "17","102","1114","0","0","1","0" 19 | "18","103","1115","0","0","1","0" 20 | "19","151","1117","0","0","0","1" 21 | "20","152","1131","0","0","0","1" 22 | "21","153","1118","0","0","0","1" 23 | "22","171","1139","0","0","0","1" 24 | "23","181","6200002","0","0","0","1" 25 | "24","201","1120","0","1","0","0" 26 | "29","206","1133","0","1","0","0" 27 | "30","207","1135","0","0","0","1" 28 | "31","208","1136","0","0","1","0" 29 | "32","209","1137","0","0","1","0" 30 | "33","210","1138","0","1","0","0" 31 | "34","211","1141","0","0","0","1" 32 | -------------------------------------------------------------------------------- /Data/csv/NPCSHOWSCHEDULE.csv: -------------------------------------------------------------------------------- 1 | "Name","ScheduleID","ViewWeek","ViewHour","ViewMinute","HideHour","HideMinute" 2 | "1","1","0","18","0","23","59" 3 | "2","2","6","24","1","23","59" 4 | "3","3","7","24","1","1","0" 5 | "4","4","1","1","0","23","59" 6 | "5","5","2","1","0","23","59" 7 | "6","6","1","13","0","14","0" 8 | "7","7","3","13","0","14","0" 9 | "8","8","5","15","5","15","7" 10 | "9","9","5","15","10","15","12" 11 | "10","10","5","15","15","15","17" 12 | "11","11","5","15","20","15","22" 13 | "12","12","5","15","25","15","27" 14 | "13","13","0","9","30","9","40" 15 | "14","14","0","9","50","10","0" 16 | "15","15","0","10","10","10","30" 17 | "16","16","0","10","40","11","0" 18 | "17","17","0","11","10","11","30" 19 | "18","18","0","11","40","12","0" 20 | "19","19","0","13","40","14","0" 21 | "20","20","0","14","10","14","30" 22 | "21","21","0","14","40","15","0" 23 | "22","22","0","15","10","15","30" 24 | "23","23","0","15","40","16","0" 25 | "24","24","0","16","10","16","30" 26 | "25","25","0","16","40","17","0" 27 | "26","26","0","17","10","17","30" 28 | "27","27","0","17","40","18","0" 29 | "28","28","0","18","10","18","30" 30 | "29","29","0","22","0","23","0" 31 | "30","30","0","22","0","23","0" 32 | "31","31","0","22","0","23","0" 33 | -------------------------------------------------------------------------------- /Data/protobuf/packet_holy_stuff.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_HOLY_STUFF_INFO { 8 | 9 | } 10 | 11 | message GAME_CLIENT_HOLY_STUFF_INFO { 12 | repeated _holy_stuff_info _holy_stuff_infos = 1; 13 | } 14 | 15 | message CLIENT_GAME_HOLY_STUFF_SLOT_LEVELUP { 16 | int32 holy_stuff_id = 1; 17 | } 18 | 19 | message GAME_CLIENT_HOLY_STUFF_SLOT_LEVELUP { 20 | int32 result = 1; 21 | int32 holy_stuff_id = 2; 22 | _holy_stuff_slot_info holy_stuff_slot_info = 3; 23 | _cost_info cost_Infos = 4; 24 | repeated _stack_item_info del_item_list = 5; 25 | bool is_success = 6; 26 | } 27 | 28 | message CLIENT_GAME_HOLY_STUFF_GRADE_UPGRADE { 29 | int32 holy_stuff_id = 1; 30 | } 31 | 32 | message GAME_CLIENT_HOLY_STUFF_GRADE_UPGRADE { 33 | int32 result = 1; 34 | int32 holy_stuff_id = 2; 35 | int32 holy_stuff_grade = 3; 36 | _cost_info cost_Infos = 4; 37 | repeated _stack_item_info del_item_list = 5; 38 | } 39 | 40 | message CLIENT_GAME_HOLY_STUFF_OPEN { 41 | int32 holy_stuff_id = 1; 42 | } 43 | 44 | message GAME_CLIENT_HOLY_STUFF_OPEN { 45 | int32 result = 1; 46 | int32 holy_stuff_id = 2; 47 | int32 holy_stuff_grade = 3; 48 | } 49 | -------------------------------------------------------------------------------- /Data/protobuf/packet_secret_dungeon.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_ENTER_SECRET_DUNGEON { 8 | uint32 enter_secret_dungeon_id = 1; 9 | } 10 | 11 | message GAME_WORLD_ENTER_SECRET_DUNGEON { 12 | uint32 enter_secret_dungeon_id = 1; 13 | } 14 | 15 | message CLIENT_GAME_LEAVE_SECRET_DUNGEON { 16 | 17 | } 18 | 19 | message GAME_WORLD_LEAVE_SECRET_DUNGEON { 20 | uint64 cur_zone_unique = 1; 21 | } 22 | 23 | message GAME_WORLD_REQUEST_SECRET_DUNGEON_EXIT_TIME { 24 | 25 | } 26 | 27 | message WORLD_GAME_NOTIFY_SECRET_DUNGEON_EXIT_TIME { 28 | uint64 request_user_uid = 1; 29 | uint64 exit_time = 2; 30 | } 31 | 32 | message GAME_CLIENT_SECRET_DUNGEON_EXIT_TIME { 33 | uint64 exit_time = 1; 34 | } 35 | 36 | message CLIENT_GAME_SECRET_DUNGEON_TIME_EXTEND { 37 | 38 | } 39 | 40 | message GAME_CLIENT_SECRET_DUNGEON_TIME_EXTEND { 41 | uint32 result = 1; 42 | uint64 exit_time = 2; 43 | _dungeon_ticket_info dungeon_ticket_info = 3; 44 | } 45 | 46 | message GAME_WORLD_SECRET_DUNGEON_TIME_EXTEND { 47 | 48 | } 49 | 50 | message WORLD_GAME_SECRET_DUNGEON_TIME_EXTEND { 51 | uint32 result = 1; 52 | uint64 user_uid = 2; 53 | uint64 exit_time = 3; 54 | } 55 | -------------------------------------------------------------------------------- /Data/csv/CHARACTER_EMOTE.csv: -------------------------------------------------------------------------------- 1 | "Name","EmoteID","IconID","StringId","PlayLoop","Class1AnimID","Class2AnimID","Class3AnimID","Class4AnimID","Class5AnimID","Class6AnimID" 2 | "101","101","3600001","4900001","0","650000","650101","650201","650300","650401","650501" 3 | "102","102","3600002","4900002","0","650001","650102","650202","650301","650402","650502" 4 | "103","103","3600003","4900003","0","650002","650103","650203","650302","650403","650503" 5 | "104","104","3600004","4900004","1","650003","650104","650204","650303","650404","650504" 6 | "105","105","3600005","4900005","1","650004","650105","650205","650304","650405","650505" 7 | "106","106","3600006","4900006","1","650005","650106","650206","650305","650406","650506" 8 | "107","107","3600007","4900007","0","650006","650107","650207","650306","650407","650507" 9 | "108","108","3600008","4900008","0","650007","650108","650208","650307","650408","650508" 10 | "109","109","3600009","4900009","0","650008","650109","650209","650308","650409","650509" 11 | "110","110","3600010","4900010","0","650009","650110","650210","650309","650410","650510" 12 | "111","111","3600011","4900011","0","650010","650111","650211","650310","650411","650511" 13 | "112","112","3600012","4900012","0","650011","650112","650212","650311","650412","650512" 14 | -------------------------------------------------------------------------------- /Data/csv/ITEM_SMELTING_RATE.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","ItemNumber","IncreaseRate" 2 | "101","101","1","10000" 3 | "102","102","2","10700" 4 | "103","103","3","11000" 5 | "104","104","4","10000" 6 | "105","105","5","10000" 7 | "106","106","6","10000" 8 | "107","107","7","10000" 9 | "108","108","8","10100" 10 | "109","109","9","10900" 11 | "110","110","10","10900" 12 | "111","111","11","10900" 13 | "112","112","12","10000" 14 | "113","113","13","10200" 15 | "114","114","14","11100" 16 | "115","115","15","12000" 17 | "116","116","16","12000" 18 | "117","117","17","12000" 19 | "118","118","18","10000" 20 | "119","119","19","10300" 21 | "120","120","20","12300" 22 | "121","121","21","10000" 23 | "122","122","22","10400" 24 | "123","123","23","11300" 25 | "124","124","24","10500" 26 | "125","125","25","11500" 27 | "126","126","26","12600" 28 | "127","127","27","11700" 29 | "128","128","28","12900" 30 | "129","129","29","13500" 31 | "130","130","30","10000" 32 | "131","131","31","10000" 33 | "132","132","32","10000" 34 | "133","133","33","10000" 35 | "134","134","34","10000" 36 | "135","135","35","10000" 37 | "136","136","36","10000" 38 | "137","137","37","10000" 39 | "138","138","38","10000" 40 | "139","139","39","10000" 41 | "140","140","40","10000" 42 | "141","141","41","10000" 43 | -------------------------------------------------------------------------------- /Data/protobuf/packet_duel.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | message CLIENT_GAME_DUEL_REQUEST { 6 | int64 target_uid = 1; 7 | } 8 | 9 | message GAME_CLIENT_DUEL_REQUEST { 10 | int32 result = 1; 11 | int64 target_uid = 2; 12 | } 13 | 14 | message GAME_CLIENT_DUEL_REQUEST_INFO { 15 | int64 request_uid = 1; 16 | int64 request_ms_time = 2; 17 | } 18 | 19 | message CLIENT_GAME_DUEL_REQUEST_AGREE { 20 | int64 request_uid = 1; 21 | bool agree = 2; 22 | } 23 | 24 | message GAME_CLIENT_DUEL_REQUEST_AGREE { 25 | int32 result = 1; 26 | bool agree = 2; 27 | } 28 | 29 | message GAME_CLIENT_DUEL_START { 30 | int64 flag_obj_uid = 1; 31 | int64 target_uid = 2; 32 | int64 duel_ms_time = 3; 33 | } 34 | 35 | message GAME_CLIENT_DUEL_END { 36 | int64 winner_uid = 1; 37 | int64 loser_uid = 2; 38 | } 39 | 40 | message CLIENT_GAME_DUEL_GIVEUP { 41 | 42 | } 43 | 44 | message GAME_CLIENT_DUEL_UPDATE { 45 | int64 flag_obj_uid = 1; 46 | int64 target_uid = 2; 47 | } 48 | 49 | message GAME_CLIENT_DUEL_RINGOUT_TIME_START { 50 | int64 user_uid = 1; 51 | uint32 reason = 2; 52 | int64 duel_ms_time = 3; 53 | } 54 | 55 | message GAME_CLIENT_DUEL_RINGOUT_TIME_END { 56 | int64 user_uid = 1; 57 | uint32 reason = 2; 58 | } 59 | -------------------------------------------------------------------------------- /Game/Portal.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using System.Collections.Generic; 3 | 4 | namespace Mir4ClientEmulator.Game 5 | { 6 | public class Portal 7 | { 8 | public string Name { get; set; } 9 | public int PortalTriggerId { get; set; } 10 | public int CurrentStageId { get; set; } 11 | public int WarpId { get; set; } 12 | public int ArrivalStageId { get; set; } 13 | 14 | public int PositionNearPortalCheck { get; set; } 15 | 16 | public string PositionNearPortal { get; set; } //_vector3 17 | 18 | public int PortalStageType { get; set; } 19 | 20 | public int EnableLevel { get; set; } 21 | 22 | public int EnableGreatBuildingID { get; set; } 23 | 24 | public int EnableBuildingStep { get; set; } 25 | 26 | public int EnableDoingQuestType { get; set; } 27 | public List EnableDoingQuest { get; set; } 28 | public int EnableCompleteQuestType { get; set; } 29 | public int EnableCompleteQuest { get; set; } 30 | public int EnableAchievement { get; set; } 31 | 32 | public int EnableDoingBuff { get; set;} 33 | 34 | public int ContentsAdminInfoId { get; set;} 35 | 36 | public int Weigth { get; set; } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Data/csv/BUFF_GUILD_DEV.csv: -------------------------------------------------------------------------------- 1 | "Name","BuffId","BuffType","BuffTarget","ActivativeTime","StageCheckType","StageType","BuffCheckType","StageId","GuildWar","GuildWanted","GuildWar_StrongPoint","BuffConditionPartyType","BuffConditionStageType" 2 | "7000030","7000030","1","0","1","1","(0)","2","(0)","0","0","0","0","0" 3 | "7000031","7000031","1","0","1","1","(0)","2","(0)","0","0","0","0","0" 4 | "7000032","7000032","1","0","1","1","(0)","2","(0)","0","0","0","0","0" 5 | "7000033","7000033","1","0","1","1","(0)","2","(0)","0","0","0","0","0" 6 | "7000034","7000034","1","0","1","1","(0)","2","(0)","0","0","0","0","0" 7 | "7000035","7000035","1","0","1","1","(0)","2","(0)","0","0","0","0","0" 8 | "7000036","7000036","1","0","0","2","(21,52,102)","2","(0)","0","0","0","0","0" 9 | "7000037","7000037","1","0","0","2","(21,52,102)","2","(0)","0","0","0","0","0" 10 | "7000038","7000038","1","0","1","1","(0)","2","(0)","0","0","0","0","0" 11 | "7000039","7000039","1","0","1","1","(0)","2","(0)","0","0","0","0","0" 12 | "7000042","7000042","1","0","0","2","(52,102,53,101)","2","(0)","0","0","0","0","0" 13 | "7000043","7000043","1","0","0","2","(52,102,53,101)","2","(0)","0","0","0","0","0" 14 | "101","101","2","0","1","0","(0)","2","(0)","0","0","0","0","0" 15 | "500301","500301","1","1","1","0","(0)","2","(0)","0","0","0","0","0" 16 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_PLUNDER.csv: -------------------------------------------------------------------------------- 1 | "Name","PlunderId","Contents_OpenDate","StageId","StageDesSId","StageBossIconid","Defender_DominionId","ReqOffenseGuildRanking","StartDayOfWeek","ReadyTime_Sec","StartTime","RunTime_Minute","ProtectionDay","EnterWarpLocationId_Defense","EnterWarpRadius_Defencse","EnterWarpLocationId_Offense","EnterWarpRadius_Offense","ReadyZoneLocation_Defense","ReadyZoneAxisYaw_Defense","ReadyZoneDistanceX_Defense","ReadyZoneDistanceY_Defense","ReadyZoneLocation_Offense","ReadyZoneAxisYaw_Offense","ReadyZoneDistanceX_Offense","ReadyZoneDistanceY_Offense","CastleGateid","GateIconid","Bossid","BossIconid","BossPosId","Trap_OpenTime_Minute","Trapid01","Trapid01_GenPosid","Trap01_EffectLocation","Trap01_EffectRotationYaw","Trapid02","Trapid02_GenPosid","Trap02_EffectLocation","Trap02_EffectRotationYaw","RewardObjectIconId","PlunderRewardid","RewardObject_PosidMin","RewardObject_PosidMax" 2 | "3010","3010","2021-10-29 00:00","3010","5900002","640196","2001","20","5","300","22:00","60","0","307","1500","308","1500","(X=40.000000,Y=-30250.000000,Z=2010.000000)","0","7000","7000","(X=20.000000,Y=13680.000000,Z=3550.000000)","0","8000","8000","1200011","5100001","1200014","5100002","100","0","1200012","3","(X=-14590.000000,Y=-14940.000000,Z=50.000000)","0","1200013","4","(X=14470.000000,Y=-14890.000000,Z=50.000000)","0","5100003","30701","20001","20070" 3 | -------------------------------------------------------------------------------- /Data/csv/GUILD_POSITION.csv: -------------------------------------------------------------------------------- 1 | "Name","GroupId","PositionId","Number","Type","NameId","IconId","FrameId","BuffId" 2 | "1","101","10101","1","1","4741001","1370001","1370101","112021" 3 | "2","101","10102","2","0","4741002","1370002","1370102","101010" 4 | "3","101","10103","3","0","4741003","1370003","1370103","101012" 5 | "4","101","10104","4","0","4741004","1370004","1370104","110001" 6 | "5","101","10105","5","0","4741005","1370001","1370105","110005" 7 | "6","101","10106","6","0","4741006","1370002","1370106","112014" 8 | "7","101","10107","7","0","4741007","1370003","1370107","112015" 9 | "8","101","10108","8","0","4741008","1370004","1370108","102007" 10 | "9","101","10109","9","0","4741009","1370001","1370108","112021" 11 | "10","201","20101","1","1","4742001","1370001","1370101","112021" 12 | "11","201","20102","2","0","4742002","1370002","1370102","101010" 13 | "12","201","20103","3","0","4742003","1370003","1370103","101012" 14 | "13","201","20104","4","0","4742004","1370004","1370104","110001" 15 | "14","201","20105","5","0","4742005","1370001","1370105","110005" 16 | "15","201","20106","6","0","4742006","1370002","1370106","112014" 17 | "16","201","20107","7","0","4742007","1370003","1370107","112015" 18 | "17","201","20108","8","0","4742008","1370004","1370108","102007" 19 | "18","201","20109","9","0","4742009","1370004","1370108","102007" 20 | -------------------------------------------------------------------------------- /Data/csv/DECK_SYMBOL_LIST.csv: -------------------------------------------------------------------------------- 1 | "Name","SymbolId","IconId","SortOrder","DefaultSymbol" 2 | "1","1","120177","1","0" 3 | "2","2","120178","2","1" 4 | "3","3","120179","3","2" 5 | "4","4","120180","4","3" 6 | "5","5","120181","5","4" 7 | "6","6","120182","6","5" 8 | "7","7","120183","7","6" 9 | "8","8","120184","8","7" 10 | "9","9","120185","9","8" 11 | "10","10","120186","10","9" 12 | "11","11","120187","11","10" 13 | "12","12","120001","12","0" 14 | "13","13","120002","13","0" 15 | "14","14","120040","14","0" 16 | "15","15","120054","15","0" 17 | "16","16","120072","16","0" 18 | "17","17","120026","17","0" 19 | "18","18","120027","18","0" 20 | "19","19","3900010","19","0" 21 | "20","20","500043","20","0" 22 | "21","21","120062","21","0" 23 | "22","22","120009","22","0" 24 | "23","23","120010","23","0" 25 | "24","24","120073","24","0" 26 | "25","25","120003","25","0" 27 | "26","26","120004","26","0" 28 | "27","27","120014","27","0" 29 | "28","28","120011","28","0" 30 | "29","29","120013","29","0" 31 | "30","30","120077","30","0" 32 | "31","31","120083","31","0" 33 | "32","32","120084","32","0" 34 | "33","33","120113","33","0" 35 | "34","34","120110","34","0" 36 | "35","35","120098","35","0" 37 | "36","36","120030","36","0" 38 | "37","37","120109","37","0" 39 | "38","38","120097","38","0" 40 | "39","39","120162","39","0" 41 | "40","40","120104","40","0" 42 | -------------------------------------------------------------------------------- /Data/csv/NPC_ITEM_CRAFT_GROUP.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","CraftGroupId","CraftId","TabVertical" 2 | "1","1","1","1","1" 3 | "2","2","1","2","1" 4 | "3","3","1","3","1" 5 | "4","4","1","4","1" 6 | "5","5","1","5","1" 7 | "6","6","1","6","1" 8 | "7","7","1","7","1" 9 | "8","8","1","8","1" 10 | "9","9","1","9","1" 11 | "10","10","1","10","1" 12 | "11","11","1","11","1" 13 | "12","12","1","12","1" 14 | "13","13","1","13","1" 15 | "14","14","1","14","1" 16 | "15","15","2","15","1" 17 | "16","16","2","16","1" 18 | "17","17","2","17","1" 19 | "18","18","2","18","1" 20 | "19","19","2","19","2" 21 | "20","20","2","20","2" 22 | "21","21","2","21","2" 23 | "22","22","2","22","2" 24 | "23","23","2","23","2" 25 | "24","24","2","24","2" 26 | "25","25","2","25","2" 27 | "26","26","2","26","2" 28 | "27","27","2","27","2" 29 | "28","28","2","28","2" 30 | "29","29","2","14","3" 31 | "30","30","2","13","3" 32 | "31","31","2","12","3" 33 | "32","32","2","11","3" 34 | "33","33","2","10","3" 35 | "34","34","2","9","3" 36 | "35","35","2","8","3" 37 | "36","36","2","7","3" 38 | "37","37","2","6","3" 39 | "38","38","2","5","3" 40 | "39","39","2","4","3" 41 | "40","40","2","3","3" 42 | "41","41","2","2","3" 43 | "42","42","2","1","3" 44 | "43","43","1000","1003","1" 45 | "44","44","1000","1002","1" 46 | "45","45","1000","1001","1" 47 | "46","46","1000","1000","1" 48 | "47","47","1000","2003","2" 49 | -------------------------------------------------------------------------------- /Data/protobuf/packet_minion.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message GAME_CLIENT_APPEAR_MINION { 8 | int64 uid = 1; 9 | int32 classid = 2; 10 | int32 type = 3; 11 | _vector3 loc = 4; 12 | _vector3 rot = 5; 13 | int32 state = 6; 14 | int32 hp = 7; 15 | int32 ownertype = 8; 16 | int64 owneruid = 9; 17 | } 18 | 19 | message CLIENT_GAME_SYNCLIENT_GAME_MINION { 20 | int64 uid = 1; 21 | _vector3 loc = 2; 22 | _vector3 rot = 3; 23 | int32 state = 4; 24 | } 25 | 26 | message GAME_CLIENT_SYNCLIENT_GAME_MINION { 27 | int64 uid = 1; 28 | _vector3 loc = 2; 29 | _vector3 rot = 3; 30 | int32 state = 4; 31 | } 32 | 33 | message CLIENT_GAME_ATTACK_MINION { 34 | int64 uid = 1; 35 | int32 state = 2; 36 | int32 skill = 3; 37 | int32 attack_id = 4; 38 | _vector3 loc_start = 5; 39 | _vector3 loc_end = 6; 40 | repeated _attack_target_info targets = 7; 41 | uint32 cur_skill_step = 8; 42 | } 43 | 44 | message GAME_CLIENT_ATTACK_MINION { 45 | int64 uid = 1; 46 | int32 state = 2; 47 | int32 skill = 3; 48 | int32 attack_id = 4; 49 | _vector3 loc_start = 5; 50 | _vector3 loc_end = 6; 51 | repeated _attack_target_info targets = 7; 52 | uint32 cur_skill_step = 9; 53 | } 54 | 55 | message GAME_CLIENT_DIE_MINION { 56 | int64 uid = 1; 57 | } 58 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_SABUK.csv: -------------------------------------------------------------------------------- 1 | "Name","Contents_OpenDate","Contents_StartWeek","Contents_StartWeekInterval","NameSId","MapImgIconId","CaptureBanishTimeSec","BuffMonster_OpenTimeSec","BuffMonster_RegenTimeSec","PointsPerPlayerKill","WarEndAutoOutTimeSec","R1_NeedDomonionId","R1_NameSid","R1_MapImgIconId","R1_StartDay","R1_StartTime","R1_ReadyTimeMinute","R1_RunTimeMinute","R1_WinRewardId","R1_LoseRewardId","R1_MVPRewardId","R1_WinRewardGuildMoneyId01","R1_WinRewardGuildMoneyCnt01","R2_NeedOwnStageId","R2_NameSid","R2_MapImgIconId","R2_StartDay","R2_StartTime","R2_ReadyTimeMinute","R2_RunTimeMinute","R2_WinRewardId","R2_LoseRewardId","R2_MVPRewardId","R2_WinRewardGuildMoneyId01","R2_WinRewardGuildMoneyCnt01","R3_NeedOwnStageId","R3_NameSid","R3_MapImgIconId","R3_StartDay","R3_StartTime","R3_ReadyTimeMinute","R3_RunTimeMinute","R3_ExtensionTimeMinute","R3_CinematicDialogueId","R3_WinRewardId","R3_MVPRewardId","R3_LoseRewardId","R3_WinRewardGuildMoneyId01","R3_WinRewardGuildMoneyCnt01","R3_WinRewardDominionId","R3_DominionGetMailId","R3_DominionReturnMailId" 2 | "1","2023-01-27","2022-12-04","8","6200101","5500301","30","300","600","5","300","2001","6200102","5500302","0","22:00","5","60","101","0","201","92","35000","(201,202,203,204,205,206,207,208)","6200103","5500303","7","22:00","5","60","102","106","202","92","40000","(211,212,213,214)","6200104","5500304","14","22:00","5","60","10","0","103","203","104","92","50000","1001","20101","20102" 3 | -------------------------------------------------------------------------------- /Context/CBase.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using Mir4ClientEmulator.Network; 3 | using Mir4ClientEmulator.Network.Packets; 4 | using System.Threading; 5 | 6 | namespace Mir4ClientEmulator.Context 7 | { 8 | public abstract class CBase 9 | { 10 | public Client Client { get; private set; } 11 | 12 | private Session m_session; 13 | 14 | public CBase(Client client, Session session) 15 | { 16 | Client = client; 17 | 18 | m_session = session; 19 | m_session.OnPacket += (s, e) => HandlePacket(e); 20 | m_session.OnDisconnected += (s, e) => HandleDisconnected(e); 21 | 22 | HandleConnected(); 23 | 24 | Thread recvThread = new Thread(new ThreadStart(m_session.Receive)); 25 | recvThread.Start(); 26 | } 27 | 28 | public abstract void HandleConnected(); 29 | public abstract void HandlePacket(Reader packet); 30 | public abstract void HandleDisconnected(bool byChoice); 31 | 32 | public void Send(Writer packet) 33 | { 34 | if (m_session != null) 35 | m_session.SendPacket(packet); 36 | } 37 | 38 | public void Disconnect() 39 | { 40 | m_session.Disconnect(); 41 | Client.UIMessages.Enqueue("[WARNING] Client was disconnected!"); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Data/csv/INVENTORY_ORDER.csv: -------------------------------------------------------------------------------- 1 | "Name","InventoryOrderID","MainType","SubType" 2 | "1","1","2","0" 3 | "2","2","2","1" 4 | "3","3","2","2" 5 | "4","4","2","3" 6 | "5","5","2","4" 7 | "6","6","2","5" 8 | "7","7","3","1" 9 | "8","8","3","2" 10 | "9","9","3","3" 11 | "10","10","3","4" 12 | "11","11","4","1" 13 | "12","12","4","2" 14 | "13","13","4","3" 15 | "14","14","9","3" 16 | "15","15","9","4" 17 | "16","16","9","5" 18 | "17","17","9","2" 19 | "18","18","9","1" 20 | "19","19","14","1" 21 | "20","20","5","23" 22 | "21","21","5","8" 23 | "22","22","5","21" 24 | "23","23","7","1" 25 | "24","24","5","16" 26 | "25","25","5","17" 27 | "26","26","5","1" 28 | "27","27","5","12" 29 | "28","28","12","1" 30 | "29","29","12","2" 31 | "30","30","12","3" 32 | "31","31","12","2" 33 | "32","32","12","3" 34 | "33","33","13","1" 35 | "34","34","8","31" 36 | "35","35","8","1" 37 | "36","36","8","2" 38 | "37","37","8","3" 39 | "38","38","8","4" 40 | "39","39","8","5" 41 | "40","40","8","6" 42 | "41","41","8","7" 43 | "42","42","8","8" 44 | "43","43","17","1" 45 | "44","44","17","2" 46 | "45","45","6","1" 47 | "46","46","6","2" 48 | "47","47","6","4" 49 | "48","48","6","5" 50 | "49","49","6","6" 51 | "50","50","6","11" 52 | "51","51","6","12" 53 | "52","52","6","13" 54 | "53","53","6","14" 55 | "54","54","6","16" 56 | "55","55","6","18" 57 | "56","56","6","20" 58 | "57","57","6","21" 59 | "58","58","6","22" 60 | -------------------------------------------------------------------------------- /Data/csv/CLIENT_ERROR_STRING.csv: -------------------------------------------------------------------------------- 1 | "Name","ErrorString" 2 | "MonsterTableError","몬스터 테이블에 %d ID가 없습니다" 3 | "TotemTableError","토템 테이블에 %d ID가 없습니다" 4 | "NpcTableError","NPC 테이블에 %d ID가 없습니다" 5 | "CinematicTableError","대화연출 테이블에 %d ID가 없습니다" 6 | "LevelSequenceLoadFail","레벨 시퀀스 로드 실패 SequencePlay 테이블 확인해주세요 \r\n ID %d \r\n 경로 : %s" 7 | "ResourceAssetLoadFail","리소스 로드를 실패하였습니다 데이터 확인해주세요 \r\n 경로 : %s" 8 | "ShowEffectLoadFail","SHOWEFFECT 스크립트 이펙트 로드를 실패하였습니다 \r\n EffectID : %d" 9 | "DoorObjectNotFound","DoorObject 를 찾을 수 없습니다 DoorObject ID 및 트리거 레벨 을 확인해주세요 \r\n DoorObjectID : %d" 10 | "ScriptNotExist","존재하지 않는 스크립트 입니다. \r\n %s" 11 | "MeshAsyncFailSyncSucess","비동기 로드 실패, 동기 로드는 성공 \r\n 테이블 ID %d \r\n 경로 : %s" 12 | "MeshSyncLoadFail","동기 로드 실패 \r\n 테이블ID : %d \r\n 경로 : %s" 13 | "DontDestroyTalkingNpc","대화 중에 NPC를 삭제 하시면 안됩니다." 14 | "PhasingTriggerError","일반 레벨에서 위상 트리거 사용 하시면 안됩니다 : %s" 15 | "AutoFlightIDError","자동 경공 테이블에 %d ID가 없습니다" 16 | "AutoFlightPathError","자동 경공 경로에 문제가 있습니다 ID : %d" 17 | "QuestLocationError","퀘스트 완료 좌표는 <자동 이동> 할 수 없으므로, 기획 데이터 확인해주세요." 18 | "NavMeshError","네비메쉬에 문제가 있습니다.\r\n레벨 이름 : %s\r\n네비메쉬가 검색된 좌표\r\n%s\r\n%s\r\n%s" 19 | "VerticesNumberError","커스터마이징 메쉬 버텍스 개수가 다릅니다\r\n%s\r\n%s" 20 | "BGMTriggerEmpty","BGM 트리거에 BGM 사운드가 비어있습니다\r\n액터 이름 : %s" 21 | "LocalSaveNull","로컬 세이브 데이터를 로드 하기 전에 사용 하면 안됩니다 순서 확인해주세요" 22 | "PresetGroupIDError","커스터마이징 프리셋 그룹 아이디가 없습니다\r\nCustomizingPreset 테이블 확인해주세요\r\n그룹아이디 : %d" 23 | -------------------------------------------------------------------------------- /Data/protobuf/packet_gacha.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_GACHA_INFO { 8 | 9 | } 10 | 11 | message GAME_CLIENT_GACHA_INFO { 12 | repeated _gacha_info gacha_info_list = 1; 13 | } 14 | 15 | message CLIENT_GAME_GACHA_PULL { 16 | uint32 gacha_type = 1; 17 | uint32 gacha_pull_type = 2; 18 | uint32 money_type = 3; 19 | bool is_many_count = 4; 20 | uint32 shop_goods_id = 5; 21 | uint32 shop_goods_ver = 6; 22 | } 23 | 24 | message GAME_CLIENT_GACHA_PULL { 25 | int32 result = 1; 26 | _gacha_info gacha_info = 2; 27 | repeated _cost_info costInfos = 3; 28 | repeated _character_inven_item update_items = 4; 29 | _stack_item_info use_item_info = 5; 30 | repeated _simple_item_info gacha_items = 6; 31 | uint32 gacha_pull_type = 7; 32 | } 33 | 34 | message GAME_CLIENT_GACHA_PULL_EVENT { 35 | int32 result = 1; 36 | _user_event_info event_info = 2; 37 | repeated _cost_info costInfos = 3; 38 | repeated _character_inven_item update_items = 4; 39 | _stack_item_info use_item_info = 5; 40 | repeated _simple_item_info gacha_items = 6; 41 | uint32 gacha_pull_type = 7; 42 | } 43 | 44 | message GAME_CLIENT_BONUS_GACHA_EVENT_START { 45 | repeated int32 gacha_types = 1; 46 | uint64 end_time = 2; 47 | } 48 | 49 | message GAME_CLIENT_BONUS_GACHA_EVENT_END { 50 | repeated int32 gacha_types = 1; 51 | } 52 | -------------------------------------------------------------------------------- /Data/csv/MONTAGE.csv: -------------------------------------------------------------------------------- 1 | "Name","MontageId","FileName","MontageGroup" 2 | "1215","1215","AnimMontage'/Game/Animation/Montage/NPC/ActorPC/PCw_Actor_Med.PCw_Actor_Med'","1000" 3 | "2215","2215","AnimMontage'/Game/Animation/Montage/NPC/ActorPC/PCm_Actor_Med.PCm_Actor_Med'","2000" 4 | "3215","3215","AnimMontage'/Game/Animation/Montage/NPC/ActorPC/PCt_Actor_Med.PCt_Actor_Med'","3000" 5 | "4215","4215","AnimMontage'/Game/Animation/Montage/NPC/ActorPC/PCa_Actor_Med.PCa_Actor_Med'","4000" 6 | "5215","5215","AnimMontage'/Game/Animation/Montage/NPC/ActorPC/Pcz_Actor_Med.PCz_Actor_Med'","5000" 7 | "1057","1057","AnimMontage'/Game/Animation/Montage/PC/PCw/M_PCw_Ch.M_PCw_Ch'","1000" 8 | "2057","2057","AnimMontage'/Game/Animation/Montage/PC/PCm/M_PCm_Ch.M_PCm_Ch'","2000" 9 | "3057","3057","AnimMontage'/Game/Animation/Montage/PC/PCt/M_PCt_Ch.M_PCt_Ch'","3000" 10 | "4057","4057","AnimMontage'/Game/Animation/Montage/PC/PCa/M_PCa_Ch.M_PCa_Ch'","4000" 11 | "5057","5057","AnimMontage'/Game/Animation/Montage/PC/PCz/M_PCz_Ch.M_PCz_Ch'","5000" 12 | "1217","1217","AnimMontage'/Game/Animation/Montage/PC/PCw/M_PCw_WarpEnd.M_PCw_WarpEnd'","1000" 13 | "2217","2217","AnimMontage'/Game/Animation/Montage/PC/PCm/M_PCm_WarpEnd.M_PCm_WarpEnd'","2000" 14 | "3217","3217","AnimMontage'/Game/Animation/Montage/PC/PCt/M_PCt_WarpEnd.M_PCt_WarpEnd'","3000" 15 | "4217","4217","AnimMontage'/Game/Animation/Montage/PC/PCa/M_PCa_WarpEnd.M_PCa_WarpEnd'","4000" 16 | "5217","5217","AnimMontage'/Game/Animation/Montage/PC/PCz/M_PCz_WarpEnd.M_PCz_WarpEnd'","5000" 17 | -------------------------------------------------------------------------------- /Data/csv/CHANNEL.csv: -------------------------------------------------------------------------------- 1 | "Name","ChannelId","StageId","Ch_Type","Ch_DefaultCount","Ch_DefaultAddCnt","Ch_MaxCount","Sync_RecommendCount","Sync_MaxCount","IsWatingCh" 2 | "1001","1001","1001","2","99","100","99","200","250","0" 3 | "1002","1002","1002","2","30","100","30","350","400","0" 4 | "1003","1003","1003","2","1","0","1","1","1","0" 5 | "1004","1004","1004","2","30","100","30","300","400","0" 6 | "1005","1005","1005","2","200","50","200","70","100","0" 7 | "1006","1006","1006","1","1","300","1","400","450","1" 8 | "2001","2001","2001","2","99","100","99","200","250","0" 9 | "2002","2002","2002","2","1","300","1","400","450","1" 10 | "2003","2003","2003","2","1","300","1","400","450","1" 11 | "2004","2004","2004","2","10","30","10","50","70","0" 12 | "2005","2005","2005","1","1","300","1","400","450","1" 13 | "2006","2006","2006","1","1","300","1","400","450","1" 14 | "2007","2007","2007","2","10","100","10","110","120","0" 15 | "4001","4001","4001","1","1","150","1","200","400","1" 16 | "4002","4002","4002","1","1","150","1","200","300","1" 17 | "6001","6001","6001","1","1","150","1","200","300","1" 18 | "30001","30001","30001","2","2","15","10","30","50","0" 19 | "90001","90001","90001","1","1","0","1","300","300","0" 20 | "90002","90002","90002","1","1","400","1","400","500","0" 21 | "90011","90011","90011","1","1","400","1","400","401","1" 22 | "90021","90021","90021","1","1","400","1","400","401","1" 23 | "90031","90031","90031","1","1","400","1","400","401","0" 24 | "100001","100001","1001","2","1","300","1","400","450","1" 25 | -------------------------------------------------------------------------------- /Data/csv/ITEM_SET.csv: -------------------------------------------------------------------------------- 1 | "Name","SetGroupId","NameSid","ItemId01","ItemId02","ItemId03","ItemId04","ItemId05","ItemId06","ItemId07","ItemId08","Bonus01Count","Bonus01AttributeType","Bonus01Value","Bonus02Count","Bonus02AttributeType","Bonus02Value","Bonus03Count","Bonus03AttributeType","Bonus03Value" 2 | "101301","101301","1501111","0","0","0","0","0","0","0","0","2","6","400","3","1","650","4","20","65" 3 | "101401","101401","1501112","0","0","0","0","0","0","0","0","2","6","850","3","1","1415","4","20","145" 4 | "101501","101501","1501113","0","0","0","0","0","0","0","0","2","6","1250","3","1","2100","4","20","205" 5 | "101601","101601","1501114","0","0","0","0","0","0","0","0","2","6","1700","3","1","2850","4","20","280" 6 | "201301","201301","1502111","0","0","0","0","0","0","0","0","2","6","400","3","1","650","4","22","32" 7 | "201401","201401","1502112","0","0","0","0","0","0","0","0","2","6","850","3","1","1415","4","22","72" 8 | "201501","201501","1502113","0","0","0","0","0","0","0","0","2","6","1250","3","1","2100","4","22","102" 9 | "201601","201601","1502114","0","0","0","0","0","0","0","0","2","6","1700","3","1","2850","4","22","140" 10 | "301301","301301","1503111","0","0","0","0","0","0","0","0","2","6","400","3","20","32","4","22","32" 11 | "301401","301401","1503112","0","0","0","0","0","0","0","0","2","6","850","3","20","72","4","22","72" 12 | "301501","301501","1503113","0","0","0","0","0","0","0","0","2","6","1250","3","20","102","4","22","102" 13 | "301601","301601","1503114","0","0","0","0","0","0","0","0","2","6","1700","3","20","140","4","22","140" 14 | -------------------------------------------------------------------------------- /Data/csv/POTENTIAL_NODEUI.csv: -------------------------------------------------------------------------------- 1 | "Name","RowID","Node_Category","Node_Grade","UmgName","StateLock_IconId","StateOpen_IconId","StateGrow_IconId","StateDone_IconId" 2 | "1","1","1","1","Potential_Node","5700001","5700011","5700021","5700031" 3 | "2","2","1","2","Potential_Node","5700002","5700012","5700022","5700032" 4 | "3","3","1","3","Potential_Node","5700003","5700013","5700023","5700033" 5 | "4","4","1","4","Potential_Node","5700004","5700014","5700024","5700034" 6 | "101","101","2","1","Potential_Node","5700001","5700041","5700051","5700061" 7 | "102","102","2","2","Potential_Node","5700002","5700042","5700052","5700062" 8 | "103","103","2","3","Potential_Node","5700003","5700043","5700053","5700063" 9 | "104","104","2","4","Potential_Node","5700004","5700044","5700054","5700064" 10 | "201","201","3","1","Potential_Node","5700001","5700071","5700081","5700091" 11 | "202","202","3","2","Potential_Node","5700002","5700072","5700082","5700092" 12 | "203","203","3","3","Potential_Node","5700003","5700073","5700083","5700093" 13 | "204","204","3","4","Potential_Node","5700004","5700074","5700084","5700094" 14 | "301","301","1","5","Potential_Node","5701001","5701011","5701021","5701031" 15 | "302","302","1","5","Potential_Node","5701002","5701012","5701022","5701032" 16 | "303","303","2","5","Potential_Node","5701003","5701013","5701023","5701033" 17 | "304","304","2","5","Potential_Node","5701004","5701014","5701024","5701034" 18 | "305","305","3","5","Potential_Node","5701005","5701015","5701025","5701035" 19 | "306","306","3","5","Potential_Node","5701006","5701016","5701026","5701036" 20 | -------------------------------------------------------------------------------- /Data/csv/EVENT_DROP.csv: -------------------------------------------------------------------------------- 1 | "Name","EevenDropId","DropEventType","DropItemId","LimitCountType","LimitCountValue","DropRate","DropStageType","DropItemGroupId" 2 | "5","10004","1","601203003","2","100","222","(1,11,12,13,14,103,104)","(0)" 3 | "7","10006","1","1301201552","2","500","3334","(1,11,12,13,14)","(0)" 4 | "8","10007","1","601203006","2","1000","3334","(1,11,12,13,14)","(0)" 5 | "9","10008","1","1301201713","2","300","1000","(1,11,12,13,14)","(0)" 6 | "10","10009","1","601203008","2","1000","3334","(1,11,12,13,14)","(0)" 7 | "16","10015","2","0","0","0","0","(1,11,12,13,14)","(10092000,10092001,10092002,10092003,10092004,10092005,10092006,10092007,10092008)" 8 | "11","10010","1","601203012","2","1000","3334","(1,11,12,13,14)","(0)" 9 | "12","10011","1","601203014","2","1000","3334","(1,11,12,13,14)","(0)" 10 | "13","10012","1","601203015","2","1000","3334","(1,11,12,13,14,103,104)","(0)" 11 | "14","10013","1","601203017","2","1000","3334","(1,11,12,13,14,103,104)","(0)" 12 | "17","10016","2","0","0","0","0","(103,104)","(10092010,10092011,10092012,10092013,10092014,10092015,10092016,10092017,10092018)" 13 | "18","10017","1","601203020","2","1000","3334","(1,11,12,13,14,103,104)","(0)" 14 | "19","10018","1","601203021","2","1000","3334","(1,11,12,13,14,103,104)","(0)" 15 | "20","10019","1","601203023","2","1000","3334","(1,11,12,13,14,103,104)","(0)" 16 | "21","10020","1","601203024","2","1000","3334","(1,11,12,13,14,103,104)","(0)" 17 | "22","10021","1","602202769","2","30","100","(1,11,12,13,14,103,104)","(0)" 18 | "23","10022","1","601203028","2","1000","3334","(1,11,12,13,14,103,104)","(0)" 19 | -------------------------------------------------------------------------------- /Data/protobuf/packet_magic_square.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_CHANGE_ROOM_IN_MAGIC_SQUARE { 8 | 9 | } 10 | 11 | message GAME_WORLD_CHANGE_ROOM_IN_MAGIC_SQUARE { 12 | uint32 magic_square_id = 1; 13 | uint32 location_id = 2; 14 | } 15 | 16 | message CLIENT_GAME_LEAVE_MAGIC_SQUARE { 17 | 18 | } 19 | 20 | message GAME_WORLD_LEAVE_MAGIC_SQUARE { 21 | uint32 cur_zone_unique = 1; 22 | } 23 | 24 | message CLIENT_GAME_ENTER_MAGIC_SQUARE { 25 | uint32 magic_square_id = 1; 26 | } 27 | 28 | message GAME_WORLD_ENTER_MAGIC_SQUARE { 29 | uint32 magic_square_id = 1; 30 | uint32 enter_location_id = 2; 31 | } 32 | 33 | message GAME_WORLD_REQUEST_MAGIC_SQURE_EXIT_TIME { 34 | 35 | } 36 | 37 | message WORLD_GAME_NOTIFY_MAGIC_SQUARE_EXIT_TIME { 38 | uint64 request_user_uid = 1; 39 | uint64 exit_time = 2; 40 | } 41 | 42 | message GAME_CLIENT_MAGIC_SQUARE_TIME { 43 | uint64 exit_time = 1; 44 | uint64 warp_available_time = 2; 45 | } 46 | 47 | message GAME_CLIENT_FAIL_MAGIC_SQUARE_ROOM_CHANGE { 48 | uint32 fail_reason = 1; 49 | } 50 | 51 | message CLIENT_GAME_MAGIC_SQUARE_TIME_EXTEND { 52 | 53 | } 54 | 55 | message GAME_CLIENT_MAGIC_SQUARE_TIME_EXTEND { 56 | int32 result = 1; 57 | uint64 exit_time = 2; 58 | _dungeon_ticket_info dungeon_ticket_info = 3; 59 | } 60 | 61 | message GAME_WORLD_MAGIC_SQUARE_TIME_EXTEND { 62 | 63 | } 64 | 65 | message WORLD_GAME_MAGIC_SQUARE_TIME_EXTEND { 66 | int32 result = 1; 67 | uint64 user_uid = 2; 68 | uint64 exit_time = 3; 69 | } 70 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_ALTAR.csv: -------------------------------------------------------------------------------- 1 | "Name","GuildAltarId","StageId","StageGroupName","StageName","Altar_ObjectId","Altar_ObjectPosId","Altar_MonsterId","Altar_MonsterPosId","RewardBuffGroup","RewardBuffPriority","RewardGuildBuffId","RewardServerBuffId" 2 | "1","1","301011010","913003","6500001","900003101","900003101","1110101","1110101","1","1","10002001","10002101" 3 | "2","2","301011020","913003","6500002","900003101","900003101","1110101","1110101","1","2","10002002","10002102" 4 | "3","3","301011030","913003","6500003","900003101","900003101","1110101","1110101","1","3","10002003","10002103" 5 | "4","4","301011040","913003","6500004","900003101","900003101","1110101","1110101","1","4","10002004","10002104" 6 | "101","101","201500010","913004","6500101","900003101","900003101","1110101","1110101","2","1","10002005","10002105" 7 | "102","102","201500020","913004","6500102","900003101","900003101","1110101","1110101","2","2","10002006","10002106" 8 | "103","103","201500030","913004","6500103","900003101","900003101","1110101","1110101","2","3","10002007","10002107" 9 | "104","104","201500040","913004","6500104","900003101","900003101","1110101","1110101","2","4","10002008","10002108" 10 | "201","201","301031010","913013","6500201","900003101","900003101","1110101","1110101","3","1","10002009","10002109" 11 | "202","202","301031020","913013","6500202","900003101","900003101","1110101","1110101","3","2","10002010","10002110" 12 | "203","203","301031030","913013","6500203","900003101","900003101","1110101","1110101","3","3","10002011","10002111" 13 | "204","204","301031040","913013","6500204","900003101","900003101","1110101","1110101","3","4","10002012","10002112" 14 | -------------------------------------------------------------------------------- /Data/csv/GREAT_BUILDING.csv: -------------------------------------------------------------------------------- 1 | "Name","GreatBuildingId","BuildingMaxStep","BuildingIcon","BuildingName","OpenConditionType01","OpenConditionValue01","OpenConditionNum01","OpenConditionText01","OpenConditionContentsId01","OpenConditionType02","OpenConditionValue02","OpenConditionNum02","OpenConditionText02","OpenConditionContentsId02","OpenConditionType03","OpenConditionValue03","OpenConditionNum03","OpenConditionText03","OpenConditionContentsId03" 2 | "1000000","1000000","25","3900003","5000001","4","1","102007700","0","0","0","0","0","0","0","0","0","0","0","0" 3 | "2000000","2000000","25","3900002","5000002","1","30","0","0","0","2","98002001","0","1415199","0","0","0","0","0","0" 4 | "3000000","3000000","25","3900001","5000003","1","30","0","0","0","4","1","102010280","0","0","2","98003101","0","1415131","0" 5 | "4000000","4000000","25","3900005","5000004","1","32","0","0","0","2","98005001","0","1415114","0","0","0","0","0","0" 6 | "5000000","5000000","25","3900008","5000005","1","34","0","0","0","4","1","102010650","0","0","2","98006201","0","1416247","0" 7 | "6000000","6000000","25","3900004","5000006","3","1000000","1","1402001","5400","0","0","0","0","0","0","0","0","0","0" 8 | "7000000","7000000","25","3900007","5000007","1","34","0","0","0","2","98004101","0","1415117","0","0","0","0","0","0" 9 | "8000000","8000000","25","3900009","5000008","1","36","0","0","0","2","98009000","0","1416159","2800","0","0","0","0","0" 10 | "9000000","9000000","25","3900006","5000009","1","32","0","0","0","2","98007201","0","1415223","0","0","0","0","0","0" 11 | "10000000","10000000","13","3900021","5000102","1","60","0","0","0","2","98009209","0","1416136","0","3","9000000","7","1402807","5400" 12 | -------------------------------------------------------------------------------- /Data/csv/ITEM_MAGICORB_OPTION_CHANGE.csv: -------------------------------------------------------------------------------- 1 | "Name","RowId","Grade","Level","NeedItemUseId01","NeedItemCount01","NeedCostType01","NeedCostCount01","NeedCostType02","NeedCostCount02" 2 | "401","401","4","1","503300001","1","23","1","11","10000" 3 | "402","402","4","2","503300001","1","23","1","11","10000" 4 | "403","403","4","3","503300001","1","23","1","11","10000" 5 | "404","404","4","4","503300001","1","23","1","11","10000" 6 | "405","405","4","5","503300001","1","23","1","11","10000" 7 | "406","406","4","6","503300001","2","23","1","11","10000" 8 | "407","407","4","7","503300001","2","23","1","11","10000" 9 | "408","408","4","8","503300001","2","23","1","11","10000" 10 | "409","409","4","9","503300001","3","23","1","11","10000" 11 | "410","410","4","10","503300001","3","23","1","11","10000" 12 | "411","411","4","11","503300001","3","23","1","11","10000" 13 | "412","412","4","12","503300001","3","23","1","11","10000" 14 | "501","501","5","1","503300001","10","23","5","11","50000" 15 | "502","502","5","2","503300001","10","23","5","11","50000" 16 | "503","503","5","3","503300001","10","23","5","11","50000" 17 | "504","504","5","4","503300001","10","23","5","11","50000" 18 | "505","505","5","5","503300001","10","23","5","11","50000" 19 | "506","506","5","6","503300001","20","23","5","11","50000" 20 | "507","507","5","7","503300001","20","23","5","11","50000" 21 | "508","508","5","8","503300001","20","23","5","11","50000" 22 | "509","509","5","9","503300001","30","23","5","11","50000" 23 | "510","510","5","10","503300001","30","23","5","11","50000" 24 | "511","511","5","11","503300001","30","23","5","11","50000" 25 | "512","512","5","12","503300001","30","23","5","11","50000" 26 | -------------------------------------------------------------------------------- /Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using System.Reflection; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | // General Information about an assembly is controlled through the following 7 | // set of attributes. Change these attribute values to modify the information 8 | // associated with an assembly. 9 | [assembly: AssemblyTitle("M4 Power Gather")] 10 | [assembly: AssemblyDescription("Network-only bot for Mir4")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("Better Bots Co.")] 13 | [assembly: AssemblyProduct("Mir4ClientEmulator")] 14 | [assembly: AssemblyCopyright("Copyright ©Better Bots Co. 2024")] 15 | [assembly: AssemblyTrademark("Better Bots Co.")] 16 | [assembly: AssemblyCulture("")] 17 | 18 | // Setting ComVisible to false makes the types in this assembly not visible 19 | // to COM components. If you need to access a type in this assembly from 20 | // COM, set the ComVisible attribute to true on that type. 21 | [assembly: ComVisible(false)] 22 | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM 24 | [assembly: Guid("dfcfd946-f2fd-4a0e-8e9f-1ca055d00b49")] 25 | 26 | // Version information for an assembly consists of the following four values: 27 | // 28 | // Major Version 29 | // Minor Version 30 | // Build Number 31 | // Revision 32 | // 33 | // You can specify all the values or you can default the Build and Revision Numbers 34 | // by using the '*' as shown below: 35 | // [assembly: AssemblyVersion("1.0.*")] 36 | [assembly: AssemblyVersion("1.0.0.0")] 37 | [assembly: AssemblyFileVersion("1.0.0.0")] 38 | -------------------------------------------------------------------------------- /Data/csv/MOVIEPLAY.csv: -------------------------------------------------------------------------------- 1 | "Name","MoviePlayId","SkipDelay","MoviePath","SubtitlePath" 2 | "1","1","1","/Game/Movies/LogoMovieMediaSource.LogoMovieMediaSource","0" 3 | "2","2","1","/Game/Movies/intro.intro","/Game/Movies/intro_KOR.intro_KOR" 4 | "3","3","1","/Game/Movies/T00-03.T00-03","/Game/Movies/T00-03_KOR.T00-03_KOR" 5 | "4","4","1","/Game/Movies/Intro_02.Intro_02","/Game/Movies/Intro_02_KOR.Intro_02_KOR" 6 | "5","5","1","/Game/Movies/PCA_Class_Info","0" 7 | "6","6","1","/Game/Movies/PCW_Class_Info","0" 8 | "7","7","1","/Game/Movies/PCM_Class_Info","0" 9 | "8","8","1","/Game/Movies/PCT_Class_Info","0" 10 | "9","9","1","/Game/Movies/intro_text.intro_text","0" 11 | "11","11","1","/Game/Movies/PCZ_Class_Info","0" 12 | "12","12","1","/Game/Movies/T07_06","/Game/Movies/T07_06_KOR.T07_06_KOR" 13 | "13","13","1","/Game/Movies/T08_06","/Game/Movies/T08-06_KOR.T08-06_KOR" 14 | "14","14","1","/Game/Movies/InAppAd01","0" 15 | "15","15","1","/Game/Movies/InAppAd02","0" 16 | "16","16","1","/Game/Movies/InAppAd03","0" 17 | "17","17","1","/Game/Movies/T10_01","/Game/Movies/T10_01_KOR.T10_01_KOR" 18 | "18","18","1","/Game/Movies/T10_02","/Game/Movies/T10_02_KOR.T10_02_KOR" 19 | "19","19","1","/Game/Movies/T10_03","/Game/Movies/T10_03_KOR.T10_03_KOR" 20 | "20","20","1","/Game/Movies/T10_10","/Game/Movies/T10_10_KOR.T10_10_KOR" 21 | "21","21","1","/Game/Movies/T10_05","/Game/Movies/T10_05_KOR.T10_05_KOR" 22 | "22","22","1","/Game/Movies/PCD_Class_Info","0" 23 | "23","23","20","/Game/Movies/Render_Sabuk_Siege1_victory_R","0" 24 | "24","24","20","/Game/Movies/Render_Sabuk_Siege1_victory_B","0" 25 | "25","25","20","/Game/Movies/Render_Sabuk_Siege1_victory_G","0" 26 | "26","26","20","/Game/Movies/Render_Sabuk_Siege1_victory_Y","0" 27 | "27","27","5","/Game/Movies/Refine_Effect","0" 28 | -------------------------------------------------------------------------------- /Data/protobuf/packet_force.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_FORCE_LEARN { 8 | int32 force_id = 1; 9 | } 10 | 11 | message GAME_CLIENT_FORCE_LEARN { 12 | int32 result = 1; 13 | _force_info data = 2; 14 | repeated _stack_item_info del_item_list = 3; 15 | } 16 | 17 | message GAME_CLIENT_FORCE_UPDATE { 18 | int32 update_state = 1; 19 | _force_info data = 2; 20 | } 21 | 22 | message CLIENT_GAME_FORCE_BLOOD_UPGRADE { 23 | int32 force_id = 1; 24 | int32 blood_slot_id = 2; 25 | } 26 | 27 | message GAME_CLIENT_FORCE_BLOOD_UPGRADE { 28 | int32 result = 1; 29 | _force_blood_info data = 2; 30 | _cost_info cost_info = 3; 31 | repeated _force_info slump_force_list = 4; 32 | repeated _stack_item_info del_item_list = 5; 33 | } 34 | 35 | message CLIENT_GAME_FORCE_CURE { 36 | 37 | } 38 | 39 | message GAME_CLIENT_FORCE_CURE { 40 | int32 result = 1; 41 | repeated _stack_item_info del_item_list = 2; 42 | repeated _force_info update_force_list = 3; 43 | } 44 | 45 | message CLIENT_GAME_FORCE_UPGRADE { 46 | int32 force_id = 1; 47 | } 48 | 49 | message GAME_CLIENT_FORCE_UPGRADE { 50 | int32 result = 1; 51 | _force_info data = 2; 52 | repeated _stack_item_info del_item_list = 3; 53 | repeated _cost_info cost_info = 4; 54 | } 55 | 56 | message CLIENT_GAME_FORCE_UPGRADE_APPLY { 57 | int32 force_id = 1; 58 | int32 apply_type = 2; 59 | } 60 | 61 | message GAME_CLIENT_FORCE_UPGRADE_APPLY { 62 | int32 result = 1; 63 | _force_info data = 2; 64 | repeated _stack_item_info del_item_list = 3; 65 | } 66 | 67 | message GAME_CLIENT_FORCE_SLUMP_TIME_UPDATE { 68 | int32 update_state = 1; 69 | int32 slump_time = 2; 70 | int32 reflow_time = 3; 71 | } 72 | -------------------------------------------------------------------------------- /Data/protobuf/packet_casting.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_START_CASTING { 8 | uint64 casting_user_uid = 1; 9 | int32 casting_type = 2; 10 | uint64 casting_target_uid = 3; 11 | uint32 casting_sub_type = 4; 12 | uint32 casting_exec_type = 5; 13 | bool is_auto_casting = 6; 14 | } 15 | 16 | message GAME_CLIENT_START_CASTING { 17 | uint64 casting_user_uid = 1; 18 | int32 casting_target_type = 2; 19 | uint64 casting_target_uid = 3; 20 | int32 casting_time = 4; 21 | int32 casting_type = 5; 22 | bool is_auto_casting = 6; 23 | int32 casting_sub_type = 7; 24 | _vector3 position = 8; 25 | bool steal_protected = 9; 26 | } 27 | 28 | message GAME_CLIENT_CASTING_FAIL { 29 | uint64 casting_user_uid = 1; 30 | int32 fail_reason = 2; 31 | int32 casting_type = 3; 32 | uint64 casting_target_uid = 4; 33 | uint64 fail_reason_arg = 5; 34 | uint64 use_user_uid = 6; 35 | } 36 | 37 | message GAME_CLIENT_CASTING_SUCCESS { 38 | uint64 uid = 1; 39 | int32 casting_type = 2; 40 | uint64 casting_target_uid = 3; 41 | int32 casting_success_value = 4; 42 | bool is_auto_casting = 5; 43 | int32 casting_sub_type = 6; 44 | } 45 | 46 | message GAME_CLIENT_CANCEL_CASTING { 47 | uint64 casting_user_uid = 1; 48 | int32 casting_type = 2; 49 | int32 cancel_reason = 3; 50 | } 51 | 52 | message GAME_CLIENT_END_CASTING { 53 | uint64 casting_user_uid = 1; 54 | int32 casting_type = 2; 55 | bool is_auto_casting = 3; 56 | } 57 | 58 | message CLIENT_GAME_CANCEL_CASTING { 59 | 60 | } 61 | 62 | message GAME_CLIENT_CHANGE_CASTING_TIME { 63 | int32 casting_target_type = 1; 64 | uint64 casting_target_uid = 2; 65 | int32 casting_time = 3; 66 | } 67 | -------------------------------------------------------------------------------- /Data/protobuf/packet_buff.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message GAME_CLIENT_ATTACH_BUFF { 8 | int32 type = 1; 9 | uint64 uid = 2; 10 | _buff_info attach_buff_info = 3; 11 | _buff_special_effect_info special_effect_info = 4; 12 | } 13 | 14 | message GAME_CLIENT_DETACH_BUFF { 15 | int32 type = 1; 16 | uint64 uid = 2; 17 | int32 buff_id = 3; 18 | } 19 | 20 | message GAME_CLIENT_BUFF_LIST { 21 | int32 type = 1; 22 | uint64 uid = 2; 23 | repeated _buff_info buff_list = 3; 24 | } 25 | 26 | message CLIENT_GAME_BUFF_LIST { 27 | uint64 user_uid = 1; 28 | } 29 | 30 | message GAME_CLIENT_ATTACH_SPECIAL_EFFECT { 31 | int32 type = 1; 32 | uint64 uid = 2; 33 | repeated _buff_special_effect_info special_effect_info = 3; 34 | } 35 | 36 | message GAME_CLIENT_DETACH_SPECIAL_EFFECT { 37 | int32 type = 1; 38 | uint64 uid = 2; 39 | repeated _buff_special_effect_info special_effect_info = 3; 40 | } 41 | 42 | message GAME_CLIENT_BUFF_ATTACK { 43 | int32 entity_type = 1; 44 | uint64 entity_uid = 2; 45 | int32 buff_attack_id = 3; 46 | } 47 | 48 | message GAME_CLIENT_BUFF_ATTACK_STRUCK { 49 | int32 target_type = 1; 50 | uint64 target_uid = 2; 51 | int32 attacker_type = 3; 52 | uint64 attacker_uid = 4; 53 | int32 buff_attack_id = 5; 54 | int32 damage_type = 6; 55 | int32 damage = 7; 56 | int32 shield_damage = 8; 57 | int32 hp = 9; 58 | int32 cc_type = 10; 59 | int32 cc_time_ms = 11; 60 | _vector3 loc = 12; 61 | int64 server_time_ms = 13; 62 | } 63 | 64 | message GAME_CLIENT_BUFF_CHANGE_TIME { 65 | int32 buff_id = 1; 66 | int32 buff_left_time = 2; 67 | } 68 | 69 | message GAME_WORLD_WORLDBUFF_APPLY { 70 | int32 world_buff_tid = 1; 71 | bool is_apply = 2; 72 | } 73 | -------------------------------------------------------------------------------- /Data/csv/GREAT_BUILDING_STATUS.csv: -------------------------------------------------------------------------------- 1 | "Name","BuildingStatusId","GreatBuildingId","EffectType","EffectTypeIcon","EffectTypeString" 2 | "1000001","1000001","1000000","1","120114","5000073" 3 | "1000002","1000002","1000000","2","120114","5000074" 4 | "1000003","1000003","1000000","3","120113","5000075" 5 | "2000001","2000001","2000000","1","120114","5000073" 6 | "2000002","2000002","2000000","2","120114","5000074" 7 | "2000003","2000003","2000000","3","120113","5000075" 8 | "3000001","3000001","3000000","1","120114","5000073" 9 | "3000002","3000002","3000000","2","120114","5000074" 10 | "3000003","3000003","3000000","3","120113","5000075" 11 | "4000001","4000001","4000000","1","120114","5000073" 12 | "4000002","4000002","4000000","2","120114","5000074" 13 | "4000003","4000003","4000000","3","120113","5000075" 14 | "5000001","5000001","5000000","1","120114","5000073" 15 | "5000002","5000002","5000000","2","120114","5000074" 16 | "5000003","5000003","5000000","3","120113","5000075" 17 | "6000001","6000001","6000000","1","120114","5000073" 18 | "6000002","6000002","6000000","2","120114","5000074" 19 | "6000003","6000003","6000000","3","120113","5000075" 20 | "7000001","7000001","7000000","1","120114","5000073" 21 | "7000002","7000002","7000000","2","120114","5000074" 22 | "7000003","7000003","7000000","3","120113","5000075" 23 | "8000001","8000001","8000000","1","120114","5000073" 24 | "8000002","8000002","8000000","2","120114","5000074" 25 | "8000003","8000003","8000000","3","120113","5000075" 26 | "9000001","9000001","9000000","1","120114","5000073" 27 | "9000002","9000002","9000000","2","120114","5000074" 28 | "9000003","9000003","9000000","3","120113","5000075" 29 | "10000001","10000001","10000000","1","120114","5000073" 30 | "10000002","10000002","10000000","2","120114","5000074" 31 | "10000003","10000003","10000000","3","120113","5000075" 32 | -------------------------------------------------------------------------------- /Game/Account.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using Mir4ClientEmulator.Network.Packets.Messages; 3 | using System.Collections.Generic; 4 | using System.Windows.Forms; 5 | 6 | namespace Mir4ClientEmulator.Game 7 | { 8 | public class Account 9 | { 10 | public string Email; 11 | public string Password; 12 | 13 | public string WemixAddress; 14 | 15 | public string LoginToken; 16 | 17 | public string CharacterName; 18 | 19 | public int Darksteel; 20 | public int Gold; 21 | public int Copper; 22 | 23 | public int Energy; 24 | 25 | public string PlayerKey; 26 | public string UniqueLoginKey; 27 | 28 | public ulong character_identifier; //first 4 bytes in many packets, doe sthis become a long when we parse stuff properly? 29 | public int warp_user_connected_session_index; 30 | public ulong account_uid; //first 8 bytes of click char packet 31 | 32 | public ulong Zone; 33 | public uint StageID; 34 | 35 | public uint WorldID; 36 | public string strWorld; 37 | 38 | public e_class eClass; 39 | public int Level; 40 | public long Experience; 41 | 42 | public Entity Character; 43 | 44 | public bool NeedsHumanVerification; 45 | 46 | public List WorldList; 47 | 48 | public int GetWorldId(string worldName) //502 = NA14, 811 = ASIA11, 161 = SA011 49 | { 50 | int worldId = 0; 51 | 52 | foreach(WORLD_INFO world in WorldList) 53 | { 54 | if(worldName == world.name) 55 | { 56 | worldId = world.index; 57 | break; 58 | } 59 | } 60 | 61 | return worldId; 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /Data/protobuf/packet_guild_war_common.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message _guild_war_board_user_view_info { 8 | uint64 user_uid = 1; 9 | uint64 guild_uid = 2; 10 | bool is_guild_master = 3; 11 | uint64 party_uid = 4; 12 | bool is_party_leader = 5; 13 | uint32 user_status = 6; 14 | _vector3 cur_pos = 7; 15 | int32 guild_camp_kind = 8; 16 | } 17 | 18 | message _guild_war_board_user_move_info { 19 | uint64 user_uid = 1; 20 | _vector3 cur_pos = 2; 21 | } 22 | 23 | message _guild_war_board_command_info { 24 | int32 command_mark_tid = 1; 25 | _vector3 target_pos = 2; 26 | string message = 3; 27 | } 28 | 29 | message _guild_war_board_class_info { 30 | int32 user_class = 1; 31 | int32 defense_user_count = 2; 32 | int32 offense_user_count = 3; 33 | } 34 | 35 | message _guild_war_board_watcher_ui_info { 36 | uint64 defense_combat_point = 1; 37 | uint64 offense_combat_point = 2; 38 | repeated _guild_war_board_class_info guild_war_board_class_info_list = 3; 39 | } 40 | 41 | message CLIENT_GAME_REQ_GUILD_WAR_BOARD_INFO { 42 | int32 info_req_kind = 1; 43 | } 44 | 45 | message GAME_CLIENT_ACK_GUILD_WAR_BOARD_INFO { 46 | uint32 result = 1; 47 | } 48 | 49 | message GAME_CLIENT_NTF_GUILD_WAR_BOARD_MOVE_INFO { 50 | int32 info_req_kind = 1; 51 | repeated _guild_war_board_user_move_info user_move_info_list = 2; 52 | } 53 | 54 | message CLIENT_GAME_REQ_GUILD_WAR_COMMAND { 55 | int32 command_update_kind = 1; 56 | _guild_war_board_command_info command_info = 2; 57 | } 58 | 59 | message GAME_CLIENT_ACK_GUILD_WAR_COMMAND { 60 | uint32 result = 1; 61 | int32 command_update_kind = 2; 62 | _guild_war_board_command_info command_info = 3; 63 | } 64 | 65 | message GAME_CLIENT_NTF_GUILD_WAR_COMMAND { 66 | int32 command_update_kind = 1; 67 | _guild_war_board_command_info command_info = 2; 68 | } 69 | -------------------------------------------------------------------------------- /Utilities/CSVSerializer.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using CsvHelper.Configuration; 3 | using CsvHelper; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Globalization; 7 | using System.IO; 8 | using System.Linq; 9 | using Mir4ClientEmulator.Network.Packets.Messages; 10 | 11 | namespace Mir4ClientEmulator.Utilities 12 | { 13 | public class CSVSerializer 14 | { 15 | public static List DeserializeCsv(string filePath) 16 | { 17 | using (var reader = new StreamReader(filePath)) 18 | using (var csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture))) 19 | { 20 | var records = csv.GetRecords().ToList(); 21 | return records; 22 | } 23 | } 24 | 25 | public static _vector3 ParseVector3(string input) ////parse "(X=6540.000000,Y=2063.000000,Z=493.000000)" to _vector3 26 | { 27 | _vector3 output = null; 28 | 29 | if (input == "0") 30 | return null; 31 | 32 | string input_copy = input; 33 | 34 | string[] coords = input_copy.Split(','); 35 | 36 | if(coords != null) 37 | { 38 | if(coords.Length == 3) 39 | { 40 | coords[0] = coords[0].Remove(0, 3); //remove '(X=' 41 | coords[1] = coords[1].Remove(0, 2); //remove Y= 42 | coords[2] = coords[2].Remove(0, 2); //remove Z= 43 | coords[2] = coords[2].Remove(coords[2].Length - 1, 1); //remove ')' 44 | 45 | output = new _vector3(); 46 | output.x = Convert.ToSingle(coords[0]); output.y = Convert.ToSingle(coords[1]); output.z = Convert.ToSingle(coords[2]); 47 | } 48 | } 49 | 50 | return output; 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Data/csv/ITEM_EQUIPSLOT.csv: -------------------------------------------------------------------------------- 1 | "Name","SlotNumber","SlotNameId","SlotOpenClassLv","EquipMainType","EquipSubType","MasteryMaxCount","GemSlot01Open","GemSlot01Type","GemSlot02Open","GemSlot02Type","GemSlot03Open","GemSlot03Type","GemSlot04Open","GemSlot04Type","ShadowIcon","HolyStuffIcon","HolyStuffSlotNameId","TreasureSlotNameId" 2 | "1","1","1004536","1","2","0","120","31","1","31","3","31","5","0","0","130101","221","1004536","1044032" 3 | "2","2","1004537","1","4","1","120","31","1","31","2","31","5","0","0","130106","226","1004537","1044033" 4 | "3","3","1004538","1","4","2","120","31","1","31","2","31","3","0","0","130107","227","1004538","1044034" 5 | "4","4","1004539","1","4","3","120","31","4","31","3","31","5","0","0","130108","228","1004539","1044035" 6 | "5","5","1004540","1","3","1","120","31","1","31","3","31","4","0","0","130102","222","1004540","1044036" 7 | "6","6","1004541","1","3","2","120","31","1","31","5","31","4","0","0","130103","223","1004541","1044037" 8 | "7","7","1004542","1","3","3","120","31","2","31","3","31","4","0","0","130104","224","1004542","1044038" 9 | "8","8","1004543","1","3","4","120","31","2","31","5","31","4","0","0","130105","225","1004543","1044039" 10 | "9","9","1004637","1","20","1","120","31","2","31","3","31","4","0","0","130109","224","1004542","1044038" 11 | "10","10","1004638","1","4","4","120","31","2","31","5","31","4","0","0","130110","225","1004543","1044039" 12 | "11","11","1004639","60","22","1","120","31","2","31","5","31","4","0","0","130112","225","1004543","1044039" 13 | "12","12","1004640","60","22","2","120","31","2","31","5","31","4","0","0","130113","225","1004543","1044039" 14 | "13","13","1004641","60","22","3","120","31","2","31","5","31","4","0","0","130114","225","1004543","1044039" 15 | "14","14","1004642","60","22","4","120","31","2","31","5","31","4","0","0","130115","225","1004543","1044039" 16 | "15","15","1004643","60","22","5","120","31","2","31","5","31","4","0","0","130116","225","1004543","1044039" 17 | -------------------------------------------------------------------------------- /Data/csv/MAS_PLAYLOG.csv: -------------------------------------------------------------------------------- 1 | "id","msgid","desc","icon" 2 | "1","entergame","게임에 진입하였습니다.","1" 3 | "2","getitem","아이템을 획득 하였습니다.","2" 4 | "3","inven_not_enough","인벤토리가 가득찼습니다. 게임에 진입하여 가방을 비워주세요.","3" 5 | "4","completed_quest","퀘스트를 완성하였습니다.","4" 6 | "5","start_gather","채집(채광)을 시작하였습니다.","5" 7 | "6","end_gather","채집(채광)을 완료하였습니다.","6" 8 | "7","died","캐릭터가 사망하였습니다.","7" 9 | "8","revival","캐릭터가 안전지역에서 부활하였습니다.","8" 10 | "9","changemap","맵을 이동하였습니다.","9" 11 | "10","nothave_quest","현재 진행할 퀘스트가 존재하지 않습니다.","10" 12 | "11","levelup","레벨업을 하였습니다.","11" 13 | "12","start_hunting","몬스터 사냥AI가 시작되었습니다.","12" 14 | "13","end_hunting","몬스터 사냥AI가 종료 되었습니다.","13" 15 | "14","use_skill","스킬을 사용하였습니다.","14" 16 | "15","enter_party","파티원이 게임에 진입하였습니다.","15" 17 | "16","logout_party","파티원이 로그아웃 하였습니다.","16" 18 | "17","select_mainquest","진행가능한 퀘스트를 선택하였습니다.","17" 19 | "18","select_missionquest","진행가능한 임무를 선택하였습니다.","18" 20 | "19","invite_party","파티초대를 요청 받았습니다.","19" 21 | "20","party_dungeon_start","파티던젼에 진입하였습니다.","20" 22 | "21","join_party","파티에 참여하였습니다.","21" 23 | "22","recv_mail","읽지 않은 메일이 존재합니다.","22" 24 | "23","recv_ranking_mail","랭킹보상 메일이 존재합니다.","23" 25 | "24","recv_newmail","새로운 메일이 도착하였습니다.","24" 26 | "25","enter_normal_dungeon","토벌던젼에 진입하였습니다.","25" 27 | "26","enter_boss_dungeon","보스던젼에 진입하였습니다.","26" 28 | "27","exit_normal_dungeon","토벌던젼에서 나갔습니다.","27" 29 | "28","exit_boss_dungeon","보스터젼에서 나갓습니다.","28" 30 | "29","kill_monster","몬스터를 사냥하였습니다.","29" 31 | "30","exit_gameplay","게임플레이를 종료하였습니다.","30" 32 | "31","getcost","재화를 획득하였습니다.","31" 33 | "32","error_loc","이동할수 없는 좌표로 이동을 시도하였습니다.","32" 34 | "33","error_mission","임무진행중 에러가 발생하였습니다.","33" 35 | "34","error_mainquest","메인퀘스트를 진행중 에러가 발생하였습니다.","34" 36 | "35","error_unknown","알수 없는 에러가 발생하였습니다.","35" 37 | "36","invitereject_party","파티요청을 거절하였습니다.","36" 38 | "37","invite_friend","친구신청을 요청받았습니다.","37" 39 | "38","invitereject_friend","친구신청요청을 거절하였습니다.","38" 40 | "39","error_quest_inven_notenough","가방이 가득차서 퀘스트(임무)를 진행할 수 없습니다.","39" 41 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_OBJECT.csv: -------------------------------------------------------------------------------- 1 | "Name","ObjectID","ObjectKind","OwnerShip","SiegeZoneRange","SiegeZone_MaxPoint","SiegeZone_AddPoint","SiegeZone_FallPoint","SiegeZone_LockTimeSec","SiegeRankingPoint","SiegeZoneUIHeight","Plunder_DarkSteelRewardValue","OutPostCooltimeSec" 2 | "900001001","900001001","1","1","0","0","0","0","0","0","0","0","0" 3 | "900001002","900001002","1","2","0","0","0","0","0","0","0","0","0" 4 | "900001003","900001003","1","0","500","40","2","1","180","50","0","0","0" 5 | "900001004","900001004","1","0","500","40","2","1","180","50","0","0","0" 6 | "900002101","900002101","3","0","0","0","0","0","0","50","0","0","180" 7 | "900002102","900002102","3","0","0","0","0","0","0","50","0","0","180" 8 | "900002103","900002103","3","0","0","0","0","0","0","50","0","0","180" 9 | "900002104","900002104","3","0","0","0","0","0","0","50","0","0","180" 10 | "900002105","900002105","3","0","0","0","0","0","0","50","0","0","180" 11 | "900002106","900002106","3","0","0","0","0","0","0","50","0","0","180" 12 | "900002107","900002107","3","0","0","0","0","0","0","50","0","0","180" 13 | "900002108","900002108","3","0","0","0","0","0","0","50","0","0","180" 14 | "900002201","900002201","3","0","0","0","0","0","0","50","0","0","180" 15 | "900002202","900002202","3","0","0","0","0","0","0","50","0","0","180" 16 | "900002203","900002203","3","0","0","0","0","0","0","50","0","0","180" 17 | "900002204","900002204","3","0","0","0","0","0","0","50","0","0","180" 18 | "900002301","900002301","3","1","0","0","0","0","0","50","0","0","600" 19 | "900002302","900002302","3","2","0","0","0","0","0","50","0","0","600" 20 | "900002303","900002303","3","3","0","0","0","0","0","50","0","0","600" 21 | "900002304","900002304","3","4","0","0","0","0","0","50","0","0","600" 22 | "900010001","900010001","2","0","0","0","0","0","0","0","0","750000","0" 23 | "900010002","900010002","2","0","0","0","0","0","0","0","0","2250000","0" 24 | "900010003","900010003","2","0","0","0","0","0","0","0","0","7500000","0" 25 | -------------------------------------------------------------------------------- /Data/protobuf/packet_object.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message GAME_CLIENT_ACTIVATE_OBJECT_REWARD { 8 | uint64 activate_user_uid = 1; 9 | uint64 activated_object_uid = 2; 10 | int32 use_inven_count = 3; 11 | repeated _cost_info reward_costInfo = 4; 12 | repeated _character_inven_item reward_item = 5; 13 | uint32 object_id = 6; 14 | repeated _stack_item_info del_item_list = 7; 15 | } 16 | 17 | message GAME_CLIENT_CHANGE_OBJECT_STATE { 18 | uint64 object_uid = 1; 19 | uint32 object_state = 2; 20 | string state_string = 3; 21 | } 22 | 23 | message GAME_CLIENT_OBJECT_UPDATE_USE_COUNT { 24 | uint64 object_uid = 1; 25 | uint32 remaining_use_count = 2; 26 | } 27 | 28 | message GAME_CLIENT_STAGE_MONSTER_STATUS_NOTIFY { 29 | int32 message_id = 1; 30 | } 31 | 32 | message CLIENT_GAME_PROUD_ITEM { 33 | _vector3 pos = 1; 34 | uint64 item_uid = 2; 35 | } 36 | 37 | message GAME_CLIENT_PROUD_ITEM { 38 | uint32 result = 1; 39 | uint64 item_uid = 2; 40 | } 41 | 42 | message CLIENT_GAME_PROUD_ITEM_CANCEL { 43 | uint64 object_uid = 3; 44 | } 45 | 46 | message GAME_CLIENT_PROUD_ITEM_CANCEL { 47 | uint32 result = 1; 48 | } 49 | 50 | message GAME_CLIENT_PROUD_ITEM_DISAPPEAR { 51 | uint64 object_uid = 1; 52 | } 53 | 54 | message CLIENT_GAME_PROUD_ITEM_INFO { 55 | uint64 object_uid = 1; 56 | } 57 | 58 | message GAME_CLIENT_PROUD_ITEM_INFO { 59 | uint32 result = 1; 60 | int64 despawn_time = 2; 61 | string nick_name = 3; 62 | _character_inven_item inven_item = 4; 63 | uint64 object_uid = 5; 64 | } 65 | 66 | message GAME_CLIENT_PROUD_ITEM_UPDATE_WONDER { 67 | uint32 result = 1; 68 | uint64 my_daily_wonder = 2; 69 | repeated _cost_info cost_info_list = 3; 70 | } 71 | 72 | message CLIENT_GAME_PROUD_ITEM_WONDER { 73 | uint64 object_uid = 1; 74 | } 75 | 76 | message GAME_CLIENT_PROUD_ITEM_WONDER { 77 | uint32 result = 1; 78 | string nick_name = 2; 79 | uint32 item_id = 3; 80 | } 81 | -------------------------------------------------------------------------------- /Data/protobuf/packet_dark_altar.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message GAME_CLIENT_NTF_DARK_ALTAR_ZONE_ENTER_INFO { 8 | _dark_altar_info dark_altar_info = 1; 9 | uint64 altar_monster_uid = 2; 10 | } 11 | 12 | message CLIENT_WORLD_REQ_DARK_ALTAR_INFO_LIST { 13 | 14 | } 15 | 16 | message WORLD_CLIENT_ACK_DARK_ALTAR_INFO_LIST { 17 | repeated _dark_altar_info dark_altar_info_list = 1; 18 | } 19 | 20 | message WORLD_GAME_NTF_DARK_ALTAR_SERVER_INFO { 21 | uint64 dark_altar_zone_uid = 1; 22 | _dark_altar_server_info dark_altar_server_info = 2; 23 | } 24 | 25 | message WORLD_GAME_NTF_DARK_ALTAR_MONSTER_INFO_TO_UNDER_WORLD_ZONE { 26 | uint64 under_world_zone_uid = 1; 27 | _dark_altar_server_info dark_altar_server_info = 2; 28 | } 29 | 30 | message WORLD_CLIENT_NTF_DARK_ALTAR_INFO_TO_ALL_USER { 31 | _dark_altar_info dark_altar_info = 1; 32 | } 33 | 34 | message GAME_WORLD_NTF_DARK_ALTAR_MONSTER_DIE { 35 | int32 dark_altar_tid = 1; 36 | uint64 dark_altar_zone_uid = 2; 37 | uint64 mvp_user_uid = 3; 38 | string mvp_user_name = 4; 39 | } 40 | 41 | message GAME_CLIENT_NTF_RESULT_DARK_ALTAR_TO_BATTLE_USER { 42 | int32 dark_altar_tid = 1; 43 | string mvp_user_name = 2; 44 | } 45 | 46 | message WORLD_GAME_SYNC_DARK_ALTAR_INFO_IN_ZONE_GROUP { 47 | _dark_altar_server_info dark_altar_server_info = 1; 48 | } 49 | 50 | message WORLD_GAME_SYNC_DARK_ALTAR_INFO_LIST_IN_ZONE_GROUP { 51 | repeated _dark_altar_server_info dark_altar_server_info_list = 1; 52 | } 53 | 54 | message SERVER_CLIENT_NTF_DARK_ALTAR_NOTICE { 55 | int32 dark_altar_tid = 1; 56 | int32 notice_type = 2; 57 | int64 value = 3; 58 | } 59 | 60 | message GAME_CLIENT_NTF_DARK_ALTAR_UNDER_WORLD_ZONE_ENTER_INFO { 61 | _dark_altar_info dark_altar_info = 1; 62 | } 63 | 64 | message GAME_CLIENT_NTF_DARK_ALTAR_CHEAT_ATTACK { 65 | bool is_attackable = 1; 66 | } 67 | 68 | message GAME_WORLD_NTF_DARK_ALTAR_ATTACK { 69 | int32 dark_altar_tid = 1; 70 | int32 notice_type = 2; 71 | } 72 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_STRONG_POINT.csv: -------------------------------------------------------------------------------- 1 | "Name","StrongPointId","StageId","WinTargetId","Reward_GuildContribution","Reward_GuildPoint_All","Reward_GuildPoint_Mvp","Reward_DominionId","Reward_MoneyId","Reward_MoneyValue","Reward_GuildFameCategory","Reward_GuildFameValue","MailPresetId_RewardCharacter","MailPresetId_RewardGuild","MailPresetId_Warning","MailPresetId_Dominion_Return","MailPresetId_Dominion_Change","MailPresetId_Dominion_Cancel","Time_Dynamization","Time_UnProtection_Days_1StartTime","Time_UnProtection_Days_1EndTime","Time_UnProtection_Days_2StartTime","Time_UnProtection_Days_2EndTime","Time_UnProtection_Days_3StartTime","Time_UnProtection_Days_3EndTime","Time_UnProtection_Days_4StartTime","Time_UnProtection_Days_4EndTime","Time_UnProtection_Days_5StartTime","Time_UnProtection_Days_5EndTime","Time_UnProtection_Days_6StartTime","Time_UnProtection_Days_6EndTime","Time_UnProtection_Days_7StartTime","Time_UnProtection_Days_7EndTime","Time_EssentialPlay","Time_TakeOver","Time_TakeOverReady","OccupationGuildWarpLocationId","OtherCharacterExitWarpLocationId","GuildDevId","GuildDevLevel","WinTargetHPRecoveryRate","TabId","NameStrId","ThumbnailId","RevivalId","EnterWarpPortalId_Defense","EnterWarpPortalId_Offense" 2 | "101","101","201003013","1000302","100","10000","10000","3005","92","22000","103","100","12010","12011","12012","12013","12014","12018","2021-5-15 22:00","0","0","0","0","0","0","22:00","23:00","0","0","0","0","0","0","4","60","1","210000010","1010010103","101004","1","2500","0","0","0","0","0","0" 3 | "102","102","201003033","1000303","100","10000","10000","3010","92","22000","103","100","12010","12011","12012","12013","12014","12018","2021-5-15 22:00","0","0","0","0","0","0","22:00","23:00","0","0","0","0","0","0","4","60","1","210000020","1030030101","101004","1","2500","0","0","0","0","0","0" 4 | "103","103","201003043","1000304","100","10000","10000","3024","92","22000","103","100","12010","12011","12012","12013","12014","12018","2021-5-15 22:00","0","0","0","0","0","0","22:00","23:00","0","0","0","0","0","0","4","60","1","210000030","1050020203","101004","1","2500","0","0","0","0","0","0" 5 | -------------------------------------------------------------------------------- /Data/csv/PK_MODE.csv: -------------------------------------------------------------------------------- 1 | "Name","PkMode","PkType","PkModeName","PkModeDesc","PkModeIcon","PkModeColor","HudSelectAble","AttackPvP","AttackEnemyFaction","AttackParty","AttackGuildMonster","AttackGuild","AttackAllyGuild","AttackEnemyGuild","AttackFriend","AttackExceptingGuild","AttackNotServerVister","AttackServerVisterSame","AttackServerVisterNotSame","AttackPink","AttackGradeType01","AttackGradeType02","AttackGradeType03","AttackGradeType04","AttackGradeType05" 2 | "1","1","1","2700002","2700102","100006","963001","1","0","0","0","1","0","0","1","0","0","0","1","1","0","0","0","0","0","0" 3 | "2","2","1","2700003","2700103","100007","963002","1","0","0","0","1","0","0","1","0","0","0","1","1","1","0","0","1","1","1" 4 | "3","3","1","2700004","2700104","100008","963003","1","0","0","0","1","0","0","1","0","0","0","1","1","1","1","1","1","1","1" 5 | "4","4","1","2700005","2700105","100009","963004","1","0","0","0","1","1","1","1","1","1","0","1","1","1","1","1","1","1","1" 6 | "5","5","1","2700006","0","100009","963005","0","1","0","0","0","0","0","0","0","0","0","1","1","0","0","0","0","0","0" 7 | "6","6","1","2700007","0","100009","963006","0","0","1","0","0","0","0","0","0","0","0","1","1","0","0","0","0","0","0" 8 | "7","7","1","2700008","0","100009","963007","0","0","0","0","0","0","1","1","1","0","0","1","1","1","1","1","1","1","1" 9 | "8","8","2","2700009","2700106","100006","963001","1","0","0","0","1","0","0","1","0","0","1","0","0","0","0","0","0","0","0" 10 | "9","9","2","2700010","2700107","100007","963002","1","0","0","0","1","0","0","1","0","0","1","0","1","0","0","0","0","0","0" 11 | "10","10","2","2700011","2700108","100008","963003","1","0","0","0","1","0","0","1","0","0","1","0","1","1","1","1","1","1","1" 12 | "11","11","2","2700012","2700109","100009","963004","1","0","0","0","1","1","1","1","1","1","1","0","1","1","1","1","1","1","1" 13 | "12","12","1","2700007","0","100009","963006","0","0","1","0","0","0","1","1","1","1","0","1","1","0","0","0","0","0","0" 14 | "13","13","2","2700013","2700109","100009","963004","1","0","0","0","0","1","1","1","1","1","1","1","1","1","1","1","1","1","1" 15 | -------------------------------------------------------------------------------- /Game/Quest/Quest.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | namespace Mir4.Game.Quest 3 | { 4 | public class Quest 5 | { 6 | public int Name { get; set; } 7 | public int QuestId { get; set; } 8 | public int QuestLevel { get; set; } 9 | public int StepNo { get; set; } 10 | public string StartScript { get; set; } 11 | public string EndScript { get; set; } 12 | public string CountSmallTalk { get; set; } 13 | public int MissionType { get; set; } 14 | public int MissionTarget { get; set; } 15 | public int Parameter1 { get; set; } 16 | public int Parameter2 { get; set; } 17 | public string ParameterClass { get; set; } 18 | public int CountIndication { get; set; } 19 | public double QuestTrackerType { get; set; } 20 | public int MissionStageId { get; set; } 21 | public string ViaCoordinate { get; set; } 22 | public string MissionCoordinate { get; set; } 23 | public string PhaseExitCoordinate { get; set; } 24 | public int SoundId { get; set; } 25 | public int SoundRange { get; set; } 26 | public int EffectId { get; set; } 27 | public int IconId { get; set; } 28 | public int ContentOpenPage { get; set; } 29 | public int StringMESSAGE { get; set; } 30 | public int AutoBattleType { get; set; } 31 | public int PcTargetSearchDist { get; set; } 32 | public int CoordinateRange { get; set; } 33 | public int QuestTitleSID { get; set; } 34 | public int QuestMissionSID { get; set; } 35 | public int RewardExp { get; set; } 36 | public int RewardGOLD { get; set; } 37 | public int RewardCostId { get; set; } 38 | public int RewardCostCount { get; set; } 39 | public string RewardItem01Id { get; set; } 40 | public int RewardItem01Count { get; set; } 41 | public string RewardItem02Id { get; set; } 42 | public int RewardItem02Count { get; set; } 43 | public int TutorialGroupId { get; set; } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Data/csv/DUNGEON_SHOP.csv: -------------------------------------------------------------------------------- 1 | "Name","DGShopId","DGShopGroup","DGShopGroupName","DGShopNo","DGShopItemId","DGShopItemCnt","DGShopItemBuyCostType","DGShopItemBuyCostTypeSub","DGShopItemBuyCostValue" 2 | "1","1","1","3550003","8","501200013","1","1","20","400" 3 | "2","2","1","0","9","501200023","1","1","20","400" 4 | "3","3","1","0","10","501200043","1","1","20","400" 5 | "4","4","1","0","11","517200103","1","1","20","600" 6 | "5","5","1","0","12","517200203","1","1","20","600" 7 | "6","6","1","0","13","517200303","1","1","20","600" 8 | "7","7","1","0","14","517200403","1","1","20","600" 9 | "8","8","1","0","15","501200012","1","1","20","100" 10 | "9","9","1","0","16","501200022","1","1","20","100" 11 | "10","10","1","0","17","501200042","1","1","20","100" 12 | "11","11","1","0","18","517200102","1","1","20","200" 13 | "12","12","1","0","19","517200202","1","1","20","200" 14 | "13","13","1","0","20","517200302","1","1","20","200" 15 | "14","14","1","0","21","517200402","1","1","20","200" 16 | "15","15","1","0","1","501200014","1","1","20","800" 17 | "16","16","1","0","2","501200024","1","1","20","800" 18 | "17","17","1","0","3","501200044","1","1","20","800" 19 | "18","18","1","0","4","517200104","1","1","20","1200" 20 | "19","19","1","0","5","517200204","1","1","20","1200" 21 | "20","20","1","0","6","517200304","1","1","20","1200" 22 | "21","21","1","0","7","517200404","1","1","20","1200" 23 | "24","24","2","3550002","4","603201001","1","1","20","33000" 24 | "25","25","2","0","5","603200102","1","1","20","4000" 25 | "26","26","2","0","6","603200502","1","1","20","12000" 26 | "27","27","2","0","7","603200602","1","1","20","19000" 27 | "28","28","2","0","1","603200103","1","1","20","22000" 28 | "29","29","2","0","2","603200503","1","1","20","45000" 29 | "30","30","2","0","3","603200603","1","1","20","45000" 30 | "31","31","3","5100023","1","902200503","1","1","20","4000" 31 | "22","22","3","0","2","601200164","1","1","20","3000" 32 | "23","23","3","0","3","601200165","1","1","20","3000" 33 | "32","32","3","0","4","601202668","1","1","20","200000" 34 | "33","33","3","0","5","601202669","1","1","20","2000000" 35 | -------------------------------------------------------------------------------- /Data/csv/ITEM_JEWEL_COMPOSE_RESULT.csv: -------------------------------------------------------------------------------- 1 | "Name","JewelComposeType","ResultType","ComposeReplaceId","SelectionProbability" 2 | "21101","21","1","801200003","12500" 3 | "21102","21","1","802200003","12500" 4 | "21103","21","1","803200003","12500" 5 | "21104","21","1","804200003","12500" 6 | "21105","21","1","805200003","12500" 7 | "21106","21","1","806200003","12500" 8 | "21201","21","2","801200002","12500" 9 | "21202","21","2","802200002","12500" 10 | "21203","21","2","803200002","12500" 11 | "21204","21","2","804200002","12500" 12 | "21205","21","2","805200002","12500" 13 | "21206","21","2","806200002","12500" 14 | "31101","31","1","801200004","12500" 15 | "31102","31","1","802200004","12500" 16 | "31103","31","1","803200004","12500" 17 | "31104","31","1","804200004","12500" 18 | "31105","31","1","805200004","12500" 19 | "31106","31","1","806200004","12500" 20 | "31201","31","2","801200003","12500" 21 | "31202","31","2","802200003","12500" 22 | "31203","31","2","803200003","12500" 23 | "31204","31","2","804200003","12500" 24 | "31205","31","2","805200003","12500" 25 | "31206","31","2","806200003","12500" 26 | "41101","41","1","801200005","12500" 27 | "41102","41","1","802200005","12500" 28 | "41103","41","1","803200005","12500" 29 | "41104","41","1","804200005","12500" 30 | "41105","41","1","805200005","12500" 31 | "41106","41","1","806200005","12500" 32 | "41201","41","2","801200004","12500" 33 | "41202","41","2","802200004","12500" 34 | "41203","41","2","803200004","12500" 35 | "41204","41","2","804200004","12500" 36 | "41205","41","2","805200004","12500" 37 | "41206","41","2","806200004","12500" 38 | "51101","51","1","801200005","12500" 39 | "51102","51","1","802200005","12500" 40 | "51103","51","1","803200005","12500" 41 | "51104","51","1","804200005","12500" 42 | "51105","51","1","805200005","12500" 43 | "51106","51","1","806200005","12500" 44 | "51201","51","2","801200005","12500" 45 | "51202","51","2","802200005","12500" 46 | "51203","51","2","803200005","12500" 47 | "51204","51","2","804200005","12500" 48 | "51205","51","2","805200005","12500" 49 | "51206","51","2","806200005","12500" 50 | -------------------------------------------------------------------------------- /Data/csv/CHARACTER_PRESET.csv: -------------------------------------------------------------------------------- 1 | "Name","UniqueID","Class","Level","EquipWeapon","EquipArmor","EquipPants","EquipGloves","EquipShose","EquipNecklace","EquipBracelet","EquipRing","EquipWeaponSmelting","EquipArmorSmelting","EquipPantsSmelting","EquipGlovesSmelting","EquipShoseSmelting","EquipNecklaceSmelting","EquipBraceletSmelting","EquipRingSmelting","EquipMagibStone01","EquipMagibStone02","EquipMagibStone03","EquipMagibStone04","EquipMagibStone05","EquipMagibStone06","EquipPet01","EquipPetTreasure01","EquipPetTreasure02","EquipPetTreasure03","EquipPetTreasure04","EquipPet02","EquipPetTreasure05","EquipPetTreasure06","EquipPetTreasure07","EquipPetTreasure08","EquipPet03","EquipPetTreasure09","EquipPetTreasure10","EquipPetTreasure11","EquipPetTreasure12","EquipPet04","EquipPetTreasure13","EquipPetTreasure14","EquipPetTreasure15","EquipPetTreasure16","EquipPet05","EquipPetTreasure17","EquipPetTreasure18","EquipPetTreasure19","EquipPetTreasure20","ForceUpgrade01","ForceBlood01","ForceBlood02","ForceBlood03","ForceBlood04","ForceUpgrade02","ForceBlood05","ForceBlood06","ForceBlood07","ForceBlood08","ForceUpgrade03","ForceBlood09","ForceBlood10","ForceBlood11","ForceBlood12","MasteryUpgrade","MasterySlotLv01","MasterySlotLv02","MasterySlotLv03","MasterySlotLv04","MasterySlotLv05","MasterySlotLv06","MasterySlotLv07" 2 | "1030","1030","1","30","200201002","301201002","302201002","303201002","304201002","401201002","402201002","403201002","3","3","3","3","3","3","3","3","801100002","802100002","0","0","0","0","1701100007","1702200001","1702200002","1702200003","1702200004","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","2","10","10","10","10","1","2","2","2","2","0","0","0","0","0","2","15","15","15","15","15","15","15" 3 | "2030","2030","2","30","200202002","301202002","302202002","303202002","304202002","401201002","402201002","403201002","3","3","3","3","3","3","3","3","801100002","802100002","0","0","0","0","1701100007","1702200001","1702200002","1702200003","1702200004","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","2","10","10","10","10","1","2","2","2","2","0","0","0","0","0","2","15","15","15","15","15","15","15" 4 | -------------------------------------------------------------------------------- /Data/csv/GUILD_DOMINION.csv: -------------------------------------------------------------------------------- 1 | "Name","DominionId","Type","Grade","IsShow","IsOccupiable","OwnerShipType","OrderNo","PriorityNumber","NameId","ImageId","TitleNameId","TitleIconId","DominionGoldTaxPayEnable","DominionCastleTaxPayEnable","DominionGoldTaxRate","DominionDefaultTaxRate","DominionCastleTaxRate","DarkAltarId","DarkAltarDefaultTaxRate","DarkAltarCastleTaxRate","DominionOccupationId","ShopNpcId","ShopNpcScheduleId","GuildShopUnlockIconId","DominionBuffId1","DominionBuffId2","GuildPositionId1","GuildPositionId2","GuildPositionId3","GuildPositionId4","GuildPositionId5","GuildPositionId6","GuildPositionId7","GuildPositionId8","GuildPositionId9","RespectLimitCount","RespectRewardGuildExp","RespectRewardBuffId","MemberGrade1_NameId","MemberGrade2_NameId","MemberGrade3_NameId","MemberGrade4_NameId","MemberGrade5_NameId","MemberGrade6_NameId","GuildPositionGroupId","TitleMedalIconId" 2 | "1001","1001","1","1","1","0","0","2","1","950001","910056","6300003","5600003","1","1","15","0","15","0","0","0","10201","0","0","185","800000","4732011","4732012","4732013","4732014","4732015","4732016","201","61","62","0","0","0","0","0","0","0","0","0","0","0","0" 3 | "2001","2001","1","2","1","1","0","1","5","950002","910056","6300002","5600002","0","0","30","10","0","0","0","0","10101","0","0","186","800000","4732011","4732011","4732013","4732014","4732015","4732016","201","62","63","0","0","0","0","0","0","0","0","0","0","0","0" 4 | "3005","3005","2","3","1","1","0","1","22","950009","430030","4730101","0","0","0","0","15","10","101","7","5","101","730004001","29","184","800000","4731011","4731012","4731013","4731014","4731015","4731016","101","61","0","0","0","0","0","0","0","0","0","0","0","0","0" 5 | "3010","3010","2","3","1","1","0","2","17","950014","430032","4730102","0","0","0","0","15","10","201","7","5","102","730004002","30","184","800000","4731011","4731012","4731013","4731014","4731015","4731016","101","63","0","0","0","0","0","0","0","0","0","0","0","0","0" 6 | "3024","3024","2","3","1","1","0","4","3","950028","430031","4730103","0","0","0","0","15","10","301","7","5","103","730004003","31","184","800000","4731011","4731012","4731013","4731014","4731015","4731016","101","62","0","0","0","0","0","0","0","0","0","0","0","0","0" 7 | -------------------------------------------------------------------------------- /Game/Quest/QuestRelation.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 |  3 | 4 | namespace Mir4ClientEmulator.Game 5 | { 6 | public class QuestRelation 7 | { 8 | public int Name { get; set; } 9 | public int RelationId { get; set; } 10 | public int EpisodeType { get; set; } 11 | public int RelationCategory { get; set; } 12 | public int RelationMenuName { get; set; } 13 | public int RelationMenuIcon { get; set; } 14 | public int RelationListHide { get; set; } 15 | public int RelationQuestStep { get; set; } 16 | public int RelationQuestGrade { get; set; } 17 | public string RewardMissionId { get; set; } 18 | public int RelationViewType { get; set; } 19 | public int RelationTitleSID { get; set; } 20 | public int RelationQuestInfoSID { get; set; } 21 | public int RelationCompleteInfoSID { get; set; } 22 | public string ScriptPlayStageID { get; set; } 23 | public string StartScript { get; set; } 24 | public string EndScript { get; set; } 25 | public int MissionInfoSID { get; set; } 26 | public int MissionCountShow { get; set; } 27 | public int MissionType { get; set; } 28 | public int MissionTarget { get; set; } 29 | public int Parameter1 { get; set; } 30 | public int Parameter2 { get; set; } 31 | public int Parameter3 { get; set; } 32 | public string EnableObjectID { get; set; } 33 | public string CountSmallTalk { get; set; } 34 | public int MissionStageId { get; set; } 35 | public string MissionCoordinate { get; set; } 36 | public string PhaseExitCoordinate { get; set; } 37 | public int EffectId { get; set; } 38 | public int RewardType { get; set; } 39 | public int RewardEXP { get; set; } 40 | public int RewardGOLD { get; set; } 41 | public int RewardGoodsType { get; set; } 42 | public int RewardGoodsCount { get; set; } 43 | public string RewardItemId01 { get; set; } 44 | public int RewardItemCount01 { get; set; } 45 | public string RewardItemId02 { get; set; } 46 | public int RewardItemCount02 { get; set; } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Data/csv/GUILD_MARK.csv: -------------------------------------------------------------------------------- 1 | "Name","MarkId","MarkType","ResourceId","3DMarkResource" 2 | "1","1","0","1350001","GuildMark_symbol_01_Texture" 3 | "2","2","0","1350002","GuildMark_symbol_02_Texture" 4 | "3","3","0","1350003","GuildMark_symbol_03_Texture" 5 | "4","4","0","1350004","GuildMark_symbol_04_Texture" 6 | "5","5","0","1350005","GuildMark_symbol_05_Texture" 7 | "6","6","0","1350006","GuildMark_symbol_06_Texture" 8 | "7","7","0","1350007","GuildMark_symbol_07_Texture" 9 | "8","8","0","1350008","GuildMark_symbol_08_Texture" 10 | "9","9","0","1350009","GuildMark_symbol_09_Texture" 11 | "10","10","0","1350010","GuildMark_symbol_10_Texture" 12 | "11","11","0","1350011","GuildMark_symbol_11_Texture" 13 | "12","12","0","1350012","GuildMark_symbol_12_Texture" 14 | "13","13","0","1350013","GuildMark_symbol_13_Texture" 15 | "14","14","0","1350014","GuildMark_symbol_14_Texture" 16 | "15","15","0","1350015","GuildMark_symbol_15_Texture" 17 | "16","16","0","1350016","GuildMark_symbol_16_Texture" 18 | "17","17","0","1350017","GuildMark_symbol_17_Texture" 19 | "18","18","0","1350018","GuildMark_symbol_18_Texture" 20 | "19","19","0","1350019","GuildMark_symbol_19_Texture" 21 | "20","20","0","1350020","GuildMark_symbol_20_Texture" 22 | "21","21","0","1350021","GuildMark_symbol_21_Texture" 23 | "22","22","0","1350022","GuildMark_symbol_22_Texture" 24 | "23","23","0","1350023","GuildMark_symbol_23_Texture" 25 | "24","24","0","1350024","GuildMark_symbol_24_Texture" 26 | "25","25","0","1350025","GuildMark_symbol_25_Texture" 27 | "26","26","0","1350026","GuildMark_symbol_26_Texture" 28 | "27","27","0","1350027","GuildMark_symbol_27_Texture" 29 | "101","101","1","1360001","GuildMark_Frame_01_Texture" 30 | "102","102","1","1360002","GuildMark_Frame_02_Texture" 31 | "103","103","1","1360003","GuildMark_Frame_03_Texture" 32 | "104","104","1","1360004","GuildMark_Frame_04_Texture" 33 | "105","105","1","1360005","GuildMark_Frame_05_Texture" 34 | "106","106","1","1360006","GuildMark_Frame_06_Texture" 35 | "107","107","1","1360007","GuildMark_Frame_07_Texture" 36 | "108","108","1","1360008","GuildMark_Frame_08_Texture" 37 | "109","109","1","1360009","GuildMark_Frame_09_Texture" 38 | "110","110","1","1360010","GuildMark_Frame_10_Texture" 39 | "111","111","2","5600001","0" 40 | -------------------------------------------------------------------------------- /Data/protobuf/packet_gm.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message WORLD_ALLSERVER_GM_CONTENTS_LOCK { 8 | repeated _gm_contents_lock lock_list = 1; 9 | } 10 | 11 | message WORLD_ALLSERVER_GM_GEN_TIME { 12 | repeated _gm_gen_time gen_time_list = 1; 13 | } 14 | 15 | message WORLD_ALLSERVER_GM_CONTROL_LIST { 16 | repeated _gm_contents_lock lock_list = 1; 17 | repeated _gm_gen_time gen_time_list = 2; 18 | } 19 | 20 | message WORLD_GAME_CHECK_ZONE_GROUP { 21 | 22 | } 23 | 24 | message WORLD_GAME_CHECK_ZONE { 25 | int64 zone_uid = 1; 26 | } 27 | 28 | message WORLD_GAME_GM_OBSERVER { 29 | int64 user_uid = 1; 30 | bool observer = 2; 31 | } 32 | 33 | message WORLD_GAME_GM_MONSTER_GEN { 34 | int64 zone_uid = 1; 35 | int64 gen_id = 2; 36 | } 37 | 38 | message WORLD_GAME_GM_SPEED_HACK_REGULATION { 39 | int32 regulation = 1; 40 | } 41 | 42 | message WORLD_GAME_GM_HACK_REGULATION { 43 | int32 hack_type = 1; 44 | int32 regulation = 2; 45 | } 46 | 47 | message world_buff_info { 48 | bool running = 1; 49 | int32 buff_tid = 2; 50 | int64 start_time = 3; 51 | int64 end_time = 4; 52 | int32 world_buff_tid = 5; 53 | } 54 | 55 | message WORLD_GAME_GM_WORLD_BUFF_ON { 56 | bool on_off = 1; 57 | } 58 | 59 | message WORLD_GAME_GM_WORLD_BUFF_INFO { 60 | bool is_add = 1; 61 | repeated world_buff_info world_buff_list = 2; 62 | } 63 | 64 | message WORLD_GAME_GM_WORLD_BUFF_INFO_ADD { 65 | repeated world_buff_info world_buff_list = 1; 66 | } 67 | 68 | message WORLD_GAME_GM_WORLD_BUFF_INFO_DEL { 69 | repeated int32 buff_tid_list = 1; 70 | } 71 | 72 | message WORLD_GAME_GM_WORLD_BUFF_START { 73 | int32 buff_tid = 1; 74 | int64 end_time = 2; 75 | } 76 | 77 | message WORLD_GAME_GM_WORLD_BUFF_END { 78 | int32 buff_tid = 1; 79 | } 80 | 81 | message WORLD_GAME_GM_TRADE_ACCOUNT_LOCK { 82 | int32 account_lock = 1; 83 | repeated uint64 account_list = 2; 84 | } 85 | 86 | message WORLD_GAME_GM_SERVER_LOCK { 87 | int32 lock_type = 1; 88 | int32 is_lock = 2; 89 | } 90 | 91 | message WORLD_GAME_GM_CAPTCHA_REAUTH_DATA { 92 | int32 reauth_on_off = 1; 93 | int32 reauth_term_min = 2; 94 | int32 reauth_level = 3; 95 | } 96 | -------------------------------------------------------------------------------- /Data/csv/ITEM_SMELTING_EFFECT.csv: -------------------------------------------------------------------------------- 1 | "Name","SmeltingEffectType","SmeltingCount01","EffectId01","SmeltingCount02","EffectId02","SmeltingCount03","EffectId03","SmeltingCount04","EffectId04","SmeltingCount05","EffectId05","SmeltingCount06","EffectId06" 2 | "1","1","1","106111","10","106114","20","106116","25","106114","30","106114","35","106116" 3 | "100","100","1","1061001","10","1061002","20","1061003","25","1061004","30","1061005","35","1061006" 4 | "101","101","1","1061011","10","1061012","20","1061013","25","1061014","30","1061015","35","1061016" 5 | "102","102","1","1061021","10","1061022","20","1061023","25","1061024","30","1061025","35","1061026" 6 | "103","103","1","1061031","10","1061032","20","1061033","25","1061034","30","1061035","35","1061036" 7 | "104","104","1","1061041","10","1061042","20","1061043","25","1061044","30","1061045","35","1061046" 8 | "105","105","1","1061051","10","1061052","20","1061053","25","1061054","30","1061055","35","1061056" 9 | "106","106","1","1061061","10","1061062","20","1061063","25","1061064","30","1061065","35","1061066" 10 | "107","107","1","1061071","10","1061072","20","1061073","25","1061074","30","1061075","35","1061076" 11 | "200","200","1","1062001","10","1062002","20","1062003","25","1062004","30","1062005","35","1062006" 12 | "300","300","1","1063001","10","1063002","20","1063003","25","1063004","30","1063005","35","1063006" 13 | "400","400","1","1064001","10","1064002","20","1064003","25","1064004","30","1064005","35","1064006" 14 | "401","401","1","1064011","10","1064012","20","1064013","25","1064014","30","1064015","35","1064016" 15 | "402","402","1","1064021","10","1064022","20","1064023","25","1064024","30","1064025","35","1064026" 16 | "403","403","1","1064031","10","1064032","20","1064033","25","1064034","30","1064035","35","1064036" 17 | "404","404","1","1064041","10","1064042","20","1064043","25","1064044","30","1064045","35","1064046" 18 | "405","405","1","1064051","10","1064052","20","1064053","25","1064054","30","1064055","35","1064056" 19 | "406","406","1","1064061","10","1064062","20","1064063","25","1064064","30","1064065","35","1064066" 20 | "407","407","1","1064071","10","1064072","20","1064073","25","1064074","30","1064075","35","1064076" 21 | "500","500","1","1065001","10","1065004","20","1065006","25","1065004","30","1065005","35","1065006" 22 | -------------------------------------------------------------------------------- /Data/csv/GUILD_WAR_OCCUPATION.csv: -------------------------------------------------------------------------------- 1 | "Name","OccupationId","NameStringId","ExplanStringId","ImageResource","OwnerShipType","StageId","BaseStageId","AuctionStartDayOfWeek","AuctionStartTimeHour","AuctionFinishTimeMinute","AuctionExtensionTimeHour","AuctionMoneyId","AuctionMoneyValueMin","AuctionIncreaseRate","OccupationStartDayOfWeek","OccupationStartTimeHour","OccupationFinishTimeMinute","EnterWarpLocationId_Defense","EnterWarpLocationId_Offense","FlagId_Center","FlagId_West","FlagId_East","FlagDefenseTime","BattlePointMax","GateId_Offense_Front","GateId_Offense_Middle","GateId_Offense_Back","GateId_Defense_Front","GateId_Defense_Middle","GateId_Defense_Back","OccuReadyGenData","OccuBattleGenData","OccuCeremonyGenData","Reward_DominionId" 2 | "101","101","455101","455101","/Game/UI/Atlas_N_Pack/Sprites_N/Spr_Contents/Spr_Dungeon/Occupation_Bicheon_Sprite","0","2601","0","2","10","14","2","91","100","10","3","23","30","200751302","200751301","191030101","191030102","191030103","5","1000000","191030204","191030205","191030206","191030201","191030202","191030203","GENDATA_2601_Ready.json","GENDATA_2601_Battle.json","GENDATA_2601_Ceremony.json","1001" 3 | "201","201","455102","455102","/Game/UI/Atlas_N_Pack/Sprites_N/Spr_Contents/Spr_Dungeon/FD_Secret04_P_Sprite","0","2602","0","2","10","14","2","91","100","10","3","23","30","200751309","200751308","191030101","191030102","191030103","5","1000000","191030204","191030205","191030206","191030201","191030202","191030203","GENDATA_2602_Ready.json","GENDATA_2602_Battle.json","GENDATA_2602_Ceremony.json","2001" 4 | "301","301","455103","455103","/Game/UI/Atlas_N_Pack/Sprites_N/Spr_Contents/Spr_Dungeon/FG_Backstreet_EL_Sprite","0","2603","0","2","10","14","2","91","100","10","3","23","30","200751316","200751315","191030101","191030102","191030103","5","1000000","191030204","191030205","191030206","191030201","191030202","191030203","GENDATA_2603_Ready.json","GENDATA_2603_Battle.json","GENDATA_2603_Ceremony.json","0" 5 | "401","401","455104","455104","/Game/UI/Atlas_N_Pack/Sprites_N/Spr_Contents/Spr_Dungeon/FD_Uma_01_EL_Sprite","1","2604","0","2","10","14","2","91","100","10","3","23","30","200751323","200751322","191030101","191030102","191030103","5","1000000","191030204","191030205","191030206","191030201","191030202","191030203","GENDATA_2604_Ready.json","GENDATA_2604_Battle.json","GENDATA_2604_Ceremony.json","0" 6 | -------------------------------------------------------------------------------- /Data/csv/MULTI_LANGUAGE.csv: -------------------------------------------------------------------------------- 1 | "Name","RawId","IsShow","ISO639Code","LanguageName","LanguageSelectTitle","languageicon","LagnuageSelectDesc","LagnuageSelectAccept","LagnuageSelectCancel" 2 | "1","5","1","ENG","English","Select a language","4004","The game will start in the selected language.\r\nLanguage can be changed in Language Settings in Options.","Confirm","Cancel" 3 | "2","2","1","CHT","中文 繁體","語言選擇","4001","遊戲以您選擇的語言開始。\r\n將語言更改為\r\n可以在選項的語言設置中進行更改。","確認","取消" 4 | "3","3","1","CHS","中文 简体","语言选择","4002","游戏将以选定的语言开始。\r\n语言可以在\r\n选项的语言设置中进行更改。","确认","取消" 5 | "4","4","1","JPN","日本語","言語選択","4003","ゲームが選択した言語で開始されます。\r\n言語を変更するにはオプションの言語設定で変更することができます。","選択","取消" 6 | "5","1","1","KOR","한국어","언어 선택","4005","게임이 선택하신 언어로 시작됩니다.\r\n언어 변경은 옵션의 언어 설정에서 변경할 수 있습니다.","확인","취소" 7 | "6","6","1","THA","ไทย","เลือกภาษา","4006","เกมจะเริ่มในภาษาที่เลือก\r\nสามารถเปลี่ยนภาษาได้ใน การตั้งค่าภาษาในตัวเลือก","ตกลง","ยกเลิก" 8 | "7","7","1","IND","Indonesia","Pilih Bahasa","4007","Permainan akan dimulai dalam bahasa yang dipilih.\r\nBahasa dapat diubah di Opsi Pengaturan Bahasa.","OK","Batal" 9 | "8","8","1","VIE","Tiếng Việt","Chọn Ngôn ngữ","4008","Trò chơi sẽ bắt đầu bằng ngôn ngữ đã chọn.\r\nThay đổi ngôn ngữ trong Cài đặt Ngôn ngữ trong phần Lựa chọn.","OK","Hủy" 10 | "9","9","1","GER","Deutsche","Eine Sprache auswählen","4009","Das Spiel wird in der ausgewählten Sprache gestartet.\r\nDie Sprache kann in den Spracheinstellungen in den Optionen geändert werden.","Aceptar","Cancelar" 11 | "10","10","1","SPA","Español","Seleccione un idioma","4010","El juego comenzará en el idioma seleccionado.\r\ nEl idioma se puede cambiar en Configuración de Idioma en Opciones.","OK","Cancelar" 12 | "11","11","1","POR","Portugues","Selecione um idioma","4011","O jogo será iniciado no idioma selecionado.\r\nO idioma pode ser alterado em Configurações de idioma em Opções .","OK","Abbrechen" 13 | "12","12","1","RUS","Pусский","Выберите язык","4012","Игра будет запущена на выбранном языке.\r\nЯзык можно изменить в меню Языковых Настроек в Опциях.","OK","Отмена" 14 | -------------------------------------------------------------------------------- /Data/protobuf/packet_costume.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_EQUIP_COSTUME { 8 | uint64 uid = 1; 9 | uint32 equip_costume_id = 2; 10 | } 11 | 12 | message GAME_CLIENT_EQUIP_COSTUME { 13 | uint32 result = 1; 14 | uint32 parts = 2; 15 | uint32 equip_costume_id = 3; 16 | uint32 un_equip_costume_id = 4; 17 | } 18 | 19 | message CLIENT_GAME_UNEQUIP_COSTUME { 20 | uint64 uid = 1; 21 | uint32 un_equip_costume_id = 2; 22 | } 23 | 24 | message GAME_CLIENT_UNEQUIP_COSTUME { 25 | uint32 result = 1; 26 | uint32 parts = 2; 27 | uint32 un_equip_costume_id = 3; 28 | } 29 | 30 | message CLIENT_GAME_PURCHASE_COSTUME { 31 | _costume_info purchase_costume_info = 1; 32 | } 33 | 34 | message GAME_CLIENT_PURCHASE_COSTUME { 35 | uint32 result = 1; 36 | _costume_info purchase_costume_info = 2; 37 | repeated _cost_info costInfo = 3; 38 | repeated _stack_item_info update_items = 4; 39 | } 40 | 41 | message CLIENT_GAME_HIDE_COSTUME { 42 | uint64 uid = 1; 43 | uint32 parts = 2; 44 | bool is_hide = 3; 45 | } 46 | 47 | message GAME_CLIENT_HIDE_COSTUME { 48 | uint32 result = 1; 49 | uint32 parts = 2; 50 | bool is_hide = 3; 51 | } 52 | 53 | message CLIENT_GAME_CHANGE_COSTUME_COLOR { 54 | _costume_info change_costume_info = 1; 55 | } 56 | 57 | message GAME_CLIENT_CHANGE_COSTUME_COLOR { 58 | uint32 result = 1; 59 | _costume_info change_costume_info = 2; 60 | repeated _cost_info costInfo = 3; 61 | repeated _stack_item_info update_items = 4; 62 | } 63 | 64 | message CLIENT_GAME_EQUIP_LUXURY_COSTUME { 65 | uint64 equip_item_uid = 1; 66 | } 67 | 68 | message GAME_CLIENT_EQUIP_LUXURY_COSTUME { 69 | uint32 result = 1; 70 | uint32 luxury_parts = 2; 71 | uint64 equip_item_uid = 3; 72 | uint64 un_equip_item_uid = 4; 73 | } 74 | 75 | message CLIENT_GAME_UNEQUIP_LUXURY_COSTUME { 76 | uint64 un_equip_item_uid = 1; 77 | } 78 | 79 | message GAME_CLIENT_UNEQUIP_LUXURY_COSTUME { 80 | uint32 result = 1; 81 | uint32 luxury_parts = 2; 82 | uint64 un_equip_item_uid = 3; 83 | } 84 | 85 | message CLIENT_GAME_HIDE_LUXURY_COSTUME { 86 | _luxury_costume_hide_info hide_info = 1; 87 | } 88 | 89 | message GAME_CLIENT_HIDE_LUXURY_COSTUME { 90 | uint32 result = 1; 91 | _luxury_costume_hide_info hide_info = 2; 92 | } 93 | -------------------------------------------------------------------------------- /Data/csv/GUILD_COOP_MISSION_GROUP.csv: -------------------------------------------------------------------------------- 1 | "Name","GuildCoopMissionGroupId","Mission_Difficulty_Easy","Mission_Difficulty_Normal","Mission_Difficulty_Hard","NeedCoopPoint","DevId","DevLevel","CoopBossId","CoopBossIcon","StageId","PosID","ObjectId","WayPoint","Guild_MailPresetId","Guild_CoopRewardType1","Guild_CoopRewardId1","Guild_CoopRewardCount1","Guild_CoopRewardType2","Guild_CoopRewardId2","Guild_CoopRewardCount2","MVP_MailPresetId","MVP_CoopRewardType1","MVP_CoopRewardId1","MVP_CoopRewardCount1","MVP_CoopRewardType2","MVP_CoopRewardId2","MVP_CoopRewardCount2" 2 | "1","1","3","4","3","175000","101015","1","4000001","640169","10013","4000001","900030001","100000495","21001","2","602202710","3","0","0","0","21002","2","601202666","1","0","0","0" 3 | "2","2","3","4","3","175000","101015","2","4000002","640162","10023","4000002","900030002","100000496","21003","2","602202710","3","0","0","0","21004","2","601202666","1","0","0","0" 4 | "3","3","3","4","3","175000","101015","3","4000003","640149","10033","4000003","900030003","100000497","21005","2","602202710","4","0","0","0","21006","2","601202666","1","0","0","0" 5 | "4","4","3","4","3","175000","101015","4","4000004","640150","10043","4000004","900030004","100000498","21007","2","602202710","4","0","0","0","21008","2","601202666","1","0","0","0" 6 | "5","5","3","4","3","175000","101015","5","4000005","640252","10053","4000005","900030005","100000499","21009","2","602202711","3","0","0","0","21010","2","601202667","1","0","0","0" 7 | "6","6","3","4","3","175000","101015","6","4000006","640242","10063","4000006","900030006","100000500","21011","2","602202711","3","0","0","0","21012","2","601202667","1","0","0","0" 8 | "7","7","3","4","3","175000","101015","7","4000007","640289","10073","4000007","900030007","100000501","21013","2","602202711","4","0","0","0","21014","2","601202667","1","0","0","0" 9 | "8","8","3","4","3","175000","101015","8","4000008","640290","10083","4000008","900030008","100000502","21015","2","602202711","4","0","0","0","21016","2","601202667","1","0","0","0" 10 | "9","9","3","4","3","175000","101015","9","4000009","640292","10093","4000009","900030009","100000503","21017","2","602202712","3","0","0","0","21018","2","601202667","1","0","0","0" 11 | "10","10","3","4","3","175000","101015","10","4000010","650074","10103","4000010","900030010","100000504","21019","2","602202712","4","0","0","0","21020","2","601202667","1","0","0","0" 12 | -------------------------------------------------------------------------------- /Data/protobuf/info_redis.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile.Redis; 4 | 5 | import "info_common.proto"; 6 | 7 | message buff_list { 8 | repeated _buff_info list = 1; 9 | } 10 | 11 | message character_data { 12 | uint64 account_uid = 1; 13 | uint64 character_uid = 2; 14 | string nick_name = 3; 15 | int32 class = 4; 16 | int32 level = 5; 17 | _characterInfo character_info = 6; 18 | uint32 escape_stage_id = 7; 19 | _vector3 escape_loc = 8; 20 | uint32 awaken_grade = 9; 21 | int32 action_point_last_update_time_sec = 10; 22 | bool observer_mode = 11; 23 | string custom_title = 12; 24 | uint32 play_time = 13; 25 | } 26 | 27 | message costume_list { 28 | uint32 equip_costume_index = 1; 29 | repeated _costume_info list = 2; 30 | } 31 | 32 | message equip_list { 33 | repeated _character_equip_item list = 1; 34 | } 35 | 36 | message inven_list { 37 | int32 use_count = 1; 38 | int32 max_count = 2; 39 | int32 buy_count = 3; 40 | repeated _character_inven_item list = 4; 41 | } 42 | 43 | message mastery_list { 44 | repeated _character_mastery_slot list = 1; 45 | } 46 | 47 | message skill_list { 48 | repeated _character_skill active_skill_list = 1; 49 | repeated _character_skill_deck active_skill_deck_list = 2; 50 | repeated _passive_skill_info passive_skill_list = 3; 51 | repeated _skill_passive_group passive_skill_group_list = 4; 52 | } 53 | 54 | message treasure_list { 55 | repeated uint32 treasure_id_list = 1; 56 | } 57 | 58 | message tutorial_list { 59 | repeated uint32 tutorial_group_id_list = 1; 60 | } 61 | 62 | message vehicle_list { 63 | uint32 equip_group = 1; 64 | int32 equip_time = 2; 65 | repeated _vehicle_info list = 3; 66 | } 67 | 68 | message waypoint_list { 69 | repeated uint32 list = 1; 70 | } 71 | 72 | message mainquest_data { 73 | int32 index = 1; 74 | int32 state = 2; 75 | int32 count = 3; 76 | int32 mission_state = 4; 77 | } 78 | 79 | message subquest_data { 80 | int32 index = 1; 81 | int32 state = 2; 82 | int32 count = 3; 83 | } 84 | 85 | message quest_list { 86 | mainquest_data main_quest = 1; 87 | repeated subquest_data sub_quest_list = 2; 88 | repeated int32 end_subquest_list = 3; 89 | repeated int32 active_subquest_list = 4; 90 | } 91 | 92 | message quest_daily_list { 93 | repeated subquest_data quest_list = 1; 94 | } 95 | -------------------------------------------------------------------------------- /Data/protobuf/packet_notify.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message GAME_CLIENT_NOTIFY_ITEM_GAIN { 8 | int32 gain_type = 1; 9 | string user_name = 2; 10 | int32 item_tid = 3; 11 | int32 second_value = 4; 12 | int32 xdraco_state = 5; 13 | int32 world_id = 6; 14 | } 15 | 16 | message CLIENT_GAME_REQUEST_NOTIFY_ITEM_GAIN { 17 | int32 item_tid = 1; 18 | } 19 | 20 | message WORLD_GAME_NOTIFY_CONTETNS_LOCK { 21 | uint64 user_uid = 1; 22 | int32 result = 2; 23 | int32 contents_type = 3; 24 | int32 contetns_value = 4; 25 | } 26 | 27 | message GAME_CLIENT_NOTIFY_CONTETNS_LOCK { 28 | int32 result = 1; 29 | int32 contents_type = 2; 30 | int32 contetns_value = 3; 31 | bool kick_zone = 4; 32 | } 33 | 34 | message CLIENT_GAME_CONTENTS_LOCK_LIST { 35 | 36 | } 37 | 38 | message GAME_CLIENT_CONTENTS_LOCK_LIST { 39 | repeated _gm_contents_lock lock_list = 1; 40 | } 41 | 42 | message GAME_CLIENT_CONTENTS_LOCK_CHANGE { 43 | repeated _gm_contents_lock lock_list = 1; 44 | } 45 | 46 | message GAME_CLIENT_NOTIFY_CHANGE_DATE { 47 | 48 | } 49 | 50 | message GAME_CLIENT_NOTIFY_TIMELINE_GEN { 51 | repeated int32 timeline_tid = 1; 52 | } 53 | 54 | message GAME_CLIENT_NOTIFY_TIMELINE_GEN_ANOTHER_WORLD { 55 | repeated int32 timeline_tid = 1; 56 | } 57 | 58 | message GAME_CLIENT_NOTIFY_GAIN_INFO { 59 | int32 gain_type = 1; 60 | uint32 string_tid = 2; 61 | string user_name = 3; 62 | uint32 gain_tid = 4; 63 | uint32 stage_tid = 5; 64 | } 65 | 66 | message SERVER_SERVER_GUILD_NOTIFY_GAIN_INFO { 67 | uint64 guild_uid = 1; 68 | int32 gain_type = 2; 69 | uint32 string_tid = 3; 70 | string user_name = 4; 71 | uint32 gain_tid = 5; 72 | uint32 stage_tid = 6; 73 | } 74 | 75 | message LOBBY_CLIENT_NOTIFY_CONTENTS_LOCK { 76 | uint64 user_uid = 1; 77 | int32 result = 2; 78 | int32 contents_type = 3; 79 | int32 contetns_value = 4; 80 | } 81 | 82 | message CLIENT_LOBBY_CONTENTS_LOCK_LIST { 83 | 84 | } 85 | 86 | message LOBBY_CLIENT_CONTENTS_LOCK_LIST { 87 | repeated _gm_contents_lock lock_list = 1; 88 | } 89 | 90 | message LOBBY_CLIENT_CONTENTS_LOCK_CHANGE { 91 | repeated _gm_contents_lock lock_list = 1; 92 | } 93 | 94 | message GAME_CLIENT_NOTIFY_CAPTCHA_REAUTH_CHANGE { 95 | int32 reauth_term_min = 1; 96 | int32 reauth_level = 2; 97 | } 98 | -------------------------------------------------------------------------------- /Data/protobuf/packet_event_pass.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_CHARACTER_EVENT_PASS_MISSION_CLEAR { 8 | uint64 user_uid = 1; 9 | repeated uint32 request_event_pass_id_list = 2; 10 | } 11 | 12 | message GAME_CLIENT_SYNC_CLEAR_EVENT_PASS { 13 | uint32 event_pass_id = 1; 14 | uint32 total_mission_point = 2; 15 | } 16 | 17 | message GAME_CLIENT_EVENT_PASS_MISSION_CLEAR_LIST_RESULT { 18 | bool success_all = 1; 19 | repeated uint32 event_pass_id_list = 2; 20 | repeated _cost_info cost_info_list = 3; 21 | uint32 error_id = 4; 22 | uint32 error_reason_event_pass_id = 5; 23 | repeated _character_event_pass_mission_complete_info character_event_pass_complete_list = 6; 24 | } 25 | 26 | message GAME_CLIENT_SYNC_EVENT_PASS_DATA { 27 | repeated _character_event_pass_data_info event_pass_data_list = 1; 28 | } 29 | 30 | message CLIENT_GAME_CHARACTER_EVENT_PASS_REWARD { 31 | uint64 user_uid = 1; 32 | repeated uint32 reward_type = 2; 33 | repeated uint32 request_event_pass_id_list = 3; 34 | } 35 | 36 | message GAME_CLIENT_SYNC_REWARD_EVENT_PASS { 37 | uint32 event_pass_id = 1; 38 | repeated _cost_info cost_info_list = 2; 39 | repeated _character_inven_item reward_item_list = 3; 40 | uint64 user_event_id = 4; 41 | } 42 | 43 | message GAME_CLIENT_REWARD_EVENT_PASS_LIST_RESULT { 44 | bool success_all = 1; 45 | repeated uint32 event_pass_id_list = 2; 46 | uint32 error_id = 3; 47 | uint32 error_reason_event_pass_id = 4; 48 | _user_event_info event_info = 5; 49 | } 50 | 51 | message CLIENT_GAME_CHARACTER_EVENT_PASS_TICKET { 52 | 53 | } 54 | 55 | message GAME_CLIENT_CHARACTER_EVENT_PASS_TICKET { 56 | uint64 character_event_pass = 1; 57 | uint64 character_event_pass2 = 2; 58 | repeated _character_event_pass_date character_event_pass_date_list = 3; 59 | } 60 | 61 | message WORLD_GAME_API_UPDATE_EVENTPASS { 62 | uint64 user_uid = 1; 63 | uint64 account_uid = 2; 64 | uint32 category = 3; 65 | } 66 | 67 | message CLIENT_GAME_CHARACTER_EVENT_PASS_BUY_TICKET_MONEY { 68 | uint64 user_uid = 1; 69 | uint32 event_pass_info_uid = 2; 70 | uint32 purchase_number = 3; 71 | } 72 | 73 | message GAME_CLIENT_CHARACTER_EVENT_PASS_BUY_TICKET_MONEY { 74 | uint32 error_id = 1; 75 | repeated _cost_info cost_info_list = 2; 76 | repeated _character_event_pass_date character_event_pass_date_list = 3; 77 | } 78 | -------------------------------------------------------------------------------- /Data/protobuf/packet_vehicle.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_VEHICLE_RIDE_ON_OFF { 8 | _vector3 loc = 1; 9 | bool isRide = 2; 10 | } 11 | 12 | message GAME_CLIENT_VEHICLE_RIDE_ON_OFF { 13 | uint64 uid = 1; 14 | int32 vehicle_index = 2; 15 | _vector3 loc = 3; 16 | int32 result = 4; 17 | } 18 | 19 | message CLIENT_GAME_VEHICLE_EQUIP { 20 | int32 vehicle_group = 1; 21 | } 22 | 23 | message GAME_CLIENT_VEHICLE_EQUIP { 24 | int32 result = 1; 25 | int32 vehicle_group = 2; 26 | } 27 | 28 | message CLIENT_GAME_VEHICLE_UNLOCK { 29 | int32 vehicle_group = 1; 30 | } 31 | 32 | message GAME_CLIENT_VEHICLE_UNLOCK { 33 | int32 result = 1; 34 | int32 vehicle_group = 2; 35 | int32 vehicle_index = 3; 36 | repeated _stack_item_info update_items = 4; 37 | } 38 | 39 | message CLIENT_GAME_VEHICLE_REINFORCE { 40 | int32 vehicle_group = 1; 41 | int32 reinforce_count = 2; 42 | } 43 | 44 | message GAME_CLIENT_VEHICLE_REINFORCE { 45 | int32 result = 1; 46 | int32 vehicle_group = 2; 47 | int32 reinforce_index = 3; 48 | int32 reinforce_level = 4; 49 | int32 reinforce_exp = 5; 50 | _cost_info costInfo = 6; 51 | repeated _stack_item_info update_items = 7; 52 | } 53 | 54 | message CLIENT_GAME_VEHICLE_UPGRADE { 55 | int32 vehicle_group = 1; 56 | } 57 | 58 | message GAME_CLIENT_VEHICLE_UPGRADE { 59 | int32 result = 1; 60 | int32 vehicle_group = 2; 61 | int32 upgrade_vehicle_index = 3; 62 | _cost_info costInfo = 4; 63 | repeated _stack_item_info update_items = 5; 64 | } 65 | 66 | message CLIENT_GAME_VEHICLE_ITEM_EQUIP { 67 | int32 vehicle_group_id = 1; 68 | int32 position = 2; 69 | uint64 ItemUID = 3; 70 | } 71 | 72 | message GAME_CLIENT_VEHICLE_ITEM_EQUIP { 73 | int32 result = 1; 74 | int32 vehicle_group_id = 2; 75 | int32 position = 3; 76 | uint64 equipItemUID = 4; 77 | uint64 unequipItemUID = 5; 78 | } 79 | 80 | message CLIENT_GAME_VEHICLE_RIDE_EQUIP { 81 | int32 vehicle_index = 1; 82 | } 83 | 84 | message GAME_CLIENT_VEHICLE_RIDE_EQUIP { 85 | int32 result = 1; 86 | int32 vehicle_index = 2; 87 | } 88 | 89 | message CLIENT_GAME_VEHICLE_BUY { 90 | int32 vehicle_index = 1; 91 | } 92 | 93 | message GAME_CLIENT_VEHICLE_BUY { 94 | int32 result = 1; 95 | int32 vehicle_index = 2; 96 | repeated _cost_info costInfo = 3; 97 | repeated _stack_item_info update_items = 4; 98 | } 99 | -------------------------------------------------------------------------------- /Data/protobuf/packet_battle_pass.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_CHARACTER_BATTLE_PASS_CLEAR { 8 | uint64 user_uid = 1; 9 | bool is_direct = 2; 10 | repeated uint32 request_battle_pass_id_list = 3; 11 | } 12 | 13 | message GAME_CLIENT_SYNC_CLEAR_BATTLE_PASS { 14 | uint32 battle_pass_id = 1; 15 | uint32 total_mission_point = 2; 16 | } 17 | 18 | message GAME_CLIENT_CLEAR_BATTLE_PASS_LIST_RESULT { 19 | bool success_all = 1; 20 | repeated uint32 battle_pass_id_list = 2; 21 | repeated _cost_info cost_info_list = 3; 22 | uint32 error_id = 4; 23 | uint32 error_reason_battle_pass_id = 5; 24 | repeated _character_battle_pass_complete_info character_battle_pass_complete_list = 6; 25 | } 26 | 27 | message GAME_CLIENT_SYNC_EVENT_DATA { 28 | repeated _character_event_data_info event_data_list = 1; 29 | } 30 | 31 | message CLIENT_GAME_CHARACTER_BATTLE_PASS_REWARD { 32 | uint64 user_uid = 1; 33 | repeated uint32 reward_type = 2; 34 | repeated uint32 request_battle_pass_id_list = 3; 35 | } 36 | 37 | message GAME_CLIENT_SYNC_REWARD_BATTLE_PASS { 38 | uint32 battle_pass_id = 1; 39 | repeated _cost_info cost_info_list = 2; 40 | repeated _character_inven_item reward_item_list = 3; 41 | uint64 battle_pass_info_uid = 4; 42 | } 43 | 44 | message GAME_CLIENT_REWARD_BATTLE_PASS_LIST_RESULT { 45 | bool success_all = 1; 46 | repeated uint32 battle_pass_id_list = 2; 47 | uint32 error_id = 3; 48 | uint32 error_reason_battle_pass_id = 4; 49 | _user_event_info event_info = 5; 50 | } 51 | 52 | message CLIENT_GAME_CHARACTER_BATTLE_PASS_TICKET { 53 | 54 | } 55 | 56 | message GAME_CLIENT_CHARACTER_BATTLE_PASS_TICKET { 57 | uint64 character_battle_pass = 1; 58 | uint64 character_battle_pass2 = 2; 59 | repeated _character_battle_pass_date character_battle_pass_date_list = 3; 60 | } 61 | 62 | message WORLD_GAME_API_UPDATE_BATTLEPASS { 63 | uint64 user_uid = 1; 64 | uint64 account_uid = 2; 65 | uint32 category = 3; 66 | } 67 | 68 | message CLIENT_GAME_CHARACTER_BATTLE_PASS_BUY_TICKET_ITEM { 69 | uint64 user_uid = 1; 70 | uint32 battle_pass_info_uid = 2; 71 | uint32 purchase_number = 3; 72 | } 73 | 74 | message GAME_CLIENT_CHARACTER_BATTLE_PASS_BUY_TICKET_ITEM { 75 | uint32 error_id = 1; 76 | repeated _stack_item_info del_item_list = 2; 77 | repeated _character_battle_pass_date character_battle_pass_date_list = 3; 78 | } 79 | -------------------------------------------------------------------------------- /Data/csv/ITEM_MATERIAL_COMPOSE_POINT.csv: -------------------------------------------------------------------------------- 1 | "Name","Id","ItemUseId","TypeString","ComposeGradeString","FailPointType","FailPoint" 2 | "1","1","631130001","2004936","2004924","1","1" 3 | "11","11","631140001","2004937","2004924","2","1" 4 | "21","21","631131001","2004936","2004925","3","1" 5 | "31","31","631141001","2004937","2004925","4","1" 6 | "41","41","631132001","2004936","2004926","5","1" 7 | "51","51","631142001","2004937","2004926","6","1" 8 | "61","61","631133001","2004936","2004927","7","1" 9 | "71","71","631143001","2004937","2004927","8","1" 10 | "81","81","631134001","2004936","2004928","9","1" 11 | "91","91","631144001","2004937","2004928","10","1" 12 | "101","101","631135001","2004936","2004929","11","1" 13 | "111","111","631145001","2004937","2004929","12","1" 14 | "121","121","631136001","2004936","2004930","13","1" 15 | "131","131","631146001","2004937","2004930","14","1" 16 | "141","141","631137001","2004936","2004939","38","1" 17 | "151","151","631147001","2004937","2004939","39","1" 18 | "161","161","631138001","2004936","2004940","43","1" 19 | "171","171","631148001","2004937","2004940","44","1" 20 | "181","181","631139001","2004936","2004941","48","1" 21 | "191","191","631149001","2004937","2004941","49","1" 22 | "201","201","631131101","2004936","2004942","53","1" 23 | "211","211","631141101","2004937","2004942","54","1" 24 | "221","221","631131201","2004936","2004943","58","1" 25 | "231","231","631141201","2004937","2004943","59","1" 26 | "241","241","631131301","2004936","2004944","64","1" 27 | "251","251","631141401","2004937","2004944","65","1" 28 | "341","341","631131501","2004936","2004945","74","1" 29 | "351","351","631141501","2004937","2004945","75","1" 30 | "361","361","631131601","2004936","2004946","84","1" 31 | "371","371","631141601","2004937","2004946","85","1" 32 | "381","381","631131701","2004936","2004947","94","1" 33 | "391","391","631141701","2004937","2004947","95","1" 34 | "401","401","631131801","2004936","2004948","104","1" 35 | "411","411","631141801","2004937","2004948","105","1" 36 | "421","421","631131901","2004936","2004949","114","1" 37 | "431","431","631141901","2004937","2004949","115","1" 38 | "441","441","631130101","2004936","2004950","124","1" 39 | "451","451","631140101","2004937","2004950","125","1" 40 | "461","461","631130201","2004936","2004951","134","1" 41 | "481","481","631140201","2004937","2004951","135","1" 42 | "501","501","631130301","2004936","2004952","144","1" 43 | "511","511","631140301","2004937","2004952","145","1" 44 | -------------------------------------------------------------------------------- /Data/protobuf/packet_great_building.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message CLIENT_GAME_GREAT_BUILDING_INFO { 8 | 9 | } 10 | 11 | message GAME_CLIENT_GREAT_BUILDING_INFO { 12 | uint32 result = 1; 13 | repeated _great_building_info great_building_info = 2; 14 | } 15 | 16 | message CLIENT_GAME_OPEN_BUILDING { 17 | uint32 building_uid = 1; 18 | } 19 | 20 | message GAME_CLIENT_OPEN_BUILDING { 21 | uint32 result = 1; 22 | uint32 building_uid = 2; 23 | } 24 | 25 | message CLIENT_GAME_UPGRADE_BUILDING_REQUEST { 26 | uint32 building_uid = 1; 27 | } 28 | 29 | message GAME_CLIENT_UPGRADE_BUILDING_REQUEST { 30 | uint32 result = 1; 31 | uint32 building_uid = 2; 32 | uint64 upgrade_remain_time = 3; 33 | repeated _cost_info cost_info = 4; 34 | repeated _stack_item_info del_item_list = 5; 35 | } 36 | 37 | message GAME_CLIENT_UPGRADE_BUILDING_COMPLETE { 38 | uint32 building_uid = 1; 39 | } 40 | 41 | message CLIENT_GAME_UPGRADE_BUILDING_REQUEST_COMPLETE { 42 | uint32 building_uid = 1; 43 | } 44 | 45 | message GAME_CLIENT_UPGRADE_BUILDING_REQUEST_COMPLETE { 46 | uint32 result = 1; 47 | uint32 building_uid = 2; 48 | uint32 result_level = 3; 49 | } 50 | 51 | message CLIENT_GAME_UPGRADE_ACCELERATION { 52 | uint32 building_uid = 1; 53 | uint32 use_item_id = 2; 54 | uint32 point_value = 3; 55 | } 56 | 57 | message GAME_CLIENT_UPGRADE_ACCELERATION { 58 | uint32 result = 1; 59 | uint32 building_uid = 2; 60 | uint64 remain_time = 3; 61 | _stack_item_info del_item = 4; 62 | repeated _cost_info update_cost_info = 5; 63 | } 64 | 65 | message WORLD_GAME_BUILDING_UPGRADE_SUPPORT_NOTICE { 66 | uint64 user_uid = 1; 67 | repeated upgrade_building_notice_game_data building_data_list = 2; 68 | } 69 | 70 | message CLIENT_GAME_HARVEST_PRODUCTS_FROM_BUILDING { 71 | uint32 building_id = 1; 72 | } 73 | 74 | message GAME_CLIENT_HARVEST_PRODUCTS_FROM_BUILDING { 75 | uint32 result = 1; 76 | uint32 building_id = 2; 77 | uint32 gain_type = 3; 78 | uint32 reward_id = 4; 79 | uint32 reward_count = 5; 80 | uint64 last_harvest_time = 6; 81 | repeated _character_inven_item update_item = 7; 82 | repeated _cost_info update_cost_info = 8; 83 | } 84 | 85 | message GAME_CLIENT_PRODUCTION_NOTIFICATION { 86 | uint32 building_id = 1; 87 | uint32 gain_type = 2; 88 | uint32 reward_id = 3; 89 | uint32 reward_count = 4; 90 | uint64 last_harvest_time = 5; 91 | } 92 | -------------------------------------------------------------------------------- /Automation/Geometry.cs: -------------------------------------------------------------------------------- 1 | //By AlSch092 @ Github 2 | using Mir4ClientEmulator.Network.Packets.Messages; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Numerics; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace Mir4.Scripter 11 | { 12 | public class Geometry 13 | { 14 | static public float GetDistance(_vector3 v, _vector3 t) 15 | { 16 | float deltaX = t.x - v.x; float deltaY = t.y - v.y; float deltaZ = t.z - v.z; //subtract point 2 from point 1 then take squart root of x^2 + y^2 + z^2 17 | return (float)Math.Sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); 18 | } 19 | 20 | public static float Distance(_vector3 value1, _vector3 value2) 21 | { 22 | float num2 = value1.x - value2.x; 23 | float num3 = value1.y - value2.y; 24 | float num4 = value1.z - value2.z; 25 | float num5 = num2 * num2 + num3 * num3 + num4 * num4; 26 | return (float)Math.Sqrt(num5); 27 | } 28 | 29 | public static List<_vector3> GetClosebyVectors(_vector3 referenceVector, List<_vector3> vectorList, float distanceThreshold) 30 | { 31 | List<_vector3> closebyVectors = new List<_vector3>(); 32 | 33 | foreach (_vector3 vector in vectorList) 34 | { 35 | if (Geometry.Distance(referenceVector, vector) <= distanceThreshold) 36 | { 37 | closebyVectors.Add(vector); 38 | } 39 | } 40 | 41 | return closebyVectors; 42 | } 43 | 44 | public static _vector3[] SplitVector(_vector3 _start, _vector3 end, int segments) 45 | { 46 | if (segments < 2) 47 | { 48 | throw new ArgumentException("Number of segments must be at least 2"); 49 | } 50 | 51 | _vector3[] result = new _vector3[segments]; 52 | float step = 1f / (segments - 1); 53 | 54 | for (int i = 0; i < segments; i++) 55 | { 56 | float t = i * step; 57 | _vector3 _result = new _vector3(); 58 | _result.x = _start.x + (end.x - _start.x) * t; 59 | _result.y = _start.y + (end.y - _start.y) * t; 60 | _result.z = _start.z + (end.z - _start.z) * t; 61 | result[i] = _result; 62 | } 63 | 64 | return result; 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /Data/csv/EVENTDATA.csv: -------------------------------------------------------------------------------- 1 | "Name","EventDataId","PlayData","EventDataType","ConditionType","ConditionTypeValue1","ConditionTypeValue2","BattlePassState","CompleteCount" 2 | "1","300000","임무 완료 횟수","1000","1","0","0","0","0" 3 | "2","300001","사냥으로 동전 획득","1001","6","2","1","0","100000" 4 | "3","300002","일일 과제 완료","1002","1","0","1","0","100" 5 | "4","300003","채광","1003","28","2","1","0","500" 6 | "5","300004","채집","1003","28","1","1","0","500" 7 | "6","300005","운기조식","1003","28","4","1","0","500" 8 | "7","300006","일반 몬스터 처치","1006","21","1","1","0","1000" 9 | "8","300007","체질 강화 시도","1007","1","0","1","0","10" 10 | "9","300008","내공 강화 시도","1008","1","0","1","0","10" 11 | "10","300009","상점에서 물건 구매","1009","1","0","1","0","100" 12 | "11","300010","필드 임무 완료","1010","1","0","1","0","100" 13 | "12","300011","상점에서 동전 소비","1011","6","2","2","0","50000" 14 | "13","300012","물약 소비","1012","51","6","2","0","500" 15 | "14","300013","네임드 몬스터 처치","1006","21","3","2","0","50" 16 | "15","300014","토벌 입장","1013","19","102","2","0","5" 17 | "16","300015","마방진 입장","1013","19","103","2","0","5" 18 | "17","300016","거래소에서 아이템 구매","1014","1","0","2","0","10" 19 | "18","300017","아이템 강화 시도","1015","1","0","2","0","10" 20 | "19","300018","제작","1016","1","0","2","0","5" 21 | "20","300019","문파원 가속 지원","1017","1","0","2","0","100" 22 | "21","300020","봉인 해제","1018","1","0","2","0","20" 23 | "22","300021","문파 발전 지원","1019","1","0","3","0","500" 24 | "23","300022","보스 몬스터 처치","1006","21","4","3","0","5" 25 | "24","300023","보스토벌 입장","1013","19","101","3","0","5" 26 | "25","300024","비정봉 입장","1013","19","104","3","0","5" 27 | "26","300025","옵션감정 시도","1021","1","0","3","0","5" 28 | "27","300026","거래소에 아이템 등록","1022","1","0","3","0","10" 29 | "28","300027","정예 임무 완료","1023","1","0","3","0","50" 30 | "29","300028","합성","1024","1","0","3","0","5" 31 | "30","300029","비곡 임무 완료","1025","1","0","3","0","50" 32 | "31","300030","미궁 임무 완료","1026","1","0","3","0","50" 33 | "32","300031","모든 소환","1027","1","0","1","0","50" 34 | "33","300032","문파 원정 입장","1028","1","0","1","0","2" 35 | "34","300033","광부의 길 - 채광","1030","28","2","1","0","500" 36 | "35","300034","광부의 길 - 채광","1030","28","2","2","0","1000" 37 | "36","300035","광부의 길 - 채광","1030","28","2","3","0","1500" 38 | "37","300036","광부의 길 - 채집","1030","28","1","1","0","500" 39 | "38","300037","광부의 길 - 채집","1030","28","1","2","0","1000" 40 | "39","300038","광부의 길 - 채집","1030","28","1","3","0","1500" 41 | "40","300039","광부의 길 - 진기","1030","28","4","1","0","500" 42 | "41","300040","광부의 길 - 진기","1030","28","4","2","0","1000" 43 | "42","300041","광부의 길 - 진기","1030","28","4","3","0","1500" 44 | -------------------------------------------------------------------------------- /Data/protobuf/packet_cheat.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package MirMobile; 4 | 5 | import "info_common.proto"; 6 | 7 | message _cheat_user_pos { 8 | uint64 user_uid = 1; 9 | int32 stage_id = 2; 10 | int32 channel_id = 3; 11 | _vector3 target_pos = 4; 12 | } 13 | 14 | message WORLD_GAME_CHEAT_REQUEST_USER_POS { 15 | uint64 user_uid = 1; 16 | uint64 target_user_uid = 2; 17 | } 18 | 19 | message GAME_WORLD_CHEAT_REQUEST_USER_POS { 20 | uint64 user_uid = 1; 21 | _cheat_user_pos target_user_info = 2; 22 | int32 result = 3; 23 | } 24 | 25 | message WORLD_GAME_CHEAT_NOTIFY_USER_POS { 26 | uint64 user_uid = 1; 27 | _cheat_user_pos target_user_info = 2; 28 | int32 result = 3; 29 | } 30 | 31 | message GAME_CLIENT_CHEAT_NOTIFY_USER_POS { 32 | _cheat_user_pos target_user_info = 1; 33 | int32 result = 2; 34 | } 35 | 36 | message _cheat_user_info { 37 | uint64 user_uid = 1; 38 | int32 user_state = 2; 39 | int32 zonegroup_index = 3; 40 | uint64 zone_uid = 4; 41 | int32 zone_state = 5; 42 | int32 stage_id = 6; 43 | int32 channel_id = 7; 44 | } 45 | 46 | message GAME_WORLD_CHEAT_REQUEST_USER_INFO { 47 | uint64 request_user_uid = 1; 48 | string target_name = 2; 49 | } 50 | 51 | message WORLD_GAME_CHEAT_NOTIFY_USER_INFO { 52 | uint64 request_user_uid = 1; 53 | bool find_flag = 2; 54 | _cheat_user_info target_user_info = 3; 55 | } 56 | 57 | message WORLD_GAME_CHEAT_CHANNEL_ZONE_INFO { 58 | uint64 request_user_uid = 1; 59 | int32 attach_user_count = 2; 60 | int32 wait_login_user_count = 3; 61 | int32 wait_warp_user_count = 4; 62 | int32 waiting_enter_user_count = 5; 63 | int32 waiting_register_user_count = 6; 64 | } 65 | 66 | message GAME_WORLD_CHEAT_CHANGE_SETTLEMENT_TIME { 67 | int32 change_settlement_time = 1; 68 | int32 is_local_time_use = 2; 69 | } 70 | 71 | message GAME_WORLD_CHEAT_TRANSFER_INFO_DELETE { 72 | uint64 user_uid = 1; 73 | } 74 | 75 | message WEBAPI_LOG_CHEAT_MAKE { 76 | int32 count = 1; 77 | } 78 | 79 | message AGGRO_INFO { 80 | uint64 uid = 1; 81 | int32 entity_type = 2; 82 | int32 aggro_point = 3; 83 | } 84 | 85 | message CLIENT_GAME_AGGRO_INFO { 86 | uint64 monster_uid = 1; 87 | } 88 | 89 | message GAME_CLIENT_AGGRO_INFO { 90 | repeated AGGRO_INFO aggro_info = 1; 91 | } 92 | 93 | message WORLD_GAME_NTF_CHEAT_ACCOUNT_GRADE { 94 | uint64 user_uid = 1; 95 | int32 account_grade = 2; 96 | } 97 | 98 | message GAME_CLIENT_NTF_CHEAT_ACCOUNT_GRADE { 99 | int32 account_grade = 1; 100 | } 101 | --------------------------------------------------------------------------------