1. Что-то типа (с указанием героя, конечно)
Code:
Era::ExecErmCmd("HE:A2/131/?v1/?v1;");
if (Era::v[1]>0) ...
2. Выдержка из исходников Вога:
Code:
void IsTroll(void)
{
__asm{
mov IT_Mon,esi
mov edx,50 // умолчательное восстановление здоровья
mov IT_Edx,edx
cmp eax,0x3C
je l_Ok
cmp eax,0x3D
je l_Ok
cmp eax,0x90
je l_Ok
cmp eax,157 // гидра
je l_Ok_check
// jmp l_Exit
pusha
}
__asm mov IDummy,eax
#include "templ.h"
IT_Ret=CanNPCRegenerate(IDummy,IT_Mon);
if(IT_Ret!=-1){
IT_Ret=CrExpBon::Regenerate(IT_Mon,*(int *)&IT_Mon[0x58]);
if(IT_Ret==0){ // no reg
IT_Ret=0;
}else{ // yes
IT_Edx=IT_Ret;
IT_Ret=-1;
}
}
STOP
__asm{
popa
mov eax,IT_Ret
// je _Ok_check
jmp l_Exit
}
l_Ok_check:
CalcRand100();
__asm{
cmp eax,40 // 40%
ja l_Exit
}
l_Ok:
__asm mov eax,-1
l_Exit:
__asm mov edx,IT_Edx
}
Это та функция, что перезаписывается по 0x446BD6.
CrExpBon::Regenerate - это стандартная регенерация от опыта.