Mizev 19 Posted October 21, 2018 In creating my mod, I need to redefine the standard feature. modded class PlayerBase { override void OnRPC(PlayerIdentity sender, int rpc_type, ParamsReadContext ctx) {................ For the experiment, I first took a fully standard function from OnRPC. But this led to the crash of the game client. Then I began to remove some of the string functions until the only thing left: modded class PlayerBase { override void OnRPC(PlayerIdentity sender, int rpc_type, ParamsReadContext ctx) { super.OnRPC(sender, rpc_type, ctx); switch(rpc_type) { case ERPCs.RPC_SYNC_DISPLAY_STATUS: if( GetDisplayStatus() ) { //GetDisplayStatus().OnRPC(ctx); } break; } } } This does not result in a game client error. If you uncomment a line: //GetDisplayStatus().OnRPC(ctx); Then the game client crash happens again. Can someone tell me what I did wrong? p.s. Sorry about my English. Share this post Link to post Share on other sites
hftrade 0 Posted October 26, 2018 (edited) On 21.10.2018 at 10:48 AM, Mizev said: For the experiment, I first took a fully standard function from OnRPC. modded class PlayerBase { override void OnRPC(PlayerIdentity sender, int rpc_type, ParamsReadContext ctx) { super.OnRPC(sender, rpc_type, ctx); if ( (rpc_type >= 10000) && (rpc_type <= 10100) ) { Print("["+ GetGame().GetTime().ToString() +"]: [#Ultima]: [RPC]: Пришел пакет от сервера."); Print(string.Format("Тип: %1. Данные: %2.", rpc_type, ctx)); Param1<string> v_ctx = new Param1<string>(""); ctx.Read(v_ctx); string v_pckData = v_ctx.param1; Ultima_Client_Class_Admins.ParsePacket(rpc_type, v_pckData); return; } } } работает норм. мб у тебя крашит не из-за этого? Edited October 26, 2018 by hftrade Share this post Link to post Share on other sites
Mizev 19 Posted October 27, 2018 Да твой пример будет работать нормально. Дело не в этом. Я не хочу полностью переопределять OnRPC, а оставить классическую + добавить что-то свое. И вот тут начинается проблема. Если мы создадим класс modded class PlayerBase и добавим в нем стандартную функцию OnRPC(..., то два класса class PlayerBase и modded class PlayerBase не будут корректно как бы работать. modded class PlayerBase не видит остальные функции class PlayerBase, которые я не модифицирую. Я бы хотел добиться нечто похожего как с классами CustomMission и MissionServer. Share this post Link to post Share on other sites
DannyDog 532 Posted October 27, 2018 5 hours ago, Mizev said: Да твой пример будет работать нормально. Дело не в этом. Я не хочу полностью переопределять OnRPC, а оставить классическую + добавить что-то свое. И вот тут начинается проблема. Если мы создадим класс modded class PlayerBase и добавим в нем стандартную функцию OnRPC(..., то два класса class PlayerBase и modded class PlayerBase не будут корректно как бы работать. modded class PlayerBase не видит остальные функции class PlayerBase, которые я не модифицирую. Я бы хотел добиться нечто похожего как с классами CustomMission и MissionServer. The super.function(); call will allow you to still call the original function you are overriding. Removing it will result in your function completely replacing the parent one. Share this post Link to post Share on other sites
Mizev 19 Posted October 27, 2018 Thank you! Now I understand how it works! Share this post Link to post Share on other sites
hftrade 0 Posted October 27, 2018 Все они видят. ты super не вызывай, из базы, и полностью переопределишь. Share this post Link to post Share on other sites
OrLoK 16185 Posted October 29, 2018 Try to use a translation service like Google if you are going to post in russian. Попробуйте использовать службу перевода, такую как Google, если вы собираетесь публиковать ее на русском языке. Share this post Link to post Share on other sites
hftrade 0 Posted October 29, 2018 ok. but I know that he(Mizev) is Russian _) Share this post Link to post Share on other sites