Jump to content
TLThings

Mário.

Member
  • Content count

    82
  • Joined

  • Days Won

    18

Mário. last won the day on July 5

Mário. had the most liked content!

Community Reputation

175 Good

3 Followers

About Mário.

  • Rank
    Member

Recent Profile Visitors

2646 profile views
  1. error: 'struct TItemPriceInfo' has no member named 'dwCheque' error: 'const struct SItemPriceInfo' has no member named 'dwCheque' common/tables.h Procura por: typedef struct SItemPriceInfo { DWORD dwVnum; ///< ¾ÆÀÌÅÛ vnum DWORD dwPrice; ///< °¡°Ý } TItemPriceInfo; Substitui por: typedef struct SItemPriceInfo { DWORD dwVnum; ///< ¾ÆÀÌÅÛ vnum DWORD dwPrice; ///< °¡°Ý DWORD dwCheque; /// ENABLE_CHEQUE_SYSTEM } TItemPriceInfo; 3688: error: duplicate case value 3570: error: previously used here char.cpp Na linha 3688,
  2. 1º Tens que fornecer o sistema para estarmos a par de qual o erro, não somos bruxos para saber qual é a linha que está errada. 2º Se isso acontece ao teleportar, significa que sempre que a personagem altera/teleporta, os valores do gaya resetam, por isso vê o que se passa no input_main.cpp, se existe algum ch->SetGaya ou algo do gênero (o meu conhecimento desse sistema é 0, tens que fornecer o sistema no total para conseguirmos ajudar).
  3. Isso é algo bastante relativo, mas antes de começar com algo, deixa-me explicar-te a diferença entre um backdoor e um exploit no cenário do Metin2. Um backdoor dá-se quando um pedaço de código é deixado propositadamente na source para o criador/malfeitor tomar proveito do mesmo Um exploit é quando um pedaço de código está mal feito/otimizado, permitindo que qualquer pessoa possa tomar proveito do mesmo Agora, respondendo a tua dúvida, em termos de backdoor é muito comum estar presente nos cmd_general.cpp | cmd_gm.cpp | cmd.cpp, com comandos como a que tu disse
  4. Retire a parte onde diz if (ModoBatalha) bPKMode = PK_MODE_BATALHA; else e diga-me se resolveu. Isso é um novo modo que não está presente no cliente.
  5. Muito provavelmente o erro está no source do game. Se nesse mapa não consegues mudar o modo pvp, é porque algo não o permite. Mostra-nos a parte completa disto, que está no char_battle.cpp: void CHARACTER::SetPKMode(BYTE bPKMode) { if (bPKMode >= PK_MODE_MAX_NUM) return; if (m_bPKMode == bPKMode) return; if (bPKMode == PK_MODE_GUILD && !GetGuild()) bPKMode = PK_MODE_FREE; m_bPKMode = bPKMode; UpdatePacket(); sys_log(0, "PK_MODE: %s %d", GetName(), m_bPKMode); } Vê se o teu está desta forma. Se não estiver, utiliza, compila e diz-nos o res
  6. Utilize uma das três: mob_proto.sql <- Estrutura oficial datada a 03/02/2018 | Não contêm nenhuma informação [5 kb] mob_proto_.sql <- Estrutura oficial datada a 03/02/2018 | Contém todo o mob_proto oficial [751 kb] mob_proto.txt <- Estrutura oficial em txt datada a 03/02/2018 [352 kb]
  7. Procura por: PACK * Adiciona depois: metin2_patch_6th_armor pack/ metin2_patch_monster_card pack/ Em primeiro lugar é o nome do ficheiro seguidamente pelo diretório da pasta.
  8. messenger_manager.cpp: void MessengerManager::Login(MessengerManager::keyA account) { if (m_set_loginAccount.find(account) != m_set_loginAccount.end()) return; DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&MessengerManager::LoadList), this), "SELECT account, companion FROM messenger_list%s WHERE account='%s'", get_table_postfix(), __account); #ifdef ENABLE_MESSENGER_TEAM DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&MessengerManager::LoadTeamList), this), "SELECT '%s' as account, mName as companion FROM common.gmlist", account.c_str()); #endif
  9. Quem puder testar que dê feedback pls: questlua_global.cpp: int _set_quest_state_other (lua_State* L) { if (!lua_isstring(L, 1) || !lua_isstring(L, 2) || !lua_isstring(L, 3)) return 0; CQuestManager& q = CQuestManager::instance(); PC* pPC = q.GetCurrentNPC(); QuestState * pqs = q.GetCurrentState(); const string stPlayerName(lua_tostring(L, 1)); if (L!=pqs->co) { luaL_error(L, "running thread != current thread???"); sys_log(0,"running thread != current thread???"); return -1; } if (pPC) { const string stQuestName(lua_tostring(L, 2));
  10. Obrigado, fiz a quest à pressa e nem reparei nisso E sim, tens razão, será melhor utilizar um ficheiro externo: when login begin a = io.open(get_locale_base_path().."/admin_whisper.txt", "r") this = a:read() cmdchat(string.format("admin_whisper %s %s",this,this)) end Desta forma ficaria o ficheiro ficaria: mário paci Resultado: O @Marco e o Daryl (GalaxyMT2) deram a ideia da mensagem ser enviada de X a X tempos de acordo com a hora que eles queriam, então para isso é só utilizar esta quest: quest admin_whisper begin
  11. Em baixo estão cerca 9 quests totalmente otimizados para droparem itens do biólogo em jogador. Alguns extras: Tem verificação vs IP (Jogadores com o mesmo IP não irão dropar itens); Com um pet, terão mais possibilidade de droparem ou não o item; As quests estão interligadas uma com a outra, ou seja, assim que acabam uma missão a outra é logo ativada (se tiverem o nível requerido); Possibilidade de saberem vários detalhes de cada morte (logs): O jogador, o adversário, em que canal, em qual missão e a hora; Se o jogador matar a mesma pessoa 5x, a mesma é posta
  12. Antes de começar com o tópico, se esperam algo complexo deste sistema, então poderão voltar para trás porque isto foi em apenas 1 hora de trabalho. Têm todo o direito de melhorar isto à vontade. Bem, eu ando a fazer alguns testes no que toca a performance entre quest-client e game-client e sendo sincero, quase ou pouco noto a diferença (já deu para entender que sou fanboy de lua certo?), apenas há 1 ~ 3 comandos extras a serem feitos. O que é este sistema? Isto dá-se como o nome de Admin Whisper (Mensagens de Equipa em português) e tem como objetivo enviar um
  13. Apoio totalmente a nova filosofia e já tive oportunidade de ver e analisar a mesma em ação. Considero que é mais prático e eficiente tornar o cliente disponível para todos e mudar a estrutura interna de forma a que ir no sentido contrário de módulos pré-definidos pela source (headers, modules, imports, etc.). Um exemplo disso é a forma como o lalaker funciona. Se analisares como ela se comporta e que tipos de headers ela usa (graças a um packet reader) consegue-se descobrir que utiliza o header que se encontra disponível para o ataque (SPACE) = 3. Ora mudando o número, com a opção P
  14. 1. Procura por (game.py): onPressKeyDict[app.DIK_X] = lambda : 2. Comenta/Apaga: #onPressKeyDict[app.DIK_X] = lambda : self.__OpenBonus() <- Isto é um exemplo, não é igual ao que tens 3. Procura por: (uitooltip.py): if isCostumeSash: 4. Substitui por: if itemVnum >= 85001 and itemVnum <= 85024: # São os IDs das faixas, se tens de outra forma, substitui
×
×
  • Create New...

Important Information

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