Jump to content

piktorvik

Premium
  • Posts

    21
  • Joined

  • Last visited

  • Feedback

    0%

About piktorvik

  • Birthday 10/22/1999

Informations

  • Gender
    Male

Recent Profile Visitors

604 profile views

piktorvik's Achievements

Collaborator

Collaborator (7/16)

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

Recent Badges

14

Reputation

  1. 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
  2. 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.
  3. Hello @Pandrio. I think @ Syreldar is your man. I can just recommend him.
  4. 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.
  5. 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!
  6. Dear Metin2Dev Community, Is there anyway to store the account details without administration rights?
  7. 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.
  8. Everything works well! Thank you very much for sharing this
  9. Dear all, How to add items from Special Inventory to QuickSlot? I can add it from Default Inventory, but i can't from Special Inventory. Anyone can help me? I tried some edit in char_quickslot but it doesn't work. Thank you all!
  10. 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?
  11. 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!
  12. 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); }
×
×
  • 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.