-
Posts
221 -
Joined
-
Last visited
-
Days Won
3 -
Feedback
100%
Amun last won the day on April 11 2025
Amun had the most liked content!
About Amun

Informations
-
Country
Niger
Development
- Github
Recent Profile Visitors
4691 profile views
Amun's Achievements
-
Idk why I always forget to reply to topics @msmajda9 they can just change unordered_set to set and change the types to byte/word @ HAZEJ good catch with invisible races @RobinHoodye yeah, move the loading to loading phase, I left it in game phase because it's simpler for people to follow @ CONTROL interesting idea with the groups. I think(didn't check) they all use Spawn so they'll register for preloading as soon as they appear for the first time, but thanks for sharing. This was never supposed to run in the game phase(which is why you see that delay between end of loading phase and first render), but adding it in the loading phase would've complicated the tutorial and most people just want it to work - they don't care how. Funnily enough, this could've been simplified to just calling GetRaceDataPointer instead of creating an entity and discarding it, since it calls __LoadRaceData on its own when it can't find it(and it will fix the "vid already exists" shit as well). Here's the code for copy/pasta: #ifdef ENABLE_ENTITY_PRELOADING bool CPythonNetworkStream::RecvPreloadEntitiesPacket() { extern bool IsInvisibleRace(uint16_t raceNum); TPacketGCPreloadEntities pack{}; if (!Recv(sizeof(pack), &pack)) return false; assert(int32_t(pack.size) - sizeof(pack) == pack.count * sizeof(uint32_t) && "HEADER_GC_PRELOAD_ENTITIES"); CRaceManager& rkRaceManager = CRaceManager::Instance(); CRaceData* pkRaceData = nullptr; for (uint16_t i = 0; i < pack.count; i++) { uint32_t race = 0; if (!Recv(sizeof(uint32_t), &race)) return false; if (IsInvisibleRace(race)) continue; rkRaceManager.GetRaceDataPointer(race, &pkRaceData); } return true; } #endif
-
My G, there's nothing wrong with having AI do SOME things. My problem is that none of you check what the AI is writing. How could I possibly trust you to not break anything when you can't even read the code? This is, in part, Distraught's fault as well. The source should've been split into branches and the master should only contain PRs that have been reviewed and tested. You can't have a stable line of releases if everyone is pushing whatever the fuck they want, whenever they want. Yes, it will be much slower to develop, but that's how things work when you want to run a stable project. Do you see what I mean?
- 337 replies
-
- 10
-
-
-
-
-
Already mentioned this in private, but these people should be banned from pushing to the project and have their PRs reverted or checked one by one. The entire project turned into a fucking joke and AI should've been banned ever since I pointed it out in Mind Rapist's first PR, which was many months ago. There are PRs there that touch half of the source and there's no explanation for why, how, or even what they're supposed to address. Literal dumps of "found this somewhere, looks smart" code.
- 337 replies
-
- 12
-
-
-
-
-
EterPack Archiver - PackMakerLite-RS (New 2026)
Amun replied to martysama0134's topic in Tools & Programs
Marty paid me 10e to write a comment -
I haven't seen them ever since I lost the keys, dm @ PACI if you got a bolt cutter and he'll send you their GPS coordinates when my demands are met
-
elyzeumozart started following Amun
-
Amun started following Voice chat system and Here we go again
-
Probably got a slap on the wrist and got told he wasn't a good boy. Then they left to do more important things, like drinking coffee or scratching their balls(and I can't blame them, it feels pretty good).
-
Got any other articles? I have so many questions. Did they pay their taxes? Was it specifically related to M2? Did they get reported or did they just get caught with it because of other things? If so, who reported them? GF? What exactly is the story here?
-
I don't know how to answer to this xD You're welcome, I love you too? You're welcome, have fun with it Yeah, well, that's just how it goes around here lmao Not really honorable if I had no choice, is it? xD Also, hell no, that would mean I'd have to go back and fix the rest of my topics out of sheer principle Edit, to not post another comment: Added precompiled FLAC/FLAC++ libraries and some build info, for those who need them/it. If you're going to build Flac yourself, keep in mind that there are some annoying CPU logs that you'll have to disable in their src.
-
Due to unforeseen(but expected) circumstances -such as a very hungry little boy reselling my work- I have decided to make this version public. The hungry little boy is Backtrace/Mercury/Assembly/FrenchForeignLegion(and 100 other accounts that he's using for scamming). ### This version's features: - Proximity chat (local) - Guild chat (in-map) - Party chat (in-map) - Global/Master volume - Per-speaker volume handling (with the ability to pin speakers at the top of the list) - Configurable sampling frequency and channels (I still recommend sticking to 32kHz and 1 channel because of packet sizes.) - You can not speak over a channel unless hearing is also enabled - Sound reduction to prevent loud sounds from blasting your ears - Basic but functional sound detection to avoid unnecessary packets - FLAC encoding/decoding to reduce packet sizes wherever possible - ?? Fuck knows, I can't remember. ### Notes: - M2's networking doesn't handle partial packets. - You'll have to either: - Disable `IMPROVED_PACKET_ENCRYPTION`, or - Implement that part yourself(I won't help you with this, don't DM me.) - Don't bother with pull requests, this repo was released out of necessity, it won't receive any updates. - If you want to make changes, feel free to fork it. - The system has been live for over a year on multiple servers and tested by thousands of users. - If it doesn't work on your server, you did something wrong. #### QFlags - `/e voice_chat_disable 1/0` to enable/disable - `/e voice_chat_hear_yourself 1/0` to be able to hear yourself(only on test_server) ### Technologies used: - [Miniaudio - An audio playback and capture library for C and C++]([Hidden Content]) - [FLAC - Free losless audio codec]([Hidden Content]) All of my customers will receive an update with more features soon. This version received its last update on `28.01.2025` Good luck. UI Picture Github: [Hidden Content] or [Hidden Content] Backtrace and his boy: [Hidden Content] VT for archive: [Hidden Content]
- 13 replies
-
- 326
-
-
-
-
-
-
-
-
-
-
Pretty late to the party, I guess. First of all, you'll never have a null/nullptr in the set unless you specifically insert null/nullptr(which you won't, since it's inserted through CItem::Save). You can't just reassign it like you do with a vector. So that's useless, a dangling pointer will fall right through. Second of all, since now we can assume that all the items can be dangling pointers, your VID check will do nothing but delay the crash and fuck you in the ass when it does because the owner/customer will ask "Why did it crash" and you'll be like "Well, idunno, I already did the checks here, IT MUST BE YOUR FAULT". What you're doing there is hope that the VID is either still the same that it was before deleting the item or that it didn't happen for the memory to be rewritten and have another valid VID there(which can happen). And so that's gone as well, you're back to SaveSingleItem, which was where the problem(which isn't SaveSingleItem itself, that's totally fine) ended up to begin with(and will also crash since that doesn't just access a simple uint through a constant method). Takeaways: You didn't fix it, you just made it harder to happen. If you run ASAN it'll spit right in your face when it gets to GetVid and sees that the item is just dangling, which would've done so in SaveSingleItem anyway, so yeah, you just crashed 2 lines earlier. Ah, also, if you don't run ASAN or the server doesn't crash, your "invalid data" is still there as well and will still be sent to the db. Marty's idea seems interesting, but I assume it will still lead to crashes(which I prefer, rather than recovering and moving forward with invalid data) if you don't check the item before accessing it. Don't know enough about how he's doing/using it to make a point so I'll just stay away from that for now. I'd also rather cut my dick off than rewrite the entire source to handle what could happen once if somebody screws up. Just crash the damn server, fix it, and forget it even existed.
-
Having a license and stopping the service if the terms are broken is one thing, stealing data(from both the genuine and the ones that use the cracked one) is another thing. If anyone's got a few k Eur on the side and wants to have some fun, here, freshly baked by ChatGPT: Relevant Laws in Portugal: 1. Unauthorized Access to Computer Systems (Código Penal Português, Art. 6 e Art. 7) In Portugal, unauthorized access to computer systems is classified as "crime informático" (cybercrime) under the Portuguese Penal Code (Código Penal). The relevant law is Article 6 of Law No. 109/2009, which establishes criminal liability for unauthorized access and interference in computer systems. Penalty: Up to 5 years of imprisonment or a heavy fine. Higher penalties apply if the access leads to data theft or is done with malicious intent. 2. Data Theft (Lei de Proteção de Dados Pessoais - GDPR) Portugal follows the EU GDPR regulations, which apply strict penalties for data theft or the unauthorized handling of personal information. Penalty under GDPR: Fines up to €20 million or 4% of global turnover. Portuguese Comissão Nacional de Proteção de Dados (CNPD) is responsible for enforcing GDPR in Portugal. 3. Fraud (Código Penal Português, Art. 217) Selling a source with a hidden backdoor is a form of fraud, defined under Article 217 of the Portuguese Penal Code as "burla informática" (computer fraud). Penalty: Up to 3 years of imprisonment or a fine. Higher penalties apply if the fraud is conducted through electronic means. 4. Copyright Infringement (Código do Direito de Autor e dos Direitos Conexos) The unauthorized sale of Metin2's source code constitutes copyright infringement under Portuguese Copyright Law (Law No. 50/2004). Penalty: Up to 3 years of imprisonment. Fines up to €30,000. Where to Report This in Portugal: 1. Polícia Judiciária (PJ) - Unidade Nacional de Combate ao Cibercrime e à Criminalidade Tecnológica (UNC3T) The Portuguese Judiciary Police (Polícia Judiciária) has a specialized unit for cybercrime. Website: https://www.policiajudiciaria.pt Contact: Email: [email protected] Phone: +351 21 723 3337 2. Comissão Nacional de Proteção de Dados (CNPD) Since GDPR violations are involved, you can also report this to the CNPD. Website: https://www.cnpd.pt Email: [email protected] Phone: +351 213 928 400 3. Europol Because this crime affects cross-border victims, you can report it to Europol’s European Cybercrime Centre (EC3). Website: https://www.europol.europa.eu Report form: https://www.europol.europa.eu/report-crime Steps to Protect Yourself: Gather Evidence: Save all communication (emails, messages, payment details). Document any suspicious behavior in the code. Report to Authorities: Portuguese Polícia Judiciária (UNC3T). CNPD for GDPR-related violations. Europol EC3 for cross-border cybercrime. Notify Gameforge Legal Department: Since Gameforge owns Metin2, they should be made aware of the situation. Go have fun, you crazy boys
-
Seems like he just copy/pasted what was already in the source. Also: // fuck off bool CHARACTER::IsReflect() const { return m_pkMobInst && m_pkMobInst->m_IsReflect; } Edit: Is this even used on official? I see it's mostly used for zodiac stuff, but it doesn't seem to have a column in proto for when to start reflecting. Maybe somebody that plays the official could do a test and tell us if it's used and if the percentages are in the good ball park.
-
Thanks for sharing, but I have a few things to point out on this The black screen: You weren't supposed to load them in the game phase. I've only done it this way to keep it simple and for everyone to know where to find the code and do the initial changes. You were supposed to load them in the loading phase, along with all the other things. VID Already exist: Don't know what to say about this one right now, but I'll have a look at it when I got some free time(which probably won't be very soon..) As for the last problem, it's unlikely that you'll ever hit the upper limit of uint16_t. There's space for 65k races, you wouldn't hit it even if you sent the entire mob list * 20, so I tend to think your problem is coming from some other place.
-
Because the master was supposed to forward the shutdown packet to them. Anyhow, it was just a question I had, no bad intentions. That item ID thing is pretty strange and don't really see why it would happen, but thanks for the heads up
-
Cool idea and thanks for sharing, but since all the cores(including db) flush the cache on shutdown anyway, why not just make the DB flush the cache(or kill itself) when it loses all the peers? That way you could just shut down the cores and let the db cut its wrists in the bath tub when it's left sad and alone in the world
