Rolex , просмотрите плагин/мод adfontes. В нём половина вашей работы уже сделана.
Спасибо. Видел когда-то этот мод. Видите ли там уж слишком много изменений:
Была усилена куча различных навыков, заклинаний и существ - этот пункт настолько масштабен, что очень трудно будет описать его всего парой строк
Существ, по-моему, лучше вообще не трогать. А с некоторыми навыками и заклами тоже очень спорно. И если тебя что-то не устраивает, то приходится с этим мирится, ибо изменить это без правки исходников нет возможности.
Именно поэтому мне больше по душе чистый SoD/Complete с некоторыми подключаемыми плагинами. Это очень удобно. Сам решаешь, какие изменения/исправления/дополнения тебе нужны и подключаешь необходимый плагин.
В этом плане мне нравится SOD_SP от RoseKavalier. Любое исправление/дополнение можно быстро отключить и настроить все под себя через менюшку самого плагина.
Кстати, по-моему, вроде как вы помогали RoseKavalier в переводе SOD_SP на русский язык. Я писал ранее, там в SOD_SP есть ошибка в русском переводе. Было бы неплохо исправить это в новой версии плагина.
При отображении возможного количества убитых существ при показе возможного урона пишет:
(убьет X из Y).
Что соответствует (kills X out of Y). Хотя убивает обычно больше X. Проблема в самом переводе на русский. В английской версии все верно (kills X to Y). Правильней было бы выводить:
(убьет от X до Y)
А еще лучше, как в HotA:
(убьет: X-Y)
* * *Еще есть несколько мелких хотелок, которые бы хотелось сделать.
1. Можно ли сделать окно просмотра героя на пользовательских картах таким же, как и на рандомных?
скрин 2. Есть плагин, где ПКМ по монстрам на карте дает расширенную информацию о них. Вроде, код igrika, хотя не уверен. Он же встроен в Ad Fontes.
скрин - Код: Выделить всё
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include "patcher_x86.hpp"
#include "homm3.h"
Patcher* _P;
PatcherInstance* _PI;
static _bool_ plugin_On = 0;
_bool_ isRusLng;
int __stdcall Y_LoadAllTXTinGames(LoHook* h, HookContext* c)
{
if (o_CreatureInfo[0].name_single[0] != 'P') {
isRusLng = 1;
}
else {
isRusLng = 0;
}
return EXEC_DEFAULT;
}
int c_neu_rmb_id;
int __stdcall c_get_neu_rmb(LoHook* h, HookContext* c)
{
c_neu_rmb_id = c->esi;
return EXEC_DEFAULT;
}
int __stdcall c_neu_rmb_public(LoHook* h, HookContext* c)
{
int c_neu_lv = o_pCreatureInfo[c_neu_rmb_id].level + 1;
int c_neu_at = o_pCreatureInfo[c_neu_rmb_id].attack;
int c_neu_df = o_pCreatureInfo[c_neu_rmb_id].defence;
int c_neu_sp = o_pCreatureInfo[c_neu_rmb_id].speed;
int c_neu_hp = o_pCreatureInfo[c_neu_rmb_id].hit_points;
int c_neu_d1 = o_pCreatureInfo[c_neu_rmb_id].damage_min;
int c_neu_d2 = o_pCreatureInfo[c_neu_rmb_id].damage_max;
char* c_neu_ds = o_pCreatureInfo[c_neu_rmb_id].specification_description;
if (isRusLng == 1)
{
sprintf(o_TextBuffer, "%s\n\nУровень: {%d}, Атака: {%d}, Защита: {%d},\nЗдоровье: {%d}, Урон: {%d}-{%d}, Скорость: {%d}.\n\n\n%s", o_TextBuffer, c_neu_lv, c_neu_at, c_neu_df, c_neu_hp, c_neu_d1, c_neu_d2, c_neu_sp, c_neu_ds);
}
else
{
sprintf(o_TextBuffer, "%s\n\nLevel: {%d}, Attack: {%d}, Defense: {%d},\nHealth: {%d}, Damage: {%d}-{%d}, Speed: {%d}.\n\n\n%s", o_TextBuffer, c_neu_lv, c_neu_at, c_neu_df, c_neu_hp, c_neu_d1, c_neu_d2, c_neu_sp, c_neu_ds);
}
return EXEC_DEFAULT;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
if (DLL_PROCESS_ATTACH == ul_reason_for_call)
{
if (!plugin_On)
{
plugin_On = 1;
_P = GetPatcher();
_PI = _P->CreateInstance("HD.Plugin.AIValue");
// check language after loading all txt files
_PI->WriteLoHook(0x4EDFFD, Y_LoadAllTXTinGames);
// advanced rmb on neutrals
_PI->WriteLoHook(0x52FFEC, c_get_neu_rmb);
_PI->WriteLoHook(0x530020, c_neu_rmb_public);
_PI->WriteByte(0x530026, 120); // public y size
_PI->WriteByte(0x53002D, 100); // public y pos
_PI->WriteByte(0x530170, 217); // private y pos
}
}
return TRUE;
}
Так вот, если использовать ужатый шрифт, который использует Ad Fontes, то вроде норм. А вот если взять шрифт из Хота, который более читабелен, но менее вместительный, то уже под описание всего 2 строки и все печально.
Можно ли под описание абилки в это окно добавить еще пару строк, например. Если да, то как?
3. При посещении банков существ выводить информацию об их охране (именно в момент посещения и вывода окна Хотите сразится...).
скрины 4. Показ доступных для найма существ в внешних жилищах и Лагерях беженцев (по клику правой кнопкой мыши)
скрины 5. Инфо о стоимости улучшения существ (по клику правой кнопкой мыши или при наведении на кнопку апгрейда).
скрины