Jump to content

xkillmt2

Member
  • Content count

    28
  • Joined

  • Last visited

  • Days Won

    3

xkillmt2 last won the day on May 20

xkillmt2 had the most liked content!

Community Reputation

47 Neutral

About xkillmt2

  • Rank
    Member

Recent Profile Visitors

96 profile views
  1. xkillmt2

    Slot Montadas

    Erro de posição, verifique em common\length.h: enum EWearPositions { WEAR_BODY, // 0 WEAR_HEAD, // 1 WEAR_FOOTS, // 2 WEAR_WRIST, // 3 WEAR_WEAPON, // 4 WEAR_NECK, // 5 WEAR_EAR, // 6 WEAR_UNIQUE1, // 7 WEAR_UNIQUE2, // 8 WEAR_ARROW, // 9 WEAR_SHIELD, // 10 WEAR_ABILITY1, // 11 WEAR_ABILITY2, // 12 WEAR_ABILITY3, // 13 WEAR_ABILITY4, // 14 WEAR_ABILITY5, // 15 WEAR_ABILITY6, // 16 WEAR_ABILITY7, // 17 WEAR_ABILITY8, // 18 WEAR_COSTUME_BODY, // 19 WEAR_COSTUME_HAIR, // 20 WEAR_COSTUME_MOUNT, // 21 Posição do Slot WEAR_COSTUME_ACCE, // 22 WEAR_COSTUME_WEAPON, // 23 WEAR_RING1, // 24 : ½Å±Ô ¹ÝÁö½½·Ô1 (¿ÞÂÊ) WEAR_RING2, // 25 : ½Å±Ô ¹ÝÁö½½·Ô2 (¿À¸¥ÂÊ) WEAR_BELT, // 26 : ½Å±Ô º§Æ®½½·Ô WEAR_MAX = 32 // }; Continuando no common verifique o subtype em item_length.h: enum ECostumeSubTypes { COSTUME_BODY = ARMOR_BODY, // 0 subtype COSTUME_HAIR = ARMOR_HEAD, // 1 subtype COSTUME_MOUNT, // 2 subtype COSTUME_ACCE, // 3 subtype COSTUME_WEAPON, // 4 subtype COSTUME_NUM_TYPES, }; Verifique em db/src/ProtoReader.cpp static string arSub28[] = { "COSTUME_BODY", "COSTUME_HAIR", "COSTUME_MOUNT", "COSTUME_ACCE", "COSTUME_WEAPON" }; Verifique em Client\UserInterface\GameType.h: #ifdef ENABLE_COSTUME_SYSTEM const DWORD c_Costume_Slot_Start = c_Equipment_Start + 19; // [ÁÖÀÇ] ¼ýÀÚ(19) ÇϵåÄÚµù ÁÖÀÇ. ÇöÀç ¼­¹ö¿¡¼­ ÄÚ½ºÃõ ½½·ÔÀº 19ºÎÅÍÀÓ. ¼­¹ö common/length.h ÆÄÀÏÀÇ EWearPositions ¿­°ÅÇü Âü°í. const DWORD c_Costume_Slot_Body = c_Costume_Slot_Start + 0; // 19 const DWORD c_Costume_Slot_Hair = c_Costume_Slot_Start + 1; // 20 const DWORD c_Costume_Slot_Mount = c_Costume_Slot_Start + 2; // 21 Posição do Slot const DWORD c_Costume_Slot_Acce = c_Costume_Slot_Start + 3; // 22 const DWORD c_Costume_Slot_Weapon = c_Costume_Slot_Start + 4; // 23 const DWORD c_Costume_Slot_Count = 5; const DWORD c_Costume_Slot_End = c_Costume_Slot_Start + c_Costume_Slot_Count; #endif Correção do slot belt e ring_left e ring_right: #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM const DWORD c_New_Equipment_Start = c_Equipment_Start + 24; // 24 Posição de slot const DWORD c_New_Equipment_Count = 3; const DWORD c_Equipment_Ring1 = c_New_Equipment_Start + 0; // 24 const DWORD c_Equipment_Ring2 = c_New_Equipment_Start + 1; // 25 const DWORD c_Equipment_Belt = c_New_Equipment_Start + 2;; // 26 #endif Verifique em Client\UserInterface\PythonItemModule.cpp: #ifdef ENABLE_COSTUME_SYSTEM PyModule_AddIntConstant(poModule, "ITEM_TYPE_COSTUME", CItemData::ITEM_TYPE_COSTUME); // Item Sub Type PyModule_AddIntConstant(poModule, "COSTUME_TYPE_BODY", CItemData::COSTUME_BODY); PyModule_AddIntConstant(poModule, "COSTUME_TYPE_HAIR", CItemData::COSTUME_HAIR); PyModule_AddIntConstant(poModule, "COSTUME_TYPE_MOUNT", CItemData::COSTUME_MOUNT); PyModule_AddIntConstant(poModule, "COSTUME_TYPE_ACCE", CItemData::COSTUME_ACCE); PyModule_AddIntConstant(poModule, "COSTUME_TYPE_WEAPON", CItemData::COSTUME_WEAPON); // Àκ¥Å丮 ¹× Àåºñâ¿¡¼­ÀÇ ½½·Ô ¹øÈ£ PyModule_AddIntConstant(poModule, "COSTUME_SLOT_START", c_Costume_Slot_Start); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_COUNT", c_Costume_Slot_Count); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_BODY", c_Costume_Slot_Body); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_HAIR", c_Costume_Slot_Hair); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_MOUNT", c_Costume_Slot_Mount); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_ACCE", c_Costume_Slot_Acce); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_WEAPON", c_Costume_Slot_Weapon); PyModule_AddIntConstant(poModule, "COSTUME_SLOT_END", c_Costume_Slot_End); #endif Verifique em uiscript->costumewindow.py: "slot" : ( {"index":COSTUME_START_INDEX+0, "x":62, "y":45, "width":32, "height":64},# 19 - Posição de slot {"index":COSTUME_START_INDEX+1, "x":62, "y": 9, "width":32, "height":32},# 20 {"index":COSTUME_START_INDEX+2, "x":13, "y":126, "width":32, "height":32},# 21 {"index":COSTUME_START_INDEX+3, "x":62, "y":126, "width":32, "height":32},# 22 {"index":COSTUME_START_INDEX+4, "x":13, "y":13, "width":32, "height":96},# 23 ),
  2. xkillmt2

    Bug Montarias

    @Marcos verifica se no seu root->npclist.txt está definido corretamente, caso esteja tudo OK verifique o pack e por ultimo verifique o arquivo responsável pelo carregamento dos arquivos em GameLib->RaceManager.cpp. Observação: montarias novas é necessário criar um novo load em RaceManager.cpp.
  3. xkillmt2

    Erro mysql | mudar de nome

    Bem, isso está relacionado com root->introselect.py: def OpenChangeNameDialog(self): import uiCommon nameInputBoard = uiCommon.InputDialogWithDescription() nameInputBoard.SetTitle(localeInfo.SELECT_CHANGE_NAME_TITLE) nameInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptInputName)) nameInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputName)) nameInputBoard.SetMaxLength(chr.PLAYER_NAME_MAX_LEN) nameInputBoard.SetBoardWidth(200) nameInputBoard.SetDescription(localeInfo.SELECT_INPUT_CHANGING_NAME) nameInputBoard.Open() nameInputBoard.slot = self.slot self.nameInputBoard = nameInputBoard def OnChangeName(self, id, name): self.SelectSlot(id) self.sendedChangeNamePacket = False self.PopupMessage(localeInfo.SELECT_CHANGED_NAME) def AcceptInputName(self): changeName = self.nameInputBoard.GetText() if not changeName: return self.sendedChangeNamePacket = True net.SendChangeNamePacket(self.nameInputBoard.slot, changeName) return self.CancelInputName() def CancelInputName(self): self.nameInputBoard.Close() self.nameInputBoard = None return True Aqui ocorreu esse bug quando adicione o sistema de faixas, resolvi alterando o locale na source bin.
  4. xkillmt2

    Limite 4 Refines

    Sim é possível aumentar, basta ir em common/item_length.h Find: REFINE_MATERIAL_MAX_NUM = 5, Replace: REFINE_MATERIAL_MAX_NUM = 6, Agora vá em ClientManagerBoot.cpp Find: "SELECT id, cost, prob, vnum0, count0, vnum1, count1, vnum2, count2, vnum3, count3, vnum4, count4 FROM refine_proto%s", Replace: "SELECT id, cost, prob, vnum0, count0, vnum1, count1, vnum2, count2, vnum3, count3, vnum4, count4, vnum5, count5 FROM refine_proto%s", Part Client: Vá em UserInterface/Packet.h Find: REFINE_MATERIAL_MAX_NUM = 5, Replace: REFINE_MATERIAL_MAX_NUM = 6, Part Database: ALTER TABLE `refine_proto` ADD COLUMN `vnum5` int(10) unsigned NOT NULL DEFAULT '0' AFTER `count4`; ALTER TABLE `refine_proto` ADD COLUMN `count5` smallint(6) NOT NULL DEFAULT '0' AFTER `vnum5`;
  5. xkillmt2

    Link Direto Freebsd

    Acho que é necessário instalar o apache24.
  6. xkillmt2

    Quest de verificação de itens

    Acho que é isso que queres: quest vip begin state start begin function isConfig() return { ["map_index"] = 200, -- index do mapa. ["map_warp"]={["x"]=83200,["y"]=0}, -- warp de entrada no mapa. ["vip_item"] = 71095, -- item vip, necessário para continuar no mapa. ["loop_temp"] = 60, -- verificação em 1 minuto. } end function isVip() if pc.countitem(vip.isConfig().vip_item) != 0 then return true end if pc.is_gm() then return true end return false end function isMapIndex() if pc.get_map_index() == vip.isConfig().map_index then return true end if pc.is_gm() then return false end return false end when 20095.chat."Mapa VIP" begin say_title(mob_name(npc.get_race())..":") say("") say("Olá, "..pc.get_name()) say("Para entrar é necessário:") say_item_vnum(vip.isConfig().vip_item) say("") local s=select("Eu tenho","Não tenho") if s==2 then return end if vip.isVip() == false then say("Você não tem o item: "..item_name(vip.isConfig().vip_item)..".") return end pc.warp(vip.isConfig().map_warp.x, vip.isConfig().map_warp.y) end when logout with vip.isMapIndex() == true begin cleartimer("check_vip") end when login with vip.isMapIndex() == true begin if vip.isVip() == false then warp_to_village() return end loop_timer("check_vip", vip.isConfig().loop_temp) end when check_vip.timer begin if vip.isVip() == false then cleartimer("check_vip") warp_to_village() return end end end end
  7. xkillmt2

    [C++/lua] Anti EXP Ring

    Guia de instalação: Primeiro, abra o char.h e procure: SetExp(DWORD exp) Adicione abaixo: bool block_exp; Agora, abra o char.cpp e procure: if (gPlayerMaxLevel <= GetLevel()) return; Adicione abaixo: if (block_exp) return; Agora abra o questlua_pc.cpp e procure: { "give_award_socket", pc_give_award_socket }, Adicione abaixo: { "block_exp", _block_exp }, { "unblock_exp", _unblock_exp }, Ainda em questlua_pc.cpp procure por: void RegisterPCFunctionTable() Adicione acima: int _block_exp(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); ch->block_exp = true; return 0; } int _unblock_exp(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); ch->block_exp = false; return 0; } Agora você abre input_login.cpp e procure: ch->SendGreetMessage(); Adicione acima: ch->block_exp = false; Tudo está pronto no jogo agora. Agora você pode compilar a source. No arquivo quest_functions você deve inserir as seguintes novas funções: pc.block_exp pc.unblock_exp Exemplo Quest: quest antiexp begin state start begin when login begin if pc.getqf("antiexp") == 1 then pc.block_exp() chat("Anti EXP ainda está ativado.") end end when ITEMVNUM.use begin if pc.getqf("antiexp") == 0 then pc.block_exp() pc.setqf("antiexp", 1) chat("O Anti EXP foi ativado.") elseif pc.getqf("antiexp") == 1 then pc.unblock_exp() pc.setqf("antiexp", 0) chat("O Anti EXP foi desabilitado.") end end end end
  8. xkillmt2

    Channel em que so Staff entra

    Bem, deixo aqui a minha solução pra isso. Vá em game/src/input_login.cpp e pesquise por: static bool FN_is_battle_zone(LPCHARACTER ch) Adicione abaixo: static bool IsGMLogin(const char * m_szAccount) { char szQuery[512]; snprintf(szQuery, sizeof(szQuery), "SELECT mAuthority FROM common.gmlist WHERE mAccount='%s'", m_szAccount); std::unique_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(szQuery)); if (msg->Get()->uiNumRows == 0) { return false; } MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult); std::string stAuth = row[0]; if (!stAuth.compare("PLAYER")) return false; return true; } Pesquise por: void CInputLogin::Login(LPDESC d, const char * data) Adicione acima da condição: if (g_bNoMoreClient) if(!IsGMLogin(login) && g_bChannel == 2) { failurePacket.header = HEADER_GC_LOGIN_FAILURE; strlcpy(failurePacket.szStatus, "DEVCORE", sizeof(failurePacket.szStatus)); d->Packet(&failurePacket, sizeof(TPacketGCLoginFailure)); return; } Pesquise por: void CInputLogin::LoginByKey(LPDESC d, const char * data) Adicione acima da condição: if (g_bNoMoreClient) if (!IsGMLogin(login) && g_bChannel == 2) { TPacketGCLoginFailure failurePacket; failurePacket.header = HEADER_GC_LOGIN_FAILURE; strlcpy(failurePacket.szStatus, "DEVCORE", sizeof(failurePacket.szStatus)); d->Packet(&failurePacket, sizeof(TPacketGCLoginFailure)); return; } Parte Cliente: Vá em root->intrologin.py e pesquise por: "AGELIMIT" : localeInfo.LOGIN_FAILURE_SHUTDOWN_TIME, Adicione abaixo: "DEVCORE" : localeInfo.LOGIN_FAILURE_DEVCORE, Agora pesquise em locale/xx/locale_game.txt por: LOGIN_PROCESSING Adicione abaixo: LOGIN_FAILURE_DEVCORE Canal exclusivo para Administrador. Configurei para o channel2(g_bChannel == 2) ser exclusivo para administradores. input_login.cpp
  9. xkillmt2

    [C++/python]Release Details_UI

    EterPythonLib->PythonWindow.cpp Find: void CButton::SetUp() Replace: void CButton::SetUp() { SetCurrentVisual(&m_upVisual); m_isPressed = FALSE; PyCallClassMemberFunc(m_poHandler, "OnMouseOverOut", BuildEmptyTuple()); } Find: void CButton::Over() Replace: void CButton::Over() { SetCurrentVisual(&m_overVisual); PyCallClassMemberFunc(m_poHandler, "OnMouseOverIn", BuildEmptyTuple()); }
  10. xkillmt2

    core crash covil meley

    Bom, aqui esta o src completo, ver o que falta e adicione no seu @wery 01. Svn.rar
  11. xkillmt2

    core crash covil meley

    Faz update no MeleyLair.cpp MeleyLair.cpp
  12. Download - Skill Over P / Sage Master Skill
  13. xkillmt2

    [C++/python]Release Details_UI

    Arquivo existente no metin2_patch_new_select_ui.epk/eix
  14. xkillmt2

    Erro uirefine.py

    Abrir notepad++: uirefine.py
×

Important Information

By using this site, you agree to our Terms of Use.