This is a discussion on KoServer Project v1.860 within the Private Servers forums, part of the Knight Online (ko4life.com) category; Originally Posted by Hercai
server is up.
actually it's not...
so any english clan is active on this server ?
server is online
stop the flames guys, is my topic.
today i was banned for no reason because of a bug which i will explain shortly here:
whenever some1 towns and you are far away, there is sometimes a bug happening. the image of their chars still remains at the spot where they towned and you are able to attack(and kill) some of them. untill i figured out it was a bug i got banned. i tried to make another char to pm you and tell it to you but i got banned shortly after.
ID: PeeeeeeeeeeW (10x Es)
i loved ur server and its a pitty getting banned for no reason
hmm well... i thought about that... -.-
and its rly unfair to just ban players without even checking them first. my whole clan party had been banned once more in the past. we got unbanned in the end though.
anyhow the server is new so lets give him some understanding... i guess...
its pretty good pvp in ardream, made decent nps in a random party. constant restarts/dcs are ruining it abit.
tip for skillbar, set it up and relog, then it will work.
im playing there at orc side nick thorin
@ ilovemyko1 you were actually right.
peace and hf playing ur own server
Last edited by MyFuzzy; 01-07-2014 at 03:51 PM. Reason: because swag
Fucking retarded useless fucks.
Long story short(-ish):
> Our main repo went private about 6 months ago now.
> Turks decide, since there's nobody else to cry to, to open their own repo, removing all traces of us from it, despite obviously being a continuation of our project.
> They change that shortly after they realise we notice.
> <... 6 months worth of destroying the codebase in every imaginable way...>
> Turks make repo private, start selling binaries (hey, why not make a profit).
> I volunteer to help with something because I'm a masochist, and they give me access (all I really ended up doing was cleanup, really. Reverting a lot of the horrible things they'd done. *shudders*)
> AKUMA persistently tries to contact me asking to help with a crash. Well gee, that's surprising, given that they've no idea where to begin with simple multithreaded programming, protecting their data from race conditions was the last thing on their mind. Oh, and they removed a lot of the existing code for exactly that purpose. Oh, and have no concept that once data's freed, it's gone & unable to be used again.
> This particular "crash" is an unhandled exception. There's very few things that can throw exceptions; nothing from our code, specifically, but I suggest identifying the thread responsible / tracking down the exception with a simple try..catch clause wrapped around the start of each thread. By the way, did I mention it originally handled exceptions in this manner, just in case something like this were to happen? Yeah, they removed that a while ago.
> 20+ comments later of retarded turks thinking that I'm making it up, it's impossible, and oh dear god you really don't even want to know *what* the fuck they were doing, one turk managed to do what I said. Sort of. Not really. Loads of try..catch blocks around virtually everything, since well, he's obviously used .NET before where virtually anything can throw. This is native C++, it's not remotely the same. The start of the threads would have been fine, and taken... seconds.
> This genius tracks it down to a class responsible for wrapping C++11 functionality (well, doh. There's only a couple, and really only the C++11 functionality throws. I digress.). He sticks in a bunch of checks clearly completely misunderstanding wtf the class is used for, and evidently gets confused by the result of his tests.
> AKUMA comes along, and concludes that removing it resolves the crash. Oh, but then there's the other bugs with the AI server crashing and the game server just bugging out, but that's probably unrelated. So the crucial timing code is disabled, because who knows what it's for anyway, right? Seems to work okay. Aside from those problems that are probably unrelated.
But um, twostars, we still need help figuring out the other bugs!
> I tell him not once, not twice, but three times: the code's clearly crashing not because the code that's been disabled is wrong, but because the use of that class is wrong. It doesn't work because of fucking locking semantics; it's not allowed to work like that. English is hard for these particular turks, so linking them to the official reference for the semantics is a considerably futile act, albeit one that's been tried several times (obviously, to no avail).
> I'm told, quite simply, I just don't understand ("you don't understand me, rwlock working true but is open std::terminate..."). It no longer crashes there, with that timing code disabled (which is there to prevent concurrent threads from accessing a piece of data while another thread is changing it, no less. The code in question tells it to wait until everything has finished reading from it, before it can be written to.).
This, my friends, is the people who're "developing" the code for this server. I'm rambling like hell, but meh -- I didn't think it was possible, but the fork's considerably worse off from where it was 6 months ago when we made it private.
Even I don't know where to begin with bringing it back to a stable state, especially when AKUMA just decides to "fix" things because they look broken.
Case in point, resetting a party:
The result, of this excellent line of thought, is that parties bug like fuck: the party ID's reset in that one user IMMEDIATELY before it goes to use that same party ID to look up the associated party to actually go through and clean up the members of the party individually. So that one user may be thought to be "reset", but they don't even get the packet, so it's broken even in the client. It's a huge mess.Code:if (!isInParty()) return; + m_bInParty = false; + m_sPartyIndex = -1; /* reset the party ID */ + _PARTY_GROUP *pParty = g_pMain->GetPartyPtr(GetPartyID()); /* use the goddamn party ID to clean things up properly */ if (pParty == nullptr) /* oh wait, we can't anymore, because someone broke it because they yet again "fixed" something that wasn't even broken to begin with. */ return; /* handle disbanding the party here */
And despite my informing him of their... shall we say, unintended consequences, he continues to defend these changes. Q_Q
This project will fail spectacularly if it hasn't already.
It's not remotely stable, functional code. I don't even mean this remotely like mgame: mgame was rock-solid stable compared to what this is turning into. And it gets considerably worse with every passing day, scarily...
Sorry, I had to get that off my chest. Carry on pointless thread.