рдЧрдврд╝ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрдирд╛

рдЧрдврд╝ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕


рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВрдиреЗ рдЗрд╕ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЙрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рд╡рд╛рд▓ рдкрд░ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдХрднреА-рдХрднреА рдореИрдВ рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛, рдХрднреА-рдХрднреА рдореИрдВрдиреЗ рдЧрд▓рдд рдкрдХреНрд╖ рд╕реЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, C # рд▓рд┐рдЦрдиреЗ рдФрд░ рд░рд┐рд╡рд░реНрд╕ рдбреЗрд╡рд▓рдкрд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд▓рдХреНрд╖реНрдп рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред



рд╣рд╛рдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реА # рдЖрдХрд╕реНрдорд┐рдХ рдирд╣реАрдВ рд╣реИ - рдЗрд╕ рдкрд░ рдЧреЗрдо рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, .net 2.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЬрд┐рд╕рдиреЗ рдмрд╛рдж рдореЗрдВ рдореБрдЭреЗ рдкрд╣рд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ рдЫрдбрд╝реЗрдВ рдбрд╛рд▓ рджреАрдВред





рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВ рдПрдХ рд╕реЙрдХреЗрдЯ рдмреЙрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ (рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдирд╣реАрдВ рд╣реИ) рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди "рд╕реНрд░реЛрдд рдХреЛрдб" (il-code рдХреЗ рдЕрдкрдШрдЯрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо) рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдЙрдмрд╛рдК рдФрд░ рдиреАрд░рд╕ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рд╕рд╛рдЗрдХрд┐рд▓ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ рддреЛ рд╡реЗ "рд╕реЛрд░реНрд╕ рдХреЛрдб" рд╣реЛрддреЗ рд╣реИрдВред



рдПрдХ рдкреНрд░рддрд┐рдХреНрд╖реЗрдкрдХ рдХреЗ рд╕рд╛рде рд╕рд╢рд╕реНрддреНрд░, рдореИрдВрдиреЗ рдЦреЗрд▓ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ (рдЬрд┐рд╕ рдХреЛрдб рдХреЛ рддреАрди рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ рд╣реИ) - рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВред



рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЧрд▓рдд рдирд┐рд░реНрдгрдп


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЧреЗрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореВрд▓ рд░реВрдк рд╕реЗ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:



рдирд┐рдЬреА рд╕реНрдереИрддрд┐рдХ рд╢реВрдиреНрдп рдореБрдЦреНрдп (рд╕реНрдЯреНрд░рд┐рдВрдЧ [] рдЖрд░реНрдЧреНрд╕) рдПрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрдХреЗрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рд╕реЗ, рд╡рд░реНрдЧ рднреА рдирд┐рдЬреА рд╣реИред



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдХреНрд▓рд╛рд╕ рдФрд░ рдкрджреНрдзрддрд┐ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреМрдбрд╝рд╛, рдлрд┐рд░ рд╕реЗ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХреА рддрд╛рдХрддреЛрдВ рдХреЗ рд╕рд╛рде рд░рд┐рдлреНрд▓реЗрдХреНрд╕рд┐рд▓ рдХреЗ рд╕рд╛рде, рдмрд┐рдирд╛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рдХрд┐ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИред



рд▓реЗрдХрд┐рди рдЕрдЪрд╛рдирдХ рдореБрдЭреЗ рдПрдХ рд▓рд╛рдВрдЪрд░ рдорд┐рд▓рд╛ рдЬреЛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд░рд╣рд╛ рдерд╛ред

рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдПрдХ рд╣реА рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрд╕рдХреЗ рд╕рд╛рде рд▓рдбрд╝рд╛рдИ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдФрд░ рдПрдХ рд╢рд╡ рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рд╕реЗ рдЦреЗрд▓ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рд░рд┐рдд рддрд░реНрдХреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдирд┐рдХрд╛рд▓рд╛:



if (DDText.getText(0x17) == "XX") parameters = new string[] { "-InstallerVersion", "", "", "st" }; // st == steam else parameters = new string[] { "-InstallerVersion", "", "" }; parameters[1] = SelfUpdater.CurrentBuildVersion.ToString(); parameters[2] = DDText.getText(0); // ,     ,   тАЬruтАЭ, тАЬdeтАЭ, тАЬenтАЭ  ..    local.txt   . UpdateManager.SetCommandLineParameters(parameters); //        System.Diagnostics.Process UpdateManager.StartApplication();
      
      







рдкрд╛рд░реНрд╕:



if (DDText.getText(0x17) == "XX")



- рд▓реЙрдиреНрдЪрд░ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╕реНрдерд╛рдиреАрдп.txt рдлрд╝рд╛рдЗрд▓ рдХреА рдПрдХ рд▓рд╛рдЗрдиред

рд╕реНрдЯреАрдо / рдиреЛ-рд╕реНрдЯреАрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдЕрдЬреАрдм рдкрд░реАрдХреНрд╖рдг: рдПрдХреНрд╕ - рд╕реНрдЯреАрдо рдирд╣реАрдВ, рдПрдХреНрд╕рдПрдХреНрд╕ - рд╕реНрдЯреАрдоред : \ _

parameters[1] = SelfUpdater.CurrentBuildVersion



- рд▓реЙрдиреНрдЪрд░ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг, рдЗрд╕рд╕реЗ рд╢рд╛рдВрдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдЪреЗрдХ рдЕрдЬреАрдм рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдмрд╛рдж рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдФрд░ рдЖрдк рдмрд╕ рдПрдХ рдирдВрдмрд░ рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ, "рд░рд┐рдЬрд░реНрд╡" рдореЗрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ред рдЪреЗрдХ рдХреЗрд╡рд▓ рдЕрдкреНрд░рдЪрд▓рди рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕рд▓рд┐рдП "рдХрдо-рдЕрдзрд┐рдХ" рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╣реЗрдВред

parameters[2] = DDText.getText(0)



- рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдпрд╣ рдЦреЗрд▓ рдХреА рднрд╛рд╖рд╛ рд╣реИ, рдкреНрд░рд╛рд░реВрдк "рдЖрд░рдпреВ", "рдбреА", "рдПрди", рдЖрджрд┐ рдореЗрдВред

рдЗрд╕реЗ рд▓реЛрдХрд▓.рдЯреЗрдХреНрд╕реНрдЯ рдлрд╛рдЗрд▓ рд╕реЗ рднреА рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рд╡реИрд╕реЗ, рд▓рд╛рдВрдЪрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



 static SelfUpdater() { currentBuildVersion = 0x75; // 117, .. 1.17   . }
      
      







рдФрд░ рдЙрд╕рдиреЗ рдПрдХ рдореИрдЬрд┐рдХ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ:



StrongholdKingdoms.exe -InstallerVersion 117 ru







рдпрджреНрдпрдкрд┐ рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



StrongholdKingdoms.exe -InstallerVersion 100500 ru







рдореИрдВрдиреЗ рдХреБрдЫ рдЬреНрдпрд╛рджрд╛ рд╣реА рдХрд╣рд╛ред



рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ: рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд▓реЙрдиреНрдЪрд░ рдмрд╛рдпрдкрд╛рд╕ рд╕рд┐рд╕реНрдЯрдо, рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣ рд╕рдм рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЦреЗрд▓ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рдкреИрдЪ рдиреЗ рдЗрд╕реЗ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдпрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рдиреБрдХрд╕рд╛рди рдХреНрдпреЛрдВ рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛)ред



рдЙрд╕рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдЦреЗрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдЧреЗрдо рдиреЗрдорд╕реНрдкреЗрд╕ - рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред



рдлрд┐рд░ рдореИрдВрдиреЗ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдбрд╛рд▓ рджрд┐рдП: рдореИрдВрдиреЗ рдореЗрди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд▓рд╛рд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдЧреЗрдо рд░рдирдЯрд╛рдЗрдо рдХреНрд░реИрд╢ рдХреЗ рд╕рд╛рде рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдкрд░реЗ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдЗрд╕ рддрдереНрдп рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЦреЗрд▓ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧреИрд░-рд╕реА # рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рдирд╣реАрдВ рдорд┐рд▓реЗред



рдлреИрд╕рд▓рд╛ рд╕рд╣реА рд╣реИ


рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреАрдбрд╝рд╛ рдХреЗ рдмрд╛рдж рдФрд░ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдвреВрдВрдврдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдереВрдХ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореБрдЭреЗ рдЯреЗрд░рд╛рд░рд┐рдпрд╛ рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рдпрд╛рдж рдЖрдпрд╛ - TShock (рд╣рд╛рдБ, рдХрд╛рдВрдЯрд╛, рдХреИрд╕реЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдбрд┐рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рднреА рдордЬрд╝рд╛ рдХрд┐рдпрд╛) рдФрд░ DLL рд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ (рдореЙрдб / рдкреНрд▓рдЧ)ред



рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдореБрдЭреЗ рд░реЛрдЪрдХ рд▓рдЧрд╛ред Googling рдХреЛ рдПрдХ рддрд░реАрдХрд╛ рдФрд░ рдПрдХ рдХреЛрдб рджреЛрдиреЛрдВ рдорд┐рд▓рд╛ред

рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рд╡рд┐рд▓рдВрдм рд╣реБрдЖ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬрд╛рдБрдЪ рд▓рд┐рдпрд╛, рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдХрд░ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ (рдЕрдЪрд╛рдирдХ!)

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдб:



 System.Reflection.Assembly A = System.Reflection.Assembly.LoadFrom(System.Windows.Forms.Application.StartupPath + @"\BotDLL.dll"); Type ClassType = A.GetType("BotDLL.Main", true); object Obj = Activator.CreateInstance(ClassType); System.Reflection.MethodInfo MI = ClassType.GetMethod("Inject"); MI.Invoke(Obj, null);
      
      







рдЖрдЗрдП рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:

System.Reflection.Assembly



- рдпрд╣ рд╡рд╣ рдЪреАрдЬ рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬрдм рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдХреЛрдб рд╕реЗред рдпрд╣ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдХреЙрдкреАрд░рд╛рдЗрдЯ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рдБ, рдЖрдкрдХреА рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рд╣реА рдЕрд╕реЗрдВрдмрд▓реАрдЗрдиреНрдлреЛ .cs)ред

Assembly.LoadFrom(System.Windows.Forms.Application.StartupPath + @"\BotDLL.dll")



- рд╣рдорд╛рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред

рдлрд┐рд░ рд╣рдо рдЗрд╕ рдХреНрд▓рд╛рд╕ рдЗрдирдЬреЗрдХреНрдЯ () рдХреЗ рдЕрдВрджрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдмреЙрдЯ рдХреА рд╢реБрд░реБрдЖрдд рд╣реИред =)

рдореИрдВрдиреЗ рдЙрд╕ рдХреЛрдб рдХреЛ рдЖрдЬрд╝рдорд╛рдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдХреЗрдЪ рдХрд┐рдпрд╛ рдерд╛ - рдЗрдВрдЬреЗрдХреНрд╢рди рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред



рдЧреНрд░рд╛рд╣рдХ рдкреИрдЪ


рдЕрдм рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ - рд╣рдо рдЦреЗрд▓ рдореЗрдВ рдЪреБрдиреМрддреА рдХреЛрдб рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред

Reflexil рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХреЛрдб рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдореБрдЦреНрдп рдореЗрдВ рдЕрдпреЛрдЧреНрдп рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЧрдИ, рдЙрдиреНрд╣реЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдХ рдкреИрдЪ рднреЗрдЬрд╛ рдЧрдпрд╛ рдЬреЛ рдХрд┐ рд╡рд┐рдШрдЯрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреИрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЦреИрд░, рдпрд╛ рдореИрдВ рд╕рд┐рд░реНрдл рдЖрд▓рд╕реА рдерд╛, рдпрд╣ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЗрд╕рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЙрд▓ (рдЕрдЧрд░, рдЖрджрд┐ рдХреА рдореБрдЦреНрдп рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рдмрд╛рд╣рд░) рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдпрд╛ рдерд╛, рддреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рдореБрдЭреЗ MySettings.load () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдиреЗ рдЧреЗрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд▓реЛрдб рдХрд┐рдпрд╛ред

рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ рдХреЛрдб рдХрд╛ рдПрдХ рдкрд╣рд╛рдбрд╝ рдерд╛ рдЬреЛ рдмрд┐рдирд╛ рддрдВрдмреВ рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рд▓реЗрдХрд┐рди рдПрдХ рдлреНрд▓рдХреНрд╕ рдХреЗ рджреНрд╡рд╛рд░рд╛, рдмреВрд▓рд┐рдпрди рдлрдВрдХреНрд╢рди hasLoggedIn () рд╣реИ, рдЬреЛ рдЦреЗрд▓ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдХреЗрд╡рд▓ рдмреВрд▓ рдорд╛рди рджреЗрддрд╛ рд╣реИ:

return (this.HasLoggedIn || (this.Username.Length > 0));





рдЗрд╕рдиреЗ рдореБрдЭреЗ рддреБрд░рдВрдд рдкреНрд░рд╕рдиреНрди рдХрд┐рдпрд╛, рдФрд░ рддреБрд░рдВрдд рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛:



 if (!IsStarted) { System.Reflection.Assembly A = System.Reflection.Assembly.LoadFrom(System.Windows.Forms.Application.StartupPath + @"\BotDLL.dll"); Type ClassType = A.GetType("BotDLL.Main", true); object Obj = Activator.CreateInstance(ClassType); System.Reflection.MethodInfo MI = ClassType.GetMethod("Inject"); MI.Invoke(Obj, null); IsStarted = true; } return (this.HasLoggedIn || (this.Username.Length > 0));
      
      







рд╣рдо рдЙрд╕рд╕реЗ рдирд┐рдкрдЯ рд▓реЗрдВрдЧреЗред

if (! IsStarted) - рдореБрдЭреЗ рдЗрд╕ рдЪреЗрдХ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдерд╛, рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MySettings рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрд▓реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдмреЙрдЯ рдереНрд░реЗрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рднреА рдПрдХ рд╣реА Reflexil'om рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЦреИрд░, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдореБрдЦреНрдп рдХреЛрдб рдХрд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рд╣реИред

рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдо рд╡рд╣реА рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣рд╛рдБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред =)



рддреЛ - рдмреЙрдЯ рд╣реА


рдЗрдВрдЬреЗрдХреНрд╢рди рд╕рдорд╛рд░реЛрд╣:



  public void Inject() { AllocConsole(); Console.Title = "SHKBot"; Console.WriteLine("DLL !"); Thread Th = new Thread(SHK); Th.Start(); BotForm FBot = new BotForm(); FBot.Show(); } тАж [DllImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool AllocConsole();
      
      







рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХрдВрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рдмреЙрдЯ рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рдзрд╛рдЧрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж - SHK ();

рдФрд░ рдЙрд╕реА рд╕рдордп, рд╣рдо рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдмреЙрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдлреЙрд░реНрдо рдЦреЛрд▓рддреЗ рд╣реИрдВред



рдлрд┐рд░ рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рд╡реНрдпрд╡рд╕рд╛рдп рд╣реИ - рдЖрдкрдХреЛ рдЬрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдмрд╛рдХреА рдХреЛрдб рд╣реИ - рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЯреНрд░реЗрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред

рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрд░ рдореЗрдВ рдЧрд╛рдВрд╡реЛрдВ рдХреЛ "рдХреИрд╢" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЙрди рдкреНрд░рддреНрдпреЗрдХ рдЧрд╛рдВрд╡реЛрдВ рдХреЛ рдЦреЛрд▓реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╡реНрдпрд╛рдкрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдпрд╣ рдХреЛрдб рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рд░реВрдк рд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЧрд╛рдВрд╡реЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ:



 InterfaceMgr.Instance.selectVillage(VillageID); GameEngine.Instance.downloadCurrentVillage();
      
      







рдпрд╣рд╛рдБ SHK рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рд╣реИ:

рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
 public void SHK() { Console.WriteLine(" !"); while (!GameEngine.Instance.World.isDownloadComplete()) { Console.WriteLine("   !"); Thread.Sleep(5000); // 5 sec Console.Clear(); } Console.WriteLine(" !    ."); Console.WriteLine("\n======| DEBUG INFO |======"); Console.WriteLine(RemoteServices.Instance.UserID); Console.WriteLine(RemoteServices.Instance.UserName); List<int> VillageIDs = GameEngine.Instance.World.getListOfUserVillages(); foreach (int VillageID in VillageIDs) { WorldMap.VillageData Village = GameEngine.Instance.World.getVillageData(VillageID); Console.WriteLine("[] " + Village.m_villageName + " - " + VillageID); InterfaceMgr.Instance.selectVillage(VillageID); GameEngine.Instance.downloadCurrentVillage(); } Console.WriteLine("======| ========== |======\n"); while (true) { try { //   -   } catch (Exception ex) { Console.WriteLine("\n======| EX INFO |======"); Console.WriteLine(ex); Console.WriteLine("======| ======= |======\n"); } } }
      
      







рдирд┐рдпрдВрддреНрд░рдг рдлрд╝реЙрд░реНрдо рдХреЛрдб:

рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; using Kingdoms; using System.CodeDom.Compiler; using Microsoft.CSharp; using System.Reflection; namespace BotDLL { public partial class BotForm : Form { Thread TradeThread; bool IsTrading = false; public void Log(string Text) { Console.WriteLine(Text); richTextBox_Log.Text = Text + "\r\n" + richTextBox_Log.Text; } public BotForm() { CheckForIllegalCrossThreadCalls = false; InitializeComponent(); this.Show(); Log("  ."); listBox_ResList.SelectedIndex = 0; Log("  ..."); TradeThread = new Thread(Trade); TradeThread.Start(); } private void button_Trade_Click(object sender, EventArgs e) { //         if (GameEngine.Instance.World.isDownloadComplete() && textBox_TradeTargetID.Text.Length > 0) { try { if (!IsTrading) //    { button_Trade.Text = ""; IsTrading = true; //   } else //   { button_Trade.Text = ""; IsTrading = false; } } catch (Exception ex) { Console.WriteLine("\n======| EX INFO |======"); Log(ex.ToString()); Console.WriteLine("======| ======= |======\n"); } } } public void Trade() { Log("  !"); int Sleep = 0; while (true) //   { Sleep = 60 + new Random().Next(-5, 60); if (IsTrading) { Log("[" + DateTime.Now + "]   \"" + listBox_ResList.SelectedItem.ToString() + "\""); //  ID    int ResID = int.Parse(listBox_ResList.SelectedItem.ToString().Replace(" ", "").Split('-')[0]); int TargetID = int.Parse(textBox_TradeTargetID.Text); //  ID - List<int> VillageIDs = GameEngine.Instance.World.getListOfUserVillages(); //     foreach (int VillageID in VillageIDs) //   { //    (       ) if (GameEngine.Instance.getVillage(VillageID) != null) { //       WorldMap.VillageData Village = GameEngine.Instance.World.getVillageData(VillageID); VillageMap Map = GameEngine.Instance.getVillage(VillageID); //    int ResAmount = (int)Map.getResourceLevel(ResID); // -    int MerchantsCount = Map.calcTotalTradersAtHome(); // -    Log("  " + VillageID + "  " + MerchantsCount + " "); //  int SendWithOne = int.Parse(textBox_ResCount.Text); // -    int MaxAmount = MerchantsCount * SendWithOne; // -   if (ResAmount < MaxAmount) //        MerchantsCount = (int)(ResAmount / SendWithOne); //      if (MerchantsCount > 0) //     { TargetID = GameEngine.Instance.World.getRegionCapitalVillage(Village.regionID); //   ,  textBox_TradeTargetID.Text = TargetID.ToString(); //        GameEngine.Instance.getVillage(VillageID).stockExchangeTrade(TargetID, ResID, MerchantsCount * SendWithOne, false); AllVillagesPanel.travellersChanged(); //   ( )  GUI- } } } Log("    " + Sleep + "   " + DateTime.Now.AddSeconds(Sleep).ToString("HH:mm:ss")); Console.WriteLine(); } Thread.Sleep(Sleep * 1000); // ,   .   . } } private void BotForm_FormClosing(object sender, FormClosingEventArgs e) { try { TradeThread.Abort(); } catch {} } private void button_MapEditing_Click(object sender, EventArgs e) { button_MapEditing.Text = (!GameEngine.Instance.World.MapEditing).ToString(); GameEngine.Instance.World.MapEditing = !GameEngine.Instance.World.MapEditing; } private void button_Exec_Click(object sender, EventArgs e) { if (richTextBox_In.Text.Length == 0 || !GameEngine.Instance.World.isDownloadComplete()) return; richTextBox_Out.Text = ""; // *** Example form input has code in a text box string lcCode = richTextBox_In.Text; ICodeCompiler loCompiler = new CSharpCodeProvider().CreateCompiler(); CompilerParameters loParameters = new CompilerParameters(); // *** Start by adding any referenced assemblies loParameters.ReferencedAssemblies.Add("System.dll"); loParameters.ReferencedAssemblies.Add("System.Data.dll"); loParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll"); loParameters.ReferencedAssemblies.Add("StrongholdKingdoms.exe"); // *** Must create a fully functional assembly as a string lcCode = @"using System; using System.IO; using System.Windows.Forms; using System.Collections.Generic; using System.Text; using Kingdoms; namespace NSpace { public class NClass { public object DynamicCode(params object[] Parameters) { " + lcCode + @" return null; } } }"; // *** Load the resulting assembly into memory loParameters.GenerateInMemory = false; // *** Now compile the whole thing CompilerResults loCompiled = loCompiler.CompileAssemblyFromSource(loParameters, lcCode); if (loCompiled.Errors.HasErrors) { string lcErrorMsg = ""; lcErrorMsg = loCompiled.Errors.Count.ToString() + " Errors:"; for (int x = 0; x < loCompiled.Errors.Count; x++) lcErrorMsg = lcErrorMsg + "\r\nLine: " + loCompiled.Errors[x].Line.ToString() + " - " + loCompiled.Errors[x].ErrorText; richTextBox_Out.Text = lcErrorMsg + "\r\n\r\n" + lcCode; return; } Assembly loAssembly = loCompiled.CompiledAssembly; // *** Retrieve an obj ref тАУ generic type only object loObject = loAssembly.CreateInstance("NSpace.NClass"); if (loObject == null) { richTextBox_Out.Text = "Couldn't load class."; return; } object[] loCodeParms = new object[1]; loCodeParms[0] = "SHKBot"; try { object loResult = loObject.GetType().InvokeMember( "DynamicCode", BindingFlags.InvokeMethod, null, loObject, loCodeParms); //DateTime ltNow = (DateTime)loResult; if (loResult != null) richTextBox_Out.Text = "Method Call Result:\r\n\r\n" + loResult.ToString(); } catch (Exception ex) { Console.WriteLine("\n======| EX INFO |======"); Console.WriteLine(ex); Console.WriteLine("======| ======= |======\n"); } } } }
      
      









рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВ NLua рдмреЙрдЯ (C # рдХреЗ рд▓рд┐рдП рд▓реБрдЖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА) рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ 3.5+ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореИрдВ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛:

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╢рд╛рд░реНрдк рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ - рдореИрдВ рдмрд╛рд░-рдмрд╛рд░ recompiling рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЧреЗрдо рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдердХ рдЧрдпрд╛ред

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ред



рдкрд░рд┐рдгрд╛рдо


рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд╛рдн:

  1. рд╕рднреА рдЧреЗрдо рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪреЗрдВ рдЬреИрд╕реЗ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдереЗред
  2. рдЖрдк рдЗрдорд╛рд░рддреЛрдВ рдХреА рдПрдХ рдХрддрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░реАрдорд┐рдпрдо рдХрд╛рд░реНрдб рдХреА рдЕрдкрдиреА рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╢реЛрдз рдХрд╛ рдЕрдзреНрдпрдпрди, рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ:

    • рдЖрдкрдХреЗ рдЖрд╕-рдкрд╛рд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдорд╛рд▓ рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдердо
    • рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореМрдЬреВрджрд╛ рдПрдХ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ "рд▓реЗрдЖрдЙрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░" рдЧрд╛рдВрд╡ рдХрд╛ рдСрдЯреЛрд╕реНрдЯреНрд░рдХреНрдЪрд░ред
    • рд╡рд┐рднрд┐рдиреНрди рдЗрдХрд╛рдЗрдпреЛрдВ рдХрд╛ рдСрдЯреЛ-рдЯрд╛рдЗрдоред
    • рдЬрдм рдЖрдк рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдорд╣рд▓ рдХрд╛ рдСрдЯреЛ-рд▓реЙрдХред
    • рд╕рдордп рдореЗрдВ рдЧрд╛рд░рдВрдЯреА рдХрд╛рд░реНрдб рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдВрдЧреНрд░рд╣ред


  3. рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЧрддрд┐рд╢реАрд▓ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрдиред
  4. рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдордЬрд╝реЗрджрд╛рд░ рд╕реБрд░рдХреНрд╖рд╛ред рдЦреИрд░, рд╕рдВрджрд┐рдЧреНрдз рдбрдореА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рди рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рд╢рд░реНрддреЗрдВред


рд╡рд┐рдкрдХреНрд╖:

  1. рдЖрдкрдХреЛ рд╣реИрдВрдбрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреИрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╛ рдЖрдк Mono.Cecil рдпрд╛ рдврд╛рдВрдЪреЗ рдореЗрдВ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреИрдЪрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдкреНрд░реАрдорд┐рдпрдо рдХрд╛рд░реНрдб рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╣рдореЗрд╢рд╛ рдФрд░ рдСрдирд▓рд╛рдЗрди рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред
  3. рдЦреЗрд▓ рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП "рдПрдкреАрдЖрдИ" рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдВрдЯреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред рдпрджреНрдпрдкрд┐ рдЗрдЪреНрдЫрд╛ рдФрд░ рд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╣ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реИ - рдПрдХ рдЗрдЪреНрдЫрд╛ рд╣реЛрдЧреАред рдФрд░ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред




рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:





рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЦреЗрд▓ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдЧреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ:

рдХрдХреНрд╖рд╛ рд╕реВрдЪреА
  • GameEngine
  • GameEngine.Instance
  • GameEngine.Instance.World
  • worldmap
  • WorldMap.VillageData
  • RemoteServices
  • RemoteServices.Instance
  • AllVillagesPanel
  • VillageMap






рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЦреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 2.0.18.6 рдерд╛ред

рдЦреЗрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдФрд░ рдмреЙрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред

рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рдЪреЛрд░реА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред =) рдЦреЗрд▓ рд╕реЗ рдердХ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВред



рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред

рдпрджрд┐ рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рд╛рдл рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ (рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреИрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕ рд▓рд┐рдВрдХ рдХреЛ рдЧрдВрддрд╡реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЛ рднреА рдЕрдХреНрд╖рдо рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдк рдЧрд▓рддреА рд╕реЗ рдкреИрдЪ рдХрд┐рдП рдЧрдП рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рди рдХрд░реЗрдВред



рдореИрдВ рд▓реЗрдЦ рдХреА рд▓реЗрдЦрди рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ - рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдБред рд╢рд╛рдпрдж рдореИрдВ рд╡рд┐рд╖рдп рд╕реЗ рд╡рд┐рд╖рдп рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рдЫрд▓рд╛рдВрдЧ рд▓рдЧрд╛рдКрдВрдЧрд╛ рдпрд╛ рдХреБрдЫ рддрдХрдиреАрдХреА рдкрд╣рд▓реБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣ рдЖрдкрдХреЛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдкрд╛рдиреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрдЦ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЫреЛрдЯреА рдХрд╣рд╛рдиреА рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╢рд╛рдпрдж рдЗрд╕ рд╡рдЬрд╣ рд╕реЗред



All Articles