Jump to content

b6d4a82c15

Member
  • Posts

    24
  • Joined

  • Last visited

  • Feedback

    0%

About b6d4a82c15

Informations

  • Gender
    Not Telling

Recent Profile Visitors

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

b6d4a82c15's Achievements

Enthusiast

Enthusiast (6/16)

  • Collaborator
  • Conversation Starter
  • Dedicated
  • Reacting Well
  • First Post

Recent Badges

77

Reputation

  1. Hey guys, Has anyone of you tried feeding metin2 game/server source to some kind of LLM yet? I think best use case would be finding exploits / memory leaks. Gemini 1.5 Pro seems especially interesting because it has a large amount of tokens.
  2. LUA is just a wrapper for C++ and it hardly makes it slower. And like we can see here, some people should stick with what's the most effective and that is LUA which was literally made for video game scripting and that's what official uses for the most part. It's not slow. If it was then official wouldn't run well while having thousands of quests running for thousands of players simultaneously. LUA is on the upper left of this triangle while C++ is high performance and high versatility BUT it carries greater responsibility. This mentioned bit would probably cause core crash That's why you should be humble and not reject the best solution. btw. metin2 scene is already too cluttered with mediocre developers so I'd recommend against paying someone who has questionable skills and makes too many mistakes in his paid work...
  3. Hello community, its time to give back some knowledge After creating your own map with WorldEditor ReMIX, there are a few steps needed to actually place it on the server. Server side 1. Navigate into /share/locale/germany/map 2. Create a folder, for example `metin2_new_map`, and place the following files inside. Only server_attr and settings.txt, town.txt are required - server_attr - copied from your clientside map folder, it holds map attributes like nonpvp zones - Town.txt - simply holds [x,y] respawn coords - **remember to set it or you'll spawn at 0,0** - regen.txt - mob regens - npc.txt - npc regens - boss.txt - mob (boss type) regens - stone.txt - metin stone regens - Setting.txt - should be copied from clientside map folder, except for `BasePosition` value. BasePosition value should be set to a coordinate value of a free chunk map and then it will form a square depending on the map size (for example 6/6 will take up 6 square height and 6 square width starting from the square you picked). This can be easily done via `AtlasInfoViewerJS` tool. 3. Add `metin2_new_map` to `/share/locale/germany/map/index`. Pick unique map index, preferably above 250 to avoid possible issues. 4. Add that map index you just set to channels of your choice to CORE configs (this is often done via sh scripts depending on your sf) 5. Run that gen_settings script 6. Restart the server if it's already running More information about Town.txt: Town.txt is located in the map folder, on the server side. This file governs respawns (restart in the city and so on). It can contain one line w x,y but this will cause players across all kingdoms to respawn in the same place. It can also contain four lines: 1. Jinno (Empire C) x,y 2. Shinsoo (Empire A) x,y 3. Chunjo (Empire B) x,y 4. GM related respawn most likely Client side 1. Edit `atlasinfo.txt` file in `pack/root` and add an entry like this: > metin2_new_map BasePosition_x BasePosition_y WIDTH_MAP LENGTH_MAP 2. Pack your map along with the appropriate model assets into a .epk pack file and add it to `pack/root/index.txt` 3. Generate Minimap .bmp image inside worldeditor, you can do this in WE sidepanel -> utility -> save atlasmap/mini 4. Convert .bmp file to .dds with preferred software. Or this web interface 5. Place this .dds file inside `/pack/etc/ymir work/ui/metin2_new_map.dds` 6. Create a directory `/pack/etc/ymir work/ui/atlas/metin2_new_map` and place atlas.sub file inside, it should look like this: title subImage version 1.0 image "yourmap.dds" left 0 top 0 right 256 bottom 256 You need to edit the dds name and right/bottom (actual size of the image). **Take note!** a maximum dimension of 256x256 is highly recommended. You should resize you .bmp to this resolution if it's bigger. There's also `pack/root/uimapnameshower.py` that's assigning map names to images that are shown upon warp etc. Portals (warps) Warp portals are a special kind of NPCs. Placing a warp portal on the map requires a few steps. 1. Go to the coordinates you want the portal to warp to, in game. 2. Type in `/state` command and look for your coordinates. You should see 3 different types of coordinates (Global/Warp/Local Position), what you need is the Warp Position (red). 3. Create a mob with type 0 and battle_type 3, make sure to structure his name and locale_name like this: `name_shown warp_x warp_y`, for instance: `Yayang_Area 4002 8995`. If you don't want the portal to show any name (it will still work with the said coordinates) put a dot instead of the name_shown, like this: `. 4002 8995` 4. Place this special warp NPC in your map's npc.txt regen `/share/locale/germany/map/metin2_new_map/npc.txt` 5. You will also may want to place a portal frame in worldeditor. Start position (first login) If you are trying to change the starting map, it's worth noting that this can be done by editing `game/start_position.cpp`: g_start_map (map indexes) and g_start_position (coords), configurable by empire. Name shower It's also worth mentioning that `root/uimapnameshower.py` file controls what kind of image will be shown upon entering the map
  4. Very cool, Im gonna test it right now. Winforms is so 2008 though.
  5. Does anyone else also have this issue where changing object Z position (height) doesn't work too well? I can move objects with SCROLL+Q but after saving/loading they're in a totally different place.
  6. Syreldar is friendly, helpful and most importantly competent with lots of experience in LUA development. 10/10
  7. Anyone else has this issue with this system? Im getting it after rewarp/relog. It's caused by RefreshLockedSlot but Im not sure how to fix it 1220 09:59:50193 :: Traceback (most recent call last): 1220 09:59:50193 :: File "networkModule.py", line 285, in SetGamePhase 1220 09:59:50193 :: File "game.py", line 105, in __init__ 1220 09:59:50193 :: File "interfaceModule.py", line 452, in MakeInterface 1220 09:59:50194 :: File "interfaceModule.py", line 245, in __MakeWindows 1220 09:59:50194 :: File "uiInventory.py", line 368, in __init__ 1220 09:59:50194 :: File "uiInventory.py", line 581, in __LoadWindow 1220 09:59:50194 :: File "uiInventory.py", line 679, in SetInventoryPage 1220 09:59:50195 :: File "uiInventory.py", line 1022, in RefreshBagSlotWindow 1220 09:59:50195 :: File "uiInventory.py", line 1022, in <lambda> 1220 09:59:50195 :: File "uiAttr67Add.py", line 474, in RefreshLockedSlot 1220 09:59:50195 :: AttributeError 1220 09:59:50195 :: : 1220 09:59:50196 :: 'int' object has no attribute 'SetCanMouseEventSlot' 1220 09:59:50196 :: 1220 09:59:50196 :: Traceback (most recent call last): 1220 09:59:50196 :: File "game.py", line 773, in RefreshStatus 1220 09:59:50198 :: File "game.py", line 767, in CheckGameButton 1220 09:59:50198 :: File "interfaceModule.py", line 1450, in CheckGameButton
  8. That depends on a lot of factors but generally you're looking at 5000-10.000USD if you're talking about a fully fledged server with custom graphics, nice website, some custom systems and efficient marketing. Maintenance will cost whatever you're paying your developer + ~50-100USD for infrastructure. It's a wild guess because it all depends on the type of your server, your abilities, negotiation skills and overall knowledge
  9. Simple yet not common enough QoL feature that lets miners mine in peace, even around aggressive mobs and bosses +++ b/Srcs/Server/game/src/char_state.cpp @@ -642,6 +642,10 @@ void CHARACTER::__StateIdle_Monster() if (victim && !victim->IsDead()) { +#ifdef MOB_AI_DONT_ATTACK_MINERS + if (victim->m_pkMiningEvent) + return; +#endif if (CanBeginFight()) BeginFight(victim); @@ -906,10 +910,17 @@ void CHARACTER::StateBattle() return; } +#ifdef MOB_AI_DONT_ATTACK_MINERS + if (victim && victim->m_pkMiningEvent) { + SetVictim(NULL); + CowardEscape(); + return; + } +#endif + if (!victim || (victim->IsStun() && IsGuardNPC()) || victim->IsDead()) {
  10. There's an U+FEFF (zero width no-break space) - invisible character near this last return in this function.
  11. Ikarus is helpful, responsive, patient (sometimes mean) but most importantly: his code is top notch quality.
  12. Mark is a skilled artist with many years of experience in the field. I bought from him and I will buy from him again. Sometimes slow to respond but he will eventually.
  13. Works fine, thank you Mali. I had to make some modifications but overall its very polished and I'd recommend it for OX rewards
  14. It works perfectly fine I just installed it
×
×
  • 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.