Forums
March 29, 2024, 08:39 AM

Author Topic: wkKick38  (Read 10372 times)

0 Members and 1 Guest are viewing this topic.

Offline terion

Re: wkKick38
« Reply #45 on: August 22, 2020, 09:32 AM »
I am truly sorry for causing  trouble to you and the entire worms community.

Shoddy workmanship and then refusing to accept responsibility for the problem is.
I agree that my works are on the lower end of code quality spectrum and my wording could've been better. Though I think that through discussion in this thread issues with the module were corrected and the most recent release of the module seems to work properly.
In my previous posts I have identified numerous problems with the module and wormkit ecosystem in general and in the following post I've released a corrected version that fixed problems on my end. While still a shoddy workmanship, I wouldn't call it refusing responsibility.
My works are and will remain open source, so if anyone wants to improve them, anyone is free to do so and I would love to see an active open source worms community in near future.

Yes. So, please try to not release software which causes confusing error messages.
Clearly, I'm no expert on windows api but I think that LoadLibraryA triggers this error before my module runs a single code instruction, so there is not much that I can do from technical standpoint. I should've stated in OP that this module requires MSVC runtimes, but some users would ignore it regardless (just like GrO did a few posts back when I instructed him to install runtimes).

Though from technical standpoint your works are excellent and take into consideration every possibility (I didn't even think of the case with loading exports from WA.exe), I think that they need to be adjusted for real world cases, such as this thread and make some assumptions to make it more clear to end users.

You may observe a non-negligible performance gain by avoiding the WinAPI overhead.
I am well aware of that and I've already changed that code before your posts when feedback about issues reached me.

- in my opinion this functionality should come standard with base game to avoid shitty kick module implementations like this.
And I still support this opinion. WormKit modules are inherently low quality hacks and need to reinvent the wheel to provide basic functionality, which can be properly implemented within matter of minutes in the base game. If there was a proper API to deal with the game's memory or proper open source examples, things could've been a bit better.
I know that your WormKit modules are available on github, but they work on hooking Windows API level or the most important parts of them are closed source, thus entire module's code is useless for other developers.

Offline CyberShadow

  • W:A maintainer
  • Full Member
  • *****

  • Moldova Moldova
  • Posts: 173
    • View Profile
    • Homepage
Re: wkKick38
« Reply #46 on: August 22, 2020, 10:00 AM »
I am truly sorry for causing  trouble to you and the entire worms community.
This is unnecessary.

Though I think that through discussion in this thread issues with the module were corrected and the most recent release of the module seems to work properly.
I don't understand what you mean by this. The attachment to the (latest?) post at https://www.tus-wa.com/forums/worms-armageddon/wkkick38-32802/msg276478/#msg276478 still seems to pull in MSVCP140.dll?

My works are and will remain open source, so if anyone wants to improve them, anyone is free to do so and I would love to see an active open source worms community in near future.
I suggest placing the source code on a software forge website, such as GitHub. This will avoid issues such as someone submitting a patch against an outdated version of the source code.

Clearly, I'm no expert on windows api but I think that LoadLibraryA triggers this error before my module runs a single code instruction, so there is not much that I can do from technical standpoint.
I don't understand what makes you say that. I already offered a few suggestions on how to avoid this: 1) Avoid using libc features 2) Link to the libc statically 3) Include the libc DLL with your application 4) Make it so that it's not possible to install the module without also installing the dependencies, e.g. by bundling it in an installer; or, as the next best thing, make it so that it's unlikely that users end up with this situation, e.g. by placing the download link for dependencies before the download link for the module itself.

I should've stated in OP that this module requires MSVC runtimes, but some users would ignore it regardless (just like GrO did a few posts back when I instructed him to install runtimes).
This is twice fallacious: 1) You are dismissing a suggestion based on a hypothetical scenario which just assumes that users are going to be incompetent (in which case, it would be reasonable to state that it's the user's fault for failing to follow instructions); 2) the parallel you are drawing is not a good one, as the problem persisted for GrO because the instructions you added were incomplete (you never mentioned which bitness version of the runtimes were necessary).

I am well aware of that and I've already changed that code before your posts when feedback about issues reached me.
Great :)

- in my opinion this functionality should come standard with base game to avoid shitty kick module implementations like this.
I agree that there is a problem in need of solving here, but not necessarily that this is the best way of solving it. I would be more excited to see a module which forces a player's teams to surrender without disconnecting them, so that they have an opportunity to discuss what went wrong and how they can avoid disrupting games in the future. For malevolent players who continue to disrupt games intentionally, preventing them from entering the game in the first place would be a much better solution. Cases when players behave in a way that's not acceptable regardless of circumstances (e.g. hate speech etc.) should be reported to moderators so that the users are removed from WormNET.

If there was a proper API to deal with the game's memory or proper open source examples, things could've been a bit better.
Unfortunately we are torn by a conflict of interest between helping the community to build useful things, and our obligation to Team17 to not divulge too many game internals, as well as not accidentally making it too easy to build harmful software such as cheats.

Offline CyberShadow

  • W:A maintainer
  • Full Member
  • *****

  • Moldova Moldova
  • Posts: 173
    • View Profile
    • Homepage
Re: wkKick38
« Reply #47 on: August 22, 2020, 10:15 AM »
Try adding this line to CMakeLists.txt:

Code: [Select]
set_property(TARGET wkKick38 PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded")

Offline terion

Re: wkKick38
« Reply #48 on: August 22, 2020, 10:28 AM »
I don't understand what you mean by this. The attachment to the (latest?) post at https://www.tus-wa.com/forums/worms-armageddon/wkkick38-32802/msg276478/#msg276478 still seems to pull in MSVCP140.dll?
There were bigger issues with the module than dynamic linking - connections were incorrectly terminated and signature scanner failed to access process memory in some cases. People also requested /kick# command so I added one. Players who previously experienced issues now report that the module works correctly.
From my perspective, dynamic link of libc is a non-issue and I personally prefer it, but I've recompiled the dll and updated attachments in OP to address your concerns.

Offline CyberShadow

  • W:A maintainer
  • Full Member
  • *****

  • Moldova Moldova
  • Posts: 173
    • View Profile
    • Homepage
Re: wkKick38
« Reply #49 on: August 22, 2020, 10:29 AM »
Thanks!

I thoroughly disagree that it was a non-issue due to e.g. https://www.tus-wa.com/forums/worms-armageddon/wkkick38-32802/msg276629/#msg276629 .

Offline Bl4st3r

Re: wkKick38
« Reply #50 on: August 23, 2020, 05:42 AM »
LoadLibrary failed: Error 0000007E, what to do now? i have all the sources and dll file in my directory
your pc is missing Visual C++ Redistributable Runtimes (2015-2019) - here is a link to all-in-one installer: https://www.techpowerup.com/download/visual-c-redistributable-runtime-package-all-in-one/
btw, WA's warning message should be made more clear about the cause of error 0x7E to avoid confusion. ideally, it should list all missing DLL dependencies and suggest to try installing msvc runtimes, madshi's madCodeHook. If you ever stumble over similar issue, try running Dependency Walker https://www.dependencywalker.com/ to identify missing libraries.

Thanks for the help!

Offline GrO

  • 🌞🌞🌞🌞♾️🌞🌞🌞🌞
  • Jr. Member
  • **

  • Poland Poland
  • Posts: 84
  • ⚘🌹🌷 🌿 🌻 🍀 🌷🌹⚘
    • View Profile
    • 440Hz >>> 432Hz
Re: wkKick38
« Reply #51 on: August 23, 2020, 03:08 PM »
I should've stated in OP that this module requires MSVC runtimes, but some users would ignore it regardless (just like GrO did a few posts back when I instructed him to install runtimes).
...why should I ignore the solution I just wanted? It's not with the logic. It was just misunderstanding with x86 and x64 versions (you know that) and I gave you all the feedback I could, regarding I didn't even install these x64 'runtimes' yet (had other things to do), but I saw another user also with win7 x64 and the CD release of WA having the same issue, which has been solved with these 'runtimes' you've mentioned, so I assumed it'll work for me either and I'm sure it'll be.

I'll post here after I test it and thanks for your work - I really appreciate it ;D
« Last Edit: August 24, 2020, 12:18 AM by GrO »

...even the Light needs a background, or some dirt, to become visible... ...

Offline DENnis

wKSurrender !·D - Re: wkKick38
« Reply #52 on: August 23, 2020, 11:56 PM »
- in my opinion this functionality should come standard with base game to avoid shitty kick module implementations like this.
I agree that there is a problem in need of solving here, but not necessarily that this is the best way of solving it. I would be more excited to see a module which forces a player's teams to surrender without disconnecting them, so that they have an opportunity to discuss what went wrong and how they can avoid disrupting games in the future. For malevolent players who continue to disrupt games intentionally, preventing them from entering the game in the first place would be a much better solution. Cases when players behave in a way that's not acceptable regardless of circumstances (e.g. hate speech etc.) should be reported to moderators so that the users are removed from WormNET.

Instead of disconnecting them just let them surrender would be a perfect solution I think. Although there are some trolls or just bad people, I still like to help newbies & it is nice to see there are still new people who just want to play Worms Armageddon and have fun together :-[

Please implement "wKSurrender"  :-*



Offline cgar

Re: wkKick38
« Reply #53 on: September 05, 2020, 07:08 AM »
Thanks a bunch terion! Really appreciate it. Unlike some.
I especially appreciate it being open source <3

Offline TheKaren

Re: wkKick38
« Reply #54 on: September 05, 2020, 01:11 PM »
Correct me if i'm wrong but are few people here suggesting to replace kicking, with surrendering?

Wouldn't it be better to have the option to kick or force surrender?

I was streaming all day yesterday playing with M3ntal while chatting on Discord VOIP, at some point a player called "KUNT" joined the game, within minutes this person said a racist word beginning with n, i'm sure you can guess which word.

Coming to think of this, I wonder if it would be possible to add a selective word filter, so you, yourself can type in words you want to be filtered out in the chat, similar to how Twitch does it.

I myself swear a lot, and don't mind people swearing as long as it's not malicious, homophobic, transphobic, racist etc.

I kicked them immediately, not only do I not want to associate with that type of language, it's against Twitch TOS.

I'm really grateful there is a kick tool, otherwise i'd have to quit the game myself.

The idea to force surrender as an option would be great, like CyberShadow said it would give the person a chance to learn why they were being removed and possibly learn from it.

Offline CyberShadow

  • W:A maintainer
  • Full Member
  • *****

  • Moldova Moldova
  • Posts: 173
    • View Profile
    • Homepage
Re: wkKick38
« Reply #55 on: September 05, 2020, 01:24 PM »
it's against Twitch TOS.
A few points here:
1. The game already has a feature to cover this particular aspect. You can ignore someone by typing /ignore nickname in the chat, or pressing Ctrl + F1-F6.
2. The game includes a chat filter which is on by default. I'm guessing you turned it off, so this was a consequence of that choice.
3. Please report users who engage in destructive behavior as in your example to WormNET moderators. We should do our best to make sure that users whose "contributions" to WormNET are negative as in your example are not enabled to continue doing so.

Offline TheKaren

Re: wkKick38
« Reply #56 on: September 05, 2020, 09:46 PM »
Indeed, I am aware of those features and already have the language filter turned on(I double checked just to make sure), yet this player was still able to use that racist word.

I still wonder about the possibility of having a selective word filter, something you can customize, update and maintain personally, is that something that might be possible in future?

Right now I do not know the extent of the vocabulary the language filter uses, which words trigger the filter, do you know if there is a list somewhere, or if at all it is possible to edit/update?

It is a very rare occurrence however I will keep that in mind and report to moderators if it happens again, thanks :)

Offline CyberShadow

  • W:A maintainer
  • Full Member
  • *****

  • Moldova Moldova
  • Posts: 173
    • View Profile
    • Homepage
Re: wkKick38
« Reply #57 on: September 05, 2020, 09:54 PM »
Indeed, I am aware of those features and already have the language filter turned on(I double checked just to make sure), yet this player was still able to use that racist word.
Hmm, that's a bug. I'll have a look.
I still wonder about the possibility of having a selective word filter, something you can customize, update and maintain personally, is that something that might be possible in future?
The list of bad words is stored in the file filter.FTR, using a very simple encryption (obfuscation) scheme (ASCII Caesar). Editing that file would allow customizing the game's word filter, though one would need to decrypt it first and then encrypt the result.

Offline GrO

  • 🌞🌞🌞🌞♾️🌞🌞🌞🌞
  • Jr. Member
  • **

  • Poland Poland
  • Posts: 84
  • ⚘🌹🌷 🌿 🌻 🍀 🌷🌹⚘
    • View Profile
    • 440Hz >>> 432Hz
Re: wkKick38
« Reply #58 on: September 06, 2020, 01:30 PM »
I should've stated in OP that this module requires MSVC runtimes, but some users would ignore it regardless (just like GrO did a few posts back when I instructed him to install runtimes).
...why should I ignore the solution I just wanted? It's not with the logic. It was just misunderstanding with x86 and x64 versions (you know that) and I gave you all the feedback I could, regarding I didn't even install these x64 'runtimes' yet (had other things to do), but I saw another user also with win7 x64 and the CD release of WA having the same issue, which has been solved with these 'runtimes' you've mentioned, so I assumed it'll work for me either and I'm sure it'll be.

I'll post here after I test it and thanks for your work - I really appreciate it ;D
...ok, I've installed Visual C++ Redistributable Runtimes x86 (2015-2019) and it runs as expected.

I didn't know such font is even possible with the in-game chat (attachment)...

Regards and thanks again... :)

...even the Light needs a background, or some dirt, to become visible... ...

Offline iClown

Re: wkKick38
« Reply #59 on: October 27, 2020, 07:03 PM »
- in my opinion this functionality should come standard with base game to avoid shitty kick module implementations like this.
I agree that there is a problem in need of solving here, but not necessarily that this is the best way of solving it. I would be more excited to see a module which forces a player's teams to surrender without disconnecting them, so that they have an opportunity to discuss what went wrong and how they can avoid disrupting games in the future. For malevolent players who continue to disrupt games intentionally, preventing them from entering the game in the first place would be a much better solution. Cases when players behave in a way that's not acceptable regardless of circumstances (e.g. hate speech etc.) should be reported to moderators so that the users are removed from WormNET.

While it would be better to force players teams to surrender instead of flat out kicking in theory, that is exactly what leads us into the tyrannical micro-management that would be involved with banning people for whatever one whimsically might feel is "hate speech" etc etc. Lets just stick with hacky kick dlls. Variety is variety. I mean, we want to spare peoples feelings when they mess up our games and then ban people entirely when our feelings are hurt? The oppressor is the victim! What a rat nest all that would be.
One way or another we all learned to play worms and have all been kicked out of games for screwing them up. We all still managed to figure it out in the end.
Also #AbolishHostingBuddy (and other things that destroy the worms community)
FULL STOP.