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;
}