Jump to content

V3ct0r

Administrators
  • Content Count

    2,902
  • Joined

  • Last visited

  • Days Won

    519

Everything posted by V3ct0r

  1. @NOX, @DangThao, @saa0d, @Stitch, @LuciferMorningStar, @Fomin I apologize for the unfulfilled promise, friends. I still have no idea how to make that feature, but still learning the question. I have not forgotten about it.
  2. Hello, @MiniMan! Also do not forget about skills and items (cakes and other cook for example)
  3. Hello, @flamyman1412! I think PHP can't resolve the host that you specified in website config file. Check that you entered the correct host.
  4. Hello, @flamyman1412! What is the problem with VPS installing? I think on Google should be a ton of information how to install VPS.
  5. Hello, @Stitch! Add appareals to ItemInfo.txt and put models with textures to client. Appareals IDs should be between 5000 - 6000.
  6. Привет, @Slavyan! Если ты используешь GameServer.exe версии 1.38, то там действительно присутствует такой баг. Нужно патчить GameServer.exe или использовать GameServer версии 1.36, там такого бага нет. Вот исходный код DLL, которая исправляет баг: #include <windows.h> #include <iostream> // Адрес функции g_GetJobName() DWORD fGetJobNameAddress = 0x00459C40; // Адрес функции g_GetJobID() DWORD fGetJobIdAddress = 0x00483870; // Названия профессий const char *szJobNames[] = { "Новичок", "Мечник", "Охотник", "Моряк", "Мореплаватель", "Знахарка", "Ремесленник", "Торговец", "Чемпион", "Воитель", "Белый Рыцарь", "Укротитель Животных", "Стрелок", "Целительница", "Колдунья", "Капитан", "Покоритель морей", "Выскочка", "Инженер" }; // Получить название профессии по ID const char* __cdecl GetJobName_Hooked(short sJobID); // Получить ID по названию профессии short __cdecl GetJobID_Hooked(const char* szJobName); // Установить хук на функцию void SetGetJobNameHook(DWORD dwOrigAddress, DWORD dwHookAddress); // Функция-пустышка для импорта в GameServer.exe __declspec(dllexport) void __cdecl ExportedFunction() {} // Точка входа BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { // Подключение DLL if (ul_reason_for_call == DLL_PROCESS_ATTACH) { // Ставим хуки на функции // g_GetJobName() SetGetJobNameHook( fGetJobNameAddress, reinterpret_cast<DWORD>(&GetJobName_Hooked) ); // g_GetJobID() SetGetJobNameHook( fGetJobIdAddress, reinterpret_cast<DWORD>(&GetJobID_Hooked) ); } return TRUE; } // Получить профессию по ID const char* __cdecl GetJobName_Hooked(short sJobID) { // Количество профессий unsigned short n = sizeof(szJobNames) / sizeof(szJobNames[0]); // Ищем профессию в списке if (sJobID < 0 || sJobID >= n) { return szJobNames[0]; } return szJobNames[sJobID]; } // Получить ID по названию профессии short __cdecl GetJobID_Hooked(const char* szJobName) { // Количество профессий unsigned short n = sizeof(szJobNames) / sizeof(szJobNames[0]); // Ищем ID профессии в списке for (unsigned int i = 0; i < n; i++) { if (std::strcmp(szJobNames[i], szJobName) == 0) { return i; } } return 0; } // Установить хук на функцию void SetGetJobNameHook( DWORD dwOrigAddress, DWORD dwHookAddress ) { // Структура перехода на нашу функцию #pragma pack(push, 1) struct jump { BYTE opcode; UINT dif; BYTE retn; }; #pragma pack(pop) // Создаем последовательность байт для // перехода на нашу функцию: // jmp GetJobName_Hooked // retn jump jmp; jmp.opcode = 0xe9; jmp.dif = ( dwHookAddress - dwOrigAddress - 5 ); jmp.retn = 0xc3; // Делаем память доступной для записи DWORD dwOldProt = PAGE_EXECUTE_READWRITE; VirtualProtect( reinterpret_cast<LPVOID>(dwOrigAddress), sizeof(jmp), dwOldProt, &dwOldProt ); // Записываем наши байты в память GameServer.exe *reinterpret_cast<jump *>(dwOrigAddress) = jmp; // Возвращаем свойства памяти обратно VirtualProtect( reinterpret_cast<LPVOID>(dwOrigAddress), sizeof(jmp), dwOldProt, &dwOldProt ); } Либо вот скомпилированная DLL. Присоединить DLL к GameServer.exe можно с помощью CFF Explorer, например.
  7. Нужен редактор .map файлов с данным функционалом. Есть YAMMI, с его помощью можно редактировать названия локаций, насколько я помню
  8. Всем привет! Попробуйте достать "синие" характеристики с помощью функции GetItemAttrRange(): GetItemAttrRange(<ID предмета из ItemInfo.txt>, <Характеристика>, 0) Например: local item_id = GetItemID(Item) local attr = GetItemAttrRange(item_id, ITEMATTR_VAL_STR, 0)
  9. Привет, @Graf! MapInfo это список карт, т.е. этот файл нужен клиенту, чтобы тот понимал какие .map и .obj файлы загружать из папки map. AreaSet это список локаций: ID локации => Название локации. Игрок видит название локации, в которой он находится, рядом с радаром. В файле карты .map в каждой клетке с координатами X, Y закодирован ID локации из AreaSet. Попробуй поискать в архиве МД. Вроде там что-то было:
  10. Напиши свое решение, пожалуйста. Также ты не пробовал через функцию SetChaAttr() устанавливать монстру отрицательное число жизней или через функцию SetChaLifeTime() устанавливать нулевое время?
  11. Привет, @EllanWan! ID эффекта в variable.lua писать необязательно. Например, строку для добавления эффекта "Берсерк" AddState(ATKER, DEFER, STATE_KB, statelv, statetime) можно заменить на AddState(ATKER, DEFER, 24, statelv, statetime) Лимит на skilleff.bin устанавливается в исполняемом файле игры Game.exe, который находится в папке system клиента. Game.exe нужно открыть в HEX редакторе, например HxD, и перейти по адресу 0x00016AD1. Там будет значение F0 00 00 00, оно соответствует лимиту в 240 эффектов: Чтобы установить лимит, например, в 512 эффектов, необходимо заменить старое значение на 00 02 00 00 и сохранить файл: Существует проблема, что эффекты с ID больше 240 не отображаются визуально:
  12. We are working as a hobby on the game, which will be based on the original map of the Sacred War.
  13. Hello, @GOAT! Give us more information about this topic.
  14. Hello, @1g0rS1lv4! The error at line 13 We don't know anything about how your website works. Show us the appropriate source files.
  15. Hello, @huggies! Are there any errors related with skillinfo in the compiling process?
  16. Hello, @Aki! Skill descriptions are in the skillinfo.txt file. Also you will need update skillinfo in your client:
  17. Hello, @wh35199! Open your GameServer.exe in any HEX editor, HxD or Notepad++ for example. Then search for all text-strings "GameDB" and change them to another one which will define a new database name. Note: with this method the length of the new database name should be equal to 6. Now GameServer.exe will connect to database with name "pkodev".
  18. We used tools that are publicly available, here on the forum. And you have access to these tools too.
  19. Hello, @LuciferMorningStar! Put ItemInfo.txt from 'GameServer\resource' to your 'Client\scripts\table' folder. Then compile it:
  20. Hello! Have no idea how to help you with that issue. What do you mean by "doesn't work"? Any errors?
  21. Hello, @1g0rS1lv4! Show your ctrl.lua and entrly.lua files. Did you do any modifications in these files?
  22. V3ct0r

    LuaSQL

    Wrong MSSQL Server host or login and password pair. Your script cannot connect to the server.
  23. Hello! The error tells about wrong structure of lines for apparels. Try to add "0" along with TAB (or remove) to the end of the each line.
×
×
  • Create New...