-
Posts
110 -
Joined
-
Last visited
-
Days Won
5 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Everything posted by Den
-
I had some problems with this trigger because it happens for every single player on map and it didn't work good for me. Some contitions were executed more than one time. If someone wants here is how to trigger it only for the first player on the dungeon's character list: In struct FWarpToPosition remove quest::CQuestManager::instance().Jump(ch->GetPlayerID()); Then after if (!pMap) { sys_err("cannot find map by index %d", lFromMapIndex); return; } in void CDungeon::JumpAll(long lFromMapIndex, int x, int y) dungeon.cpp add if (!m_set_pkCharacter.empty()) { itertype(m_set_pkCharacter) it = m_set_pkCharacter.begin(); LPCHARACTER ch = *it; quest::CQuestManager::instance().Jump(ch->GetPlayerID()); } Then do the same for void CDungeon::JumpParty(LPPARTY pParty, long lFromMapIndex, int x, int y) if you want to. I also made a function that takes current dungeon as argument instead of player but in this case you can't use pc functions in when jump trigger(e.g. pc.get_map_index()) and you have to use only dungeon functions (e.g. d.get_map_index()) so for it wouldn't be good for begginers.
-
Maybe root/colorinfo.py TITLE_RGB_GOOD_1 etc?
-
Creating server_attr problem (world editor)
Den replied to Nero's topic in Community Support - Questions & Answers
I had this problem before. You must have d:/ymir work/special folder to get it working. -
For players it almost doesn't matter I think. You can use whatever you want, I'm just saying that some of these methods are just not good looking in code. If I were you I wouldn't do this in quest.
-
There are lots of ways to enable that. 1. Setting language skills to max in quest in which you select your job. 2. Searching for ConvertEmpireText() in server source and commenting it. 3. Searching for conditions with UNIQUE_GROUP_RING_OF_LANGUAGE and SKILL_LANGUAGE1 and changing them. 4. bool CHARACTER::IsEquipUniqueGroup(DWORD dwGroupVnum) const On the beggining add: if (dwGroupVnum == UNIQUE_GROUP_RING_OF_LANGUAGE) return true; Maybe 4th method looks kinda shitty but should do the job.
-
map Property load failed
Den replied to Aliremawi's topic in Community Support - Questions & Answers
In my client when I'm adding new objects, maps, etc. I have to rename everything to lowercase letters. For example: folder/Folder/Object.gr2 to folder/folder/object2.gr2 Maybe try this. -
Didn't test but find in char_battle.cpp: else if (1 == number(1, iGold10DropPct)) { // // µ· ĆřĹş˝Ä µĺ·Ó // for (int i = 0; i < 10; ++i) { int iGold = number(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax); iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100; iGold *= iGoldMultipler; if (iGold == 0) { continue; } // NOTE: µ· ĆřĹşŔş Á¦ 3ŔÇ ĽŐ Ăł¸®¸¦ ÇĎÁö ľĘŔ˝ if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold))) { pos.x = GetX() + (number(-7, 7) * 20); pos.y = GetY() + (number(-7, 7) * 20); item->AddToGround(GetMapIndex(), pos); item->StartDestroyEvent(); iTotalGold += iGold; // Total gold } } } Try to remove whole else if and check if it's working (save it somewhere maybe in case it wouldn't work). @EDIT: I didn't notice you also want to remove it from bosses. I have no time right now to adjust it but you can try it on your own. You have everything around this else if I gave you higher. @EDIT2: char_battle.cpp on the beggining add #include "../../common/service.h" common/service.h on the end add #define DISABLE_YANG_BOMB char_battle.cpp change in Reward() if (GetMobRank() >= MOB_RANK_BOSS && !IsStone() && GetMobTable().dwGoldMax != 0) { if (1 == number(1, iGold10DropPct)) iGoldMultipler *= 10; // 1% Č®·ü·Î µ· 10ąč int iSplitCount = number(25, 35); for (int i = 0; i < iSplitCount; ++i) { int iGold = number(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax) / iSplitCount; if (test_server) sys_log(0, "iGold %d", iGold); iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100; iGold *= iGoldMultipler; if (iGold == 0) { continue ; } if (test_server) { sys_log(0, "Drop Moeny MobGoldAmountRate %d %d", CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker), iGoldMultipler); sys_log(0, "Drop Money gold %d GoldMin %d GoldMax %d", iGold, GetMobTable().dwGoldMax, GetMobTable().dwGoldMax); } // NOTE: µ· ĆřĹşŔş Á¦ 3ŔÇ ĽŐ Ăł¸®¸¦ ÇĎÁö ľĘŔ #ifdef DISABLE_YANG_BOMB pkAttacker->GiveGold(iGold / iSplitCount); iTotalGold += iGold; #else if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold))) { pos.x = GetX() + ((number(-14, 14) + number(-14, 14)) * 23); pos.y = GetY() + ((number(-14, 14) + number(-14, 14)) * 23); item->AddToGround(GetMapIndex(), pos); item->StartDestroyEvent(); iTotalGold += iGold; // Total gold } #endif } } // 1% Č®·ü·Î µ·Ŕ» 10°ł ¶łľî ¶ß¸°´Ů. (10ąč µĺ·ÓŔÓ #ifndef DISABLE_YANG_BOMB else if (1 == number(1, iGold10DropPct)) { // // µ· ĆřĹş˝Ä µĺ·Ó // for (int i = 0; i < 10; ++i) { int iGold = number(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax); iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100; iGold *= iGoldMultipler; if (iGold == 0) { continue; } // NOTE: µ· ĆřĹşŔş Á¦ 3ŔÇ ĽŐ Ăł¸®¸¦ ÇĎÁö ľĘŔ˝ if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold))) { pos.x = GetX() + (number(-7, 7) * 20); pos.y = GetY() + (number(-7, 7) * 20); item->AddToGround(GetMapIndex(), pos); item->StartDestroyEvent(); iTotalGold += iGold; // Total gold } } } #endif else { // // ŔĎąÝŔűŔÎ ąć˝ÄŔÇ µ· µĺ·Ó // int iGold = number(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax); iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100; iGold *= iGoldMultipler; int iSplitCount; if (iGold >= 3 && !LC_IsYMIR()) iSplitCount = number(1, 3); else if (GetMobRank() >= MOB_RANK_BOSS) { iSplitCount = number(3, 10); if ((iGold / iSplitCount) == 0) iSplitCount = 1; } else iSplitCount = 1; if (iGold != 0) { iTotalGold += iGold; // Total gold for (int i = 0; i < iSplitCount; ++i) { if (isAutoLoot) { pkAttacker->GiveGold(iGold / iSplitCount); } else if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold / iSplitCount))) { pos.x = GetX() + (number(-7, 7) * 20); pos.y = GetY() + (number(-7, 7) * 20); item->AddToGround(GetMapIndex(), pos); item->StartDestroyEvent(); } } } } Didn't test. Yang will be added to character's inventory after killing a boss instead of droping on the ground. Let me know if you want it in another way.
-
Problem with Title System for VegaS
Den replied to Zeph's topic in Community Support - Questions & Answers
First of all if you have any errors with compilation then simply try to google it. Sometimes you will get an answer in several seconds. You've messed up with braces in void CInstanceBase::RefreshTextTail() after } #endif add } -
10 monesters the give pc level quest
Den replied to suliman's topic in Community Support - Questions & Answers
Maybe try to get next exp instead of current exp? local up = pc.get_next_exp() -
char_item.cpp:7580: error: expected unqualified-id before 'if' char_item,cpp, line 7580, paste the wole function.
-
Hello everyone. One day I was curious how does normal hit bonus and skill bonus are added to item, so I made a simple simulation as console application from source functions. Code: [Hidden Content] Change whatever you want then compile and test. Maybe this will help someone who wants to adjust this.
-
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
Like I've said, slot 204 is the correct one. Are you sure that you edited right inventorywindow.py? -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
Try on uiinventory.py: def SelectItemSlot(self, itemSlotIndex): chat.AppendChat(chat.CHAT_TYPE_INFO, "select item slot") if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1: return itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex) chat.AppendChat(chat.CHAT_TYPE_INFO, "select item slot %d" % itemSlotIndex) Add chat.AppendChat(chat.CHAT_TYPE_INFO, "select item slot %d" % itemSlotIndex) then try click and show chat. Does slot even highlight when over with item? -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
But after you click on empty belt slot game chat is showing nothing? -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
In uiinventory.py, function def SelectEmptySlot(self, selectedSlotPos), on the top write like this: def SelectEmptySlot(self, selectedSlotPos): chat.AppendChat(chat.CHAT_TYPE_INFO, "select empty slot %d" % selectedSlotPos) if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1: return Then click on belt slot in game and show what you've got on chat. -
That worked for me.
-
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
locale_xx/xx/ui/inventorywindow.py? -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
Maybe you've edited wrong inventorywindow.py? I have one in uiscript and one in locale/ui. That confused me once so maybe check it. -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
Anything in syserr? -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
Ah, try to set itemCount to 0: setItemVNum(204, getItemVNum(204), 0) #setting belt -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
Tabulations and spaces are really important in python. You must be using them properly like that: [Hidden Content] -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
The easiest way without touching the sashes is: uiinventory.py (add setItemVNum(204, getItemVNum(204), itemCount)): [Hidden Content] inventorywindow.py: Instead of {"index":item.EQUIPMENT_BELT, "x":39, "y":106, "width":32, "height":32}, write {"index":204, "x":39, "y":106, "width":32, "height":32}, -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
Look, you've inserted WEAR_COSTUME_ACCE before so now WEAR_BELT is 24 not 23. -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
common/length.h in server source: enum EWearPositions -> WEAR_BELT My WEAR_BELT is 23. GameType.h in binary source: const DWORD c_Equipment_Belt = c_New_Equipment_Start + 2; //should equal server WEAR_BELT + 180, c_New_Equipment_Start equals 201 so 201+2=203 -
Problem with belt system slot
Den replied to netmarlis's topic in Community Support - Questions & Answers
Hm... Check in your binary source if item.EQUIPMENT_BELT equals WEAR_BELT + 180 on server source side.