Merge pull request #446 from KinglyKrab/master

Added $client->GetMoney(type, subtype) to Perl/Lua.
This commit is contained in:
Akkadius 2015-08-01 21:28:35 -05:00
commit 4106251497
5 changed files with 116 additions and 1 deletions

View File

@ -8592,3 +8592,79 @@ void Client::SendHPUpdateMarquee(){
std::string health_update_notification = StringFormat("Health: %u%%", health_percentage);
this->SendMarqueeMessage(15, 510, 0, 3000, 3000, health_update_notification);
}
uint32 Client::GetMoney(uint8 type, uint8 subtype) {
uint32 value = 0;
switch (type) {
case 0: {
switch (subtype) {
case 0:
value = static_cast<uint32>(m_pp.copper);
break;
case 1:
value = static_cast<uint32>(m_pp.copper_bank);
break;
case 2:
value = static_cast<uint32>(m_pp.copper_cursor);
break;
default:
break;
}
break;
}
case 1: {
switch (subtype) {
case 0:
value = static_cast<uint32>(m_pp.silver);
break;
case 1:
value = static_cast<uint32>(m_pp.silver_bank);
break;
case 2:
value = static_cast<uint32>(m_pp.silver_cursor);
break;
default:
break;
}
break;
}
case 2: {
switch (subtype) {
case 0:
value = static_cast<uint32>(m_pp.gold);
break;
case 1:
value = static_cast<uint32>(m_pp.gold_bank);
break;
case 2:
value = static_cast<uint32>(m_pp.gold_cursor);
break;
default:
break;
}
break;
}
case 3: {
switch (subtype) {
case 0:
value = static_cast<uint32>(m_pp.platinum);
break;
case 1:
value = static_cast<uint32>(m_pp.platinum_bank);
break;
case 2:
value = static_cast<uint32>(m_pp.platinum_cursor);
break;
case 3:
value = static_cast<uint32>(m_pp.platinum_shared);
break;
default:
break;
}
break;
}
default:
break;
}
return value;
}

View File

@ -663,6 +663,7 @@ public:
bool HasMoney(uint64 copper);
uint64 GetCarriedMoney();
uint64 GetAllMoney();
uint32 GetMoney(uint8 type, uint8 subtype);
bool IsDiscovered(uint32 itemid);
void DiscoverItem(uint32 itemid);

View File

@ -1315,6 +1315,11 @@ void Lua_Client::QuestReward(Lua_Mob target, uint32 copper, uint32 silver, uint3
self->QuestReward(target, copper, silver, gold, platinum, itemid, exp, faction);
}
uint32 Lua_Client::GetMoney(uint8 type, uint8 subtype) {
Lua_Safe_Call_Int();
return self->GetMoney(type, subtype);
}
luabind::scope lua_register_client() {
return luabind::class_<Lua_Client, Lua_Mob>("Client")
.def(luabind::constructor<>())
@ -1576,7 +1581,8 @@ luabind::scope lua_register_client() {
.def("QuestReward", (void(Lua_Client::*)(Lua_Mob, uint32, uint32, uint32, uint32))&Lua_Client::QuestReward)
.def("QuestReward", (void(Lua_Client::*)(Lua_Mob, uint32, uint32, uint32, uint32, uint32))&Lua_Client::QuestReward)
.def("QuestReward", (void(Lua_Client::*)(Lua_Mob, uint32, uint32, uint32, uint32, uint32, uint32))&Lua_Client::QuestReward)
.def("QuestReward", (void(Lua_Client::*)(Lua_Mob, uint32, uint32, uint32, uint32, uint32, uint32, bool))&Lua_Client::QuestReward);
.def("QuestReward", (void(Lua_Client::*)(Lua_Mob, uint32, uint32, uint32, uint32, uint32, uint32, bool))&Lua_Client::QuestReward)
.def("GetMoney", (uint32(Lua_Client::*)(uint8, uint8))&Lua_Client::GetMoney);
}
luabind::scope lua_register_inventory_where() {

View File

@ -256,6 +256,7 @@ public:
int GetAggroCount();
uint64 GetCarriedMoney();
uint64 GetAllMoney();
uint32 GetMoney(uint8 type, uint8 subtype);
void OpenLFGuildWindow();
void Signal(uint32 id);
void AddAlternateCurrencyValue(uint32 currency, int amount);

View File

@ -6280,6 +6280,36 @@ XS(XS_Client_QuestReward)
XSRETURN_EMPTY;
}
XS(XS_Client_GetMoney);
XS(XS_Client_GetMoney)
{
dXSARGS;
if (items != 3)
Perl_croak(aTHX_ "Usage: GetMoney(THIS, type, subtype)");
{
Client* THIS;
uint32 RETVAL;
uint8 type = (uint8)SvUV(ST(1));
uint8 subtype = (uint8)SvUV(ST(2));
dXSTARG;
if (sv_derived_from(ST(0), "Client")) {
IV tmp = SvIV((SV*)SvRV(ST(0)));
THIS = INT2PTR(Client *,tmp);
}
else
Perl_croak(aTHX_ "THIS is not of type Client");
if(THIS == nullptr)
Perl_croak(aTHX_ "THIS is nullptr, avoiding crash.");
RETVAL = THIS->GetMoney(type, subtype);
XSprePUSH; PUSHn((uint32)RETVAL);
}
XSRETURN(1);
}
#ifdef __cplusplus
extern "C"
#endif
@ -6527,6 +6557,7 @@ XS(boot_Client)
newXSproto(strcpy(buf, "GetTargetRingZ"), XS_Client_GetTargetRingZ, file, "$$");
newXSproto(strcpy(buf, "QuestReward"), XS_Client_QuestReward, file, "$$;$$$$$$$");
newXSproto(strcpy(buf, "CalcEXP"), XS_Client_CalcEXP, file, "$");
newXSproto(strcpy(buf, "GetMoney"), XS_Client_GetMoney, file, "$$$");
XSRETURN_YES;
}