
Сообщение от
decemberx
через комбатлог, ауры не развешать, кастбар не запилить, хп/мп неопределить.
PHP код:
#pragma once
#include "Spell.h"
class Aura {
public:
int pointer;
AuraRec entry;
Spell spell;
int id;
const char* name;
Aura(int addr) :pointer { addr } {
entry = *(AuraRec*)addr;
id = entry.AuraId;
spell = Spell(id);
name = spell.name;
}
int RemainingMilliSecs() {
int endTime = entry.EndTime;
return endTime == 0 ? 0 : endTime - PerformanceCount();
}
bool IsValid() { return id != 0 && RemainingMilliSecs() >= 0; }
uint64 CasterGuid() { return entry.CreatorGuid; }
};
PHP код:
void ReadAuras() {
if (auras_readed)
return;
int idx = addr + 0xC50;
int count = *(int*)(addr + 0xDD0);
if (count == -1) {
idx = *(int*)(addr + 0xC58);
count = *(int*)(addr + 0xC54);
}
for (int i = 0; i < count; ++i) {
Aura* aura{ new Aura(idx + 24 * i) };
if (aura->IsValid()
&& aura->name != ""
&& std::none_of(std::begin(auras), std::end(auras), [&](Aura* a) { return strcmp(a->name, aura->name) == 0; })) {
printf("id = %d\n", aura->id);
auras.push_back(aura);
}
}
auras_readed = true;
return;
}
Вроде робит, осталось только в стэк луа просунуть, addr получается из луа штата т.е это штат + смещение от базы игрока (player)