Opublikowano 12 Lutego12 Lut 18 minut temu, Mizuki napisał(a):Tutaj na start masz do poprawyCythonaCaptchaSQLState po stronie source bo się przepełnia, ale to wygląda jak celowe uszkodzenieCofanie postaci przy PvPLag przy teleporcieNo i połowa root jest rozkopana przez kogoś kto nawet kodu nie umie usuwaćHej uruchomic ci pliki
Opublikowano 12 Lutego12 Lut Zamiast się wyzywać i prześmiewać drugiego to może porozkminiamy jak fixnac te błędy z cython, cofaniem w pvp i kickami 😀 Ja nie mam pojęcia ale może ktoś coś podpowie? Jak rozumiem ten captcha to useless i można to po prostu wywalić z kodu? Wtedy nie będzie problemu ale też nie będzie możliwości wysłania captcha jako GM do gracza?
Opublikowano 12 Lutego12 Lut Autor 59 minut temu, mefedronix napisał(a):Zamiast się wyzywać i prześmiewać drugiego to może porozkminiamy jak fixnac te błędy z cython, cofaniem w pvp i kickami 😀 Ja nie mam pojęcia ale może ktoś coś podpowie? Jak rozumiem ten captcha to useless i można to po prostu wywalić z kodu? Wtedy nie będzie problemu ale też nie będzie możliwości wysłania captcha jako GM do gracza?
Opublikowano 12 Lutego12 Lut 2 godziny temu, mefedronix napisał(a):Zamiast się wyzywać i prześmiewać drugiego to może porozkminiamy jak fixnac te błędy z cython, cofaniem w pvp i kickami 😀 Ja nie mam pojęcia ale może ktoś coś podpowie? Jak rozumiem ten captcha to useless i można to po prostu wywalić z kodu? Wtedy nie będzie problemu ale też nie będzie możliwości wysłania captcha jako GM do gracza?Jak nie masz pojęcia jak to naprawiać to lepiej zostaw te pliki w spokoju i weź się za coś przy czym będziesz mógł od zera się nauczyć 😉😁
Opublikowano 12 Lutego12 Lut 44 minuty temu, Nietykalny napisał(a):Próbuję wyciągnąć offline shopy i wjebać w arezzo, ale same errory ;/Ahh te hardcode xdpowodzenia xd
Opublikowano 12 Lutego12 Lut 9 godzin temu, mefedronix napisał(a):w root/ uitooltip zakomentuj sobie self.auxiliaryDict = kwargs.get("auxiliaryDict", player.GetAuxiliaryString(window_type, slotIndex))@Mizuki szkoda 😢 Bo source ciekawe tylko niepotrzebnie tyle osób przy tym grzebało i narobiło syfu.Dzięki za odpowiedz. dodałem # przed ta linijki w uitooltip, ale dalej to samo jest po zapakowaniu.
Opublikowano 12 Lutego12 Lut Prędzej czy później i te poprawione wylecą jak już coś raz poleciało to poleci i dalej
Opublikowano 13 Lutego13 Lut Odnośnie braku tytułów i opisów dla rzeczy w eq, w moim przypadku pomogła edycja 3 linijek po stronie klienta w uitooltip.py, a mianowicie:linia132: self.auxiliaryDict = "" -> self.auxiliaryDict = {}linia140: self.auxiliaryDict = "" -> self.auxiliaryDict = {}+dodanie # przy linijce jak ktoś wyżej napisał#self.auxiliaryDict = kwargs.get("auxiliaryDict", player.GetAuxiliaryString(window_type, slotIndex))Samo dodanie # bez zmiany linii 132 i 140 nie zadziałałoZamieniłem znaki "" na {} i naprawiło się. Nie wiem czy przy okazji nie wysypałem czegoś innego bo nie siedzę na co dzień w tym, ale po tym udało mi się to naprawić i nie zauważyłem żeby coś innego się wykrzyczało.
Opublikowano 14 Lutego14 Lut Ktoś wie czemu mam błąd podczas łączenia się z serwerem? Obstawiam, że client ma inne ip ustawione ale nigdzie nie mogę znaleźć serverinfo.py a root jest jakoś dziwnie zaszyfrowany + ten unpacker nie działa co jest w folderze pack. Siedzę nad tym pół dnia i za chiny nie mogę tego uruchomić.
Opublikowano 14 Lutego14 Lut 7 godzin temu, xBodzio23 napisał(a):Ktoś wie czemu mam błąd podczas łączenia się z serwerem? Obstawiam, że client ma inne ip ustawione ale nigdzie nie mogę znaleźć serverinfo.py a root jest jakoś dziwnie zaszyfrowany + ten unpacker nie działa co jest w folderze pack. Siedzę nad tym pół dnia i za chiny nie mogę tego uruchomić.Musisz pobrać PackMakerLite i exe wrzucić do pack, żebyś .bat mógł używać. Powinien być na forum. Edytowane 14 Lutego14 Lut przez Magdon
Opublikowano 14 Lutego14 Lut W dniu 11.02.2026 o 23:19, Sasori napisał(a):Łapta skrypt w pythonie by chat GPT do wyciągniecie item proto i mob proto Z MT2009 do txtSkrypt#!/usr/bin/env python3# -*- coding: utf-8 -*- import pymysql # =========================# USTAWIENIA POŁĄCZENIA# ========================= host_mysql = "adres_aj_pi" user_mysql = "login_usera" passwd_mysql = "haslo_usera*" db_name = "world" #-- Nowa struktura tabeli world na mt2009 port_mysql = 3306def mysql_connect(): """ Wymusza kodowanie połączenia na utf8mb4, żeby polskie znaki wracały poprawnie. """ return pymysql.connect( host=host_mysql, user=user_mysql, password=passwd_mysql, database=db_name, port=port_mysql, charset="utf8mb4", use_unicode=True, init_command="SET NAMES utf8mb4 COLLATE utf8mb4_general_ci", autocommit=True, cursorclass=pymysql.cursors.Cursor, ) def fix_text(v): """ Naprawa typowych krzaków z baz Metin2: - latin1->utf8 (mojibake) - latin1->cp1250 (PL znaki typu: D³ugi = Długi) """ if v is None: return "" # jak DB zwróci bytes (rzadziej) if isinstance(v, (bytes, bytearray)): for enc in ("utf-8", "cp1250", "latin1"): try: return v.decode(enc) except UnicodeDecodeError: pass return v.decode("latin1", errors="replace") if not isinstance(v, str): return str(v) # 1) typowe mojibake: latin1 -> utf8 try: repaired = v.encode("latin1").decode("utf-8") if repaired != v: return repaired except UnicodeError: pass # 2) klasyk Metin: CP1250 udaje latin1 (D³ugi, Pi±tek, itp.) try: repaired = v.encode("latin1").decode("cp1250") # jeśli to była taka konwersja, to zwykle znikają ³, ±, ¶ itd. if repaired != v: return repaired except UnicodeError: pass return v def convert_mob_proto(): rank = { 1: "S_PAWN", 2: "KNIGHT", 3: "S_KNIGHT", 4: "BOSS", 5: "KING", } typeee = { 1: "NPC", 2: "STONE", 3: "WARP", 4: "DOOR", 5: "BUILDING", 7: "POLYMORPH_PC", 8: "HORSE", 9: "GOTO", } battletype = { 2: "RANGE", 3: "MAGIC", 4: "SPECIAL", 5: "POWER", 6: "TANKER", } def q(s: str) -> str: return f"\"{s}\"" def get_rank(level): return q(rank.get(level, "PAWN")) def get_type(typee_): return q(typeee.get(typee_, "MONSTER")) def get_battletype(battle): return q(battletype.get(battle, "MELEE")) def get_flag(flag): flag = fix_text(flag) return "" if flag == "" else q(flag) def get_race(race): race = fix_text(race) return "" if race == "" else q(race) def get_immune(immune): immune = fix_text(immune) return "" if immune == "" else q(immune) def get_folder(folder): folder = fix_text(folder) return q("wolf" if folder == "" else folder) print("Connecting to database proto...") db = mysql_connect() print("Connected.") with db.cursor() as cur: cur.execute("SELECT * FROM mob_proto") rows = cur.fetchall() # utf-8-sig = UTF-8 z BOM (Windows/Notepad od razu widzi polskie znaki) with open("mob_proto.txt", "w", encoding="utf-8-sig", newline="") as out_file_mobproto, \ open("mob_names.txt", "w", encoding="utf-8-sig", newline="") as out_file_mobnames: print("Converting mob_proto...") for row in rows: mob_proto_line = ( "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % ( row[0], f"\"{fix_text(row[1])}\"", get_rank(row[3]), get_type(row[4]), get_battletype(row[5]), row[6], row[7], get_flag(row[8]), row[9], get_race(row[10]), get_immune(row[11]), row[12], get_folder(row[13]), row[14], row[15], row[16], row[17], row[18], row[19], row[20], row[21], row[22], row[23], row[24], row[25], row[26], row[27], row[28], row[29], row[30], row[31], row[32], row[33], row[34], row[35], row[36], row[37], row[38], row[39], row[40], row[41], row[42], row[43], row[44], row[45], row[46], row[47], row[48], row[49], row[50], row[51], row[52], row[53], row[54], row[55], row[56], row[57], row[58], row[59], row[60], row[61], row[62], row[63], row[64], row[65], row[66], row[67], row[68], row[69], row[70], row[71], ) ) mob_names_line = "%s\t%s" % (row[0], fix_text(row[2])) out_file_mobproto.write(mob_proto_line + "\r\n") out_file_mobnames.write(mob_names_line + "\r\n") db.close() print("Mob proto converted!") return "OK"def convert_item_proto(): item_type = { 0: "ITEM_NONE", 1: "ITEM_WEAPON", 2: "ITEM_ARMOR", 3: "ITEM_USE", 4: "ITEM_AUTOUSE", 5: "ITEM_MATERIAL", 6: "ITEM_SPECIAL", 7: "ITEM_TOOL", 8: "ITEM_LOTTERY", 9: "ITEM_ELK", 10: "ITEM_METIN", 11: "ITEM_CONTAINER", 12: "ITEM_FISH", 13: "ITEM_ROD", 14: "ITEM_RESOURCE", 15: "ITEM_CAMPFIRE", 16: "ITEM_UNIQUE", 17: "ITEM_SKILLBOOK", 18: "ITEM_QUEST", 19: "ITEM_POLYMORPH", 20: "ITEM_TREASURE_BOX", 21: "ITEM_TREASURE_KEY", 22: "ITEM_SKILLFORGET", 23: "ITEM_GIFTBOX", 24: "ITEM_PICK", 25: "ITEM_HAIR", 26: "ITEM_TOTEM", 27: "ITEM_BLEND", 28: "ITEM_COSTUME", 29: "ITEM_DS", 30: "ITEM_SPECIAL_DS", 31: "ITEM_EXTRACT", 32: "ITEM_SECONDARY_COIN", 33: "ITEM_RING", 34: "ITEM_BELT", } item_subtype = { 1: { 0: "WEAPON_SWORD", 1: "WEAPON_DAGGER", 2: "WEAPON_BOW", 3: "WEAPON_TWO_HANDED", 4: "WEAPON_BELL", 5: "WEAPON_FAN", 6: "WEAPON_ARROW", 7: "WEAPON_MOUNT_SPEAR", 8: "WEAPON_NUM_TYPES", }, 2: { 0: "ARMOR_BODY", 1: "ARMOR_HEAD", 2: "ARMOR_SHIELD", 3: "ARMOR_WRIST", 4: "ARMOR_FOOTS", 5: "ARMOR_NECK", 6: "ARMOR_EAR", 7: "ARMOR_NUM_TYPES", }, 3: { 0: "USE_POTION", 1: "USE_TALISMAN", 2: "USE_TUNING", 3: "USE_MOVE", 4: "USE_TREASURE_BOX", 5: "USE_MONEYBAG", 6: "USE_BAIT", 7: "USE_ABILITY_UP", 8: "USE_AFFECT", 9: "USE_CREATE_STONE", 10: "USE_SPECIAL", 11: "USE_POTION_NODELAY", 12: "USE_CLEAR", 13: "USE_INVISIBILITY", 14: "USE_DETACHMENT", 15: "USE_BUCKET", 16: "USE_POTION_CONTINUE", 17: "USE_CLEAN_SOCKET", 18: "USE_CHANGE_ATTRIBUTE", 19: "USE_ADD_ATTRIBUTE", 20: "USE_ADD_ACCESSORY_SOCKET", 21: "USE_PUT_INTO_ACCESSORY_SOCKET", 22: "USE_ADD_ATTRIBUTE2", 23: "USE_RECIPE", 24: "USE_CHANGE_ATTRIBUTE2", 25: "USE_BIND", 26: "USE_UNBIND", 27: "USE_TIME_CHARGE_PER", 28: "USE_TIME_CHARGE_FIX", 29: "USE_PUT_INTO_BELT_SOCKET", 30: "USE_PUT_INTO_RING_SOCKET", }, 4: { 0: "AUTOUSE_POTION", 1: "AUTOUSE_ABILITY_UP", 2: "AUTOUSE_BOMB", 3: "AUTOUSE_GOLD", 4: "AUTOUSE_MONEYBAG", 5: "AUTOUSE_TREASURE_BOX", }, 5: { 0: "MATERIAL_LEATHER", 1: "MATERIAL_BLOOD", 2: "MATERIAL_ROOT", 3: "MATERIAL_NEEDLE", 4: "MATERIAL_JEWEL", 5: "MATERIAL_DS_REFINE_NORMAL", 6: "MATERIAL_DS_REFINE_BLESSED", 7: "MATERIAL_DS_REFINE_HOLLY", }, 6: { 0: "SPECIAL_MAP", 1: "SPECIAL_KEY", 2: "SPECIAL_DOC", 3: "SPECIAL_SPIRIT", }, 7: {0: "TOOL_FISHING_ROD"}, 8: {0: "LOTTERY_TICKET", 1: "LOTTERY_INSTANT"}, 10: {0: "METIN_NORMAL", 1: "METIN_GOLD"}, 12: {0: "FISH_ALIVE", 1: "FISH_DEAD"}, 14: { 0: "RESOURCE_FISHBONE", 1: "RESOURCE_WATERSTONEPIECE", 2: "RESOURCE_WATERSTONE", 3: "RESOURCE_BLOOD_PEARL", 4: "RESOURCE_BLUE_PEARL", 5: "RESOURCE_WHITE_PEARL", 6: "RESOURCE_BUCKET", 7: "RESOURCE_CRYSTAL", 8: "RESOURCE_GEM", 9: "RESOURCE_STONE", 10: "RESOURCE_METIN", 11: "RESOURCE_ORE", }, 16: { 0: "UNIQUE_NONE", 1: "UNIQUE_BOOK", 2: "UNIQUE_SPECIAL_RIDE", 3: "UNIQUE_3", 4: "UNIQUE_4", 5: "UNIQUE_5", 6: "UNIQUE_6", 7: "UNIQUE_7", 8: "UNIQUE_8", 9: "UNIQUE_9", 10: "USE_SPECIAL", }, 28: {0: "COSTUME_BODY", 1: "COSTUME_HAIR"}, 29: { 0: "DS_SLOT1", 1: "DS_SLOT2", 2: "DS_SLOT3", 3: "DS_SLOT4", 4: "DS_SLOT5", 5: "DS_SLOT6", }, 31: {0: "EXTRACT_DRAGON_SOUL", 1: "EXTRACT_DRAGON_HEART"}, } wearflag = { 1: "WEAR_BODY", 2: "WEAR_HEAD", 4: "WEAR_FOOTS", 8: "WEAR_WRIST", 16: "WEAR_WEAPON", 32: "WEAR_NECK", 64: "WEAR_EAR", 128: "WEAR_SHIELD", 256: "WEAR_UNIQUE", 512: "WEAR_ARROW", 1024: "WEAR_HAIR", 2048: "WEAR_ABILITY", } limittype = { 1: "LEVEL", 2: "STR", 3: "DEX", 4: "INT", 5: "CON", 6: "PC_BANG", 7: "REAL_TIME", 8: "REAL_TIME_FIRST_USE", 9: "TIMER_BASED_ON_WEAR", } bonus = { 1: "APPLY_MAX_HP", 2: "APPLY_MAX_SP", 3: "APPLY_CON", 4: "APPLY_INT", 5: "APPLY_STR", 6: "APPLY_DEX", 7: "APPLY_ATT_SPEED", 8: "APPLY_MOV_SPEED", 9: "APPLY_CAST_SPEED", 10: "APPLY_HP_REGEN", 11: "APPLY_SP_REGEN", 12: "APPLY_POISON_PCT", 13: "APPLY_STUN_PCT", 14: "APPLY_SLOW_PCT", 15: "APPLY_CRITICAL_PCT", 16: "APPLY_PENETRATE_PCT", 17: "APPLY_ATTBONUS_HUMAN", 18: "APPLY_ATTBONUS_ANIMAL", 19: "APPLY_ATTBONUS_ORC", 20: "APPLY_ATTBONUS_MILGYO", 21: "APPLY_ATTBONUS_UNDEAD", 22: "APPLY_ATTBONUS_DEVIL", 23: "APPLY_STEAL_HP", 24: "APPLY_STEAL_SP", 25: "APPLY_MANA_BURN_PCT", 26: "APPLY_DAMAGE_SP_RECOVER", 27: "APPLY_BLOCK", 28: "APPLY_DODGE", 29: "APPLY_RESIST_SWORD", 30: "APPLY_RESIST_TWOHAND", 31: "APPLY_RESIST_DAGGER", 32: "APPLY_RESIST_BELL", 33: "APPLY_RESIST_FAN", 34: "APPLY_RESIST_BOW", 35: "APPLY_RESIST_FIRE", 36: "APPLY_RESIST_ELEC", 37: "APPLY_RESIST_MAGIC", 38: "APPLY_RESIST_WIND", 39: "APPLY_REFLECT_MELEE", 40: "APPLY_REFLECT_CURSE", 41: "APPLY_POISON_REDUCE", 42: "APPLY_KILL_SP_RECOVER", 43: "APPLY_EXP_DOUBLE_BONUS", 44: "APPLY_GOLD_DOUBLE_BONUS", 45: "APPLY_ITEM_DROP_BONUS", 46: "APPLY_POTION_BONUS", 47: "APPLY_KILL_HP_RECOVER", 48: "APPLY_IMMUNE_STUN", 49: "APPLY_IMMUNE_SLOW", 50: "APPLY_IMMUNE_FALL", 51: "APPLY_SKILL", 52: "APPLY_BOW_DISTANCE", 53: "APPLY_ATT_GRADE_BONUS", 54: "APPLY_DEF_GRADE_BONUS", 55: "APPLY_MAGIC_ATT_GRADE", 56: "APPLY_MAGIC_DEF_GRADE", 57: "APPLY_CURSE_PCT", 58: "APPLY_MAX_STAMINA", 59: "APPLY_ATTBONUS_WARRIOR", 60: "APPLY_ATTBONUS_ASSASSIN", 61: "APPLY_ATTBONUS_SURA", 62: "APPLY_ATTBONUS_SHAMAN", 63: "APPLY_ATTBONUS_MONSTER", 64: "APPLY_MALL_ATTBONUS", 65: "APPLY_MALL_DEFBONUS", 66: "APPLY_MALL_EXPBONUS", 67: "APPLY_MALL_ITEMBONUS", 68: "APPLY_MALL_GOLDBONUS", 69: "APPLY_MAX_HP_PCT", 70: "APPLY_MAX_SP_PCT", 71: "APPLY_SKILL_DAMAGE_BONUS", 72: "APPLY_NORMAL_HIT_DAMAGE_BONUS", 73: "APPLY_SKILL_DEFEND_BONUS", 74: "APPLY_NORMAL_HIT_DEFEND_BONUS", 75: "APPLY_PC_BANG_EXP_BONUS", 76: "APPLY_PC_BANG_DROP_BONUS", 77: "APPLY_EXTRACT_HP_PCT", 78: "APPLY_RESIST_WARRIOR", 79: "APPLY_RESIST_ASSASSIN", 80: "APPLY_RESIST_SURA", 81: "APPLY_RESIST_SHAMAN", 82: "APPLY_ENERGY", 83: "APPLY_DEF_GRADE", 84: "APPLY_COSTUME_ATTR_BONUS", 85: "APPLY_MAGIC_ATTBONUS_PER", 86: "APPLY_MELEE_MAGIC_ATTBONUS_PER", 87: "APPLY_RESIST_ICE", 88: "APPLY_RESIST_EARTH", 89: "APPLY_RESIST_DARK", 90: "APPLY_ANTI_CRITICAL_PCT", 91: "APPLY_ANTI_PENETRATE_PCT", } errors = "" def q(s: str) -> str: return f"\"{s}\"" def get_item_type(t, vnum): nonlocal errors errors = "" if t in item_type: return item_type[t] errors += f"Strange type in item {vnum}\r\n" return item_type[0] def get_item_subtype(t, st, vnum): nonlocal errors errors = "" if t in item_subtype and st in item_subtype[t]: return item_subtype[t][st] errors += f"Strange subtype in item {vnum}\r\n" return "NONE" def get_antiflag(antiflag, vnum): nonlocal errors s = "" for bit, name in [ (131072, "ANTI_SAFEBOX"), (65536, "ANTI_MYSHOP"), (32768, "ANTI_STACK"), (16384, "ANTI_PKDROP"), (8192, "ANTI_GIVE"), (4096, "ANTI_SAVE"), (2048, "ANTI_EMPIRE_C"), (1024, "ANTI_EMPIRE_B"), (512, "ANTI_EMPIRE_A"), (256, "ANTI_SELL"), (64, "ANTI_GET"), (32, "ANTI_MUDANG"), (16, "ANTI_SURA"), (8, "ANTI_ASSASSIN"), (4, "ANTI_MUSA"), (2, "ANTI_MALE"), (1, "ANTI_FEMALE"), ]: if antiflag >= bit: antiflag -= bit s = name if not s else f"{name} | {s}" if antiflag == 0 and s: return q(s) errors += f"Strange antiflag in item {vnum}\r\n" return "\"NONE\"" def get_flag(flag, vnum): nonlocal errors s = "" for bit, name in [ (32768, "ITEM_APPLICABLE"), (16384, "REFINEABLE"), (8192, "LOG"), (4096, "ITEM_QUEST"), (2048, "QUEST_GIVE"), (1024, "QUEST_USE_MULTIPLE"), (512, "QUEST_USE"), (256, "CONFIRM_WHEN_USE"), (128, "ITEM_IRREMOVABLE"), (64, "ITEM_MAKECOUNT"), (32, "ITEM_UNIQUE"), (16, "ITEM_SLOW_QUERY"), (8, "COUNT_PER_1GOLD"), (4, "ITEM_STACKABLE"), (2, "ITEM_SAVE"), (1, "ITEM_TUNABLE"), ]: if flag >= bit: flag -= bit s = name if not s else f"{name} | {s}" if flag == 0 and s: return q(s) errors += f"Strange flag in item {vnum}\r\n" return "\"NONE\"" def get_wearflag(wear, vnum): nonlocal errors if wear in wearflag: return q(wearflag[wear]) errors += f"Strange wearflag in item {vnum}\r\n" return "\"NONE\"" def get_immuneflag(_immune): return "\"NONE\"" def get_limittype(limit): return q(limittype.get(limit, "LIMIT_NONE")) def get_apply(apply): return q(bonus.get(apply, "APPLY_NONE")) print("Connecting to database proto...") db = mysql_connect() print("Connected.") with db.cursor() as cur: cur.execute("SELECT * FROM item_proto") rows = cur.fetchall() # utf-8-sig = UTF-8 z BOM (Windows/Notepad od razu widzi polskie znaki) with open("item_proto.txt", "w", encoding="utf-8-sig", newline="") as out_file_itemproto, \ open("item_names.txt", "w", encoding="utf-8-sig", newline="") as out_file_itemnames: print("Converting item_proto...") for row in rows: item_proto_line = ( "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % ( row[0], f"\"{fix_text(row[1])}\"", q(get_item_type(row[3], row[0])), q(get_item_subtype(row[3], row[4], row[0])), row[6], get_antiflag(row[7], row[0]), get_flag(row[8], row[0]), get_wearflag(row[9], row[0]), get_immuneflag(row[10]), row[11], row[12], row[13], row[14], row[16], get_limittype(row[17]), row[18], get_limittype(row[19]), row[20], get_apply(row[21]), row[22], get_apply(row[23]), row[24], get_apply(row[25]), row[26], row[27], row[28], row[29], row[30], row[31], row[32], row[39], row[40], row[41], ) ) item_names_line = "%s\t%s" % (row[0], fix_text(row[2])) out_file_itemproto.write(item_proto_line + "\r\n") out_file_itemnames.write(item_names_line + "\r\n") db.close() print("Item proto converted!") return "OK"if __name__ == "__main__": print(convert_item_proto()) print(convert_mob_proto()) Dump_proto mt2009dump_proto.exePo wygenerowaniu plików txt i spakowaniu jest błąd i gra się zawiesza przy wchodziu. Różnią się od ryginału wielkościa
Opublikowano 14 Lutego14 Lut 39 minut temu, Nietykalny napisał(a):Po wygenerowaniu plików txt i spakowaniu jest błąd i gra się zawiesza przy wchodziu. Różnią się od ryginału wielkościaNo to chyba inny wyciek mamy bo u mnie śmiga xd
Opublikowano 14 Lutego14 Lut 24 minuty temu, Sasori napisał(a):No to chyba inny wyciek mamy bo u mnie śmiga xdTo ogarnę ten z forum xD albo zerknę czego tam brakuje.
Opublikowano 14 Lutego14 Lut Ktoś naprawił laga przy zmianie itemów, albo może nakierować co jest powodem?
Opublikowano 14 Lutego14 Lut 8 godzin temu, Magdon napisał(a):Musisz pobrać PackMakerLite i exe wrzucić do pack, żebyś .bat mógł używać. Powinien być na forum.Tak właśnie zrobiłem, ale niby pisze mi "root unpack" ale nie mam nigdzie tych plików i folderu root. Nie wiem gdzie się to wypakowuję.
Opublikowano 15 Lutego15 Lut 16 godzin temu, xBodzio23 napisał(a):tak właśnie zrobiłem, ale niby pisze mi "root unpack" ale nie mam nigdzie tych plików i folderu root. Nie wiem gdzie się to wypakowywuje.Musisz przeciągnąć plik na plik bat, nie otwierasz .bat
Opublikowano 15 Lutego15 Lut 2 godziny temu, Magdon napisał(a):Musisz przeciągnąć plik na plik bat, nie otwierasz .battak wlasnie robie. Na innych plikach serwerowych działa a tutaj nie.
Opublikowano 15 Lutego15 Lut Autor 5 minut temu, xBodzio23 napisał(a):tak wlasnie robie. Na innych plikach serwerowych działa a tutaj nie.Bro wszystko działa wrzucasz do pack program PackMakerLite.exe, który pobierasz z forum. I wtedy przeciągasz plik .index na plik PackMakerLite_u.bat otworzy się konsola i rozpakuje plik pojawi się rozpakowany folder.
Opublikowano 15 Lutego15 Lut 1 godzinę temu, Sevence napisał(a):Bro wszystko działa wrzucasz do pack program PackMakerLite.exe, który pobierasz z forum. I wtedy przeciągasz plik .index na plik PackMakerLite_u.bat otworzy się konsola i rozpakuje plik pojawi się rozpakowany folder.https://youtu.be/EOszp3QyAYYBro specjalnie dla ciebie nagrałem to, drugi client to dla porównania odpakowanie roota na cliencie TMP4 i tam wszystko działa.
Opublikowano 15 Lutego15 Lut Autor Pewnie podmieniłeś również plik konfiguracyjny packera wrzuć ten plik i podmień. PackMakerLite.json
Opublikowano 15 Lutego15 Lut 12 minut temu, Sevence napisał(a):Pewnie podmieniłeś również plik konfiguracyjny packera wrzuć ten plik i podmień.PackMakerLite.jsonCzłowiek się uczy całe życie 😖
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto