not sure if works,but try this code(didnt test):
in groups.h:
Code:
void SplitMoney(uint32 platinum,uint32 gold,uint32 silver,uint32 copper) ;
in groups.cpp:
Code:
void Group::SplitMoney(uint32 platinum,uint32 gold,uint32 silver,uint32 copper)
{
APPLAYER* outapp = new APPLAYER(OP_MoneyOnCorpse, sizeof(moneyOnCorpseStruct));
moneyOnCorpseStruct* d = (moneyOnCorpseStruct*) outapp->pBuffer;
d->copper=0;
d->silver=0;
d->platinum=0;
d->gold=0;
d->response = 1;
d->unknown1 = 0x5a;
d->unknown2 = 0x40;
d->unknown3 = 0;
int i;
int8 membercount = 0;
for (i = 0; i < MAX_GROUP_MEMBERS; i++)
if (members[i] != NULL)
membercount++;
d->platinum=(int)(platinum/membercount);
d->gold=(int)(gold/membercount);
d->silver=(int)(silver/membercount);
d->copper=(int)(copper/membercount);
if (membercount == 0)
return;
if(d->platinum<0)
d->platinum=0;
if(d->gold<0)
d->gold=0;
if(d->silver<0)
d->silver=0;
if(d->copper<0)
d->copper=0;
for (i = 0; i < MAX_GROUP_MEMBERS; i++)
{
if (members[i] != NULL && members[i]->IsClient()) // If Group Member is Client
{
members[i]->CastToClient()->AddMoneyToPP(d->copper,d->gold,d->silver,d->platinum,true);
members[i]->CastToClient()->QueuePacket(outapp);
members[i]->CastToClient()->Message(0,"You receive %i platinum,%i gold,%i silver and %i copper for the split.",d->platinum,d->gold,d->silver,d->copper);
}
}
safe_delete(outapp);
}
in client.cpp,replace existant op_split:
Code:
case OP_Split: {
// solar: the client removes the money on its own, but we have to
// update our state anyway, and make sure they had enough to begin
// with.
Split_Struct *split = (Split_Struct *)app->pBuffer;
Group* group;
uint32 pp=split->platinum;
uint32 gold=split->gold;
uint32 silver=split->silver;
uint32 copper=split->copper;
if(!TakeMoneyFromPP((copper+(silver*10)+(gold*100)+(pp*1000))))
{
Message(0,"You haven't got enough money!");
break;
}
group = entity_list.GetGroupByClient(this);
group->SplitMoney(pp,gold,silver,copper);
break;
}
Let me know if works