View Single Post
  #4  
Old 08-11-2004, 11:49 PM
cofruben
Old-EQEmu Developer
 
Join Date: Oct 2002
Location: Spain
Posts: 323
Default

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
Reply With Quote