Zeke 810 Posted June 1, 2018 Share Posted June 1, 2018 (edited) M2 Download Center This is the hidden content, please Sign In or Sign Up ( Internal ) Screen: Spoiler Video: https://metin2.download/picture/7qv2nIP9i5lgOj6R72ca6EztdGrd2CIL/.gif Why is this feature good? Cause every yang goes on this little window and players can see the chat log with out the yang spamming when the farm ^^ Download: This is the hidden content, please Sign In or Sign Up Edited September 3, 2022 by Metin2 Dev Core X - External 2 Internal 122 1 1 2 4 33 6 82 Link to comment Share on other sites More sharing options...
Forum Moderator Raylee 656 Posted June 1, 2018 Forum Moderator Share Posted June 1, 2018 This idea is really useful Best regards Raylee 1 1 Link to comment Share on other sites More sharing options...
Sharingan 0 Posted August 16, 2018 Share Posted August 16, 2018 Its not working Link to comment Share on other sites More sharing options...
Sharingan 0 Posted August 16, 2018 Share Posted August 16, 2018 sorry ı made it its working Link to comment Share on other sites More sharing options...
Active Member Exygo 1090 Posted August 20, 2018 Active Member Share Posted August 20, 2018 Good but it's not new, it's old. https://www.youtube.com/channel/UCQ8mAeda9TWq6SsTzB53emw/videos Link to comment Share on other sites More sharing options...
Shadow✔ 0 Posted September 21, 2018 Share Posted September 21, 2018 Its not working .. Link to comment Share on other sites More sharing options...
Management Karbust 4881 Posted October 20, 2018 Management Share Posted October 20, 2018 (edited) It's working, but: How can I make it look like yours? Like this isn't very eye friendly... Edited August 25, 2022 by Metin2 Dev Core X - External 2 Internal 1 1 Link to comment Share on other sites More sharing options...
Fernando 7 Posted February 5, 2019 Share Posted February 5, 2019 (edited) On 10/20/2018 at 11:51 AM, charparodar said: It's working, but: How can I make it look like yours? Like this isn't very eye friendly... Same error, did you fixed it? Edited August 25, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Management Karbust 4881 Posted February 6, 2019 Management Share Posted February 6, 2019 21 hours ago, Fernando said: Same error, did you fixed it? I fixed it, but don't remember exactly how... I think it was a function or something... Link to comment Share on other sites More sharing options...
Fernando 7 Posted February 6, 2019 Share Posted February 6, 2019 2 hours ago, charparodar said: I fixed it, but don't remember exactly how... I think it was a function or something... Thanks for your reply, could you help me to fix this? Link to comment Share on other sites More sharing options...
claudioarctico 2 Posted February 26, 2019 Share Posted February 26, 2019 En 6/2/2019 a las 18:35, Fernando dijo: Thanks for your reply, could you help me to fix this? Import the module grp in interfacemodule.py 1 Link to comment Share on other sites More sharing options...
Fernando 7 Posted March 3, 2019 Share Posted March 3, 2019 On 2/26/2019 at 1:51 AM, claudioarctico said: Import the module grp in interfacemodule.py Thank you very much <3 Link to comment Share on other sites More sharing options...
AnyHypnosis 0 Posted March 9, 2019 Share Posted March 9, 2019 do you have the ability to exp 1 Link to comment Share on other sites More sharing options...
M.Sorin 282 Posted March 10, 2019 Share Posted March 10, 2019 (edited) 10 hours ago, AnyHypnosis said: do you have the ability to exp wut Edited August 26, 2022 by Metin2 Dev Core X - External 2 Internal 1 2 Link to comment Share on other sites More sharing options...
tmoitoi 26 Posted March 13, 2019 Share Posted March 13, 2019 Fix for invisible background create grp.py into lib client with this content: # this module is an OS/2 oriented replacement for the grp standard # extension module. # written by Andrew MacIntyre, April 2001. # updated July 2003, adding field accessor support # note that this implementation checks whether ":" or ";" as used as # the field separator character. """Replacement for grp standard extension module, intended for use on OS/2 and similar systems which don't normally have an /etc/group file. The standard Unix group database is an ASCII text file with 4 fields per record (line), separated by a colon: - group name (string) - group password (optional encrypted string) - group id (integer) - group members (comma delimited list of userids, with no spaces) Note that members are only included in the group file for groups that aren't their primary groups. (see the section 8.2 of the Python Library Reference) This implementation differs from the standard Unix implementation by allowing use of the platform's native path separator character - ';' on OS/2, DOS and MS-Windows - as the field separator in addition to the Unix standard ":". The module looks for the group database at the following locations (in order first to last): - ${ETC_GROUP} (or %ETC_GROUP%) - ${ETC}/group (or %ETC%/group) - ${PYTHONHOME}/Etc/group (or %PYTHONHOME%/Etc/group) Classes ------- None Functions --------- getgrgid(gid) - return the record for group-id gid as a 4-tuple getgrnam(name) - return the record for group 'name' as a 4-tuple getgrall() - return a list of 4-tuples, each tuple being one record (NOTE: the order is arbitrary) Attributes ---------- group_file - the path of the group database file """ import os # try and find the group file __group_path = [] if os.environ.has_key('ETC_GROUP'): __group_path.append(os.environ['ETC_GROUP']) if os.environ.has_key('ETC'): __group_path.append('%s/group' % os.environ['ETC']) if os.environ.has_key('PYTHONHOME'): __group_path.append('%s/Etc/group' % os.environ['PYTHONHOME']) group_file = None for __i in __group_path: try: __f = open(__i, 'r') __f.close() group_file = __i break except: pass # decide what field separator we can try to use - Unix standard, with # the platform's path separator as an option. No special field conversion # handlers are required for the group file. __field_sep = [':'] if os.pathsep: if os.pathsep != ':': __field_sep.append(os.pathsep) # helper routine to identify which separator character is in use def __get_field_sep(record): fs = None for c in __field_sep: # there should be 3 delimiter characters (for 4 fields) if record.count(c) == 3: fs = c break if fs: return fs else: raise KeyError, '>> group database fields not delimited <<' # class to match the new record field name accessors. # the resulting object is intended to behave like a read-only tuple, # with each member also accessible by a field name. class Group: def __init__(self, name, passwd, gid, mem): self.__dict__['gr_name'] = name self.__dict__['gr_passwd'] = passwd self.__dict__['gr_gid'] = gid self.__dict__['gr_mem'] = mem self.__dict__['_record'] = (self.gr_name, self.gr_passwd, self.gr_gid, self.gr_mem) def __len__(self): return 4 def __getitem__(self, key): return self._record[key] def __setattr__(self, name, value): raise AttributeError('attribute read-only: %s' % name) def __repr__(self): return str(self._record) def __cmp__(self, other): this = str(self._record) if this == other: return 0 elif this < other: return -1 else: return 1 # read the whole file, parsing each entry into tuple form # with dictionaries to speed recall by GID or group name def __read_group_file(): if group_file: group = open(group_file, 'r') else: raise KeyError, '>> no group database <<' gidx = {} namx = {} sep = None while 1: entry = group.readline().strip() if len(entry) > 3: if sep is None: sep = __get_field_sep(entry) fields = entry.split(sep) fields[2] = int(fields[2]) fields[3] = [f.strip() for f in fields[3].split(',')] record = Group(*fields) if not gidx.has_key(fields[2]): gidx[fields[2]] = record if not namx.has_key(fields[0]): namx[fields[0]] = record elif len(entry) > 0: pass # skip empty or malformed records else: break group.close() if len(gidx) == 0: raise KeyError return (gidx, namx) # return the group database entry by GID def getgrgid(gid): g, n = __read_group_file() return g[gid] # return the group database entry by group name def getgrnam(name): g, n = __read_group_file() return n[name] # return all the group database entries def getgrall(): g, n = __read_group_file() return g.values() # test harness if __name__ == '__main__': getgrall() And add on the interfacemodule.py: import grp Require Python 2.7 else you must replace function by background image. 2 Link to comment Share on other sites More sharing options...
Premium Galet 509 Posted March 13, 2019 Premium Share Posted March 13, 2019 il y a 20 minutes, tmoitoi a dit : Fix for invisible background create grp.py into lib client with this content: # this module is an OS/2 oriented replacement for the grp standard # extension module. # written by Andrew MacIntyre, April 2001. # updated July 2003, adding field accessor support # note that this implementation checks whether ":" or ";" as used as # the field separator character. """Replacement for grp standard extension module, intended for use on OS/2 and similar systems which don't normally have an /etc/group file. The standard Unix group database is an ASCII text file with 4 fields per record (line), separated by a colon: - group name (string) - group password (optional encrypted string) - group id (integer) - group members (comma delimited list of userids, with no spaces) Note that members are only included in the group file for groups that aren't their primary groups. (see the section 8.2 of the Python Library Reference) This implementation differs from the standard Unix implementation by allowing use of the platform's native path separator character - ';' on OS/2, DOS and MS-Windows - as the field separator in addition to the Unix standard ":". The module looks for the group database at the following locations (in order first to last): - ${ETC_GROUP} (or %ETC_GROUP%) - ${ETC}/group (or %ETC%/group) - ${PYTHONHOME}/Etc/group (or %PYTHONHOME%/Etc/group) Classes ------- None Functions --------- getgrgid(gid) - return the record for group-id gid as a 4-tuple getgrnam(name) - return the record for group 'name' as a 4-tuple getgrall() - return a list of 4-tuples, each tuple being one record (NOTE: the order is arbitrary) Attributes ---------- group_file - the path of the group database file """ import os # try and find the group file __group_path = [] if os.environ.has_key('ETC_GROUP'): __group_path.append(os.environ['ETC_GROUP']) if os.environ.has_key('ETC'): __group_path.append('%s/group' % os.environ['ETC']) if os.environ.has_key('PYTHONHOME'): __group_path.append('%s/Etc/group' % os.environ['PYTHONHOME']) group_file = None for __i in __group_path: try: __f = open(__i, 'r') __f.close() group_file = __i break except: pass # decide what field separator we can try to use - Unix standard, with # the platform's path separator as an option. No special field conversion # handlers are required for the group file. __field_sep = [':'] if os.pathsep: if os.pathsep != ':': __field_sep.append(os.pathsep) # helper routine to identify which separator character is in use def __get_field_sep(record): fs = None for c in __field_sep: # there should be 3 delimiter characters (for 4 fields) if record.count(c) == 3: fs = c break if fs: return fs else: raise KeyError, '>> group database fields not delimited <<' # class to match the new record field name accessors. # the resulting object is intended to behave like a read-only tuple, # with each member also accessible by a field name. class Group: def __init__(self, name, passwd, gid, mem): self.__dict__['gr_name'] = name self.__dict__['gr_passwd'] = passwd self.__dict__['gr_gid'] = gid self.__dict__['gr_mem'] = mem self.__dict__['_record'] = (self.gr_name, self.gr_passwd, self.gr_gid, self.gr_mem) def __len__(self): return 4 def __getitem__(self, key): return self._record[key] def __setattr__(self, name, value): raise AttributeError('attribute read-only: %s' % name) def __repr__(self): return str(self._record) def __cmp__(self, other): this = str(self._record) if this == other: return 0 elif this < other: return -1 else: return 1 # read the whole file, parsing each entry into tuple form # with dictionaries to speed recall by GID or group name def __read_group_file(): if group_file: group = open(group_file, 'r') else: raise KeyError, '>> no group database <<' gidx = {} namx = {} sep = None while 1: entry = group.readline().strip() if len(entry) > 3: if sep is None: sep = __get_field_sep(entry) fields = entry.split(sep) fields[2] = int(fields[2]) fields[3] = [f.strip() for f in fields[3].split(',')] record = Group(*fields) if not gidx.has_key(fields[2]): gidx[fields[2]] = record if not namx.has_key(fields[0]): namx[fields[0]] = record elif len(entry) > 0: pass # skip empty or malformed records else: break group.close() if len(gidx) == 0: raise KeyError return (gidx, namx) # return the group database entry by GID def getgrgid(gid): g, n = __read_group_file() return g[gid] # return the group database entry by group name def getgrnam(name): g, n = __read_group_file() return n[name] # return all the group database entries def getgrall(): g, n = __read_group_file() return g.values() # test harness if __name__ == '__main__': getgrall() And add on the interfacemodule.py: import grp Require Python 2.7 else you must replace function by background image. Hey, Actually you just have to add "import grp" as it is already included by default (and already used elsewhere, i.e uichat.py) Thanks anyway 1 Link to comment Share on other sites More sharing options...
tmoitoi 26 Posted March 13, 2019 Share Posted March 13, 2019 Exactly, didn't understand why the grp was not in the lib folder, anyway Link to comment Share on other sites More sharing options...
Developer PACI 919 Posted March 14, 2019 Developer Share Posted March 14, 2019 grp is a built-in module. Edit: Nevermind this post, I didn't finish reading previous posts, my bad! when you return 0 and server doesn't boot: Link to comment Share on other sites More sharing options...
AnyHypnosis 0 Posted March 15, 2019 Share Posted March 15, 2019 Experince Logs Please Link to comment Share on other sites More sharing options...
Premium FileX 56 Posted April 4, 2019 Premium Share Posted April 4, 2019 Hey, can u add item log? Link to comment Share on other sites More sharing options...
revengertmt 50 Posted April 10, 2019 Share Posted April 10, 2019 (edited) have a little bug.... Edited August 26, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Ezequiel G. 420 Posted August 16, 2021 Share Posted August 16, 2021 On 3/13/2019 at 11:54 PM, tmoitoi said: Fix for invisible background create grp.py into lib client with this content: # this module is an OS/2 oriented replacement for the grp standard # extension module. # written by Andrew MacIntyre, April 2001. # updated July 2003, adding field accessor support # note that this implementation checks whether ":" or ";" as used as # the field separator character. """Replacement for grp standard extension module, intended for use on OS/2 and similar systems which don't normally have an /etc/group file. The standard Unix group database is an ASCII text file with 4 fields per record (line), separated by a colon: - group name (string) - group password (optional encrypted string) - group id (integer) - group members (comma delimited list of userids, with no spaces) Note that members are only included in the group file for groups that aren't their primary groups. (see the section 8.2 of the Python Library Reference) This implementation differs from the standard Unix implementation by allowing use of the platform's native path separator character - ';' on OS/2, DOS and MS-Windows - as the field separator in addition to the Unix standard ":". The module looks for the group database at the following locations (in order first to last): - ${ETC_GROUP} (or %ETC_GROUP%) - ${ETC}/group (or %ETC%/group) - ${PYTHONHOME}/Etc/group (or %PYTHONHOME%/Etc/group) Classes ------- None Functions --------- getgrgid(gid) - return the record for group-id gid as a 4-tuple getgrnam(name) - return the record for group 'name' as a 4-tuple getgrall() - return a list of 4-tuples, each tuple being one record (NOTE: the order is arbitrary) Attributes ---------- group_file - the path of the group database file """ import os # try and find the group file __group_path = [] if os.environ.has_key('ETC_GROUP'): __group_path.append(os.environ['ETC_GROUP']) if os.environ.has_key('ETC'): __group_path.append('%s/group' % os.environ['ETC']) if os.environ.has_key('PYTHONHOME'): __group_path.append('%s/Etc/group' % os.environ['PYTHONHOME']) group_file = None for __i in __group_path: try: __f = open(__i, 'r') __f.close() group_file = __i break except: pass # decide what field separator we can try to use - Unix standard, with # the platform's path separator as an option. No special field conversion # handlers are required for the group file. __field_sep = [':'] if os.pathsep: if os.pathsep != ':': __field_sep.append(os.pathsep) # helper routine to identify which separator character is in use def __get_field_sep(record): fs = None for c in __field_sep: # there should be 3 delimiter characters (for 4 fields) if record.count(c) == 3: fs = c break if fs: return fs else: raise KeyError, '>> group database fields not delimited <<' # class to match the new record field name accessors. # the resulting object is intended to behave like a read-only tuple, # with each member also accessible by a field name. class Group: def __init__(self, name, passwd, gid, mem): self.__dict__['gr_name'] = name self.__dict__['gr_passwd'] = passwd self.__dict__['gr_gid'] = gid self.__dict__['gr_mem'] = mem self.__dict__['_record'] = (self.gr_name, self.gr_passwd, self.gr_gid, self.gr_mem) def __len__(self): return 4 def __getitem__(self, key): return self._record[key] def __setattr__(self, name, value): raise AttributeError('attribute read-only: %s' % name) def __repr__(self): return str(self._record) def __cmp__(self, other): this = str(self._record) if this == other: return 0 elif this < other: return -1 else: return 1 # read the whole file, parsing each entry into tuple form # with dictionaries to speed recall by GID or group name def __read_group_file(): if group_file: group = open(group_file, 'r') else: raise KeyError, '>> no group database <<' gidx = {} namx = {} sep = None while 1: entry = group.readline().strip() if len(entry) > 3: if sep is None: sep = __get_field_sep(entry) fields = entry.split(sep) fields[2] = int(fields[2]) fields[3] = [f.strip() for f in fields[3].split(',')] record = Group(*fields) if not gidx.has_key(fields[2]): gidx[fields[2]] = record if not namx.has_key(fields[0]): namx[fields[0]] = record elif len(entry) > 0: pass # skip empty or malformed records else: break group.close() if len(gidx) == 0: raise KeyError return (gidx, namx) # return the group database entry by GID def getgrgid(gid): g, n = __read_group_file() return g[gid] # return the group database entry by group name def getgrnam(name): g, n = __read_group_file() return n[name] # return all the group database entries def getgrall(): g, n = __read_group_file() return g.values() # test harness if __name__ == '__main__': getgrall() And add on the interfacemodule.py: import grp Require Python 2.7 else you must replace function by background image. Nice, thanks 1 Link to comment Share on other sites More sharing options...
Denizeri24 35 Posted August 16, 2021 Share Posted August 16, 2021 (edited) Edited August 18, 2022 by Metin2 Dev Core X - External 2 Internal Link to comment Share on other sites More sharing options...
Recommended Posts