-
Posts
21 -
Joined
-
Last visited
-
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Everything posted by piktorvik
-
Dear Metin2Dev, I believe that many servers are still using old quests for giving mount bonuses from inventory, which are not bad but not very efficient either. Since I haven't seen anyone share something similar yet, I thought I'd share my solution for getting mount bonuses from the inventory. You need to specify the bonuses in groups, similar to how you specify mob, etc, special drops. After you have set it up and the item is in your inventory, you will receive the bonus you have set. How is a mount's bonus structured? locale/germany/mount_bonus_table.txt: Group MountTest1 { vnum 71224 --Mount item vnum from item_proto (type must be ITEM_QUEST (18)) --You can add maximum 5 bonuses from config (it can be extended) 1 13 5 --13 = APPLY_STUN_PCT 2 14 10 --14 = APPLY_SLOW_PCT 3 15 15 --15 = APPLY_CRITICAL_PCT 4 16 20 --16 = APPLY_PENETRATE_PCT 5 17 25 --17 = APPLY_ATTBONUS_HUMAN } This system works with items whose type is ITEM_QUEST (18). It means that your mount item type must be ITEM_QUEST or it won't give you the bonuses. In the future, i'm planning to extend this system for costume mounts, but you can also do it for yourself. I think this is a good starting point for those are using the old quest solutions to give bonuses from inventory. Tutorial: CommonDefines.h: char.cpp: char.h: char_item.cpp: input_db.cpp: item.cpp: item_manager.cpp: item_manager.h: If you have any ideas on how to make this system better, please leave a comment. I hope this will be useful for you. Best Regards, piktorvik
-
I just want to emphasize that you were extremely helpful and responsive when we had a small problem or had to change something. Your excellent customer service truly sets you apart. Thank you for being so reliable and supportive in addressing any concerns that arose. It's a pleasure to do business with someone who values their customers to this extent. Your dedication to ensuring a positive experience is greatly appreciated. Thank you once again for your outstanding service and assistance! Overall, I'm very pleased with my purchase and confidently recommend your content to others. I hope you continue to produce outstanding content for your customers.
-
Hello @Pandrio. I think @ Syreldar is your man. I can just recommend him.
- 1 reply
-
- 1
-
Guild Building Melt with Sanii's Special Inventory
piktorvik posted a topic in Programming & Scripts
Hey guys, Today I was facing with a guild melting problem, the problem was that the stones which are in the special inventory is not shown in the SelectItemWindow. I managed to solve this by adding a new check for special inventory size && special inventory slot end. In this tutorial the codes may be different from yours, if you have Sanii Special Inventory you have to check your GameType.h how is page size calculated and your PythonPlayerModule.cpp to see how it's defined. For example: PythonPlayerModule.cpp-> PyModule_AddIntConstant(poModule, "SPECIAL_INVENTORY_PAGE_SIZE", SPECIAL_INVENTORY_PAGE_SIZE); PyModule_AddIntConstant(poModule, "SPECIAL_INVENTORY_SLOT_END", c_Special_Inventory_Slot_End); GameType.h-> SPECIAL_INVENTORY_WIDTH = 5, SPECIAL_INVENTORY_HEIGHT = 9, SPECIAL_INVENTORY_PAGE_SIZE = SPECIAL_INVENTORY_WIDTH * SPECIAL_INVENTORY_HEIGHT, const DWORD c_Special_Inventory_Slot_Start = c_Belt_Inventory_Slot_End; const DWORD c_Special_Inventory_Skillbook_Slot_Start = c_Special_Inventory_Slot_Start; const DWORD c_Special_Inventory_Skillbook_Slot_End = c_Special_Inventory_Skillbook_Slot_Start +SPECIAL_INVENTORY_PAGE_SIZE * c_Inventory_Page_Count; const DWORD c_Special_Inventory_Stone_Slot_Start = c_Special_Inventory_Skillbook_Slot_End; const DWORD c_Special_Inventory_Stone_Slot_End = c_Special_Inventory_Stone_Slot_Start + SPECIAL_INVENTORY_PAGE_SIZE * c_Inventory_Page_Count; const DWORD c_Special_Inventory_Material_Slot_Start = c_Special_Inventory_Stone_Slot_End; const DWORD c_Special_Inventory_Material_Slot_End = c_Special_Inventory_Material_Slot_Start + SPECIAL_INVENTORY_PAGE_SIZE * c_Inventory_Page_Count; const DWORD c_Special_Inventory_Slot_End = c_Special_Inventory_Material_Slot_End; const DWORD c_Inventory_Count = c_Special_Inventory_Slot_End; Solution: root/uiselect.py In def RefreshSlot(self): search for: for i in xrange(player.INVENTORY_PAGE_SIZE*player.INVENTORY_PAGE_COUNT): After for loop add a new for loop for the special inventory: for i in xrange(player.SPECIAL_INVENTORY_PAGE_SIZE*player.SPECIAL_INVENTORY_SLOT_END): slotNumber = i itemVNum = getItemVNum(slotNumber) if 0 == itemVNum: continue if not item.IsMetin(itemVNum): continue itemGrade = player.GetItemGrade(slotNumber) if itemGrade > 2: continue self.inventorySlotPosDict[slotPos] = i slotPos += 1 if slotPos > 54: break Another problem is that if you select 100 stack of stone in the SelectItemWindow, they all disappear from the inventory, so instead of one piece, all of them disappear. Solution: mining.cpp Search for: ITEM_MANAGER::instance().RemoveItem(metinstone_item, "REMOVE (MELT)"); Replace with: metinstone_item->SetCount(metinstone_item->GetCount() - 1); I hope it will be useful for you Author of special inventory: @Sanii. @LordZiege approved me to share this fix. -
Dear everyone! I'm trying to solve this issue, but i didn't find anything. I'm ask for your help guys maybe someone can suggest something. Serverfile: martysama 5.4 (boughted). In the source i have vegas multilanguage + pickup (boughted). LLDB: input_login.cpp 85 line (sometimes it's item_drop_bonus etc..): exp_bonus = CPrivManager::instance().GetPriv(ch, PRIV_EXP_PCT); it's chatpacket: ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("°ćÇčġ %d%% Ăß°ˇ Čąµć ŔĚşĄĆ® ÁßŔÔ´Ď´Ů."), exp_bonus); (When entering the game i see this chat message and it's working fine.) GDB: Syslog: What do you think? The server is crashing very often when someone entering the game. I've checked the locale_strings line by line, translates, source chatpackets, but i didn't find the issue. Marty and VegaS tried to help me, but it was not enough. I don't expect anyone to help me for free. I can pay for your help & time. Thank you in advance!
-
Error comp. VS 2019 Discord_rpc_r.lib
piktorvik replied to Kinesia's topic in Community Support - Questions & Answers
HI Kinesia, You can find a tutorial here for implement the Discord RPC. You need to compile the libs with the same platform toolset as your client source builded. Blackdragonx61 has made a tutorial about how to build the libs. I hope it will help you.- 1 reply
-
- 1
-
official GF-Like Inventory Slot Marking System
piktorvik replied to xP3NG3Rx's topic in Features & Metin2 Systems
Hi. I have this problem. tutorial: Any idea :\? -
Everything works well! Thank you very much for sharing this
-
[PyLUA++]Tradehouse / LUA_ERROR
piktorvik replied to piktorvik's topic in Community Support - Questions & Answers
#solved Thanks for helping. -
[PyLUA++]Tradehouse / LUA_ERROR
piktorvik replied to piktorvik's topic in Community Support - Questions & Answers
Thats my RegisterPCFunctionTable() void RegisterPCFunctionTable() { luaL_reg pc_functions[] = { /////////ETC,ETC///////////////// { "get_channel_id", pc_get_channel_id }, { "give_poly_marble", pc_give_poly_marble }, { "get_sig_items", pc_get_sig_items }, { "charge_cash", pc_charge_cash }, { "get_informer_type", pc_get_informer_type }, //µ¶ŔĎ Ľ±ą° ±â´É { "get_informer_item", pc_get_informer_item }, { "give_award", pc_give_award }, //ŔĎş» °čÁ¤´ç ÇŃąřľż ±Ý±« Áö±Ţ { "give_award_socket", pc_give_award_socket }, //¸ô ŔÎşĄĹ丮żˇ ľĆŔĚĹŰ Áö±Ţ. ĽŇÄĎ ĽłÁ¤Ŕ» Ŕ§ÇŃ ÇÔĽö. { "get_killee_drop_pct", pc_get_killee_drop_pct }, /* mob_vnum.kill ŔĚşĄĆ®żˇĽ killeeżÍ pcżÍŔÇ level Â÷ŔĚ, pcŔÇ ÇÁ¸®ąĚľö µĺ¶ř·ü µîµîŔ» °í·ÁÇŃ ľĆŔĚĹŰ µĺ¶ř Č®·ü. { "give_item_with", pc_give_item_with }, * return °ŞŔş (şĐŔÚ, şĐ¸đ). * (¸»ŔĚ şąŔâÇѵĄ, CreateDropItemŔÇ GetDropPctŔÇ iDeltaPercent, iRandRange¸¦ returnÇŃ´Ů°í ş¸¸é µĘ.) * (ŔĚ ¸»ŔĚ ´ő ľî·Áżď¶ółŞ ¤Đ¤Đ) * ÁÖŔÇ»çÇ× : kill eventżˇĽ¸¸ »çżëÇŇ °Í! */ { NULL, NULL } }; CQuestManager::instance().AddLuaFunctionTable("pc", pc_functions); } }; Any other solution? -
Hi Metin2Dev, I need help with this: 20:20:57.867740 :: RunState: LUA_ERROR: locale/hungary/quest/object/state/mb_igshop:984: attempt to call field `give_item_with' (a nil value) SYSERR: Oct 30 20:20:57.867829 :: WriteRunningStateToSyserr: LUA_ERROR: quest mb_igshop.start click This happens when someone buys the product I am offering for sale and wants to take it out or when I just want to smoothly withdraw a sale. Please help me! Thanks! Have a nice day!
-
Channel1_1 Crash After Make a Guild
piktorvik replied to piktorvik's topic in Community Support - Questions & Answers
Its not work ? Any idea? I will try replace the tables but i think its not fix it Solved. The problem is guild.cpp INSERT query for (int i = 0; i < GUILD_GRADE_COUNT; ++i) { DBManager::instance().Query("INSERT INTO guild_grade VALUES(%u, %d, '%s', %d)", get_table_postfix(), m_data.guild_id, i + 1, m_data.grade_array.grade_name, m_data.grade_array.auth_flag); } to: for (int i = 0; i < GUILD_GRADE_COUNT; ++i) { DBManager::instance().Query("INSERT INTO guild_grade%s VALUES(%u, %d, '%s', %d)", get_table_postfix(), m_data.guild_id, i + 1, m_data.grade_array.grade_name, m_data.grade_array.auth_flag); } -
Hi everyone! I found a problem with guild making. If someone wants to make a guild, and if he enter the guild name and press OK the channel1_1 will crash. Channel1_1 syserr is empty. DB Syserr: SYSERR: Aug 20 21:03:36.172297 :: Process: FDWATCH: peer null in event: ident 22 I tried debuging the game.core but I didn't get anything Please help! Have a nice day!