www.pudn.com > gamedata.rar > weapon.c


#include "stdafx.h" 
 
extern struct OBJECT_INFO object_info[MAX_NUM_OBJ]; // 全局控制,所有用户信息 
 
void upgradeweapon(SOCKET s, LPBYTE lpTarget) 
{ 
	int i, n; 
 
	struct NOVELITY_INFO novelity_info; 
 
	n = find_obj(s); 
 
	if (n == MAX_NUM_USER) return; 
 
	if (((int)lpTarget[6] <= 9) || ((int)lpTarget[6] >= 35)) return; 
 
	if ((object_info[n].Novelity[(int)lpTarget[6]][2] == 0xFF) && 
		(object_info[n].Novelity[(int)lpTarget[6]][3] == 0xFF)) return; 
 
		 
	novelity_info = getNovelity_info(object_info[n].Novelity[(int)lpTarget[6]][2], object_info[n].Novelity[(int)lpTarget[6]][3]); 
		 
	if (novelity_info.have) 
	{	 
  /*衣服         4 
	武器         5 
	戒指         6 
	裤子         7 
	鞋子         8 
 
 
	 
		char tmp[256]; 
							sprintf(tmp, "%s - %d - %d",  
 
								novelity_info.name, 
								novelity_info.reside1, 
						novelity_info.reside2); 
 
	 
					MessageBoxA(NULL, tmp, "", 0);*/ 
		if ((novelity_info.reside2 != 1) && (novelity_info.reside2 != 4) && (novelity_info.reside2 != 5) && (novelity_info.reside2 != 6) && 
			(novelity_info.reside2 != 7) && (novelity_info.reside2 != 8))  
		{  
			sysmessage(s, 0x02, "非武器或防御类物品", 0, FALSE); return;  
		} 
 
		if (lpTarget[5] == 0x00) 
 
			// 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 
			// 34 01 00 00 99 00 1B 00 FF FF FF FF FF FF FF FF 
		{ 
			// 70 - 0 - 150 - 1 - 100 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - 3 
			// 70 - 0 - 184 - 1 - 100 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 10 - 0 
			if ((object_info[n].Novelity[(int)lpTarget[6]][10] == 0) && (object_info[n].Novelity[(int)lpTarget[6]][11] == 0) && (object_info[n].Novelity[(int)lpTarget[6]][12] == 0) && 
				(object_info[n].Novelity[(int)lpTarget[6]][13] == 0) && (object_info[n].Novelity[(int)lpTarget[6]][14] == 0) && (object_info[n].Novelity[(int)lpTarget[6]][16] == 0)) 
			{ 
				if (novelity_info.reside2 == 5) 
				{ 
					if (object_info[n].money < 200000) { sysmessage(s, 0x02, "金币不足", 0, FALSE); return; } 
				} 
				else 
				{ 
					if (object_info[n].money < 100000) { sysmessage(s, 0x02, "金币不足", 0, FALSE); return; } 
				} 
 
				if (object_info[n].Novelity[(int)lpTarget[6]][15] >= 15) 
				{ 
					sysmessage(s, 0x02, "达到武器最大改制极限", 0, FALSE); return; 
				} 
				else 
				{ 
					if (novelity_info.reside2 == 5) 
					{				 
						if (object_info[n].money >= 200000) { object_info[n].money -= 200000; setusermoneynumber(s, object_info[n].money);}	 
					} 
					else		 
					{	 
						if (object_info[n].money >= 100000) { object_info[n].money -= 100000; setusermoneynumber(s, object_info[n].money);} 
					} 
 
					if (getpercentageprobabilitystatus(95 - object_info[n].Novelity[(int)lpTarget[6]][15] * 5)) 
					{ 
						object_info[n].Novelity[(int)lpTarget[6]][15] ++; 
 
						commonlyupgradeweaponinfo(s, 0x01, n, (int)lpTarget[6]); 
					} 
					else 
					{ 
						for(i=0;i<17;i++) 
						{ 
							if ((i==2) || (i==3)) 
								object_info[n].Novelity[(int)lpTarget[6]][i] = 0xFF; 
							else 
								object_info[n].Novelity[(int)lpTarget[6]][i] = 0x00; 
						} 
 
						commonlyupgradeweaponinfo(s, 0x00, n, (int)lpTarget[6]); 
					} 
				} 
			} 
			else 
			{ 
				sysmessage(s, 0x02, "特殊物品或魔法物品", 0, FALSE); return; 
			} 
		} 
	} 
 
} 
 
int commonlyupgradeweaponinfo(SOCKET s, BYTE mode, int index1, int index2) 
{ 
	int i, ret; 
 
	BYTE lpSource[25]; 
	// 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
	// 70 08 00 00 9A 01 01 1B 32 00 3F 01 80 3E 00 00 01 00 00 00 00 00 10 01 00 
	// C6 08 00 00 9A 00 01 1B 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00  
 
	lpSource[0]  = 0x00; 
	lpSource[1]  = 0x00; 
	lpSource[2]  = 0x00; 
	lpSource[3]  = 0x00; 
	lpSource[4]  = 0x9A; 
	lpSource[5]  = mode; 
	lpSource[6]  = 0x01; 
	lpSource[7]  = index2; 
 
	for(i=0;i<17;i++) 
		lpSource[8+i] = object_info[index1].Novelity[index2][i]; 
 
	ret = add_pack_chain(s, lpSource, 35, 0, FALSE); 
 
	return ret; 
}