Jump to content

Graf

Community
  • Content Count

    509
  • Joined

  • Last visited

  • Days Won

    36

Graf last won the day on September 29

Graf had the most liked content!

Community Reputation

143 Excellent

About Graf

  • Rank
    Sea Captain

Recent Profile Visitors

8,601 profile views
  1. Привет. Думаю только через исходники.
  2. Devil`s Fortune В разработке Добрового времени суток, дорогой форум! Хочу представить Вам мой проект (пока его начало разработки) - Devil`s Fortune. Проект состоит из 2-х серверов, а именно Devil (Фан сервер) и Demon (Полу-фан сервер). Сайт - https://devilfortune.ru/ Также там доступен форум. Естественно, это не окончательный его вид, но там уже доступен некоторый функционал. Новости и разделы/обсуждения форума я буду пополнять по мере разработки. Сам концепт серверов: Devil: Подстройка под новые реалии российских игроков, любящих простоту добычи, но азарт шансов. Все это подкреплено исходниками клиентами и, естественно, своей изюминкой. Demon: В планах сделать сервер, которые может по достоинству соревноваться с нашими зарубежными товарищами. В данный момент разработана база и пишутся новые системы улучшения экипировки. Первым в свет выйдет сервер - Devil
  3. Добрый день. Разбирая моды V3ctor столкнулся с проблемой, что "_TRUNCATE" не используется в старых версиях VS, как и "_snprintf_s" Помогите найти аналог, пожалуйста. Пример строки: _snprintf_s(buf, _TRUNCATE, "%.2d:%.2d", hours, minutes);
  4. [Исходники] Прокачка характеристик Добрый день. В файле: UIStateForm.cpp Есть функция: void CStateMgr::MainMouseDown(CGuiData *pSender, int x, int y, DWORD key) В целом, это выглядит, как.. Отпустил мышку, +1 характеристика прокачалась. Прошу помочь сделать так, чтобы при зажатой мышке, то есть по идее "MousePress" или "MouseON" прокачивались характеристики, пока мышку не отпустили.
  5. [Исходники] Компиляция 1-м кликом К сожалению не смог понять, как переделать мод V3ctor-а, поэтому воспользовался великим поиском Ctrl+F. А именно я искал параметр: table_bin Находим следующие строки: if(strParam.find("table_bin")!=-1) { extern void MakeBinTable(); MakeBinTable(); CExitTest::SetExit(true); return FALSE; } Заменяем на: //Если есть параметр table_bin, генерируем бинарники if(strParam.find("table_bin")!=-1) { extern void MakeBinTable(); MakeBinTable(); CExitTest::SetExit(true); return FALSE; } //Если есть параметр table_bin_offmsg, генерируем бинарники if(strParam.find("tab_bin_offmsg")!=-1) { extern void MakeBinTable_OffMsg(); MakeBinTable_OffMsg(); //CExitTest::SetExit(true); return FALSE; } Далее ищем функцию в этом же файле: void MakeBinTable() Вставляем после неё: void MakeBinTable_OffMsg() { g_bBinaryTable = FALSE; g_pGameApp->InitAllTable(); MPResourceSet* pResourceSet = new MPResourceSet(0, g_Config.m_nMaxResourceNum); pResourceSet->LoadRawDataInfo("scripts/table/ResourceInfo", g_bBinaryTable); //Информация об успешной компиляции MessageBox( NULL, g_oLangRec.GetString(193), "Info", 0 ); } И компилируем все это дело.. По итогу мы можем использовать 2 .bat файла. Первый вида: start system\Game.exe startgame table_bin Он работает, как все привыкли. Много MessageBox-ов о ненахождении файлов. Или же строки с другим параметром: start system\Game.exe startgame tab_bin_offmsg
  6. Update: 1. Немного изменил комментарии; 2. Убрал пару лишних строк из кода. Спасибо за помощь людям с сообщества)
  7. Пока в разработке. Мб гит сделаю
  8. Совсем забыл. В файле UIHeadSay.cpp сверху нужно добавить: #include "ItemRecord.h"
  9. [Исходники] Медали (ожерелья) со званиями Всем привет. Тема основана на Моде от @V3ct0r по ссылке Моды.. Это, конечно, интересно.. Но, думаю всем любопытно, как это реализовать на исходных файлах клиента, которые уже доступны несколько лет. Итак, открыв мод, мы видим 2 функции: inline void SetPreName( const int n_item, char* sz_name, DWORD& dw_color ) и // void CHeadSay::Render(D3DXVECTOR3& pos) Ищем тоже самое в своих исходниках и пинаем их.. У меня знаний плюсов 0,00000.....0001%, поэтому мб код не очень красивый, но все работает. То есть перекрутить его на исходники я смог) Итак. Ниже представлена функция SetPreName inline void SetPreName( int nItem, char* szName, DWORD& dwColor ) { static DWORD cha_id = 0; // Узнаем информацию о предмете CItemRecord* pInfo = GetItemRecordInfo( nItem ); DWORD COLOR_SKYBLUE = D3DCOLOR_ARGB(255, 168, 168, 255); // Если найден предмет if (nItem != 0) { // Если вещь существует в ItemInfo.txt if (!pInfo == 0) { // Узнаем тип предмета const unsigned short int type = pInfo->sType; // Если это ожерелье(25 тип) if (type == 25) { // Читаем цвет из ItemInfo.txt в столбце модели ланса const char* rgb = pInfo->chModule[1]; // Узнаем титул(столбец комментария) const char* title = pInfo->szDescriptor; // Конвертируем строку RGB цвета в 16-значное число const unsigned long color = strtoul(rgb, 0, 16); // Проверяем, что цвет и титул имеют место быть)) if (color != 0 && strlen(title) > 0) { // Устанавливаем титул strcpy( szName, title ); // Устанавливаем цвет dwColor = color; // Завершаем работу функции return; } switch( nItem ) { case 3936: strcpy( szName, g_oLangRec.GetString(7) ); dwColor = D3DCOLOR_ARGB(255,192,192,192); return; case 3937: strcpy( szName, g_oLangRec.GetString(8) ); dwColor = D3DCOLOR_ARGB(255,000,255,012); return; case 3938: strcpy( szName, g_oLangRec.GetString(9) ); dwColor = D3DCOLOR_ARGB(255,217,255,119); return; case 3939: strcpy( szName, g_oLangRec.GetString(10) ); dwColor = D3DCOLOR_ARGB(255,070,182,240); return; case 3940: strcpy( szName, g_oLangRec.GetString(11) ); dwColor = D3DCOLOR_ARGB(255,255,207,000); return; case 3941: strcpy( szName, g_oLangRec.GetString(12) ); dwColor = D3DCOLOR_ARGB(255,255,000,000); return; case 3942: strcpy( szName, g_oLangRec.GetString(13) ); dwColor = D3DCOLOR_ARGB(255,241,014,240); return; case 5331: strcpy( szName, g_oLangRec.GetString(922) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,192,192,192); return; case 5332: strcpy( szName, g_oLangRec.GetString(923) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,135,135,135); return; case 5333: strcpy( szName, g_oLangRec.GetString(924) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,255,255,255); return; case 5334: strcpy( szName, g_oLangRec.GetString(925) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,070,182,240); return; case 5335: strcpy( szName, g_oLangRec.GetString(926) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,000,255,012); return; case 5336: strcpy( szName, g_oLangRec.GetString(927) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,217,255,119); return; case 5337: strcpy( szName, g_oLangRec.GetString(928) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,255,207,000); return; case 5338: strcpy( szName, g_oLangRec.GetString(929) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,255,127,000); return; case 5339: strcpy( szName, g_oLangRec.GetString(930) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,255,000,000); return; case 5340: strcpy( szName, g_oLangRec.GetString(931) ); dwColor = COLOR_SKYBLUE; return;//D3DCOLOR_ARGB(255,241,014,240); return; // TOM?? case 822: strcpy( szName, g_oLangRec.GetString(14) ); dwColor = D3DCOLOR_ARGB(255,255,000,000); return; // ???? case 823: strcpy( szName, g_oLangRec.GetString(15) ); dwColor = D3DCOLOR_ARGB(255,241,014,240); return; // ???? case 7238: strcpy( szName, "Developer" ); dwColor = D3DCOLOR_ARGB(255,5,153,252); return; default: szName[0] = '\0'; } } } } } Теперь находим строку во второй функции: s_dwNamePartsColors[NAME_INDEX][0] = _dwNameColor; И перед ней вставляем: // Узнаем информацию о персонаже const stNetChangeChaPart part = _pOwn->GetPart(); // Узнаем ID ожерелья int neck_id = part.SLink[enumEQUIP_NECK].sID; // Если ID ожерелья нашли, то.. if (neck_id != NULL) { // Узнаем информацию об ожерелье в ItemInfo.txt CItemRecord* item = GetItemRecordInfo(neck_id); // Если предмет найден в ItemInfo.txt if (item != 0) { // Узнаем Цвет Имени на месте модели Карциза const char* szColorName = item->chModule[2]; // Проверяем цвет на наличие if (std::strcmp(szColorName, "0") != 0) { //Дефолтный цвет ника unsigned int color = 0xFFFFFFFF; //Конвертируем цвет из ItemInfo color = std::strtoul(szColorName, 0, 16); // Устанавливаем цвет ника _dwNameColor = color; } } } Итог: P.S. надеюсь таких тем будет побольше, т.к. это все не так просто, как кажется и в одного понимать тяжело)) Также.. Надеюсь, что хоть кому-то помог)
  10. Today will start add multi-language and fix correct encoding ItemInfo.txt + Add some moments, which advised V3ctor. ------------------------------------------------ Сегодня начну дорабатывать программу, в частности определение кодировки(будет зависеть от выбранного языка программы) + Исправлять моменты, которые посоветовал Виктор.
  11. Yes, i will do multi-language, but later)
  12. Сейчас немного углубился в свой проект. Чуть позже доработаю программу и сделаю мульти-язык. Спасибо)
  13. И это нужно будет менять не только в 1 месте.. Поэтому и говорю, проще использовать самоцветы с меньшим значением)
×
×
  • Create New...