├── 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 |
--------------------------------------------------------------------------------