mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
[Quest API] Add AddPlatinum(), GetCarriedPlatinum() and TakePlatinum() to Perl/Lua. (#2079)
* [Quest API] Add AddPlatinum(), GetCarriedPlatinum() and TakePlatinum() to Perl/Lua. - Allows for easier NPC interactions. - GetCarriedPlatinum() adds together all currencies in inventory based on conversion amounts so it works easily with removals/checks. - Add $client->AddPlatinum(platinum, update_client) to Perl. - Add $client->GetCarriedPlatinum() to Perl. - Add $client->TakePlatinum(platinum, update_client) to Perl. - Add client:AddPlatinum(platinum, update_client) to Lua. - Add client:GetCarriedPlatinum() to Lua. - Add client:TakePlatinum(platinum, update_client) to Lua. * Formatting.
This commit is contained in:
parent
b1311780a7
commit
1b7c12297d
271
zone/client.cpp
271
zone/client.cpp
@ -2170,78 +2170,84 @@ void Client::QuestReadBook(const char* text, uint8 type) {
|
||||
}
|
||||
}
|
||||
|
||||
void Client::SendClientMoneyUpdate(uint8 type,uint32 amount){
|
||||
auto outapp = new EQApplicationPacket(OP_TradeMoneyUpdate, sizeof(TradeMoneyUpdate_Struct));
|
||||
TradeMoneyUpdate_Struct* mus= (TradeMoneyUpdate_Struct*)outapp->pBuffer;
|
||||
mus->amount=amount;
|
||||
mus->trader=0;
|
||||
mus->type=type;
|
||||
QueuePacket(outapp);
|
||||
safe_delete(outapp);
|
||||
uint32 Client::GetCarriedPlatinum() {
|
||||
return (
|
||||
GetMoney(3, 0) +
|
||||
(GetMoney(2, 0) / 10) +
|
||||
(GetMoney(1, 0) / 100) +
|
||||
(GetMoney(0, 0) / 1000)
|
||||
);
|
||||
}
|
||||
|
||||
bool Client::TakeMoneyFromPP(uint64 copper, bool updateclient) {
|
||||
int64 copperpp,silver,gold,platinum;
|
||||
copperpp = m_pp.copper;
|
||||
bool Client::TakePlatinum(uint32 platinum, bool update_client) {
|
||||
if (GetCarriedPlatinum() >= platinum) {
|
||||
auto copper = static_cast<uint64>(platinum * 1000);
|
||||
return TakeMoneyFromPP(copper, update_client);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Client::TakeMoneyFromPP(uint64 copper, bool update_client) {
|
||||
int64 player_copper, silver, gold, platinum;
|
||||
player_copper = m_pp.copper;
|
||||
silver = static_cast<int64>(m_pp.silver) * 10;
|
||||
gold = static_cast<int64>(m_pp.gold) * 100;
|
||||
platinum = static_cast<int64>(m_pp.platinum) * 1000;
|
||||
|
||||
int64 clienttotal = copperpp + silver + gold + platinum;
|
||||
int64 client_total = player_copper + silver + gold + platinum;
|
||||
|
||||
clienttotal -= copper;
|
||||
if(clienttotal < 0)
|
||||
{
|
||||
client_total -= copper;
|
||||
if (client_total < 0) {
|
||||
return false; // Not enough money!
|
||||
}
|
||||
else
|
||||
{
|
||||
copperpp -= copper;
|
||||
if(copperpp <= 0)
|
||||
{
|
||||
copper = std::abs(copperpp);
|
||||
} else {
|
||||
player_copper -= copper;
|
||||
if(player_copper <= 0) {
|
||||
copper = std::abs(player_copper);
|
||||
m_pp.copper = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pp.copper = copperpp;
|
||||
if(updateclient)
|
||||
} else {
|
||||
m_pp.copper = player_copper;
|
||||
|
||||
if (update_client) {
|
||||
SendMoneyUpdate();
|
||||
}
|
||||
|
||||
SaveCurrency();
|
||||
return true;
|
||||
}
|
||||
|
||||
silver -= copper;
|
||||
if(silver <= 0)
|
||||
{
|
||||
if (silver <= 0) {
|
||||
copper = std::abs(silver);
|
||||
m_pp.silver = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pp.silver = silver/10;
|
||||
m_pp.copper += (silver-(m_pp.silver*10));
|
||||
if(updateclient)
|
||||
} else {
|
||||
m_pp.silver = silver / 10;
|
||||
m_pp.copper += (silver - (m_pp.silver * 10));
|
||||
|
||||
if (update_client) {
|
||||
SendMoneyUpdate();
|
||||
}
|
||||
|
||||
SaveCurrency();
|
||||
return true;
|
||||
}
|
||||
|
||||
gold -=copper;
|
||||
|
||||
if(gold <= 0)
|
||||
{
|
||||
if (gold <= 0) {
|
||||
copper = std::abs(gold);
|
||||
m_pp.gold = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pp.gold = gold/100;
|
||||
uint64 silvertest = (gold-(static_cast<uint64>(m_pp.gold)*100))/10;
|
||||
m_pp.silver += silvertest;
|
||||
uint64 coppertest = (gold-(static_cast<uint64>(m_pp.gold)*100+silvertest*10));
|
||||
m_pp.copper += coppertest;
|
||||
if(updateclient)
|
||||
} else {
|
||||
m_pp.gold = gold / 100;
|
||||
uint64 silver_test = (gold - (static_cast<uint64>(m_pp.gold) * 100)) / 10;
|
||||
m_pp.silver += silver_test;
|
||||
uint64 copper_test = (gold - (static_cast<uint64>(m_pp.gold) * 100 + silver_test * 10));
|
||||
m_pp.copper += copper_test;
|
||||
|
||||
if (update_client) {
|
||||
SendMoneyUpdate();
|
||||
}
|
||||
|
||||
SaveCurrency();
|
||||
return true;
|
||||
}
|
||||
@ -2250,74 +2256,84 @@ bool Client::TakeMoneyFromPP(uint64 copper, bool updateclient) {
|
||||
|
||||
//Impossible for plat to be negative, already checked above
|
||||
|
||||
m_pp.platinum = platinum/1000;
|
||||
uint64 goldtest = (platinum-(static_cast<uint64>(m_pp.platinum)*1000))/100;
|
||||
m_pp.gold += goldtest;
|
||||
uint64 silvertest = (platinum-(static_cast<uint64>(m_pp.platinum)*1000+goldtest*100))/10;
|
||||
m_pp.silver += silvertest;
|
||||
uint64 coppertest = (platinum-(static_cast<uint64>(m_pp.platinum)*1000+goldtest*100+silvertest*10));
|
||||
m_pp.copper = coppertest;
|
||||
if(updateclient)
|
||||
m_pp.platinum = platinum / 1000;
|
||||
uint64 gold_test = (platinum - (static_cast<uint64>(m_pp.platinum) * 1000)) / 100;
|
||||
m_pp.gold += gold_test;
|
||||
uint64 silver_test = (platinum - (static_cast<uint64>(m_pp.platinum) * 1000 + gold_test * 100)) / 10;
|
||||
m_pp.silver += silver_test;
|
||||
uint64 copper_test = (platinum - (static_cast<uint64>(m_pp.platinum) * 1000 + gold_test * 100 + silver_test * 10));
|
||||
m_pp.copper = copper_test;
|
||||
|
||||
if (update_client) {
|
||||
SendMoneyUpdate();
|
||||
}
|
||||
|
||||
RecalcWeight();
|
||||
SaveCurrency();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void Client::AddMoneyToPP(uint64 copper, bool updateclient){
|
||||
uint64 tmp;
|
||||
uint64 tmp2;
|
||||
tmp = copper;
|
||||
void Client::AddPlatinum(uint32 platinum, bool update_client) {
|
||||
auto copper = static_cast<uint64>(platinum * 1000);
|
||||
AddMoneyToPP(copper, update_client);
|
||||
}
|
||||
|
||||
void Client::AddMoneyToPP(uint64 copper, bool update_client){
|
||||
uint64 temporary_copper;
|
||||
uint64 temporary_copper_two;
|
||||
temporary_copper = copper;
|
||||
|
||||
/* Add Amount of Platinum */
|
||||
tmp2 = tmp/1000;
|
||||
int32 new_val = m_pp.platinum + tmp2;
|
||||
if(new_val < 0) { m_pp.platinum = 0; }
|
||||
else { m_pp.platinum = m_pp.platinum + tmp2; }
|
||||
tmp-=tmp2*1000;
|
||||
temporary_copper_two = temporary_copper / 1000;
|
||||
int32 new_value = m_pp.platinum + temporary_copper_two;
|
||||
|
||||
//if (updateclient)
|
||||
// SendClientMoneyUpdate(3,tmp2);
|
||||
if (new_value < 0) {
|
||||
m_pp.platinum = 0;
|
||||
} else {
|
||||
m_pp.platinum = m_pp.platinum + temporary_copper_two;
|
||||
}
|
||||
|
||||
temporary_copper -= temporary_copper_two * 1000;
|
||||
|
||||
/* Add Amount of Gold */
|
||||
tmp2 = tmp/100;
|
||||
new_val = m_pp.gold + tmp2;
|
||||
if(new_val < 0) { m_pp.gold = 0; }
|
||||
else { m_pp.gold = m_pp.gold + tmp2; }
|
||||
temporary_copper_two = temporary_copper / 100;
|
||||
new_value = m_pp.gold + temporary_copper_two;
|
||||
|
||||
tmp-=tmp2*100;
|
||||
//if (updateclient)
|
||||
// SendClientMoneyUpdate(2,tmp2);
|
||||
if (new_value < 0) {
|
||||
m_pp.gold = 0;
|
||||
} else {
|
||||
m_pp.gold = m_pp.gold + temporary_copper_two;
|
||||
}
|
||||
|
||||
temporary_copper -= temporary_copper_two * 100;
|
||||
|
||||
/* Add Amount of Silver */
|
||||
tmp2 = tmp/10;
|
||||
new_val = m_pp.silver + tmp2;
|
||||
if(new_val < 0) {
|
||||
temporary_copper_two = temporary_copper / 10;
|
||||
new_value = m_pp.silver + temporary_copper_two;
|
||||
|
||||
if (new_value < 0) {
|
||||
m_pp.silver = 0;
|
||||
} else {
|
||||
m_pp.silver = m_pp.silver + tmp2;
|
||||
m_pp.silver = m_pp.silver + temporary_copper_two;
|
||||
}
|
||||
tmp-=tmp2*10;
|
||||
//if (updateclient)
|
||||
// SendClientMoneyUpdate(1,tmp2);
|
||||
|
||||
// Add Copper
|
||||
//tmp = tmp - (tmp2* 10);
|
||||
//if (updateclient)
|
||||
// SendClientMoneyUpdate(0,tmp);
|
||||
tmp2 = tmp;
|
||||
new_val = m_pp.copper + tmp2;
|
||||
if(new_val < 0) {
|
||||
temporary_copper -= temporary_copper_two * 10;
|
||||
|
||||
/* Add Amount of Copper */
|
||||
temporary_copper_two = temporary_copper;
|
||||
new_value = m_pp.copper + temporary_copper_two;
|
||||
|
||||
if (new_value < 0) {
|
||||
m_pp.copper = 0;
|
||||
} else {
|
||||
m_pp.copper = m_pp.copper + tmp2;
|
||||
m_pp.copper = m_pp.copper + temporary_copper_two;
|
||||
}
|
||||
|
||||
|
||||
//send them all at once, since the above code stopped working.
|
||||
if(updateclient)
|
||||
if (update_client) {
|
||||
SendMoneyUpdate();
|
||||
}
|
||||
|
||||
RecalcWeight();
|
||||
|
||||
@ -2337,27 +2353,32 @@ void Client::EVENT_ITEM_ScriptStopReturn(){
|
||||
this->SetEntityVariable("Stop_Return", buffer);
|
||||
}
|
||||
|
||||
void Client::AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 platinum, bool updateclient){
|
||||
this->EVENT_ITEM_ScriptStopReturn();
|
||||
void Client::AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 platinum, bool update_client){
|
||||
EVENT_ITEM_ScriptStopReturn();
|
||||
|
||||
int32 new_value = m_pp.platinum + platinum;
|
||||
if(new_value >= 0 && new_value > m_pp.platinum)
|
||||
if (new_value >= 0 && new_value > m_pp.platinum) {
|
||||
m_pp.platinum += platinum;
|
||||
}
|
||||
|
||||
new_value = m_pp.gold + gold;
|
||||
if(new_value >= 0 && new_value > m_pp.gold)
|
||||
if (new_value >= 0 && new_value > m_pp.gold) {
|
||||
m_pp.gold += gold;
|
||||
}
|
||||
|
||||
new_value = m_pp.silver + silver;
|
||||
if(new_value >= 0 && new_value > m_pp.silver)
|
||||
if (new_value >= 0 && new_value > m_pp.silver) {
|
||||
m_pp.silver += silver;
|
||||
}
|
||||
|
||||
new_value = m_pp.copper + copper;
|
||||
if(new_value >= 0 && new_value > m_pp.copper)
|
||||
if (new_value >= 0 && new_value > m_pp.copper) {
|
||||
m_pp.copper += copper;
|
||||
}
|
||||
|
||||
if(updateclient)
|
||||
if (update_client) {
|
||||
SendMoneyUpdate();
|
||||
}
|
||||
|
||||
RecalcWeight();
|
||||
SaveCurrency();
|
||||
@ -2380,41 +2401,55 @@ void Client::SendMoneyUpdate() {
|
||||
FastQueuePacket(&outapp);
|
||||
}
|
||||
|
||||
bool Client::HasMoney(uint64 Copper) {
|
||||
bool Client::HasMoney(uint64 copper) {
|
||||
|
||||
if ((static_cast<uint64>(m_pp.copper) +
|
||||
if (
|
||||
(static_cast<uint64>(m_pp.copper) +
|
||||
(static_cast<uint64>(m_pp.silver) * 10) +
|
||||
(static_cast<uint64>(m_pp.gold) * 100) +
|
||||
(static_cast<uint64>(m_pp.platinum) * 1000)) >= Copper)
|
||||
(static_cast<uint64>(m_pp.platinum) * 1000)) >= copper
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
uint64 Client::GetCarriedMoney() {
|
||||
|
||||
return ((static_cast<uint64>(m_pp.copper) +
|
||||
(static_cast<uint64>(m_pp.silver) * 10) +
|
||||
(static_cast<uint64>(m_pp.gold) * 100) +
|
||||
(static_cast<uint64>(m_pp.platinum) * 1000)));
|
||||
return (
|
||||
(
|
||||
static_cast<uint64>(m_pp.copper) +
|
||||
(static_cast<uint64>(m_pp.silver) * 10) +
|
||||
(static_cast<uint64>(m_pp.gold) * 100) +
|
||||
(static_cast<uint64>(m_pp.platinum) * 1000)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
uint64 Client::GetAllMoney() {
|
||||
|
||||
return (
|
||||
(static_cast<uint64>(m_pp.copper) +
|
||||
(static_cast<uint64>(m_pp.silver) * 10) +
|
||||
(static_cast<uint64>(m_pp.gold) * 100) +
|
||||
(static_cast<uint64>(m_pp.platinum) * 1000) +
|
||||
(static_cast<uint64>(m_pp.copper_bank) +
|
||||
(static_cast<uint64>(m_pp.silver_bank) * 10) +
|
||||
(static_cast<uint64>(m_pp.gold_bank) * 100) +
|
||||
(static_cast<uint64>(m_pp.platinum_bank) * 1000) +
|
||||
(static_cast<uint64>(m_pp.copper_cursor) +
|
||||
(static_cast<uint64>(m_pp.silver_cursor) * 10) +
|
||||
(static_cast<uint64>(m_pp.gold_cursor) * 100) +
|
||||
(static_cast<uint64>(m_pp.platinum_cursor) * 1000) +
|
||||
(static_cast<uint64>(m_pp.platinum_shared) * 1000)))));
|
||||
(
|
||||
static_cast<uint64>(m_pp.copper) +
|
||||
(static_cast<uint64>(m_pp.silver) * 10) +
|
||||
(static_cast<uint64>(m_pp.gold) * 100) +
|
||||
(static_cast<uint64>(m_pp.platinum) * 1000) +
|
||||
(
|
||||
static_cast<uint64>(m_pp.copper_bank) +
|
||||
(static_cast<uint64>(m_pp.silver_bank) * 10) +
|
||||
(static_cast<uint64>(m_pp.gold_bank) * 100) +
|
||||
(static_cast<uint64>(m_pp.platinum_bank) * 1000) +
|
||||
(
|
||||
static_cast<uint64>(m_pp.copper_cursor) +
|
||||
(static_cast<uint64>(m_pp.silver_cursor) * 10) +
|
||||
(static_cast<uint64>(m_pp.gold_cursor) * 100) +
|
||||
(static_cast<uint64>(m_pp.platinum_cursor) * 1000) +
|
||||
(static_cast<uint64>(m_pp.platinum_shared) * 1000)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
bool Client::CheckIncreaseSkill(EQ::skills::SkillType skillid, Mob *against_who, int chancemodi) {
|
||||
@ -8692,7 +8727,7 @@ void Client::QuestReward(Mob* target, uint32 copper, uint32 silver, uint32 gold,
|
||||
qr->exp_reward = exp;
|
||||
|
||||
if (copper > 0 || silver > 0 || gold > 0 || platinum > 0)
|
||||
AddMoneyToPP(copper, silver, gold, platinum, false);
|
||||
AddMoneyToPP(copper, silver, gold, platinum);
|
||||
|
||||
if (itemid > 0)
|
||||
SummonItem(itemid, -1, 0, 0, 0, 0, 0, false, EQ::invslot::slotCursor);
|
||||
@ -8727,7 +8762,7 @@ void Client::QuestReward(Mob* target, const QuestReward_Struct &reward, bool fac
|
||||
qr->mob_id = target ? target->GetID() : 0; // Entity ID for the from mob name
|
||||
|
||||
if (reward.copper > 0 || reward.silver > 0 || reward.gold > 0 || reward.platinum > 0)
|
||||
AddMoneyToPP(reward.copper, reward.silver, reward.gold, reward.platinum, false);
|
||||
AddMoneyToPP(reward.copper, reward.silver, reward.gold, reward.platinum);
|
||||
|
||||
for (int i = 0; i < QUESTREWARD_COUNT; ++i)
|
||||
if (reward.item_id[i] > 0)
|
||||
|
||||
@ -733,13 +733,15 @@ public:
|
||||
void ReadBook(BookRequest_Struct *book);
|
||||
void ReadBookByName(std::string book_name, uint8 book_type);
|
||||
void QuestReadBook(const char* text, uint8 type);
|
||||
void SendClientMoneyUpdate(uint8 type,uint32 amount);
|
||||
void SendMoneyUpdate();
|
||||
bool TakeMoneyFromPP(uint64 copper, bool updateclient=false);
|
||||
void AddMoneyToPP(uint64 copper,bool updateclient);
|
||||
void AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold,uint32 platinum,bool updateclient);
|
||||
bool TakeMoneyFromPP(uint64 copper, bool update_client = false);
|
||||
bool TakePlatinum(uint32 platinum, bool update_client = false);
|
||||
void AddMoneyToPP(uint64 copper, bool update_client = false);
|
||||
void AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 platinum, bool update_client = false);
|
||||
void AddPlatinum(uint32 platinu, bool update_client = false);
|
||||
bool HasMoney(uint64 copper);
|
||||
uint64 GetCarriedMoney();
|
||||
uint32 GetCarriedPlatinum();
|
||||
uint64 GetAllMoney();
|
||||
uint32 GetMoney(uint8 type, uint8 subtype);
|
||||
int GetAccountAge();
|
||||
|
||||
@ -3652,12 +3652,12 @@ void Client::Handle_OP_Begging(const EQApplicationPacket *app)
|
||||
if (CurrentSkill < 50)
|
||||
{
|
||||
brs->Result = 4; // Copper
|
||||
AddMoneyToPP(brs->Amount, false);
|
||||
AddMoneyToPP(brs->Amount);
|
||||
}
|
||||
else
|
||||
{
|
||||
brs->Result = 3; // Silver
|
||||
AddMoneyToPP(brs->Amount * 10, false);
|
||||
AddMoneyToPP(brs->Amount * 10);
|
||||
}
|
||||
|
||||
}
|
||||
@ -13295,7 +13295,7 @@ void Client::Handle_OP_ShopPlayerSell(const EQApplicationPacket *app)
|
||||
}
|
||||
}
|
||||
|
||||
AddMoneyToPP(price, false);
|
||||
AddMoneyToPP(price);
|
||||
|
||||
if (inst->IsStackable() || inst->IsCharged())
|
||||
{
|
||||
|
||||
@ -1062,7 +1062,7 @@ void Corpse::MakeLootRequestPackets(Client* client, const EQApplicationPacket* a
|
||||
d->silver = GetSilver();
|
||||
d->gold = GetGold();
|
||||
d->platinum = GetPlatinum();
|
||||
client->AddMoneyToPP(GetCopper(), GetSilver(), GetGold(), GetPlatinum(), false);
|
||||
client->AddMoneyToPP(GetCopper(), GetSilver(), GetGold(), GetPlatinum());
|
||||
}
|
||||
|
||||
RemoveCash();
|
||||
|
||||
@ -490,6 +490,10 @@ bool Lua_Client::TakeMoneyFromPP(uint64 copper, bool update_client) {
|
||||
return self->TakeMoneyFromPP(copper, update_client);
|
||||
}
|
||||
|
||||
void Lua_Client::AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 platinum) {
|
||||
Lua_Safe_Call_Void();
|
||||
self->AddMoneyToPP(copper, silver, gold, platinum);
|
||||
}
|
||||
void Lua_Client::AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 platinum, bool update_client) {
|
||||
Lua_Safe_Call_Void();
|
||||
self->AddMoneyToPP(copper, silver, gold, platinum, update_client);
|
||||
@ -2397,6 +2401,31 @@ void Lua_Client::AddItem(luabind::object item_table) {
|
||||
);
|
||||
}
|
||||
|
||||
void Lua_Client::AddPlatinum(uint32 platinum) {
|
||||
Lua_Safe_Call_Void();
|
||||
self->AddPlatinum(platinum);
|
||||
}
|
||||
|
||||
void Lua_Client::AddPlatinum(uint32 platinum, bool update_client) {
|
||||
Lua_Safe_Call_Void();
|
||||
self->AddPlatinum(platinum, update_client);
|
||||
}
|
||||
|
||||
uint32 Lua_Client::GetCarriedPlatinum() {
|
||||
Lua_Safe_Call_Int();
|
||||
return self->GetCarriedPlatinum();
|
||||
}
|
||||
|
||||
bool Lua_Client::TakePlatinum(uint32 platinum) {
|
||||
Lua_Safe_Call_Bool();
|
||||
return self->TakePlatinum(platinum);
|
||||
}
|
||||
|
||||
bool Lua_Client::TakePlatinum(uint32 platinum, bool update_client) {
|
||||
Lua_Safe_Call_Bool();
|
||||
return self->TakePlatinum(platinum, update_client);
|
||||
}
|
||||
|
||||
luabind::scope lua_register_client() {
|
||||
return luabind::class_<Lua_Client, Lua_Mob>("Client")
|
||||
.def(luabind::constructor<>())
|
||||
@ -2418,7 +2447,10 @@ luabind::scope lua_register_client() {
|
||||
.def("AddLevelBasedExp", (void(Lua_Client::*)(int))&Lua_Client::AddLevelBasedExp)
|
||||
.def("AddLevelBasedExp", (void(Lua_Client::*)(int,int))&Lua_Client::AddLevelBasedExp)
|
||||
.def("AddLevelBasedExp", (void(Lua_Client::*)(int,int,bool))&Lua_Client::AddLevelBasedExp)
|
||||
.def("AddMoneyToPP", (void(Lua_Client::*)(uint32,uint32,uint32,uint32))&Lua_Client::AddMoneyToPP)
|
||||
.def("AddMoneyToPP", (void(Lua_Client::*)(uint32,uint32,uint32,uint32,bool))&Lua_Client::AddMoneyToPP)
|
||||
.def("AddPlatinum", (void(Lua_Client::*)(uint32))&Lua_Client::AddPlatinum)
|
||||
.def("AddPlatinum", (void(Lua_Client::*)(uint32,bool))&Lua_Client::AddPlatinum)
|
||||
.def("AddPVPPoints", (void(Lua_Client::*)(uint32))&Lua_Client::AddPVPPoints)
|
||||
.def("AddSkill", (void(Lua_Client::*)(int,int))&Lua_Client::AddSkill)
|
||||
.def("Admin", (int(Lua_Client::*)(void))&Lua_Client::Admin)
|
||||
@ -2506,6 +2538,7 @@ luabind::scope lua_register_client() {
|
||||
.def("GetBindZoneID", (uint32(Lua_Client::*)(int))&Lua_Client::GetBindZoneID)
|
||||
.def("GetBindZoneID", (uint32(Lua_Client::*)(void))&Lua_Client::GetBindZoneID)
|
||||
.def("GetCarriedMoney", (uint64(Lua_Client::*)(void))&Lua_Client::GetCarriedMoney)
|
||||
.def("GetCarriedPlatinum", (uint32(Lua_Client::*)(void))&Lua_Client::GetCarriedPlatinum)
|
||||
.def("GetCharacterFactionLevel", (int(Lua_Client::*)(int))&Lua_Client::GetCharacterFactionLevel)
|
||||
.def("GetClassBitmask", (int(Lua_Client::*)(void))&Lua_Client::GetClassBitmask)
|
||||
.def("GetClientMaxLevel", (int(Lua_Client::*)(void))&Lua_Client::GetClientMaxLevel)
|
||||
@ -2769,6 +2802,8 @@ luabind::scope lua_register_client() {
|
||||
.def("TGB", (bool(Lua_Client::*)(void))&Lua_Client::TGB)
|
||||
.def("TakeMoneyFromPP", (bool(Lua_Client::*)(uint64))&Lua_Client::TakeMoneyFromPP)
|
||||
.def("TakeMoneyFromPP", (bool(Lua_Client::*)(uint64,bool))&Lua_Client::TakeMoneyFromPP)
|
||||
.def("TakePlatinum", (bool(Lua_Client::*)(uint32))&Lua_Client::TakePlatinum)
|
||||
.def("TakePlatinum", (bool(Lua_Client::*)(uint32,bool))&Lua_Client::TakePlatinum)
|
||||
.def("Thirsty", (bool(Lua_Client::*)(void))&Lua_Client::Thirsty)
|
||||
.def("TrainDisc", (void(Lua_Client::*)(int))&Lua_Client::TrainDisc)
|
||||
.def("TrainDiscBySpellID", (void(Lua_Client::*)(int32))&Lua_Client::TrainDiscBySpellID)
|
||||
|
||||
@ -130,9 +130,14 @@ public:
|
||||
int GuildRank();
|
||||
uint32 GuildID();
|
||||
int GetFace();
|
||||
void AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 platinum);
|
||||
void AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 platinum, bool update_client);
|
||||
void AddPlatinum(uint32 platinum);
|
||||
void AddPlatinum(uint32 platinum, bool update_client);
|
||||
bool TakeMoneyFromPP(uint64 copper);
|
||||
bool TakeMoneyFromPP(uint64 copper, bool update_client);
|
||||
void AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 platinum, bool update_client);
|
||||
bool TakePlatinum(uint32 platinum);
|
||||
bool TakePlatinum(uint32 platinum, bool update_client);
|
||||
bool TGB();
|
||||
int GetSkillPoints();
|
||||
void SetSkillPoints(int skill);
|
||||
@ -328,6 +333,7 @@ public:
|
||||
void UnFreeze();
|
||||
int GetAggroCount();
|
||||
uint64 GetCarriedMoney();
|
||||
uint32 GetCarriedPlatinum();
|
||||
uint64 GetAllMoney();
|
||||
uint32 GetMoney(uint8 type, uint8 subtype);
|
||||
void OpenLFGuildWindow();
|
||||
|
||||
@ -1427,18 +1427,20 @@ XS(XS_Client_TakeMoneyFromPP); /* prototype to pass -Wmissing-prototypes */
|
||||
XS(XS_Client_TakeMoneyFromPP) {
|
||||
dXSARGS;
|
||||
if (items < 2 || items > 3)
|
||||
Perl_croak(aTHX_ "Usage: Client::TakeMoneyFromPP(THIS, uint32 copper, bool update_client = false)"); // @categories Currency and Points
|
||||
Perl_croak(aTHX_ "Usage: Client::TakeMoneyFromPP(THIS, uint32 copper, [bool update_client = false])"); // @categories Currency and Points
|
||||
{
|
||||
Client *THIS;
|
||||
bool RETVAL;
|
||||
bool updateclient = false;
|
||||
uint32 copper = (uint32) SvUV(ST(1));
|
||||
bool has_money;
|
||||
bool update_client = false;
|
||||
uint32 copper = (uint32) SvUV(ST(1));
|
||||
VALIDATE_THIS_IS_CLIENT;
|
||||
if (items > 2)
|
||||
updateclient = (bool) SvTRUE(ST(2));
|
||||
|
||||
RETVAL = THIS->TakeMoneyFromPP(copper, updateclient);
|
||||
ST(0) = boolSV(RETVAL);
|
||||
if (items == 3) {
|
||||
update_client = (bool) SvTRUE(ST(2));
|
||||
}
|
||||
|
||||
has_money = THIS->TakeMoneyFromPP(copper, update_client);
|
||||
ST(0) = boolSV(has_money);
|
||||
sv_2mortal(ST(0));
|
||||
}
|
||||
XSRETURN(1);
|
||||
@ -1447,17 +1449,22 @@ XS(XS_Client_TakeMoneyFromPP) {
|
||||
XS(XS_Client_AddMoneyToPP); /* prototype to pass -Wmissing-prototypes */
|
||||
XS(XS_Client_AddMoneyToPP) {
|
||||
dXSARGS;
|
||||
if (items != 6)
|
||||
Perl_croak(aTHX_ "Usage: Client::AddMoneyToPP(THIS, uint32 copper, uint32 silver, uint32 gold, uint32 platinum, bool update_client)"); // @categories Currency and Points
|
||||
if (items < 5 || items > 6)
|
||||
Perl_croak(aTHX_ "Usage: Client::AddMoneyToPP(THIS, uint32 copper, uint32 silver, uint32 gold, uint32 platinum, [bool update_client = false])"); // @categories Currency and Points
|
||||
{
|
||||
Client *THIS;
|
||||
uint32 copper = (uint32) SvUV(ST(1));
|
||||
uint32 silver = (uint32) SvUV(ST(2));
|
||||
uint32 gold = (uint32) SvUV(ST(3));
|
||||
uint32 platinum = (uint32) SvUV(ST(4));
|
||||
bool updateclient = (bool) SvTRUE(ST(5));
|
||||
uint32 copper = (uint32) SvUV(ST(1));
|
||||
uint32 silver = (uint32) SvUV(ST(2));
|
||||
uint32 gold = (uint32) SvUV(ST(3));
|
||||
uint32 platinum = (uint32) SvUV(ST(4));
|
||||
bool update_client = false;
|
||||
VALIDATE_THIS_IS_CLIENT;
|
||||
THIS->AddMoneyToPP(copper, silver, gold, platinum, updateclient);
|
||||
|
||||
if (items == 6) {
|
||||
update_client = (bool) SvTRUE(ST(5));
|
||||
}
|
||||
|
||||
THIS->AddMoneyToPP(copper, silver, gold, platinum, update_client);
|
||||
}
|
||||
XSRETURN_EMPTY;
|
||||
}
|
||||
@ -6115,6 +6122,66 @@ XS(XS_Client_AddItem) {
|
||||
XSRETURN_EMPTY;
|
||||
}
|
||||
|
||||
XS(XS_Client_AddPlatinum); /* prototype to pass -Wmissing-prototypes */
|
||||
XS(XS_Client_AddPlatinum) {
|
||||
dXSARGS;
|
||||
if (items < 2 || items > 3)
|
||||
Perl_croak(aTHX_ "Usage: Client::AddPlatinum(THIS, uint32 platinum, [bool update_client = false])"); // @categories Currency and Points
|
||||
{
|
||||
Client *THIS;
|
||||
uint32 platinum = (uint32) SvUV(ST(1));
|
||||
bool update_client = false;
|
||||
VALIDATE_THIS_IS_CLIENT;
|
||||
|
||||
if (items == 3) {
|
||||
update_client = (bool) SvTRUE(ST(2));
|
||||
}
|
||||
|
||||
THIS->AddPlatinum(platinum, update_client);
|
||||
}
|
||||
XSRETURN_EMPTY;
|
||||
}
|
||||
|
||||
XS(XS_Client_GetCarriedPlatinum); /* prototype to pass -Wmissing-prototypes */
|
||||
XS(XS_Client_GetCarriedPlatinum) {
|
||||
dXSARGS;
|
||||
if (items != 1)
|
||||
Perl_croak(aTHX_ "Usage: Client::GetCarriedPlatinum(THIS)"); // @categories Currency and Points
|
||||
{
|
||||
Client *THIS;
|
||||
int RETVAL;
|
||||
dXSTARG;
|
||||
VALIDATE_THIS_IS_CLIENT;
|
||||
RETVAL = THIS->GetCarriedPlatinum();
|
||||
XSprePUSH;
|
||||
PUSHi((IV) RETVAL);
|
||||
}
|
||||
XSRETURN(1);
|
||||
}
|
||||
|
||||
XS(XS_Client_TakePlatinum); /* prototype to pass -Wmissing-prototypes */
|
||||
XS(XS_Client_TakePlatinum) {
|
||||
dXSARGS;
|
||||
if (items < 2 || items > 3)
|
||||
Perl_croak(aTHX_ "Usage: Client::TakePlatinum(THIS, uint32 platinum, [bool update_client = false])"); // @categories Currency and Points
|
||||
{
|
||||
Client *THIS;
|
||||
uint32 platinum = (uint32) SvUV(ST(1));
|
||||
bool has_money = false;
|
||||
bool update_client = false;
|
||||
VALIDATE_THIS_IS_CLIENT;
|
||||
|
||||
if (items == 3) {
|
||||
update_client = (bool) SvTRUE(ST(2));
|
||||
}
|
||||
|
||||
has_money = THIS->TakePlatinum(platinum, update_client);
|
||||
ST(0) = boolSV(has_money);
|
||||
sv_2mortal(ST(0));
|
||||
}
|
||||
XSRETURN(1);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
@ -6144,7 +6211,8 @@ XS(boot_Client) {
|
||||
newXSproto(strcpy(buf, "AddLDoNLoss"), XS_Client_AddLDoNLoss, file, "$$");
|
||||
newXSproto(strcpy(buf, "AddLDoNWin"), XS_Client_AddLDoNWin, file, "$$");
|
||||
newXSproto(strcpy(buf, "AddLevelBasedExp"), XS_Client_AddLevelBasedExp, file, "$$;$$");
|
||||
newXSproto(strcpy(buf, "AddMoneyToPP"), XS_Client_AddMoneyToPP, file, "$$$$$$");
|
||||
newXSproto(strcpy(buf, "AddMoneyToPP"), XS_Client_AddMoneyToPP, file, "$$$$$;$");
|
||||
newXSproto(strcpy(buf, "AddPlatinum"), XS_Client_AddPlatinum, file, "$$;$");
|
||||
newXSproto(strcpy(buf, "AddPVPPoints"), XS_Client_AddPVPPoints, file, "$$");
|
||||
newXSproto(strcpy(buf, "AddSkill"), XS_Client_AddSkill, file, "$$$");
|
||||
newXSproto(strcpy(buf, "Admin"), XS_Client_Admin, file, "$");
|
||||
@ -6212,6 +6280,7 @@ XS(boot_Client) {
|
||||
newXSproto(strcpy(buf, "GetBindZ"), XS_Client_GetBindZ, file, "$$");
|
||||
newXSproto(strcpy(buf, "GetBindZoneID"), XS_Client_GetBindZoneID, file, "$$");
|
||||
newXSproto(strcpy(buf, "GetCarriedMoney"), XS_Client_GetCarriedMoney, file, "$");
|
||||
newXSproto(strcpy(buf, "GetCarriedPlatinum"), XS_Client_GetCarriedPlatinum, file, "$");
|
||||
newXSproto(strcpy(buf, "GetCharacterFactionLevel"), XS_Client_GetCharacterFactionLevel, file, "$$");
|
||||
newXSproto(strcpy(buf, "GetClassBitmask"), XS_Client_GetClassBitmask, file, "$");
|
||||
newXSproto(strcpy(buf, "GetClientMaxLevel"), XS_Client_GetClientMaxLevel, file, "$");
|
||||
@ -6427,6 +6496,7 @@ XS(boot_Client) {
|
||||
newXSproto(strcpy(buf, "SummonItem"), XS_Client_SummonItem, file, "$$;$$$$$$$$");
|
||||
newXSproto(strcpy(buf, "TGB"), XS_Client_TGB, file, "$");
|
||||
newXSproto(strcpy(buf, "TakeMoneyFromPP"), XS_Client_TakeMoneyFromPP, file, "$$;$");
|
||||
newXSproto(strcpy(buf, "TakePlatinum"), XS_Client_TakePlatinum, file, "$$;$");
|
||||
newXSproto(strcpy(buf, "Thirsty"), XS_Client_Thirsty, file, "$");
|
||||
newXSproto(strcpy(buf, "TrainDiscBySpellID"), XS_Client_TrainDiscBySpellID, file, "$$");
|
||||
newXSproto(strcpy(buf, "UnFreeze"), XS_Client_UnFreeze, file, "$");
|
||||
|
||||
@ -2800,7 +2800,7 @@ void Client::SellToBuyer(const EQApplicationPacket *app) {
|
||||
|
||||
Buyer->TakeMoneyFromPP(Quantity * Price);
|
||||
|
||||
AddMoneyToPP(Quantity * Price, false);
|
||||
AddMoneyToPP(Quantity * Price);
|
||||
|
||||
if(RuleB(Bazaar, AuditTrail))
|
||||
BazaarAuditTrail(GetName(), Buyer->GetName(), ItemName, Quantity, Quantity * Price, 1);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user