Matteo 46 Posted January 3, 2022 Share Posted January 3, 2022 Hi, I'd like to disable the keyboard inputs when someone is warping since they bugging out stuff when goes into warp and then spams ESC. Because of that i want to disable every keyboard input instantly at teleport. How can i do that? System Administrator @ Hungarian Government System Administrator @ Vibestro Freelancer Developer @ Various projects Link to comment Share on other sites More sharing options...
Contributor TMP4 10991 Posted January 3, 2022 Contributor Share Posted January 3, 2022 (edited) That's not how you solve such problems. That would be a weak workaround here, not a fix. You have to fix your glitch's origin. Have a look at this: Even if your problem is about another system like sash combination, battle pass or anything, the solution is the same: use CHARACTER :: CanWarp so players cannot warp when they are not allowed to. Edited January 3, 2022 by TMP4 Link to comment Share on other sites More sharing options...
Matteo 46 Posted January 3, 2022 Author Share Posted January 3, 2022 (edited) 2 hours ago, TMP4 said: That's not how you solve such problems. That would be a weak workaround here, not a fix. You have to fix your glitch's origin. Have a look at this: Even if your problem is about another system like sash combination, battle pass or anything, the solution is the same: use CHARACTER :: CanWarp so players cannot warp when they are not allowed to. Hi, Its already done for days now. I have added obviusly CanWarp to everything that is related, but mainly the warp gates that teleports instantly the main problem. (Yes, i have added the CanWarp to the gates too but then they do a logout->change channel->login->warp gate instantly->crash back into loginscreen (by spamming ESC)->relog to another channel ) Edited January 3, 2022 by Minton System Administrator @ Hungarian Government System Administrator @ Vibestro Freelancer Developer @ Various projects Link to comment Share on other sites More sharing options...
Developer PACI 919 Posted January 3, 2022 Developer Share Posted January 3, 2022 Remove the OnPressEscapeKey method from the introLoading module. when you return 0 and server doesn't boot: Link to comment Share on other sites More sharing options...
Contributor TMP4 10991 Posted January 3, 2022 Contributor Share Posted January 3, 2022 1 minute ago, PACI said: Remove the OnPressEscapeKey method from the introLoading module. Then someone will come and just readd it to the clientside and continue the item duplication or whatever his players doing @ MintonTell us your exact problem what they are bugging out with which system. With your latest example it looks like it may not even related to the warp but the system itself. Link to comment Share on other sites More sharing options...
Developer PACI 919 Posted January 3, 2022 Developer Share Posted January 3, 2022 1 minute ago, TMP4 said: Then someone will come and just readd it to the clientside and continue the item duplication or whatever his players doing Replied to their question as they didn't want to elaborate further on their issue. At least this, for them, may buy some time until they figure what is wrong and share it with us. 1 when you return 0 and server doesn't boot: Link to comment Share on other sites More sharing options...
Matteo 46 Posted January 3, 2022 Author Share Posted January 3, 2022 3 minutes ago, PACI said: Replied to their question as they didn't want to elaborate further on their issue. At least this, for them, may buy some time until they figure what is wrong and share it with us. Its really hard to do the bug but there is still 1-2 player who can abuse it. I've contacted the developer of the system (since its not a pirated system) he also sent some fixes but after that it became very hard but there is still a possibility to do it. I dont want to discuss neither the system or the exact steps to reproduce the bug because it can affect a some server that uses the given system. After the fix i'll post it of course. 1 System Administrator @ Hungarian Government System Administrator @ Vibestro Freelancer Developer @ Various projects Link to comment Share on other sites More sharing options...
Honorable Member Solution Owsap 8150 Posted January 3, 2022 Honorable Member Solution Share Posted January 3, 2022 (edited) Just to answer the question of the topic, this is one way you can disable any key input while in the loading phase. /* * NOTE: This will only prevent inputting any key while in the loading phase. * Be aware that you can still hit any key when selecting the character until it changes into the loading phase. */ /// 1. @ UserInterface/PythonNetworkStream.h // Search public: CPythonNetworkStream(); // Add above bool IsLoadingPhase() { return (m_strPhase == "Loading"); } /// 2. @ UserInterface/PythonNetworkStream.h // Search bool __DirectEnterMode_IsSet(); // Add below public: bool DirectEnterMode_IsSet() { return __DirectEnterMode_IsSet(); } /// 3. @ UserInterface/PythonApplicationEvent.cpp // Search void CPythonApplication::OnKeyDown(int iIndex) // Add below (You might need to include "InstanceBase.h" CPythonNetworkStream& rkInstance = CPythonNetworkStream::Instance(); if (rkInstance.DirectEnterMode_IsSet() || rkInstance.IsLoadingPhase()) return; Edited January 3, 2022 by Owsap Added a better solution. 2 4 https://owsap.dev/ / https://osf.owsap.dev/ Link to comment Share on other sites More sharing options...
Active Member ReFresh 2338 Posted January 3, 2022 Active Member Share Posted January 3, 2022 (edited) @ Owsap Good idea, but by this is impossible to detect the loading phase: CPythonNetworkStream& rkInstance = CPythonNetworkStream::Instance(); if (rkInstance.IsLoadingPhase()) return; It works only with this: if (!m_pyBackground.IsMapReady()) return; But with this, you cannot use the keys in character select. Edited January 3, 2022 by ReFresh I'll be always helpful! Link to comment Share on other sites More sharing options...
Honorable Member Owsap 8150 Posted January 3, 2022 Honorable Member Share Posted January 3, 2022 20 minutes ago, ReFresh said: @ Owsap Good idea, but by this is impossible to detect the loading phase: CPythonNetworkStream& rkInstance = CPythonNetworkStream::Instance(); if (rkInstance.IsLoadingPhase()) return; It works only with this: if (!m_pyBackground.IsMapReady()) return; But with this, you cannot use the keys in character select. Fixed, can you please test it again? https://owsap.dev/ / https://osf.owsap.dev/ Link to comment Share on other sites More sharing options...
Active Member ReFresh 2338 Posted January 3, 2022 Active Member Share Posted January 3, 2022 (edited) @ Owsap Great, it seems to be working like a charm now. Thank you. Spoiler Btw. Little tutorial correction, this function is by default in private class: 3 hours ago, Owsap said: /// 2. @ UserInterface/PythonNetworkStream.h // Search public: bool __DirectEnterMode_IsSet(); So it should be like this in the tutorial: /// 2. @ UserInterface/PythonNetworkStream.h // Search private: bool __DirectEnterMode_IsSet(); And this: 3 hours ago, Owsap said: /// 1. @ UserInterface/PythonNetworkStream.h // Search public: CPythonNetworkStream(); // Add above bool IsLoadingPhase() { return (m_strPhase == "Loading"); } Should be like this in the tutorial: /// 1. @ UserInterface/PythonNetworkStream.h // Search void StartGame(); // Add below bool IsLoadingPhase() { return (m_strPhase == "Loading"); } Edited January 3, 2022 by ReFresh 1 1 I'll be always helpful! Link to comment Share on other sites More sharing options...
Honorable Member Owsap 8150 Posted January 3, 2022 Honorable Member Share Posted January 3, 2022 (edited) 58 minutes ago, ReFresh said: @ Owsap Great, it seems to be working like charm now. Thank you. Hide contents Btw. Little tutorial correction, this function is by default in private class: So it should be like this in the tutorial: /// 2. @ UserInterface/PythonNetworkStream.h // Search private: bool __DirectEnterMode_IsSet(); And this: Should be like this in the tutorial: /// 1. @ UserInterface/PythonNetworkStream.h // Search void StartGame(); // Add below bool IsLoadingPhase() { return (m_strPhase == "Loading"); } Thanks for testing the solution I provided but what you citated about my tutorial comes down to personal preference, with all respect. I do understand what you're mentioning but the only thing I did was create a public function to return the value of a private function within the class. I did this in order to support the private function already used in various files of the source. Basicly what I did was nothing less than, private: [ . . .] bool __DirectEnterMode_IsSet(); // -> { return m_kDirectEnterMode.m_isSet; } public: bool DirectEnterMode_IsSet() { return m_kDirectEnterMode.m_isSet; /* __DirectEnterMode_IsSet(); */ } // Usually, 2 (two) underscores before a function name indicates that it's a private function, thus the reason I created a new one with the same name without the underscores. But sure, you can also just change the __DirectEnterMode_IsSet to public if you like. Again, the seccond thing that you citated comes down to personal preference and there isn't any correction to do in the tutorial. In case you didn't notice, the line I added the IsLoadingPhase function is inside a public method as you can see in the screenshot below. Sorry @ReFresh // There was a little misunderstanding from my part, I noticed that in the first tutorial I did, I said to search, public: bool __DirectEnterMode_IsSet(); // But the correct thing to search is just, bool __DirectEnterMode_IsSet(); Edited August 17, 2022 by Metin2 Dev Core X - External 2 Internal https://owsap.dev/ / https://osf.owsap.dev/ Link to comment Share on other sites More sharing options...
Active Member ReFresh 2338 Posted January 3, 2022 Active Member Share Posted January 3, 2022 (edited) @ Owsap I just mentioned that bool __DirectEnterMode_IsSet(); is in private class, so if you will search public: bool __DirectEnterMode_IsSet(); you won't find it because by default it's private: bool __DirectEnterMode_IsSet(); that was the correction in your tutorial, yeah, almost useless correction, but for copy&paste people can be hard to find it since you can't find it by search bar, because it's in private class And for the second thing the correction was only for visual purpose, it looks better along other voids Edited January 3, 2022 by ReFresh I'll be always helpful! Link to comment Share on other sites More sharing options...
Honorable Member Owsap 8150 Posted January 3, 2022 Honorable Member Share Posted January 3, 2022 1 minute ago, ReFresh said: @ Owsap I just mentioned that bool __DirectEnterMode_IsSet(); is in private class, so if you will search public: bool __DirectEnterMode_IsSet(); you won't find it because by default it's private: bool __DirectEnterMode_IsSet(); that was the correction in your tutorial, yeah, almost useless correction, but for copy&paste people can be hard to find it since you can't find it by search bar, because it's in private class And for the second thing the correction was only for visual purpose, it looks better along other voids You're right, I just noticed that I mistakenly left "public" above the function to search. Sorry for the misunderstanding! 1 https://owsap.dev/ / https://osf.owsap.dev/ Link to comment Share on other sites More sharing options...
Matteo 46 Posted January 3, 2022 Author Share Posted January 3, 2022 Thank you guys for helping out. @ Owsap i've tested your solution and its working as i wanted, thank you! Meanwhile the developer of the given system checked the code and modified it, its under testing. I guess this fixes a lot of exploiting since its not a good thing to interrupt the loading phase (in my opinion) so i implemented it anyways. System Administrator @ Hungarian Government System Administrator @ Vibestro Freelancer Developer @ Various projects Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now