Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 06/12/2020 in all areas

  1. 3 points
    Hello, Im sharing a pet pack Preview Download
  2. 3 points
    Automatic event system, start the event and set the end time. (You will never forget to finish the event again.) https://github.com/Alerinos/M2-Quest-Automatic-event Do you need a quest, system or www? Write to me, I can create everything. (Full STACK, Web (PHP, JS, SQL, HTML, CSS), Server (C ++, Python, Lua)) Discord Alerin#5559
  3. 1 point
    This thread is intended for requests of files which are not published in this forum already, with the exception of the official packs which have their own thread. Make sure you have used the search function before making your request and do not post your request twice.
  4. 1 point
    GF v20.2.5 patch. Contents: Summer costumes(pirates) with hairstyle + crab pet (w/ 2 textures) - m00161 locales w/ unpacked protos root(msm+txt files) + dumped metadata w/ builtins Lots of files has been modified I didn't check them. But finally they have removed the old metin2_patch_*, outdoor*, blabla files. Now they have only m0*, no more douple or triple files in the client packfiles. From the offficial announcement they have fixed some model issues as well as this too: img. PS. The mob_proto.txt files are corrupted, because of my tool, it had a small syntax error, which caused skipping a '\t' character between the rhpregenand the hitrange. I just noticed after the file has been uploaded. The fix is for it is replace this: "00.0" with "0\t0.0". ~ . ~ v20.2.6 Full Client: Mega.nz All multiplied files have been removed. All m00xx split folders moved together.
  5. 1 point
    Premise: I don't know whether you have this system from a free release elsewhere or you bought it and I have no idea if they are the same or not (even though the same version can be found in the first server files of Rubinum). There are two issues I was concerned with: -creating an item when you request the infos -putting the mob data dictionary in constinfo The first is if you have, in CreateDropItemVector function something like this: if (item) vec_item.push_back(item); So, we create an item and we do nothing with it, staying in memory for no purpose. Instead, we can use a vector of pairs. Open item_manager.h Replace bool CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item); with: bool CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<std::pair<int,int> > & vec_item); Now, open item_manager.cpp Replace bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item) With bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<std::pair<int,int> > & vec_item) and remove LPITEM item = NULL; and edit the function accordingly. EX for common_drop_item, replace: std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin(); while (it != g_vec_pkCommonDropItem[bRank].end()) { const CItemDropInfo & c_rInfo = *(it++); if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd) continue; TItemTable * table = GetTable(c_rInfo.m_dwVnum); if (!table) continue; item = NULL; if (table->bType == ITEM_POLYMORPH) { if (c_rInfo.m_dwVnum == pkChr->GetPolymorphItemVnum()) { item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true); if (item) item->SetSocket(0, pkChr->GetRaceNum()); } } else item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true); if (item) vec_item.push_back(item); } with std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin(); while (it != g_vec_pkCommonDropItem[bRank].end()) { const CItemDropInfo & c_rInfo = *(it++); if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd) continue; TItemTable * table = GetTable(c_rInfo.m_dwVnum); if (!table) continue; if(c_rInfo.m_dwVnum > 70103 && c_rInfo.m_dwVnum < 70108) { if (c_rInfo.m_dwVnum != pkChr->GetPolymorphItemVnum()) { continue; } } vec_item.push_back(std::make_pair(c_rInfo.m_dwVnum, 1)); } (edit 70103 and 70108 accordingly with your Polymorph Marble vnums The whole function should look like this: bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<std::pair<int,int> > & vec_item) { if (pkChr->IsPolymorphed() || pkChr->IsPC()) { return false; } int iLevel = pkKiller->GetLevel(); BYTE bRank = pkChr->GetMobRank(); std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin(); while (it != g_vec_pkCommonDropItem[bRank].end()) { const CItemDropInfo & c_rInfo = *(it++); if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd) continue; TItemTable * table = GetTable(c_rInfo.m_dwVnum); if (!table) continue; if(c_rInfo.m_dwVnum > 70103 && c_rInfo.m_dwVnum < 70108) { if (c_rInfo.m_dwVnum != pkChr->GetPolymorphItemVnum()) { continue; } } vec_item.push_back(std::make_pair(c_rInfo.m_dwVnum, 1)); } // Drop Item Group { itertype(m_map_pkDropItemGroup) it; it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum()); if (it != m_map_pkDropItemGroup.end()) { typeof(it->second->GetVector()) v = it->second->GetVector(); for (DWORD i = 0; i < v.size(); ++i) { vec_item.push_back(std::make_pair(v[i].dwVnum, v[i].iCount)); } } } // MobDropItem Group { itertype(m_map_pkMobItemGroup) it; it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum()); if ( it != m_map_pkMobItemGroup.end() ) { CMobItemGroup* pGroup = it->second; if (pGroup && !pGroup->IsEmpty()) { const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne(); vec_item.push_back(std::make_pair(info.dwItemVnum, info.iCount)); } } } // Level Item Group { itertype(m_map_pkLevelItemGroup) it; it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum()); if ( it != m_map_pkLevelItemGroup.end() ) { if ( it->second->IsInLevelRange((DWORD)iLevel) ) { typeof(it->second->GetVector()) v = it->second->GetVector(); for ( DWORD i=0; i < v.size(); i++ ) { DWORD dwVnum = v[i].dwVNum; vec_item.push_back(std::make_pair(dwVnum, v[i].iCount)); } } } } // ETC DropItem if (pkChr->GetMobDropItemVnum()) { itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum()); if (it != m_map_dwEtcItemDropProb.end()) { vec_item.push_back(std::make_pair(pkChr->GetMobDropItemVnum(), 1)); } } //Metin if (pkChr->IsStone()) { if (pkChr->GetDropMetinStoneVnum()) { vec_item.push_back(std::make_pair(pkChr->GetDropMetinStoneVnum(), 1)); } } return vec_item.size(); } Note: level item group and drop item group might be different because in my files i have a level_limit_max token and, for drop_item_group, I don't expect to put a Polymorph Marble. Also it's missing the buyertheifgloves item group, but you can clearly see the pattern and modify accordingly. Side Note (how to add drop of the Stones from Metins server side): Before return vec_item.size(); you can also organize the vector as you want or create another one with a certain structure, like, first the common drop items, then the advance items or whatever, you can also clear it for what I care. Me, for example, I sort it to have all the vnums from the smallest to the largest. You can do that by: std::sort(vec_item.begin(), vec_item.end(), std::less<std::pair<int,int> >()); Now, let's go to input_main.cpp Remove: LPITEM pkInfoItem; We don't use an item anymore, remember? So now replace: static std::vector<LPITEM> s_vec_item; with: static std::vector<std::pair<int,int> > s_vec_item; Then replace: if (ITEM_MANAGER::instance().CreateDropItemVector(m_pkChrTarget, ch, s_vec_item) && (m_pkChrTarget->IsMonster() || m_pkChrTarget->IsStone())) with: if ((m_pkChrTarget->IsMonster() || m_pkChrTarget->IsStone()) && ITEM_MANAGER::instance().CreateDropItemVector(m_pkChrTarget, ch, s_vec_item)) This way also, if you target a player or a NPC, it will not trigger the CreateDropItemVector function. Remove everything inside the function if (s_vec_item.size() == 0); //this is useless else if (s_vec_item.size() == 1) //even more useless Just put: for(std::vector<std::pair<int,int> >::const_iterator iter = s_vec_item.begin(); iter != s_vec_item.end();++iter) { pInfo.dwVID = m_pkChrTarget->GetVID(); pInfo.race = m_pkChrTarget->GetRaceNum(); pInfo.dwVnum = iter->first; pInfo.count = iter->second; ch->GetDesc()->Packet(&pInfo, sizeof(TPacketGCTargetInfo)); } That's it. Now the constinfo issue. So, open constinfo.py and remove: import app if app.ENABLE_SEND_TARGET_INFO: MONSTER_INFO_DATA = {} Open uitarget.py and after the imports add: MONSTER_INFO_DATA = {} and replace whatever declaration with constinfo.MONSTER_INFO_DATA with just MONSTER_INFO_DATA Now open game.py. Even here, replace constinfo.MONSTER_INFO_DATA with uiTarget.MONSTER_INFO_DATA Last little fix, open intrologin.py Search for: self.stream.SetLoginInfo(id, pwd) the one in: def __OnClickLoginButton(self): add before uiTarget.MONSTER_INFO_DATA.clear() This should fix the issue when you don't close the client and, if you change the drop, you still see the older drop. Now you may ask, why all the other servers who may have this have never crashed or imploded? To be fair, I don't know and I don't care. Just know, if your system is similar to this, be aware of the issues and that this is one but definitely not the only fix possible.
  6. 1 point
    Hello, There is a little memory leak associated with ITEM_BLEND item you would probably like to sort out. Find: LPITEM CHARACTER::AutoGiveItem(DWORD dwItemVnum, WORD bCount, int iRarePct, bool bMsg) Scroll down until you find this kind of code piece: if (item->GetType() == ITEM_BLEND) { for (int i=0; i < INVENTORY_MAX_NUM; i++) { LPITEM inv_item = GetInventoryItem(i); if (inv_item == NULL) continue; if (inv_item->GetType() == ITEM_BLEND) { if (inv_item->GetVnum() == item->GetVnum()) { if (inv_item->GetSocket(0) == item->GetSocket(0) && inv_item->GetSocket(1) == item->GetSocket(1) && inv_item->GetSocket(2) == item->GetSocket(2) && inv_item->GetCount() < ITEM_MAX_COUNT) { inv_item->SetCount(inv_item->GetCount() + item->GetCount()); return inv_item; } } } } } And add there destroy item's function before return statement. The result should look like this: if (item->GetType() == ITEM_BLEND) { for (int i=0; i < INVENTORY_MAX_NUM; i++) { LPITEM inv_item = GetInventoryItem(i); if (inv_item == NULL) continue; if (inv_item->GetType() == ITEM_BLEND) { if (inv_item->GetVnum() == item->GetVnum()) { if (inv_item->GetSocket(0) == item->GetSocket(0) && inv_item->GetSocket(1) == item->GetSocket(1) && inv_item->GetSocket(2) == item->GetSocket(2) && inv_item->GetCount() < ITEM_MAX_COUNT) { inv_item->SetCount(inv_item->GetCount() + item->GetCount()); // Memory Leak Fix M2_DESTROY_ITEM(item); return inv_item; } } } } } Item created above using CreateItem function would never be destroyed at all (it's usually returned from function for further use). Thus you need to wipe it out manually. Regards
  7. 1 point
    I noticed that every my client have the same bug, maybe sharing the fix prevents me from having to apply it to everyone and it also helps others who try the function and have problems. an example of buggy usage: File: scriptLib\PythonUtils.cpp bool PyTuple_GetUnsignedLong(PyObject* poArgs, int pos, unsigned long* ret) { if (pos >= PyTuple_Size(poArgs)) return false; PyObject * poItem = PyTuple_GetItem(poArgs, pos); if (!poItem) return false; *ret = PyLong_AsUnsignedLong(poItem); return true; } the problem seems to be PyLong_AsUnsignedLongLong which is buggy: #define PyLong_AsUnsignedLong PyLong_AsUnsignedLongLong how we could fix it? //replacing #define PyLong_AsUnsignedLong (unsigned long)PyLong_AsLongLong
  8. 1 point
    Hello everyone ! I've been away from metin2 for about 6 months and i've get back from less then a month and made thoes systems , i've start selling them but i didn't sell it to anyone and i got bored from metin2 again so i'm going to release it and go off from metin2 for ever . about the Advance Refine System here some info: so download and have fun Advance Refine System.rar Soul Bind System.rar Cheque System.rar
  9. 1 point
    Hey, Today i will share how can you change the Whitemark in Minimap with a new one. I saw that there is a topic in Questions & Answers but seems not complete so. Minimap Whitemark - New Download: Minimap Whitemark.rar
  10. 1 point
    Screenshot Serverside - C++ [*]packet.h: search for HEADER_CG_ITEM_DROP2 = 20, & paste HEADER_CG_ITEM_DESTROY = 21, under it. [*]packet.h: search for typedef struct command_item_drop2 { [...] } TPacketCGItemDrop2; & paste typedef struct command_item_destroy { BYTE header; TItemPos Cell; } TPacketCGItemDestroy; under it. [*]packet_info.cpp: search for Set(HEADER_CG_ITEM_DROP2, sizeof(TPacketCGItemDrop2), "ItemDrop2", true); & paste Set(HEADER_CG_ITEM_DESTROY, sizeof(TPacketCGItemDestroy), "ItemDestroy", true); under it. [*]input_main.cpp: search for void CInputMain::ItemDrop2(LPCHARACTER ch, const char * data) { [...] } & paste void CInputMain::ItemDestroy(LPCHARACTER ch, const char * data) { struct command_item_destroy * pinfo = (struct command_item_destroy *) data; if (ch) ch->DestroyItem(pinfo->Cell); } under it. [*]input_main.cpp: search for case HEADER_CG_ITEM_DROP2: [...] break; & paste case HEADER_CG_ITEM_DESTROY: if (!ch->IsObserverMode()) ItemDestroy(ch, c_pData); break; under it. [*]char_item.cpp: search for bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount) & paste bool CHARACTER::DestroyItem(TItemPos Cell) { LPITEM item = NULL; if (!CanHandleItem()) { if (NULL != DragonSoul_RefineWindow_GetOpener()) ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°*È*âÀ» ¿¬ »óÅ¿¡¼*´Â ¾ÆÀÌÅÛÀ» ¿Å±æ ¼ö ¾ø½À´Ï´Ù.")); return false; } if (IsDead()) return false; if (!IsValidItemPosition(Cell) || !(item = GetItem(Cell))) return false; if (item->IsExchanging()) return false; if (true == item->isLocked()) return false; if (quest::CQuestManager::instance().GetPCForce(GetPlayerID())->IsRunning() == true) return false; if (item->GetCount() <= 0) return false; SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 255); ITEM_MANAGER::instance().RemoveItem(item); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Du hast %s zerstoert."), item->GetName()); return true; } above it. [*]char.h: search for bool DropItem(TItemPos Cell, BYTE bCount=0); & paste bool DestroyItem(TItemPos Cell); above it. [*]input.h: search for void ItemDrop2(LPCHARACTER ch, const char * data); & paste void ItemDestroy(LPCHARACTER ch, const char * data); under it. Clientside - C++ [*]packet.h: search for HEADER_CG_ITEM_DROP2 = 20, & paste HEADER_CG_ITEM_DESTROY = 21, ein. [*]packet.h: search for typedef struct command_item_drop2 { [...] } TPacketCGItemDrop2; & paste typedef struct command_item_destroy { BYTE header; TItemPos pos; } TPacketCGItemDestroy; under it. [*]PythonNetworkStreamPhaseGameItem.cpp: search for bool CPythonNetworkStream::SendItemDropPacketNew(TItemPos pos, DWORD elk, DWORD count) { [...] } & paste bool CPythonNetworkStream::SendItemDestroyPacket(TItemPos pos) { if (!__CanActMainInstance()) return true; TPacketCGItemDestroy itemDestroyPacket; itemDestroyPacket.header = HEADER_CG_ITEM_DESTROY; itemDestroyPacket.pos = pos; if (!Send(sizeof(itemDestroyPacket), &itemDestroyPacket)) { Tracen("SendItemDestroyPacket Error"); return false; } return SendSequence(); } under it. [*]PythonNetworkStreamModule.cpp: search for PyObject* netSendItemDropPacket(PyObject* poSelf, PyObject* poArgs) { [...] } & paste PyObject* netSendItemDestroyPacket(PyObject* poSelf, PyObject* poArgs) { TItemPos Cell; if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell)) return Py_BuildException(); CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance(); rkNetStream.SendItemDestroyPacket(Cell); return Py_BuildNone(); } under it. [*]PythonNetworkStreamModule.cpp: search for { "SendItemDropPacketNew", netSendItemDropPacketNew, METH_VARARGS }, & paste { "SendItemDestroyPacket", netSendItemDestroyPacket, METH_VARARGS }, under it. [*]PythonNetworkStream.h: search for bool SendItemDropPacketNew(TItemPos pos, DWORD elk, DWORD count); & paste bool SendItemDestroyPacket(TItemPos pos); under it. Clientside - Python [*]uiCommon.py: search for class QuestionDialog(ui.ScriptWindow): [...] & paste class QuestionDialogItem(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.__CreateDialog() def __del__(self): ui.ScriptWindow.__del__(self) def __CreateDialog(self): pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/questiondialogitem.py") self.board = self.GetChild("board") self.textLine = self.GetChild("message") self.acceptButton = self.GetChild("accept") self.destroyButton = self.GetChild("destroy") self.cancelButton = self.GetChild("cancel") def Open(self): self.SetCenterPosition() self.SetTop() self.Show() def Close(self): self.Hide() def SetWidth(self, width): height = self.GetHeight() self.SetSize(width, height) self.board.SetSize(width, height) self.SetCenterPosition() self.UpdateRect() def SAFE_SetAcceptEvent(self, event): self.acceptButton.SAFE_SetEvent(event) def SAFE_SetCancelEvent(self, event): self.cancelButton.SAFE_SetEvent(event) def SetAcceptEvent(self, event): self.acceptButton.SetEvent(event) def SetDestroyEvent(self, event): self.destroyButton.SetEvent(event) def SetCancelEvent(self, event): self.cancelButton.SetEvent(event) def SetText(self, text): self.textLine.SetText(text) def SetAcceptText(self, text): self.acceptButton.SetText(text) def SetCancelText(self, text): self.cancelButton.SetText(text) def OnPressEscapeKey(self): self.Close() return TRUE under it. [*]uiScript/questiondialogitem.py: download it & pack it in your pack/uiscript. [*]game.py: search in definition __DropItem for the first itemDropQuestionDialog = uiCommon.QuestionDialog() & replace it with itemDropQuestionDialog = uiCommon.QuestionDialogItem() [*]game.py: a few lines under it you can find itemDropQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.RequestDropItem(arg)) & paste itemDropQuestionDialog.SetDestroyEvent(lambda arg=TRUE: self.RequestDestroyItem(arg)) under it. [*]game.py: search for def RequestDropItem(self, answer): [...] & paste def RequestDestroyItem(self, answer): if not self.itemDropQuestionDialog: return if answer: dropType = self.itemDropQuestionDialog.dropType dropNumber = self.itemDropQuestionDialog.dropNumber if player.SLOT_TYPE_INVENTORY == dropType: if dropNumber == player.ITEM_MONEY: return else: self.__SendDestroyItemPacket(dropNumber) self.itemDropQuestionDialog.Close() self.itemDropQuestionDialog = None constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0) under it. [*]game.py: search for def __SendDropItemPacket(self, itemVNum, itemCount, itemInvenType = player.INVENTORY): [...] & paste def __SendDestroyItemPacket(self, itemVNum, itemInvenType = player.INVENTORY): if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP) return net.SendItemDestroyPacket(itemVNum) under it. [*]locale/xx/locale_interface.txt: add there somewhere DESTROY Destroy release_avenue.rar
  11. 1 point
  12. 1 point
    fix for cheque system error PythonNetworkStreamPhaseGame.cpp search after add
  13. 1 point
    Hey guyz, I just made a regen creator. Here's a how to use GIF: Download (EN and HU version too): metin2_regen_creator_by_distraught_EN.exe metin2_regen_creator_by_distraught_HU.exe
  14. 1 point
    Just move this files /usr/game/share/data/monster and replace existing ch_general.rar
  15. 1 point
    Hi, I'v been working on a small tool since last week that helps,make it faster and easier to modify & add new item names/icons into item_names/item_list files. It is now finished, and i'd like to share it with the community and get feedback from you for any bugs you have encountered. What can you do with this program? Add item name record into item_name(example screen shot below). Add item record into item_list(example screen shot below). Save logs of every action made. Once insert item button has been clicked,it has a check if an item vnum already exist, if so, nothing happens. ** By having a log file that stores info of every of your action by the tool, you can track your last changes with the exact date and time. this is pretty useful i can say. Example of inserting new item name: Example of inserting new item icon: Log file: ############################ Author: © Metin2 Factory Date: 09/02/2017 ############################ This application will allow you to easily add new item names/icons. How to use: 1.Open the file metin2_file_editor.exe 2.Click on browse and select one of the following files: a.item_names.txt b.item_list.txt Type the vnum of the new item and fill the rest of the fields. Enjoy! Please, like this topic if you find it useful. Metin2 File Editor.rar
  16. 1 point
    priv_empire ? /priv_empire where type is 1:exp frog ? /frog (1 2 3) Spawn a Gold Frog during Siege War. Mob drops 10m gold. weaken GM_GOD NO ARG Reduce Hp of all nearby mobs to 1 item GM_GOD /item /item create an item advance GM_GOD /advance set player level to val user GM_HIGH_WIZARD NOARG lists all user in the current core notice GM_HIGH_WIZARD /notice broadcast a notice to all server eventflag GM_HIGH_WIZARD /eventflag set event flag mob GM_HIGH_WIZARD /mob /mob spawn a mob ma GM_HIGH_WIZARD /ma spawn an agressive mob mc GM_HIGH_WIZARD /mc spawn a coward mob mm GM_HIGH_WIZARD /mm spawn a mob in a random place kill GM_HIGH_WIZARD /kill kill a player ipurge GM_HIGH_WIZARD NO ARG purge a item in my invertory group GM_HIGH_WIZARD /group spawn a mob group grrandom GM_HIGH_WIZARD /grrandom spawn a random group reset GM_HIGH_WIZARD NO ARG set player HP and SP to normal state shutdown GM_HIGH_WIZARD NO ARG shutdown all server makeguild GM_HIGH_WIZARD /makeguild create a guild for test deleteguild GM_HIGH_WIZARD NO ARG delete guild setskillother GM_HIGH_WIZARD /setskillother set specified character's skill level cooltime GM_HIGH_WIZARD NO ARG make a character who have no skill cooltime polyitem GM_HIGH_WIZARD /polyitem create a polymorph item(70104) for polymorph to vnum xmas_boom GM_HIGH_WIZARD NO ARG make it eclipse. And spawn event helper xmas_snow GM_HIGH_WIZARD NO ARG let it snow xmas_santa GM_HIGH_WIZARD NO ARG spawn a santa block_chat GM_HIGH_WIZARD /jy block character chating time: add to h, m, s with number. Ex> 10m for 10 minutes block_chat_list GM_HIGH_WIZARD NO ARG display blocked character list horse_state GM_HIGH_WIZARD NO ARG display my horse information horse_level GM_HIGH_WIZARD /horse_level set character's horse level horse_ride GM_HIGH_WIZARD NO ARG toggle horse ride horse_summon GM_HIGH_WIZARD NO ARG summon my horse horse_unsummon GM_HIGH_WIZARD NO ARG send back horse horse_set_stat GM_HIGH_WIZARD /horse_set_stat set my horse state reset_subskill GM_HIGH_WIZARD /reset_subskill reset character's sub skill levels eclipse GM_HIGH_WIZARD /eclipse make it eclipse 0: not eclipse mode 1: eclipse mode who GM_IMPLEMENTOR NO ARG print user count state set GM_IMPLEMENTOR /set set player attribute. Field: gold, exp, max_hp, max_sp, aligment book GM_IMPLEMENTOR /book /book create a book for specifed skill refine_rod GM_IMPLEMENTOR /refine_rod refine my rod to val level refine_pick GM_IMPLEMENTOR /refine_pick refine my pick to val level max_pick GM_IMPLEMENTOR /max_pick change my pick at inventory pos to max level fish_simul GM_IMPLEMENTOR /fish_simul simulate fish probability. Prob_idx: 1~4 setskillpoint GM_IMPLEMENTOR /setskillpoint set characters skill point reload GM_IMPLEMENTOR /reload reload server settings. u: Reloading state_user_count p: Reloading prototype tables s: Reloading notice string q: Reloading quest f: Reloading fishing a: Reloading Admin information c: Reloading Blending Cube mount_test GM_IMPLEMENTOR /mount_test mount to vnum (not all vnum can ride) observer GM_IMPLEMENTOR NO ARG toggle observer mode socketitem GM_IMPLEMENTOR /socketitem create a item that have socket change_attr GM_IMPLEMENTOR NO ARG change weapon's attribute add_attr GM_IMPLEMENTOR NO ARG add a attribute to weapon add_socket GM_IMPLEMENTOR NO ARG add a socket to weapon warp GM_LOW_WIZARD /warp /warp warp to character or map pos(global coordinate) notice_map GM_LOW_WIZARD /motice_map broadcast a notice message to a Map which is GM connected to dc GM_LOW_WIZARD /dc force disconnect a player. transfer GM_LOW_WIZARD /transfer bring a player to GM goto GM_LOW_WIZARD /goto warp to local map position(local coordinate) level GM_LOW_WIZARD /level set GM level to geteventflag GM_LOW_WIZARD NO ARG lists event flag to chat window console GM_LOW_WIZARD NO ARG enable a client debug mode stat_reset GM_LOW_WIZARD NO ARG reset character state point state GM_LOW_WIZARD /state # /state /state display a character state invisible GM_LOW_WIZARD NO ARG toggle invisiable mode setskill GM_LOW_WIZARD /setskill set my skill level gwlist GM_LOW_WIZARD NO ARG display guild war list gwstop GM_LOW_WIZARD /gwstop stop guild war between id1 and id2 forcely gwcancel GM_LOW_WIZARD /gwcancel cancel guild war between id1 and id2 forcely gstate GM_LOW_WIZARD /gstate display guild state getqf GM_LOW_WIZARD NO ARG /getqf display character's quest flag setqf GM_LOW_WIZARD /setqf /setqf set character's quest flag delqf GM_LOW_WIZARD /delqf /delqf [] delete character's quest flag forgetme GM_LOW_WIZARD NO ARG monsters that attack me will not attack aggregate GM_LOW_WIZARD NO ARG near monsters will attack me attract_ranger GM_LOW_WIZARD NO ARG range attack monsters will attack me pull_monster GM_LOW_WIZARD NO ARG pull monster to me polymorph GM_LOW_WIZARD /polymorph polymorph to vnum show_arena_list GM_LOW_WIZARD NO ARG lists arena end_all_duel GM_LOW_WIZARD NO ARG stops all arena duel end_duel GM_LOW_WIZARD /end_duel stops specificed name's duel duel GM_LOW_WIZARD /duel starts duel between con+ GM_LOW_WIZARD /con+ add con state point int+ GM_LOW_WIZARD /int+ add int state point str+ GM_LOW_WIZARD /str+ add str state point dex+ GM_LOW_WIZARD /dex+ add dex state point break_marriage GM_LOW_WIZARD /break_marriage break marriage and forcely open_oxevent GM_LOW_WIZARD NO ARG start ox quiz event close_oxevent_door GM_LOW_WIZARD NO ARG stop user enter to ox quiz event end_oxevent GM_LOW_WIZARD NO ARG end current ox quiz event end_oxevent_force GM_LOW_WIZARD NO ARG end current ox quiz event force start_quiz GM_LOW_WIZARD NO ARG display a ox quiz. show_quiz GM_LOW_WIZARD NO ARG lists loaded current ox quiz log_oxevent GM_LOW_WIZARD NO ARG log current attended ox quiz user. get_oxevent_att GM_LOW_WIZARD NO ARG counts current attend user give_item_to_att GM_LOW_WIZARD /give_item_to_att give item to attend user effect GM_LOW_WIZARD /effect show effect threeway_info GM_LOW_WIZARD NO ARG show threeway war info threeway_myinfo GM_LOW_WIZARD NO ARG show threeway war info of mine siege GM_LOW_WIZARD /siege start or stop siege war. When siege war is running, re-type /sige will be stop current war. Empire num 0: random empire 1-3: specific empire tower count 5-10 ungroup GM_PLAYER NO ARG quit from party close_shop GM_PLAYER NO ARG close my private shop set_walk_mode GM_PLAYER NO ARG make player walk set_run_mode GM_PLAYER NO ARG make player run build GM_PLAYER /build r clear land and land owner kiss GM_PLAYER NO ARG emotion slap GM_PLAYER NO ARG emotion french_kiss GM_PLAYER NO ARG emotion clap GM_PLAYER NO ARG emotion cheer1 GM_PLAYER NO ARG emotion cheer2 GM_PLAYER NO ARG emotion dance1 GM_PLAYER NO ARG emotion dance2 GM_PLAYER NO ARG emotion dance3 GM_PLAYER NO ARG emotion dance4 GM_PLAYER NO ARG emotion dance5 GM_PLAYER NO ARG emotion dance1 GM_PLAYER NO ARG emotion dance2 GM_PLAYER NO ARG emotion dance3 GM_PLAYER NO ARG emotion dance4 GM_PLAYER NO ARG emotion dance5 GM_PLAYER NO ARG emotion congratulation GM_PLAYER NO ARG emotion forgive GM_PLAYER NO ARG emotion angry GM_PLAYER NO ARG emotion attractive GM_PLAYER NO ARG emotion sad GM_PLAYER NO ARG emotion shy GM_PLAYER NO ARG emotion cheerup GM_PLAYER NO ARG emotion banter GM_PLAYER NO ARG emotion joy GM_PLAYER NO ARG emotion user_horse_ride GM_PLAYER NO ARG toggle horse ride user_horse_back GM_PLAYER NO ARG send back horse user_horse_feed GM_PLAYER NO ARG feed horse mto GM_PLAYER /mto warp to character. Empire Lord only can use this command mtr GM_PLAYER /mtr transfer character to me. Empire Lord only can use this command minfo GM_PLAYER NO ARG display Empire information. Empire Lord only can use this command mtax GM_PLAYER /mtax set trade tax for my empire. Empire Lord only can use this command mmob GM_PLAYER /mmob summon a monster. Summonable monster vnum 191, 192, 193, 194, 391, 392, 393, 394, 491, 492, 493, 494, 591, 691, 791, 1091, 1304, 1901, 2091, 2191, 2206 mnotice GM_PLAYER /mnotice broadcast a notice to my empire. Empire Lord only can use this command purge GM_WIZARD /purge all purge all npc and mob near to GM respawn GM_WIZARD /respawn all /respawn respawn all mob or near mob
  17. 0 points
    Can you give an example? I have not heard about it yet to they would be much different. Anyway use that extern and makefile and build a novaline for yourself, test it out if it'll kick or not. If so, you can use mainline
  18. 0 points
  19. -1 points
×
×
  • 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.