-
Posts
69 -
Joined
-
Last visited
-
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by LethalArms
-
-
EDIT: I found a better way to search for the tag
On char.cpp
Instead of
#ifdef ENABLE_CUSTOM_TAG_EFFECTS const char* name = GetName(); char result[5]; strncpy(result, name, 4); result[4] = '\0';
Make it like this
#ifdef ENABLE_CUSTOM_TAG_EFFECTS const char* name = GetName(); size_t len = strcspn(name, "]"); char result[len+1]; strncpy(result, name, len +1); result[len + 1] = '\0';
This way you can have any tag size without having to do any modification on the code, and for what i saw on my tests, if i increased from 4 chars to 5 it will have problems, this way there is no problem at all!!!
- 2
- 1
- 1
-
So ashika posted this a few days ago
And since i couldnt find a way to show all of them ingame depending on the GM "class" i decided to make my own, its not that hard tbh, and i think it doesnt fck anything but if u find problems let me know.
Here's the result
First of all, the way the system works is by the GM name, so if it has [SA] or [GM] in name it will apply the effect for it.
Server Side
service.h
#define ENABLE_CUSTOM_TAG_EFFECTS
affect.h
in enum EAffectBits search for the last enum (in my case is AFF_BITS_MAX) and before it add #ifdef ENABLE_CUSTOM_TAG_EFFECTS AFF_GA, AFF_GM, AFF_SA, #endif
on char.cpp
Search for m_afAffectFlag.Set(AFF_YMIR); And replace it with this #ifdef ENABLE_CUSTOM_TAG_EFFECTS const char* name = GetName(); // This will only search for the first 4 characters if u want more for tags such as [DEV] you will need to increase this values char result[5]; strncpy(result, name, 4); result[4] = '\0'; // This is where you change the tag const char *tagDictionary[] = { "[GM]", "[SA]", "[GA]" }; // This is where you change the effect name to what you put on affect.h const EAffectBits nameDictionary[] = { AFF_GM, AFF_SA, AFF_GA }; int tagIndex = -1; for (int i = 0; i < sizeof(tagDictionary) / sizeof(tagDictionary[0]); ++i) { if (strcmp(result, tagDictionary[i]) == 0) { tagIndex = i; break; } } if (tagIndex != -1) { m_afAffectFlag.Set(nameDictionary[tagIndex]); } else{ m_afAffectFlag.Set(AFF_YMIR); } #endif
On client side
locale_inc.h
#define ENABLE_CUSTOM_TAG_EFFECTS
InstanceBaseEffect.cpp
On CInstanceBase::__SetAffect( Search case AFFECT_YMIR: Add below #ifdef ENABLE_CUSTOM_TAG_EFFECTS case AFFECT_GA: case AFFECT_GM: case AFFECT_SA: #endif
InstanceBase.h
Search for AFFECT_NUM Add before #ifdef ENABLE_CUSTOM_TAG_EFFECTS AFFECT_GA, // 50 AFFECT_GM, // 51 AFFECT_SA, // 52 #endif
InstanceBase.cpp
On CInstanceBase::IsGameMaster() Add before return false #ifdef ENABLE_CUSTOM_TAG_EFFECTS if (m_kAffectFlagContainer.IsSet(AFFECT_GA)) return true; if (m_kAffectFlagContainer.IsSet(AFFECT_GM)) return true; if (m_kAffectFlagContainer.IsSet(AFFECT_SA)) return true; #endif
PythonCharacterModule.cpp
Add next to the others #ifdef ENABLE_CUSTOM_TAG_EFFECTS PyModule_AddIntConstant(poModule, "AFFECT_GA", CInstanceBase::AFFECT_GA); PyModule_AddIntConstant(poModule, "AFFECT_GM", CInstanceBase::AFFECT_GM); PyModule_AddIntConstant(poModule, "AFFECT_SA", CInstanceBase::AFFECT_SA); #endif
This file is for the Faster Loading System found here on the forum, if u dont have it, you will need to add the effect on client/root/playersettingsmodule.py, i wont provide a code for cuz i dont really have a way to test it, but shouldn't be that hard
PythonPlayerSettingsModule.cpp
Find {pkBase.EFFECT_REFINED + 1 Before add #ifdef ENABLE_CUSTOM_TAG_EFFECTS {pkBase.EFFECT_AFFECT + CInstanceBase::AFFECT_GA, "Bip01", "d:/ymir work/effect/team_ranks/ga.mse"}, {pkBase.EFFECT_AFFECT + CInstanceBase::AFFECT_GM, "Bip01", "d:/ymir work/effect/team_ranks/gm.mse"}, {pkBase.EFFECT_AFFECT + CInstanceBase::AFFECT_SA, "Bip01", "d:/ymir work/effect/team_ranks/sa.mse"}, #endif
Lastly, on client you will need to add ashika files where you want (in my case i added to etc/ymir work/effect/team_ranks/ and duplicate the gm.mse file (in this case 2 times), change the name to ga.mse and sa.mse, then will open them and at the end of the file there is going to be this line
List TextureFiles { "gamemaster.tga" }
change them acording to the effect you want, on this case, for GA is gameadmin.tga, for GM is gamemaster.tga and for SA is serveradmin.tga.
And thats all, hope you all like it!
- 2
- 1
- 4
-
-
On tmp4 files go to each core config and change BIND_IP and PROXY_IP to the RadminVPN IP , i think its but i'm not sure, do that, start the server and it should work
-
15 minutes ago, Cripplez said:
Thank you again it is perfect!
just need to edit: loginAccount(account_index) -> self.loginAccount(account_index)
Fixed, glad to know it works, gonna add it on the original post thanks!
Also, you can easily make it show F1 - accountid, F2-accountid on the button like some servers have
on def LoadAccounts():
Find self.loginAcc0.SetText(ind[1]) Replace with self.loginAcc0.SetText('F1 - ' + ind[1]) Find self.loginAcc1.SetText(ind[1]) Replace with self.loginAcc1.SetText('F2 - ' + ind[1])
- 1
-
22 minutes ago, Cripplez said:
Thank you
Do you think would be possible to adapt this code for this version too?
So when you click F1 the first saved account will be loaded, if you click F2 will be loaded the second account, and the same thing for F3 and F4
def OnKeyDown(self, key): # A fast method to login by keyboard shortcuts. # Create a keyboard range enum as tuple from F1 to F4. dikAvailableList = range(0x3B, 0x3E + 1) if not key in dikAvailableList: return try: # Creates a file object, which would be utilized to call other support methods associated with it. # Change old_open method with open if you get error. file = old_open('user//credentials', 'r') try: # Finds the given element in a list and returns its position. account_index = dikAvailableList.index(key) # Reads until EOF using readline() and returns a list containing the lines. account_data = file.readlines().__getitem__(account_index) # Returns a list of all the words in the string, using str as the separator. account_data = account_data.split(':') # Applies a function to all the items in an input list. account_data = map(lambda item: item.rstrip(), account_data) # Decode the password. account_data[-1] = self.decode(self.__ReadSavedPassword(), next(reversed(account_data))) # Connect to the server by using list [id, pw]. self.Connect(*account_data) # Raised when a sequence subscript is out of range. except IndexError: pass # A closed file cannot be read or written any more. file.close() # Raised when an I/O operation fails for an I/O-related reason, e.g., “file not found” or “disk full”. except IOError: return
Yes and i think it can be done in a easier way than that, making use of the functions loginAccount, i'm currently trying to implement the Sash System on my server but as soon as i'm done with it, i will do that
But this code might work, i didnt test it, but give it a try and let me know!
Spoilerdef OnKeyDown(self, key): dikAvailableList = range(0x3B, 0x3E + 1) if not key in dikAvailableList: return account_index = dikAvailableList.index(key) self.loginAccount(account_index)
- 1
-
Hi, i made some changes on this system so that it now can show multiple accounts slots and add/delete accounts easily
I'm not an experienced programmer by any means, so bugs might happen and the code isn't the most efficient and clean, so if anyone has a suggestion let me know!https://metin2.dev/topic/20529-multiple-login-saver-system
First i recommend installing his system first because i will only be listing the changes i made and this wont work without his system installed first
Also, i will only show the steps to have 2 slots account, but they can easily be replicated to have multiple accounts.
Implemented and Tested on TMP4 Server Files but most likely will work on any other server files.Be extremely careful with tabulations, i would recommend using Visual Studio Code or something similar to avoid problems with it
Small video:
Icons used for save and delete account button (it doesn't have on hover and on click icons so you will have to add them yourself)
or
Download ->So lets start
First delete the root/uiSelectCredentials.py and uiscript/accountlistwindow files that wont be needed anymore
root/introwindow.py (This is configured for my own interface so you will have to change positions according to yours)Spoiler#Acc 0 { "name": "Acc0", "type": "button", "x" : -160, "y" : -50, "vertical_align": "center", "horizontal_align" : "center", "text": "|cffc8aa80", "default_image" : BUTTON_CHITRA + "login_0.tga", "over_image" : BUTTON_CHITRA + "login_1.tga", "down_image" : BUTTON_CHITRA + "login_2.tga", }, { "name" : "DelAccount0", "type" : "button", "x" : -210, "y" : -50, "vertical_align": "center", "horizontal_align" : "center", "text": "|cffc8aa80", "default_image" : BUTTON_CHITRA + "del_button.tga", }, { "name" : "saveAccount0", "type" : "button", "x" : -230, "y" : -50, "vertical_align": "center", "horizontal_align" : "center", "text": "|cffc8aa80", "default_image" : BUTTON_CHITRA + "saveButton.tga", }, #Acc 1 { "name" : "Acc1", "type" : "button", "x" : -160, "y" : -20, "vertical_align" : "center", "horizontal_align" : "center", "text": "|cffc8aa80", "default_image" : BUTTON_CHITRA + "login_0.tga", "over_image" : BUTTON_CHITRA + "login_1.tga", "down_image" : BUTTON_CHITRA + "login_2.tga", }, { "name" : "DelAccount1", "type" : "button", "x" : -210, "y" : -20, "vertical_align": "center", "horizontal_align" : "center", "text": "|cffc8aa80", "default_image" : BUTTON_CHITRA + "del_button.tga", }, { "name" : "saveAccount1", "type" : "button", "x" : -230, "y" : -20, "vertical_align": "center", "horizontal_align" : "center", "text": "|cffc8aa80", "default_image" : BUTTON_CHITRA + "saveButton.tga", },
root/intrologin.py (Remember you need to have the system from North implemented or you wont be able to find the correct lines)
SpoilerREMEMBER, THIS IS ON PYTHON SO BE CAREFUL WITH TABULATIONS
On def Open(self) Find:
self.Show()
Add before:
self.LoadAccounts()
Find:
self.saveLoginButton = GetObject("SaveLoginButton") self.loadCredentialButton = GetObject("LoadCredentials") self.loginCredentialButton = GetObject("LoginCredentials")
And replace with:
self.loginAcc0 = self.GetChild("Acc0") self.loginAcc1 = self.GetChild("Acc1") self.saveAcc0 = self.GetChild("saveAccount0") self.saveAcc1 = self.GetChild("saveAccount1") self.delAcc0 = self.GetChild("DelAccount0") self.delAcc1 = self.GetChild("DelAccount1")
Next Find:
self.saveLoginButton.SetEvent(ui.__mem_func__(self.__OnClickSaveLoginButton)) self.loadCredentialButton.SetEvent(ui.__mem_func__(self.__OnClickLoadInfoButton)) self.loginCredentialButton.SetEvent(ui.__mem_func__(self.__OnClickLoginAutoButton))
And replace with:
self.saveAcc0.SetEvent(ui.__mem_func__(self.selectAcc0IndexSave)) self.saveAcc1.SetEvent(ui.__mem_func__(self.selectAcc1IndexSave)) self.delAcc0.SetEvent(ui.__mem_func__(self.selectAcc0IndexDel)) self.delAcc1.SetEvent(ui.__mem_func__(self.selectAcc1IndexDel)) self.loginAcc0.SetEvent(ui.__mem_func__(self.selectAcc0IndexLogin)) self.loginAcc1.SetEvent(ui.__mem_func__(self.selectAcc1IndexLogin))
Find def __OnClickLoginButton(self) and add before
def LoadAccounts(self): file_objectRead = open("user//credentials", "r") credentials = file_objectRead.readlines() for i in credentials: ind = i.split(":") if ind[0] == '0': self.loginAcc0.SetText(ind[1]) elif ind[0] == '1': self.loginAcc1.SetText(ind[1]) elif ind[0] == '2': self.loginAcc2.SetText(ind[1]) elif ind[0] == '3': self.loginAcc3.SetText(ind[1]) file_objectRead.close()
Find def __OnClickLoginAutoButton and def __OnClickLoadInfoButton and def __OnClickSaveLoginButton and delete this functions, they are no longer needed (this step is optional and the it will work normally if u followed the steps correctly)
Find def encode(self, key, clear) and add before:
def selectAcc0IndexSave(self): self.saveAccount(0) def selectAcc1IndexSave(self): self.saveAccount(1) def selectAcc0IndexDel(self): self.delAccount(0) def selectAcc1IndexDel(self): self.delAccount(1) def selectAcc0IndexLogin(self): self.loginAccount(0) def selectAcc1IndexLogin(self): self.loginAccount(1) def loginAccount(self, index): file_object = open("user//credentials", "r") credentials = file_object.readlines() for i in credentials: ind = i.split(":") if ind[0] == str(index): self.Connect("{}".format(ind[1]), "{}".format(self.decode(self.__ReadSavedPassword(),ind[2]) )) break def ClearAccounts(self): self.loginAcc0.SetText('') self.loginAcc1.SetText('') self.loginAcc2.SetText('') self.loginAcc3.SetText('') def saveAccount(self, index): id = self.idEditLine.GetText() pwd = self.pwdEditLine.GetText() keypw = self.__ReadSavedPassword() pwd = self.encode(keypw, pwd) if (len(id) == 0 or len(pwd) == 0): self.PopupNotifyMessage("Please type ID and Password.") return try: file_object = open("user//credentials", "a") except: file_object = open("user//credentials", "w") file_objectRead = open("user//credentials", "r") credentials = file_objectRead.readlines() file_object.close() file_object = open("user//credentials", "w") for i in credentials: ind = i.split(":") if ind[0] != str(index): file_object.write(i) file_object.write("{}:{}:{}\n".format(index,id,pwd)) file_object.close() file_objectRead.close() self.PopupNotifyMessage("Conta Guardada.") self.ClearAccounts() self.LoadAccounts() def delAccount(self, index): try: file_object = open("user//credentials", "a") except: file_object = open("user//credentials", "w") file_objectRead = open("user//credentials", "r") credentials = file_objectRead.readlines() file_object.close() file_object = open("user//credentials", "w") for i in credentials: ind = i.split(":") if ind[0] != str(index): file_object.write(i) file_object.close() file_objectRead.close() self.PopupNotifyMessage("Conta Deletada.") self.ClearAccounts() self.LoadAccounts()
I think i'm not missing anything but if you find any error let me know and i will update the post.
Probably gonna try to do some changes on the code to make it easier to add more accounts, currently it's not that hard but can be better.Feel free to leave suggestions and help improve this!
- 30
- 9
- 1
- 24
-
On 3/6/2023 at 1:49 PM, Alessio said:Hidden Content
Hi guys i want to share with you something that i made for myself, it isn't really special, i hope it will be helpfull with someone,
inside these files you're gonna find everything you need to implement new official sets (Only english, i will translate the names for the other lenguages in the future), if something is missing or there is something wrong let me know and i will fix it (for the benefit of the future downloaders)
Armors : Zodiac, Aurora, Magma, Whalebone, Fallout, Gloom, Kyanite and Serpent
Weapons : Zodiac, Gloom, Serpent, Kyanite
Helms : Dragon(lv100) and Gloom Dragon
Boots : Fire and Oceanic shoes
Accessories : Tourmaline and Jadite set (Fog,Sun,Dark and smoky)
Usefull informations
inside the item proto and item.txt i have set the values for this items like they are level 1 items, so you can customize them for your needs, i have only edited refine_vnum and specular values so you don't have to do them by yourself ^^
and inside the .msm files i have set the values at the very bottom "Shapedata 146 - Shapedata 153" and i have set the "ShapeIndex" value over 400k instead of 40k, so it's hard that this value is going to create any conflict if you're going to copy paste other official stuff inside that file with the official shapeindex of that items
HowTo
if you don't know how to implement this files give a look to this guideIMPORTANT
the base of this files comes from TMP4 files and i have tested them only on that source so idk if you're going to have problems if you implement these inside another source
Thanks
to @ TMP4 for his source files and @ Deso for the updated .txt files
The weapons models and textures are missing, do u have the download for them?
-
-
If it gives this error to someone:
While compiling the server source
go to src/common/item_lenght.h
Search for enum EMaterialSubTypes and add at the end of the function this "MATERIAL_DS_CHANGE_ATTR,"
- 1
-
Not sure if it's a error or not (since i've found the same problem with other similar tools) but while exporting sura model, the bones of 2 of the fingers in the left hand always export bigger than the other fingers
The only way i found to kinda fix this was using grnreader or noesis and exporting to smd (if it was exported to fbx the problem also occurs)
-
PROBLEM FIXED
the OnPickMoney function on uiExchange.py was wrong
instead of:
def OnPickMoney(self, money): net.SendExchangeElkAddPacket(str(money))
it needs to be like this
def OnPickMoney(self, money): net.SendExchangeElkAddPacket(money)
and it works perfectly :v
-
11 hours ago, Ulthar said:
Hello. Any syserr? Did you tried it without the "new" exchange window? Try without the "new one" and lets see is it sending yang or not ^^. If its, then the problem around the exchange window If not, send me your uiexchange.py on pastebin. (upload it and send the link here)
EDIT: No syserr's, not on client,or server cores,or anything
With the "old" exchange window works fineBut with the "new" one, doesn't show the money and also doesn't trade it
Also if u could tell me how i remove that text under the exchange window and the target lvl i appreciate it
root/uiExchange.py:
uiScript/exchangedialog_new.py:
I had to disable the NEW_EXCHANGE_WINDOW variables on the server and client, but also had to remove the exchangedialog_new from the folder and also removed uiExchange, for some reason wasn't able to make the old exchange window work with them in the folder as a backup, like uiexchange_backup.py and exchangedialog_new_backup.py.
Hope this info helps to solve my problem, thks in advance!
-
So, i implemented a exchange window that i found and the Increase Max Yang tutorial from this forum. The max yang seems to work amazing, but i can't trade Yang, not sure if this is a bug of the exchange window or the max yang implementation, it just always stays at 0 on the exchange window, and doesn't send any yang to the other player, i've reimplemented max yang and exchange window, but still nothing
Max Yang Link:
The exchange window is from another forum, so i will not post the link here, but if needed i can send the files.
I've tried searching on a lot of forums, and can't find an answer, tried fixing it my self (which didn't work, of course xD)
-
-
Fixed the Error on the Heightmap tool, which basically was causing to show some weird lines on the finished heightmap, but it's fixed now, the mediafire link is the same.
I was working on making the final result image a 16 bit image, since it already converts to a 16 bit png, but i still wasn't able to do it, and it was taking much of my time, and currently i'm more focused on other projects
-
UPDATE:
i found an error on the tool that i'm currently working on fixing
-
So, i've been developing something, and i needed the minimaps and heightmap from metin2, and i was using the Map Converter tool that can be found here in the forum, but taking a screenshot of that tool (since it doesn't allow to export heightmap, only minimap), isn't the best of ways, so i made my own tool to do that, this took me a while, since i'm not a very experienced programmer...
The tool is very simple to use (i believe), just move the whole map folder to where the python file is, and run the script and follow the instructions, it will also go with 2 maps already done, the final image will have the same name as the map folder name.
Idk if anyone has done this, that release to the public the source code (Map converter tool creator didn't release source code i think), so if anyone needs the code or the tool, can use without any trouble, since this is also a backup for me, so i dont lose the tool xD
It uses the python 3.10.5, and some libraries, so you will need to install them:
PIL (pillow)
Torchvision
Numpy (i think this one already comes with python, not sure)
OpenCV
It's just .py files that you can look through the code, but either way, here's virus total scan of the .rar files
The folders are only that big (8.31mb and 11.42mb) because both have 2 full map's folders on them, and one of them uses normal png, and the other uses 8bit png (that's why the 3.11mb difference)
I did separate because idk, that's how i made them, and i guess i'm too lazy to combine them together lol
Heightmap:
Minimap:
- 121
- 3
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 23
- 5
- 42
-
FIXED: Not sure what actually fixed it but what i did was remove the special_item_group.txt and put the one that comes on the files and removed all quest's, put them again and questcompile and now it works
-
11 minutes ago, PetePeter said:
There is no item 110000 on your item_proto that's what the error say
There is
110000~110099 ÃÖÇÏ±Þ ÀÏ¹Ý ¹é·æ¼® ITEM_DS DS_SLOT1 1 ANTI_SAFEBOX | ANTI_SELL NONE NONE NONE 0 0 0 0 0 TIMER_BASED_ON_WEAR 86400 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
-
19 hours ago, ReFresh said:
Wrong syntax in file or missing file in: locale/portugal/special_item_group.txt
I didn't change anything on that file, but i will try anyway to put the one from that comes with the files to see if the error disappears can you tell me what the file is about? Since like item_proto is updated in the database, i'm thinking maybe that file is also updated in the database, and the fact that i edited some stuff on the db caused it to bug?
-
I installed costume system, and it was working normally, then i went to disable the alchemy, and what i did was remove the dragon_soul quests, remove some items from item_proto and item_names, and remove DSS button from locale/xx/ui/inventorywindow.py, and the game didn't enter, i put my id and password, it says Connecting to the server, and then the message disappears and it does nothing, I'm again on the main menu, i've edited back everything i did, but for some reason it still isn't working, and i can't figure out why...
Syserr on Client is clean
Auth Syserr
SpoilerSYSERR: Jul 25 23:42:04 :: pid_init:
Start of pid: 1284SYSERR: Jul 25 23:42:04 :: socket_bind: bind: Address already in use
SYSERR: Jul 25 23:49:11 :: pid_init:
Start of pid: 1710SYSERR: Jul 25 23:49:11 :: socket_bind: bind: Address already in use
SYSERR: Jul 26 00:04:47 :: pid_init:
Start of pid: 1797SYSERR: Jul 26 00:04:47 :: socket_bind: bind: Address already in use
Channel1-first Syserr
SpoilerSYSERR: Jul 25 23:42:10 :: pid_init:
Start of pid: 1296SYSERR: Jul 25 23:42:16 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 25 23:42:16 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 25 23:42:26 :: ReadSpecialDropItemFile: ReadSpecialDropItemFile : there is no item 110000 : node 용혼원석-보상용_기본
SYSERR: Jul 25 23:42:26 :: Boot: cannot load SpecialItemGroup: locale/portugal/special_item_group.txt
SYSERR: Jul 25 23:42:26 :: SpawnEventHelper: cannot get map base position 1
SYSERR: Jul 25 23:42:26 :: SpawnEventHelper: cannot get map base position 3
SYSERR: Jul 25 23:42:26 :: SpawnEventHelper: cannot get map base position 23
SYSERR: Jul 25 23:42:26 :: SpawnEventHelper: cannot get map base position 43
SYSERR: Jul 25 23:42:26 :: pid_deinit:
End of pidSYSERR: Jul 25 23:49:17 :: pid_init:
Start of pid: 1722SYSERR: Jul 25 23:49:22 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 25 23:49:22 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 25 23:49:33 :: ReadSpecialDropItemFile: ReadSpecialDropItemFile : there is no item 110000 : node 용혼원석-보상용_기본
SYSERR: Jul 25 23:49:33 :: Boot: cannot load SpecialItemGroup: locale/portugal/special_item_group.txt
SYSERR: Jul 25 23:49:33 :: SpawnEventHelper: cannot get map base position 1
SYSERR: Jul 25 23:49:33 :: SpawnEventHelper: cannot get map base position 3
SYSERR: Jul 25 23:49:33 :: SpawnEventHelper: cannot get map base position 23
SYSERR: Jul 25 23:49:33 :: SpawnEventHelper: cannot get map base position 43
SYSERR: Jul 25 23:49:33 :: pid_deinit:
End of pidSYSERR: Jul 26 00:04:53 :: pid_init:
Start of pid: 1809SYSERR: Jul 26 00:04:58 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 26 00:04:58 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 26 00:05:19 :: ReadSpecialDropItemFile: ReadSpecialDropItemFile : there is no item 110000 : node 용혼원석-보상용_기본
SYSERR: Jul 26 00:05:19 :: Boot: cannot load SpecialItemGroup: locale/portugal/special_item_group.txt
SYSERR: Jul 26 00:05:19 :: SpawnEventHelper: cannot get map base position 1
SYSERR: Jul 26 00:05:19 :: SpawnEventHelper: cannot get map base position 3
SYSERR: Jul 26 00:05:19 :: SpawnEventHelper: cannot get map base position 23
SYSERR: Jul 26 00:05:19 :: SpawnEventHelper: cannot get map base position 43
SYSERR: Jul 26 00:05:19 :: pid_deinit:
End of pidChannel1-game1 Syserr the same as Channel1-first
Channel1-game2 Syserr is a bit different than Channel1-first/game1
SpoilerSYSERR: Jul 25 23:42:06 :: pid_init:
Start of pid: 1288SYSERR: Jul 25 23:42:10 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 25 23:42:10 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 25 23:42:21 :: ReadSpecialDropItemFile: ReadSpecialDropItemFile : there is no item 110000 : node 용혼원석-보상용_기본
SYSERR: Jul 25 23:42:21 :: Boot: cannot load SpecialItemGroup: locale/portugal/special_item_group.txt
SYSERR: Jul 25 23:42:21 :: SpawnEventHelper: cannot get map base position 41
SYSERR: Jul 25 23:42:21 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 25 23:42:21 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 25 23:42:21 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 25 23:42:21 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 25 23:42:21 :: pid_deinit:
End of pidSYSERR: Jul 25 23:49:13 :: pid_init:
Start of pid: 1714SYSERR: Jul 25 23:49:17 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 25 23:49:17 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 25 23:49:31 :: ReadSpecialDropItemFile: ReadSpecialDropItemFile : there is no item 110000 : node 용혼원석-보상용_기본
SYSERR: Jul 25 23:49:31 :: Boot: cannot load SpecialItemGroup: locale/portugal/special_item_group.txt
SYSERR: Jul 25 23:49:31 :: SpawnEventHelper: cannot get map base position 41
SYSERR: Jul 25 23:49:31 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 25 23:49:31 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 25 23:49:31 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 25 23:49:31 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 25 23:49:31 :: pid_deinit:
End of pidSYSERR: Jul 26 00:04:49 :: pid_init:
Start of pid: 1801SYSERR: Jul 26 00:04:52 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 26 00:04:52 :: SetShopItems: Shop: no item table by item vnum #100100
SYSERR: Jul 26 00:05:15 :: ReadSpecialDropItemFile: ReadSpecialDropItemFile : there is no item 110000 : node 용혼원석-보상용_기본
SYSERR: Jul 26 00:05:15 :: Boot: cannot load SpecialItemGroup: locale/portugal/special_item_group.txt
SYSERR: Jul 26 00:05:15 :: SpawnEventHelper: cannot get map base position 41
SYSERR: Jul 26 00:05:15 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 26 00:05:15 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 26 00:05:15 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 26 00:05:15 :: ForAttrRegion: Cannot find SECTREE_MAP by map index 41
SYSERR: Jul 26 00:05:15 :: pid_deinit:
End of pidI've trying to find a fix for like the past 30minutes, if someone could help would be great
-
FIXED IT
It seems that the implementation of the max yang wasn't 100%, some stuff on the root was missing and that's what's causing the bug
-
From what i've noticed the bug is because of the max yang implementation i did, from this post
now i just need to find what i did wrong, if i did something or if the system actually is bugged, but i think i did something wrong, it's the most likely option
-
I've tried searching a lot on the internet, and found some "solutions" but none worked, idk how it started, and i still couldn't figure out what is... Really need help on this... thks in advance...
At first i thought it was because of 4/5 inventory, but then i saw the clip again and realized i didn't even had it installed, maybe the max yang? seems to be the only thing added
Custom GM Name Tag
in Features & Metin2 Systems
Posted · Edited by LethalArms
This is basically a system to complement my other system.
With this you one can have a custom tag name behind the name/karma of the character
As you can see on this picture
Behind the character name and karma there's a red tag, this is achieved using this system. I didn't make it show the level by my personal choice but you can easily add it.
I remember seeing another post on this forum about this, but i cant find it anymore not sure why, so i'm posting my own version.
InstanceBaseEffect.cpp
And thats all xD