Jump to content

mmorse 0xrayz mmorse3399

Banned
  • Posts

    28
  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    0%

mmorse 0xrayz mmorse3399 last won the day on July 28 2025

mmorse 0xrayz mmorse3399 had the most liked content!

1 Follower

About mmorse 0xrayz mmorse3399

Core X

  • BAN_NOTICE
    Yes

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

mmorse 0xrayz mmorse3399's Achievements

Community Regular

Community Regular (8/16)

  • One Year In
  • Collaborator Rare
  • One Month Later
  • Very Popular Rare
  • Week One Done

Recent Badges

1.1k

Reputation

  1. It has no effect (U can try yourself).. At least for me this file mode first setting did nothing
  2. [Hidden Content] This system enables the Metin2 client to load files directly from folders instead of requiring them to be packed into EterPack archives. It is designed for developers who want a faster workflow, easier debugging, and real-time asset editing without the need to constantly repack files. In the next few days, I will add support for reloading resources without having to close and reopen the client. The full implementation is included in the attached EterPackManager.cpp. Search for the ENABLE_ETERPACK_FOLDER_AS_PACK define and copy the related code into your own EterPackManager.cpp. To enable the feature, add the following define at the top of EterPackManager.cpp, after the include statements: #define ENABLE_ETERPACK_FOLDER_AS_PACK If you encounter any issues or have questions, feel free to let me know and I'll take a look.
  3. What Metin Fever Is: Metin Fever is a recurring event where players destroy Metin stones to receive a special scroll that summons unique Metins of the Test and their exclusive bosses. Daily Mission : Every day, each character receives the mission: Destroy 5 Metin Stones within your level range Only Metins within your level range count After destroying all 5, you receive 1 × Challenge Scroll You can complete the mission ONCE per day per character Challenge Scroll: Using the scroll: Summons a special “Metin of the Test” (Metin I–X depending on level) These Metins are weaker than normal ones When destroyed, they ALWAYS summon a boss appropriate for your level Chain Spawn Mechanic (Unique to Metin Fever): After you defeat a boss, there is a chance that another Metin of the Test will appear nearby and If it appears: It will be a stronger Test level It will summon a stronger boss You can continue this repeatedly This chain can continue several times depending on luck. YOHARA maps greatly increase the chance of chain spawns Spawn Locations: The scroll-summoned Metins can appear: Anywhere on the map where you use the scroll In all major continents including Yohara The event is pretty simple, a quest and a quest function in c++. [Hidden Content] If you find any bugs or have suggestions, let me know and I can update the code. I just wrote it and haven’t done much testing yet. And if anyone wants to talk trash about the code, I honestly don’t care. I know this could be done cleaner (e.g. using tables, helper functions, etc.). I just wrote it quickly for now and will refactor/improve it when I have more time. Event can be activated using command /e metin_fever_event 1 Event made using information from official wikis only; I didn’t watch any videos (too lazy). If you want anything changed to match the official version exactly, just let me know and I’ll fix it. Note: You can take items used in quest from official from this Link (metin stones/and so)
      • 60
      • Metin2 Dev
      • Good
      • Love
      • Love
  4. [Hidden Content] I saw someone trying to sell this small feature on another forum, so I decided to release it for free — for everyone. It’s nothing complex or revolutionary, just a small but useful improvement to the screenshot system that adds a watermark automatically when saving screenshots. Perfect for server branding, copyright protection, or promotional screenshots. Features: Automatic watermarking when a screenshot is saved GDI+ image loading (supports .png, .jpg, .bmp, etc.) Alpha blending support — transparent logos blend smoothly Custom positioning (left/right margins, bottom alignment) Opacity control (0.0 → 1.0) for soft or solid branding How It Works? The back buffer is copied into memory. The system checks if watermarking is enabled. The logo (PNG) is loaded using GDI+ The watermark is blended onto the screenshot buffer (bottom-left corner by default) The final image is saved as a .jpg Notes: Tested only on directx8 My files has different eterpacks so i just adapted without testing.. if some issues let me know
      • 29
      • Metin2 Dev
      • Love
      • Good
  5. That ITEM_ID_DUP error means the server tried to create an item using an ID that already exists in memory. Basically, when CreateItem sees that the ID is already taken, it refuses to load the item and logs that message. That’s why the item disappears right after login — it never really gets created inside the core. In most cases this happens because items are being inserted into the database with a fixed ID instead of letting the game generate one. The item IDs have to be unique across the whole server, and the core normally assigns them automatically. If something outside the game puts its own value there, you’ll eventually get duplicates. The issue is almost always caused by duplicate item IDs, either: inserted manually in the player.item table ( in your case the item shop), or generated by two cores using overlapping item ID ranges. How item IDs are supposed to work? When you create a new item, you should never assign a fixed id. Let the server do it automatically: bool bIsNewItem = (0 == id); ... else { item->SetID(GetNewID()); } If you pass id = 0, the core will call GetNewID() and assign a unique value within its configured ID range. How to debug.. Check for duplicates in the database SELECT id, COUNT(*) FROM item GROUP BY id HAVING COUNT(*) > 1; SQL query to cehck for that specific id: SELECT * FROM player.item WHERE id = 60000042; Check also item_award for dup's If you see the same ID more than once, that’s the problem. Either delete those extra rows or set the id column to 0 so the server can reassign it. Check how your item shop inserts items Make sure your insert query looks like in case your website/itemshop automatically insert items into item.sql INSERT INTO player.item (owner_id, window, pos, vnum, count, id) VALUES (<owner>, 'MALL', 0, 72701, 1, 0); or simply omit the id field. Don’t ever set it manually to a static number. In short: The server’s item manager refuses to load any item whose ID already exists in memory. Always let the game assign IDs (id=0), and make sure your DB and channels don’t overlap ID ranges. If you can tell me how your itemshop work i can help you further, it's using item_award or insert manually in item.sql?
  6. Short answer: that log is thrown by the server’s handshake loop when the client never gets into a “time-in-sync” state after 32 tries. It usually means the client never replied, or the round-trip timing never stabilizes within the allowed bias window, so the server gives up before a character was bound — hence “!NO CHARACTER!”. On connect, the server enters PHASE_HANDSHAKE, sends HEADER_GC_HANDSHAKE with dwTime and an initial lDelta=0 (SendHandshake). When the reply arrives, HandshakeProcess(dwTime, lDelta, bInfiniteRetry=false) checks how far off we are: int bias = (int)(dwCurTime - (dwTime + lDelta)); if (bias >= 0 && bias <= 50) return true; // success // else recompute delta and retry (up to HANDSHAKE_RETRY_LIMIT) if (++m_iHandshakeRetry > HANDSHAKE_RETRY_LIMIT) { sys_err("handshake retry limit reached! (limit %d character %s)", ...); SetPhase(PHASE_CLOSE); return false; } SendHandshake(dwCurTime, lNewDelta); (bias window=≤50ms, limit=32). This is exactly where your error comes from. On client side in HandShakePhase, on HEADER_GC_HANDSHAKE it sets its server time, then echoes the packet back with dwTime advanced by 2*lDelta and lDelta=0. That is the reply the server waits for to recalc the delta and converge. There’s also the newer “time sync” path that sends HEADER_CG_TIME_SYNC after setting m_kServerTimeSync — functionally the same timing dance. Possible causes.. Very high or jittery latency.. so the lNewDelta estimate never converges into the ±50 ms window before 32 attempts. The code recomputes lNewDelta=(dwCurTime-dwTime)/2 each retry; if your RTT spikes wildly, bias can keep missing How to test if if the cause is latency ? change if (bias >= 0 && bias <= 50) to <= 200 and see if it succeeds. If it does, it’s network latency issue.
  7. This small but useful system allows you to lock your server login during maintenance or restarts, so that only Game Masters / Team members can access the live server. Once you’ve tested everything and updates are fine, you can easily unlock player access per channel directly from MySQL. And yes i know that i can't name this a system it's just a small feature but i could not find a better name for this.. You can control which channel u wish to open from common.status! [Hidden Content]
      • 69
      • Metin2 Dev
      • Love
      • Good
      • Love
  8. Thank you for pointing out the issue. You can either follow the updated instructions provided in this post to apply the fix , or simply redownload the archive from the provided links to get the latest corrected version. [Hidden Content]
  9. If you're still messing around with VirtualBox, WSL1/2 hacks, or syncing back and forth between Windows and a VM, you're unnecessarily complicating your workflow. The cleanest and most professional way to develop for Metin2 in 2025 is to use Visual Studio with remote Linux compilation. You're writing code on Windows, compiling natively on Linux. Anything less is just unnecessary friction. CMake is designed for managing cross-platform builds, especially when targeting multiple systems like Windows, Linux, macOS, mobile, or embedded devices. That’s not the case with Metin2. For Metin2 development, you only have two targets: a FreeBSD server and a Windows client. There’s no need for complex platform abstraction or build generation layers. The existing Makefiles for the server and Visual Studio solutions for the client are already purpose-built and effective. Introducing CMake here adds unnecessary complexity with no practical benefit. From my perspective, CMake is completely unnecessary here. I don’t use it, and I don’t plan to. Visula studio witll do everything for you automatically.. Sync files, compile, set flags
  10. With the latest official update, Gameforge introduced a new in-game Player Report System that allows players to quickly report rule-breakers through a clean interface. Inspired by that, I decided to write and release the system for the Metin2 community — designed to match the official implementation in both look and behavior, while also keeping it simple and open for customization. This system replicates around 90% of the official features. However, I made a few intentional design choices: Unlike the official system, I did not block reporting dead players — because it makes no practical sense in most gameplay scenarios. On official servers, reporting a dead character fails silently. I also chose not to enforce the biologist level 30 quest restriction, which the official server uses to prevent spam reports. This allows all players to access the system freely, but you can add this check later if you wish. I also added a handy GM command: /my_report_list, which makes it easier to manage and review player reports. Each report can be assigned to a specific Game Master, and this command allows that GM to instantly fetch all reports linked to them. It streamlines moderation by keeping things organized without needing external tools or web panels. Example of output of /my_report_list [REPORT] Player: XxBot123 Reported by: HeroGM Reason: bot_using Time: 2025-07-24 22:51:33 [REPORT] Player: GoldSellerY Reported by: Noobz Reason: illegal_seller Time: 2025-07-24 22:54:01 The system use official translations and locale_game and locale_interface.. You can download last official patch released by corky here Here and take translations with copy paste [Hidden Content]
  11. If more people report the same bug, I’ll look into it. Right now, I can’t reproduce it on my server.
  12. Hey, I didn’t want to create a new topic for this, but I thought it might be useful to share. Here’s a small function that detects the user's Windows language and returns it as a short code like "en", "ro", "de" — perfect for multi-language systems. You can use it to automatically set the default language in your client based on the user's OS settings, instead of asking them to choose manually on first launch. [Hidden Content] Usage: const std::string& lang = GetUserLanguageCode(); TraceError("%s", lang.c_str());
  13. I don't have this bug.. I can't reproduce
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.