mirror of
https://github.com/whoahq/whoa.git
synced 2026-03-19 14:11:06 +03:00
Compare commits
9 Commits
aa22dd952a
...
315ea05ba0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
315ea05ba0 | ||
|
|
a53e1360a4 | ||
|
|
cfb8f2bae1 | ||
|
|
ed9c683602 | ||
|
|
ee48e47992 | ||
|
|
5d81022c74 | ||
|
|
c9f26b6666 | ||
|
|
f567a3a7c8 | ||
|
|
aac8cf0855 |
@ -36,6 +36,14 @@ OBJECT_TYPE_ID CGObject::GetTypeID() const {
|
|||||||
return this->m_typeID;
|
return this->m_typeID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t CGObject::IsA(OBJECT_TYPE type) const {
|
||||||
|
return (this->GetType() & type) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t CGObject::IsExactlyA(OBJECT_TYPE_ID typeID) const {
|
||||||
|
return this->m_typeID == typeID;
|
||||||
|
}
|
||||||
|
|
||||||
CGObjectData* CGObject::Obj() const {
|
CGObjectData* CGObject::Obj() const {
|
||||||
return this->m_obj;
|
return this->m_obj;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,6 +31,8 @@ class CGObject {
|
|||||||
WOWGUID GetGUID() const;
|
WOWGUID GetGUID() const;
|
||||||
OBJECT_TYPE GetType() const;
|
OBJECT_TYPE GetType() const;
|
||||||
OBJECT_TYPE_ID GetTypeID() const;
|
OBJECT_TYPE_ID GetTypeID() const;
|
||||||
|
int32_t IsA(OBJECT_TYPE type) const;
|
||||||
|
int32_t IsExactlyA(OBJECT_TYPE_ID typeID) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Protected member variables
|
// Protected member variables
|
||||||
|
|||||||
@ -41,6 +41,14 @@ uint32_t CGPlayer::TotalRemoteFieldsSaved() {
|
|||||||
return CGPlayer::GetBaseOffsetSaved() + 173;
|
return CGPlayer::GetBaseOffsetSaved() + 173;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t CGPlayer::GetNextLevelXP() const {
|
||||||
|
return this->Player()->nextLevelXP;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t CGPlayer::GetXP() const {
|
||||||
|
return this->Player()->xp;
|
||||||
|
}
|
||||||
|
|
||||||
CGPlayerData* CGPlayer::Player() const {
|
CGPlayerData* CGPlayer::Player() const {
|
||||||
return this->m_player;
|
return this->m_player;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -148,6 +148,10 @@ class CGPlayer {
|
|||||||
static uint32_t TotalFieldsSaved();
|
static uint32_t TotalFieldsSaved();
|
||||||
static uint32_t TotalRemoteFieldsSaved();
|
static uint32_t TotalRemoteFieldsSaved();
|
||||||
|
|
||||||
|
// Public member functions
|
||||||
|
uint32_t GetNextLevelXP() const;
|
||||||
|
uint32_t GetXP() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Protected member variables
|
// Protected member variables
|
||||||
CGPlayerData* m_player;
|
CGPlayerData* m_player;
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
#include "object/client/CGPlayer_C.hpp"
|
#include "object/client/CGPlayer_C.hpp"
|
||||||
#include "db/Db.hpp"
|
#include "db/Db.hpp"
|
||||||
|
#include "object/client/ObjMgr.hpp"
|
||||||
#include "object/Types.hpp"
|
#include "object/Types.hpp"
|
||||||
#include <storm/Error.hpp>
|
#include <storm/Error.hpp>
|
||||||
|
|
||||||
@ -11,6 +12,22 @@ CGPlayer_C::~CGPlayer_C() {
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t CGPlayer_C::GetActiveNextLevelXP() const {
|
||||||
|
if (this->GetGUID() != ClntObjMgrGetActivePlayer()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this->GetNextLevelXP();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t CGPlayer_C::GetActiveXP() const {
|
||||||
|
if (this->GetGUID() != ClntObjMgrGetActivePlayer()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this->GetXP();
|
||||||
|
}
|
||||||
|
|
||||||
void CGPlayer_C::PostInit(uint32_t time, const CClientObjCreate& init, bool a4) {
|
void CGPlayer_C::PostInit(uint32_t time, const CClientObjCreate& init, bool a4) {
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,8 @@ class CGPlayer_C : public CGUnit_C, public CGPlayer {
|
|||||||
|
|
||||||
// Public member functions
|
// Public member functions
|
||||||
CGPlayer_C(uint32_t time, CClientObjCreate& objCreate);
|
CGPlayer_C(uint32_t time, CClientObjCreate& objCreate);
|
||||||
|
uint32_t GetActiveNextLevelXP() const;
|
||||||
|
uint32_t GetActiveXP() const;
|
||||||
void PostInit(uint32_t time, const CClientObjCreate& init, bool a4);
|
void PostInit(uint32_t time, const CClientObjCreate& init, bool a4);
|
||||||
void SetStorage(uint32_t* storage, uint32_t* saved);
|
void SetStorage(uint32_t* storage, uint32_t* saved);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -173,11 +173,43 @@ int32_t Script_UnitPVPName(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t Script_UnitXP(lua_State* L) {
|
int32_t Script_UnitXP(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
if (!lua_isstring(L, 1)) {
|
||||||
|
luaL_error(L, "Usage: UnitXP(\"unit\")");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto name = lua_tostring(L, 1);
|
||||||
|
auto unit = Script_GetUnitFromName(name);
|
||||||
|
|
||||||
|
float xp = 0.0f;
|
||||||
|
|
||||||
|
if (unit && unit->IsA(TYPE_PLAYER)) {
|
||||||
|
xp = static_cast<CGPlayer_C*>(unit)->GetActiveXP();
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_pushnumber(L, xp);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Script_UnitXPMax(lua_State* L) {
|
int32_t Script_UnitXPMax(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
if (!lua_isstring(L, 1)) {
|
||||||
|
luaL_error(L, "Usage: UnitXPMax(\"unit\")");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto name = lua_tostring(L, 1);
|
||||||
|
auto unit = Script_GetUnitFromName(name);
|
||||||
|
|
||||||
|
float xpMax = 0.0f;
|
||||||
|
|
||||||
|
if (unit && unit->IsA(TYPE_PLAYER)) {
|
||||||
|
xpMax = static_cast<CGPlayer_C*>(unit)->GetActiveNextLevelXP();
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_pushnumber(L, xpMax);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Script_UnitHealth(lua_State* L) {
|
int32_t Script_UnitHealth(lua_State* L) {
|
||||||
|
|||||||
@ -12,6 +12,16 @@ bool ParseTrailingTokens(const char* token, WOWGUID& guid, CGPlayer_C* player) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CGUnit_C* Script_GetUnitFromName(const char* name) {
|
||||||
|
WOWGUID guid;
|
||||||
|
|
||||||
|
if (!Script_GetGUIDFromToken(name, guid, false)) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return static_cast<CGUnit_C*>(ClntObjMgrObjectPtr(guid, TYPE_UNIT, __FILE__, __LINE__));
|
||||||
|
}
|
||||||
|
|
||||||
bool Script_GetGUIDFromString(const char*& token, WOWGUID& guid) {
|
bool Script_GetGUIDFromString(const char*& token, WOWGUID& guid) {
|
||||||
// TODO
|
// TODO
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@ -3,6 +3,10 @@
|
|||||||
|
|
||||||
#include "util/GUID.hpp"
|
#include "util/GUID.hpp"
|
||||||
|
|
||||||
|
class CGUnit_C;
|
||||||
|
|
||||||
|
CGUnit_C* Script_GetUnitFromName(const char* name);
|
||||||
|
|
||||||
bool Script_GetGUIDFromString(const char*& token, WOWGUID& guid);
|
bool Script_GetGUIDFromString(const char*& token, WOWGUID& guid);
|
||||||
|
|
||||||
bool Script_GetGUIDFromToken(const char* token, WOWGUID& guid, bool defaultToTarget);
|
bool Script_GetGUIDFromToken(const char* token, WOWGUID& guid, bool defaultToTarget);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user