Kubix! Опубликовано 18 мая, 2015 Жалоба Поделиться Опубликовано 18 мая, 2015 Привет, есть вопрос по quest.c В общем, когда у игрока есть квест на убийство несколько монстров, то в анонс высвечивается только последний (при убийстве) Т.е. берем квест: Убить 20 Vanberk и 20 Isilla. Убиваем одну Isilla, в анонс высвечивается - "Isilla [1/20]". Убиваем одного Vanberk в анонс высвечивается тоже самое, "Isilla [1/20]". Но при нажатии alt+u отображается нормально. Можно как-то в анонс пихнуть всех монстров. Т.е. чтоб писало "Vanberk - [1/20] Isilla [1/20]" Нашел такой кусок в quest.c, но сам не додумался как это сделать. Может кто помочь ?) В долгу не останусь void quest_update_objective(TBL_PC *sd, int mob){int i, j;for( i = 0; i < sd->avail_quests; i++ ) { struct quest_db *qi = NULL; if( sd->quest_log[i].state != Q_ACTIVE ) // Skip inactive quests continue; qi = quest_search(sd->quest_log[i].quest_id); for( j = 0; j < qi->num_objectives; j++ ) { if( qi->mob[j] == mob && sd->quest_log[i].count[j] < qi->count[j] ) { sd->quest_log[i].count[j]++; sd->save_quest = true; clif_quest_update_objective(sd, &sd->quest_log[i]); } }}} Ссылка на комментарий Поделиться на другие сайты Поделиться
Functor Опубликовано 19 мая, 2015 Жалоба Поделиться Опубликовано 19 мая, 2015 Дело в том, что сервер не генерирует строку, а только посылает данные клиенту. А клиент обновляет информацию в окне и показывает уведомление. Чтобы реализовать идею, необходимо: - хексить EXE для отключения стандартного уведомления - дописать код сервера, который будет генерировать строку и отображать ее с помощью clif_broadcast Какой EXE используете? Подскажу место для патча. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 19 мая, 2015 Автор Жалоба Поделиться Опубликовано 19 мая, 2015 20130807 Ссылка на комментарий Поделиться на другие сайты Поделиться
Functor Опубликовано 19 мая, 2015 Жалоба Поделиться Опубликовано 19 мая, 2015 Открываем ../src/map/clif.c и в конце тела функции clif_quest_update_objective добавляем: if (qi->num_objectives > 0) { char broadcast_str[CHAT_SIZE_MAX]; for (i = 0, len = 0; i < qi->num_objectives; ++i) { struct mob_db* mob = mob_db(qi->mob[i]); char* delimiter = ((i == 0) ? "" : " "); len += sprintf(&broadcast_str[len], "%s%s [ %d / %d ]", delimiter, mob->name, qd->count[i], qi->count[i]); } clif_broadcast(&sd->bl, broadcast_str, (len + 1), BC_DEFAULT, SELF); }offset 4107E2 меняем 56 8D 47 08 66 на EB 16 90 90 66Если не сойдутся изначальные байты, то попробуйте найти offset поиском или выложите EXE. 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 19 мая, 2015 Автор Жалоба Поделиться Опубликовано 19 мая, 2015 (изменено) Два чая этому господину. Щас винда установится пойду проверять.EXE. В общем, появились проблемы xD Уведомления отключились, но многое перестало работать) Изменено 19 мая, 2015 пользователем Kubix Ссылка на комментарий Поделиться на другие сайты Поделиться
Functor Опубликовано 19 мая, 2015 Жалоба Поделиться Опубликовано 19 мая, 2015 http://www.mediafire.com/download/b632ccu43d335p4Пробуйте. Если что-то перестало работать - опишите, что именно. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 19 мая, 2015 Автор Жалоба Поделиться Опубликовано 19 мая, 2015 http://www.mediafire...b632ccu43d335p4Пробуйте. Если что-то перестало работать - опишите, что именно.Ну тех проблем которые были когда я хексил теперь нет. Осталась одна проблема, при входе в игру выписывает:http://gyazo.com/f13070126327eb110308a1da7801b893 Ссылка на комментарий Поделиться на другие сайты Поделиться
Functor Опубликовано 19 мая, 2015 Жалоба Поделиться Опубликовано 19 мая, 2015 Обновил код в посте #4. Теперь все ОК. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения