Jump to content

EAkar

Inactive Member
  • Posts

    62
  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by EAkar

  1. Hahahaha These files are completely corrupt. You will have problems with the zodiac temple. This fault only applies to the zodiac trader. Shops like normal market gun dealers are not problematic. I'm removing this mirroring system from my files immediately. Very dangerous. I advise you to use other mirroring system files. I do not recommend these files. It causes a lot of problems that you don't know about. Coincidentally I went out the zodiac multiples and found this problem. That's why this system is very dangerous.
  2. if app.BL_MOVE_CHANNEL: class MoveChannelDialog(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.__LoadDialog() self.IsShow = False def __del__(self): ui.ScriptWindow.__del__(self) def __LoadDialog(self) : try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "UIScript/MoveChannelDialog.py") except: import exception exception.Abort("MoveChannelDialog.__LoadDialog") self.ParentBoard = self.GetChild("MoveChannelBoard") self.ChildBoard = self.GetChild("BlackBoard") self.GetChild("MoveChannelTitle").SetCloseEvent(ui.__mem_func__(self.Close)) self.ChannelList = [] cnt = 5 cnt = cnt - 1 # 99서버 제외 self.DlgWidht = 190 self.BlackBoardHeight = 23*cnt + 5*(cnt-1) + 13 self.DlgHeight = self.BlackBoardHeight + 75 self.AcceptBtn = ui.MakeButton(self.ParentBoard, 13, self.DlgHeight - 33, "", "d:/ymir work/ui/public/", "middle_button_01.sub", "middle_button_02.sub", "middle_button_03.sub") self.AcceptBtn.SetText( localeInfo.MOVE_CHANNEL_SELECT ) self.AcceptBtn.SetEvent(ui.__mem_func__(self.AcceptButton)) self.CloseBtn = ui.MakeButton(self.ParentBoard, self.DlgWidht - 73, self.DlgHeight - 33, "", "d:/ymir work/ui/public/", "middle_button_01.sub", "middle_button_02.sub", "middle_button_03.sub") self.CloseBtn.SetText( localeInfo.MOVE_CHANNEL_CANCEL ) self.CloseBtn.SetEvent(ui.__mem_func__(self.Close)) for i in xrange(cnt): btn = ui.MakeButton(self.ChildBoard, 8, 6 + i*28, "", "d:/ymir work/ui/game/myshop_deco/", "select_btn_01.sub", "select_btn_02.sub", "select_btn_03.sub") btn.SetText("Kanal {0}".format(int(i+1))) btn.SetEvent(ui.__mem_func__(self.__SelectChannel), i+1) self.ChannelList.append(btn) self.ParentBoard.SetSize(self.DlgWidht, self.DlgHeight) self.ChildBoard.SetSize(self.DlgWidht - 26, self.BlackBoardHeight) self.SetSize(self.DlgWidht, self.DlgHeight) self.UpdateRect() def __SelectChannel(self, idx): self.ChangeChannelNumber = idx for btn in self.ChannelList: btn.SetUp() btn.Enable() self.ChannelList[idx-1].Down() self.ChannelList[idx-1].Disable() def AcceptButton(self): if self.ChangeChannelNumber == self.StartChannelNumber: return net.MoveChannelGame(self.ChangeChannelNumber) self.StartChannelNumber = self.ChangeChannelNumber self.Close() def Show(self) : ui.ScriptWindow.Show(self) self.StartChannelNumber = net.GetChannelNumber() self.__SelectChannel(self.StartChannelNumber) self.IsShow = True def Close(self): self.Hide() self.IsShow = False def OnPressEscapeKey(self): self.Close() return True def IsShowWindow(self): return self.IsShow İnterFaceModule.py if app.BL_MOVE_CHANNEL: def RefreshServerInfo(self, channelNumber): if self.wndMiniMap: self.wndMiniMap.RefreshServerInfo(channelNumber) Game.py if app.BL_MOVE_CHANNEL: def __SeverInfo(self, channelNumber, mapIndex): #print "__SeverInfo %s %s" % (channelNumber, mapIndex) _chNum = int(channelNumber.strip()) _mapIdx = int(mapIndex.strip()) if _chNum == 99: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE_GAME_99) elif _mapIdx >= 10000: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE_DUNGEON) else: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE % _chNum) net.SetChannelName(_chNum) net.SetMapIndex(_mapIdx) self.interface.RefreshServerInfo(channelNumber)
  3. I do not recommend using it this way. Develop and use.
  4. I installed the system without any problems. I guess it doesn't match.
  5. Edit : Fixed. npc vnum = player.shop(npc_vnum) WRONGGGG player.shop open (vnum) true Example : 1 ???? 9001 2 ????? 9009 3 ???? 9003 4 ????? 9002 9001 wrong 1 true also The market name is not written. Market name : None
  6. 70, 75, 48, 107 Are there npc codes in mob_proto in these numbers 9001 9002 9003 these codes are not. 1 ???? 9001 2 ????? 9009 3 ???? 9003 4 ????? 9002
  7. There is lag in the system. The key opens the lock. But after 4 5 seconds it turns on. Or I have to open it with the key again for it to appear. Someone else on another forum has the same problem. Add if you can fix the problem. I wouldn't recommend it if you can't fix the problem. Good Morning. Lag starts when 3 keys are requested. But there is no problem with 2 keys. As I said, when it starts asking for 3 or 4 keys, there is lag. (Note: I didn't lock 3 4 inventory. I only locked my 4th inventory. const DWORD c_Inventory_Open_Page_Count = 3; continuation of the video also doing this instead of make_unique. s_grid[i] = std::unique_ptr <CGrid>(new CGrid(INVENTORY_WIDTH,INVENTORY_HEIGHT)); and s_grid[i] = std::unique_ptr<CGrid>(new CGrid(INVENTORY_WIDTH,new_size));
  8. make_unique throws an error when using c++11. I am using C++11. CC = g++8 CXXFLAGS = -std=c++11 -Wl,-rpath=/usr/local/lib/gcc8 c++14 is required. I researched. When I change make_unique to unique_ptr I get error again. How can i solve this.
  9. I'm not mad at you trabzon but you might have an idea what the problem is. Only you can help with this. The costume system may not be yours. But you can help. It still doesn't matter if you're not helping. After all, you shared this system with us. You are a really good person. Not everyone can do this. entrust it to Allah. Metin2Shooping#3082
  10. No Problem : (look image) -- Everything looks good. I used a costume weapon on it. Everything is fine and there are no problems. and the biggest problem!!! When I remove the costume weapon, the original weapon appears. But the runic sword must appear. case ITEM_WEAPON: { #ifdef ENABLE_WEAPON_COSTUME_SYSTEM if (0 != m_pOwner->GetWear(WEAR_COSTUME_WEAPON)) break; #endif if (bAdd) { #if defined(__BL_TRANSMUTATION__) if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON) m_pOwner->SetPart(PART_WEAPON, GetTransmutationVnum() > 0 ? GetTransmutationVnum() : GetVnum()); #else if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON) m_pOwner->SetPart(PART_WEAPON, GetVnum()); #endif } else { if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON) m_pOwner->SetPart(PART_WEAPON, 0); } } break;
  11. MOVE_CHANNEL_NOTICE_GAME_99 You are connected with the Affiliate Channel. MOVE_CHANNEL_NOTICE_DUNGEON You are connected to a dungeon channel or a map. if app.BL_MOVE_CHANNEL: def __SeverInfo(self, channelNumber, mapIndex): #print "__SeverInfo %s %s" % (channelNumber, mapIndex) _chNum = int(channelNumber.strip()) _mapIdx = int(mapIndex.strip()) if _chNum == 99: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE_GAME_99) elif _mapIdx >= 10000: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE_DUNGEON) else: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE % _chNum) net.SetChannelName(_chNum) net.SetMapIndex(_mapIdx) self.interface.RefreshServerInfo(channelNumber)
  12. After performing these operations, the PAGE_DESC text of your wonexchange system will not appear.
  13. if (!ch) return; Owsap may have forgotten because he loves game.core so much. Please add just in case. I deleted the folder. keep it if it's void and false if it's bool.
  14. delete these ridiculous codes and just fix it with python code. ## ÀÚµ¿¹°¾à (#72723, #72724) Ư¼öó¸® - ¾ÆÀÌÅÛÀε¥µµ ½½·Ô¿¡ È°¼ºÈ­/ºñÈ°¼ºÈ­ Ç¥½Ã¸¦ À§ÇÑ ÀÛ¾÷ÀÓ - [hyo] if constInfo.IS_AUTO_POTION(itemIndex): # metinSocket - [0] : È°¼ºÈ­ ¿©ºÎ, [1] : »ç¿ëÇÑ ¾ç, [2] : ÃÖ´ë ¿ë·® metinSocket = [player.GetItemMetinSocket(Position, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)] if 0 != int(metinSocket[0]): slot.ActivateSlot(slotNumber) else: slot.DeactivateSlot(slotNumber) elif player.SLOT_TYPE_SKILL == Type: skillIndex = player.GetSkillIndex(Position) if 0 == skillIndex: slot.ClearSlot(slotNumber) continue skillType = skill.GetSkillType(skillIndex) if skill.SKILL_TYPE_GUILD == skillType: import guild skillGrade = 0 skillLevel = guild.GetSkillLevel(Position) else: skillGrade = player.GetSkillGrade(Position) skillLevel = player.GetSkillLevel(Position) slot.SetSkillSlotNew(slotNumber, skillIndex, skillGrade, skillLevel) slot.SetSlotCountNew(slotNumber, skillGrade, skillLevel) slot.SetCoverButton(slotNumber) ## NOTE : CoolTime üũ if player.IsSkillCoolTime(Position): (coolTime, elapsedTime) = player.GetSkillCoolTime(Position) slot.SetSlotCoolTime(slotNumber, coolTime, elapsedTime) ## NOTE : Activate µÇ¾î ÀÖ´Ù¸é ¾ÆÀÌÄܵµ ¾÷µ¥ÀÌÆ® if player.IsSkillActive(Position): # if not slotNumber in self.Jeaktivni: slot.ActivateSlot(slotNumber) # self.Jeaktivni.append(slotNumber) # else: # if slotNumber in self.Jeaktivni: # slot.DeactivateSlot(slotNumber) # self.Jeaktivni.remove(slotNumber)
  15. These operations give game.core. Game gives core on loading screen. No wrong additions. Everything is correct. There was no kernel crash prior to doing this action. char.h #ifdef ENABLE_ITEM_GRID_MAP std::unordered_map<BYTE, BYTE> pItemsGridMap; #else BYTE bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX]; #endif and LPITEM GetInventoryItem(WORD wCell) const; #ifdef ENABLE_ITEM_GRID_MAP BYTE ItemGridMapGetConst(BYTE cell_index) const; #endif char_item.cpp bool CHARACTER::IsEmptyItemGrid(TItemPos Cell, BYTE bSize, int iExceptionCell) const { switch (Cell.window_type) { case INVENTORY: { WORD bCell = Cell.cell; ++iExceptionCell; if (Cell.IsBeltInventoryPosition()) { LPITEM beltItem = GetWear(WEAR_BELT); if (NULL == beltItem) return false; if (false == CBeltInventoryHelper::IsAvailableCell(bCell - BELT_INVENTORY_SLOT_START, beltItem->GetValue(0))) return false; #ifdef ENABLE_ITEM_GRID_MAP if (ItemGridMapGetConst(bCell)) { if (ItemGridMapGetConst(bCell) == iExceptionCell) return true; return false; } #else if (m_pointsInstant.bItemGrid[bCell]) { if (m_pointsInstant.bItemGrid[bCell] == iExceptionCell) return true; return false; } #endif if (bSize == 1) return true; } else if (bCell >= INVENTORY_MAX_NUM) return false; #ifdef ENABLE_ITEM_GRID_MAP if (ItemGridMapGetConst(bCell)) { if (ItemGridMapGetConst(bCell) == iExceptionCell) #else if (m_pointsInstant.bItemGrid[bCell]) { if (m_pointsInstant.bItemGrid[bCell] == iExceptionCell) #endif { if (bSize == 1) return true; int j = 1; BYTE bPage = bCell / (INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT); do { BYTE p = bCell + (5 * j); if (p >= INVENTORY_MAX_NUM) return false; if (p / (INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT) != bPage) return false; #ifdef ENABLE_ITEM_GRID_MAP if (ItemGridMapGetConst(p)) if (ItemGridMapGetConst(p) != iExceptionCell) return false; #else if (m_pointsInstant.bItemGrid[p]) if (m_pointsInstant.bItemGrid[p] != iExceptionCell) return false; #endif } while (++j < bSize); return true; } else return false; } if (1 == bSize) return true; else { int j = 1; BYTE bPage = bCell / (INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT); do { BYTE p = bCell + (5 * j); if (p >= INVENTORY_MAX_NUM) return false; if (p / (INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT) != bPage) return false; #ifdef ENABLE_ITEM_GRID_MAP if (ItemGridMapGetConst(p)) if (ItemGridMapGetConst(p) != iExceptionCell) return false; #else if (m_pointsInstant.bItemGrid[p]) if (m_pointsInstant.bItemGrid[p] != iExceptionCell) return false; #endif } while (++j < bSize); return true; } } break; case DRAGON_SOUL_INVENTORY: { WORD wCell = Cell.cell; if (wCell >= DRAGON_SOUL_INVENTORY_MAX_NUM) return false; iExceptionCell++; if (m_pointsInstant.wDSItemGrid[wCell]) { if (m_pointsInstant.wDSItemGrid[wCell] == iExceptionCell) { if (bSize == 1) return true; int j = 1; do { int p = wCell + (DRAGON_SOUL_BOX_COLUMN_NUM * j); if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM) return false; #ifdef ENABLE_ITEM_GRID_MAP if (ItemGridMapGetConst(p)) #else if (m_pointsInstant.bItemGrid[p]) #endif if (m_pointsInstant.wDSItemGrid[p] != iExceptionCell) return false; } while (++j < bSize); return true; } else return false; } if (1 == bSize) return true; else { int j = 1; do { int p = wCell + (DRAGON_SOUL_BOX_COLUMN_NUM * j); if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM) return false; #ifdef ENABLE_ITEM_GRID_MAP if (ItemGridMapGetConst(p)) #else if (m_pointsInstant.bItemGrid[p]) #endif if (m_pointsInstant.wDSItemGrid[p] != iExceptionCell) return false; } while (++j < bSize); return true; } } break; void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem) #endif { WORD wCell = Cell.cell; BYTE window_type = Cell.window_type; if ((unsigned long)((CItem*)pItem) == 0xff || (unsigned long)((CItem*)pItem) == 0xffffffff) { sys_err("!!! FATAL ERROR !!! item == 0xff (char: %s cell: %u)", GetName(), wCell); core_dump(); return; } if (pItem && pItem->GetOwner()) { assert(!"GetOwner exist"); return; } switch (window_type) { case INVENTORY: case EQUIPMENT: { if (wCell >= INVENTORY_AND_EQUIP_SLOT_MAX) { sys_err("CHARACTER::SetItem: invalid item cell %d", wCell); return; } LPITEM pOld = m_pointsInstant.pItems[wCell]; if (pOld) { if (wCell < INVENTORY_MAX_NUM) { for (int i = 0; i < pOld->GetSize(); ++i) { int p = wCell + (i * 5); if (p >= INVENTORY_MAX_NUM) continue; if (m_pointsInstant.pItems[p] && m_pointsInstant.pItems[p] != pOld) continue; #ifdef ENABLE_ITEM_GRID_MAP m_pointsInstant.pItemsGridMap[p] = 0; #else m_pointsInstant.bItemGrid[p] = 0; #endif } } else #ifdef ENABLE_ITEM_GRID_MAP m_pointsInstant.pItemsGridMap[wCell] = 0; #else m_pointsInstant.bItemGrid[wCell] = 0; #endif } if (pItem) { if (wCell < INVENTORY_MAX_NUM) { for (int i = 0; i < pItem->GetSize(); ++i) { int p = wCell + (i * 5); if (p >= INVENTORY_MAX_NUM) continue; #ifdef ENABLE_ITEM_GRID_MAP m_pointsInstant.pItemsGridMap[p] = wCell + 1; #else m_pointsInstant.bItemGrid[p] = wCell + 1; #endif } } else #ifdef ENABLE_ITEM_GRID_MAP m_pointsInstant.pItemsGridMap[wCell] = wCell + 1; #else m_pointsInstant.bItemGrid[wCell] = wCell + 1; #endif } m_pointsInstant.pItems[wCell] = pItem; } break; case DRAGON_SOUL_INVENTORY: { LPITEM pOld = m_pointsInstant.pDSItems[wCell]; if (pOld) { if (wCell < DRAGON_SOUL_INVENTORY_MAX_NUM) { for (int i = 0; i < pOld->GetSize(); ++i) { int p = wCell + (i * DRAGON_SOUL_BOX_COLUMN_NUM); if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM) continue; if (m_pointsInstant.pDSItems[p] && m_pointsInstant.pDSItems[p] != pOld) continue; m_pointsInstant.wDSItemGrid[p] = 0; } } else m_pointsInstant.wDSItemGrid[wCell] = 0; } if (pItem) { if (wCell >= DRAGON_SOUL_INVENTORY_MAX_NUM) { sys_err("CHARACTER::SetItem: invalid DS item cell %d", wCell); return; } if (wCell < DRAGON_SOUL_INVENTORY_MAX_NUM) { for (int i = 0; i < pItem->GetSize(); ++i) { int p = wCell + (i * DRAGON_SOUL_BOX_COLUMN_NUM); if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM) continue; m_pointsInstant.wDSItemGrid[p] = wCell + 1; } } else m_pointsInstant.wDSItemGrid[wCell] = wCell + 1; } m_pointsInstant.pDSItems[wCell] = pItem; } break; #ifdef ENABLE_ITEM_GRID_MAP BYTE CHARACTER::ItemGridMapGetConst(BYTE cell_index) const { auto it = m_pointsInstant.pItemsGridMap.find(cell_index); if (it != m_pointsInstant.pItemsGridMap.end()) { return it->second; } else { return 0; } } #endif #ifdef ENABLE_ITEM_GRID_MAP m_pointsInstant.pItemsGridMap.clear(); #endif #ifdef ENABLE_ACCE_SYSTEM m_bAcceCombination = false; m_bAcceAbsorption = false; #endif I cleared the codes and the game opened
  16. this system breaks root. imgct.py import it into game.py After import imgct package root and try to open the game and it won't open. You will get a Runmain Error. Undo what you did and the game opens. All py open NullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNull
  17. Now I tried it for the costume, I have the same problem. It stays put on me when I put on the costume_body and take it off again. We ask Mali61 for help on this issue. Hope it helps us. Or someone else.
  18. Hello all, I hope you are well. I added the fish puzzle system. But Z shows the puzzle as a square. The L puzzle looks like a square. How can i solve this. Thank you. Have a nice day. GIF:
  19. SetYPosistion gives the syntax. syntax error? I think people can do work easier if you give your cpp and h files. Thank you.
  20. Peer.cpp add #include <sstream> net.GetChannelName It has no function in my files. I installed the system without any problems. But I guess it doesn't match with my files. I'm changing channels, but the old channel count still remains under the minimap. That's why Vegas' editing works better. edit game.py self.interface.RefreshServerInfo(channelNumber) Edit interfacemodule.py. if app.BL_MOVE_CHANNEL: def RefreshServerInfo(self, channelNumber): if self.wndMiniMap: self.wndMiniMap.RefreshServerInfo(channelNumber) edit minimap.py if app.BL_MOVE_CHANNEL: def RefreshServerInfo(self, channelNumber): if channelNumber == 99: serverInfoStr = serverInfo.SERVER_1 + ' - Common Channel' else: serverInfoStr = serverInfo.SERVER_1 + ' - ' + 'Channel ' + str(channelNumber) self.serverInfo.SetText(serverInfoStr) net.SetServerInfo(serverInfoStr) fixed.
  21. For db syserr.txt, it always gives attrtype8 attrtype 9 attrtype10 ......... addfield syserr like this. I add it for mailbox and it keeps asking me to add it. 10 11 12 13 14 like a joke
  22. If you adapt the transmutation system. BL_TRANSMUTATION You will get db.core. For clientmanagerboot.cpp set 512 to 1024.
  23. Everything works smoothly. Thank you very much Mali61. There is just one small problem. The WJ_TRADABLE_ICON effect does not appear when the window is opened. If I just click on the window or object, the effect comes on.
  24. The problem persists. The case is not related to ITEM_WEAPON. The problem is elsewhere. But I don't know where it is. No problem with armor. There is only one problem with the gun. @ MaliCan you help with this? Thank You bro.
×
×
  • 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.