Berserker
Posts: 16657
|
|
01.11.2020 02:01 |
|
Berserker
Posts: 16657
|
|
01.11.2020 02:40 |
|
Berserker
Posts: 16657
|
|
01.11.2020 03:21 |
|
SergOz
Posts: 1315
|
Возможно ли сделать так, чтобы в бою с нейтралами можно было откупиться и сохранить армию?
Если да, то подскажите, плиз, как это сделать.
Карта-мод "Война на Холсте"
|
|
01.11.2020 19:09 |
|
Valery
Posts: 2196
|
Are ghosts hardcoded of I forgot everything about flags?
Trying to make ghosts alive, tried removing undead flag then adding alive, nothing works
*Remove Ghosts undead flag
Code:
!!MA:X159/?k; save abilities in k
!*VRj:Sk &262144*-1; check for undead ability;
!*VRk:+j; remove
!*MA:X159/k;
or/and
!!VRk:|16; add alive
!!MA:X159/k;
(This post was last modified: 02.11.2020 19:10 by Valery.)
|
|
02.11.2020 19:09 |
|
igrik
Posts: 2819
|
|
02.11.2020 19:17 |
|
Valery
Posts: 2196
|
ok, so it means it worked but something strange, after script ghosts aren't still affected by curse, how can I solve that. Curse should work if undead flag is removed, no?
@Edit: ah ok, they had immunity fire flag also
Solved,thanks
(This post was last modified: 02.11.2020 19:44 by Valery.)
|
|
02.11.2020 19:20 |
|
igrik
Posts: 2819
|
(01.11.2020 19:09)SergOz Wrote: Возможно ли сделать так, чтобы в бою с нейтралами можно было откупиться и сохранить армию?
Если да, то подскажите, плиз, как это сделать.
На ERM это технически сложно сделать.
Я делал когда-то (уже не помню кому и зачем. Вроде Армагу(стример такой) и вроде на SoD), да и то плагином.
Code:
_bool_ isRunAwayOfMonstre = false;
int __stdcall Y_RunAwayOfMonstreQ(LoHook* h, HookContext* c)
{
_BattleMgr_* bm = o_BattleMgr;
*(int*)0x695080 = c->eax; // сохраняем кол-во денег для уплаты выкупа
char* name; // будет хранить имя героя или монстра
isRunAwayOfMonstre = false; // переменная от кого сбегает герой (false == от героя противника, true == от монстра)
if(!bm->hero[1] && bm->current_side == 0) {
int cr_id = 149; // если в описании будет указана Стрелковая Башня, то есть ошибка в нижеидущем цикле
int value = 0;
for (int i=0; i<20; i++) {
if (bm->stack[1][i].creature_id != -1 && bm->stack[1][i].creature_id != 149 && bm->stack[1][i].count_current > 0) {
if (bm->stack[1][i].creature.AI_value > value) { // вычисляем наилучший живой стек у нейтралов (если есть улучшенный стек)
cr_id = bm->stack[1][i].creature_id;
value = bm->stack[1][i].creature.AI_value;
// break;
}
}
}
name = o_pCreatureInfo[cr_id].name_single;
isRunAwayOfMonstre = true;
} else {
name = bm->hero[1 - bm->current_side]->name;
}
sprintf(o_TextBuffer, o_GENRLTXT_TXT->GetString(34), name, c->eax);
c->return_address = 0x4749EB;
return NO_EXEC_DEFAULT;
}
int __stdcall Y_RunAwayOfMonstreBG(LoHook* h, HookContext* c)
{
// если герой сбегает за плату от нейтралов
// то пропускаем код передачи денег другому игроку
// при этом вычет денег у сбегающего игрока действует
if (isRunAwayOfMonstre) {
c->return_address = 0x478FA1;
return NO_EXEC_DEFAULT;
}
return EXEC_DEFAULT;
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
static _bool_ plugin_On = 0;
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
if (!plugin_On)
{
plugin_On = 1;
_P = GetPatcher();
_PI = _P->CreateInstance("FixForArmaggame");
// делаем откуп в бою с нейтралами
_PI->WriteCodePatch(0x477EA9, "%n", 12);
_PI->WriteLoHook(0x4749B4, Y_RunAwayOfMonstreQ);
_PI->WriteHexPatch(0x478F77, "8918 BA 2B150000"); // меняем местами 2 инструкции кода, чтобы корректно устновить хук и сохранить код вычета денег при сбегании
_PI->WriteLoHook(0x478F77+2, Y_RunAwayOfMonstreBG);
}
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
game bug fixes extended.dll || My Plugins || My GitHub
|
|
02.11.2020 19:42 |
|
igrik
Posts: 2819
|
(02.11.2020 19:20)Valery Wrote: ok, so it means it worked but something strange, after script ghosts aren't still affected by curse, how can I solve that. Curse should work if undead flag is removed, no?
@Edit: ah ok, they had immunity fire flag also
Solved,thanks
Yes)) 1024 Иммунитет к заклинаниям разума (вроде Печали, Бешенства, т.п.)
Code:
{-1,2,"wrth","ZM159G.def",0x00024402}, // 159 Ghost
2, 1024, 16384, 131072
Но они не нежить!!!!!!!! Они не имеют флага 262144
game bug fixes extended.dll || My Plugins || My GitHub
|
|
02.11.2020 19:49 |
|
Valery
Posts: 2196
|
Strange. Curse is not mind spell, so removing their fire immunity solved the thing. Nasty ghosts
|
|
02.11.2020 20:02 |
|