📄 citemctrl.cpp
字号:
// cItemCtrl.cpp: implementation of the cItemCtrl class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Wox2head.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
cItemCtrl::cItemCtrl()
{
}
cItemCtrl::~cItemCtrl()
{
}
void cItemCtrl::PreLoadItems()
{
itemcount=0;
Fi->openscript("Wox2.itm");
do
{
Fi->read2();
if (!(strcmp(Fi->script1, "亲格")))
{
LoadItems();
itemcount++;
}
}
while (strcmp(Fi->script1, "EOF"));
printf("Wox2: %i俺狼 酒捞袍阑 佬菌嚼聪促\n",itemcount);
Fi->closescript();
}
void cItemCtrl::LoadItems()
{
defitem[itemcount].name[0] = 0; //捞抚
defitem[itemcount].type = ETC; //鸥蕾(use,equip,etc)
defitem[itemcount].color = 0; //祸
defitem[itemcount].pict = 0; //弊覆
defitem[itemcount].def = 0; //规绢仿
defitem[itemcount].Str = 0; //塞
defitem[itemcount].Dex = 0; //刮酶己
defitem[itemcount].Int = 0; //瘤仿
defitem[itemcount].hp = 0; //眉仿
defitem[itemcount].mhp = 0; //弥眉
defitem[itemcount].mp = 0; //付仿
defitem[itemcount].mmp = 0; //弥付
defitem[itemcount].cdur = 0; //郴备仿
defitem[itemcount].mdur = 0; //郴备仿
int i = 0;
int curLock = 0;
do
{
Fi->read2();
if (!(strcmp(Fi->script1, "捞抚")))
{
strcpy(defitem[itemcount].name, Fi->script2);
}
else if (!(strcmp(Fi->script1, "鸥涝")))
{
defitem[itemcount].type = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "祸")))
{
defitem[itemcount].color = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "弊覆")))
{
defitem[itemcount].pict = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "规绢")))
{
defitem[itemcount].def = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "塞")))
{
defitem[itemcount].Str = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "刮酶")))
{
defitem[itemcount].Dex = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "瘤仿")))
{
defitem[itemcount].Int = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "眉仿")))
{
defitem[itemcount].hp = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "弥眉")))
{
defitem[itemcount].mhp = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "付仿")))
{
defitem[itemcount].mp = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "弥付")))
{
defitem[itemcount].mmp = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "泅郴备仿")))
{
defitem[itemcount].cdur = atoi(Fi->script2);
}
else if (!(strcmp(Fi->script1, "弥郴备仿")))
{
defitem[itemcount].mdur = atoi(Fi->script2);
}
}
while (strcmp(Fi->script1, "}") && strcmp(Fi->script1, "EOF"));
}
void cItemCtrl::SaveItems()
{
int i;
Fi->o=fopen("Wox2.Itm","w");
if (Fi->o)
{
for (i=0;i<itemcount;i++)
{
fprintf(Fi->o, "亲格 酒捞袍\n");
fprintf(Fi->o,"{\n");
fprintf(Fi->o,"捞抚 %s\n",defitem[i].name);
fprintf(Fi->o,"鸥涝 %d\n",defitem[i].type);
fprintf(Fi->o,"祸 %d\n",defitem[i].color);
fprintf(Fi->o,"弊覆 %d\n",defitem[i].pict);
fprintf(Fi->o,"规绢 %d\n",defitem[i].def);
fprintf(Fi->o,"塞 %d\n",defitem[i].Str);
fprintf(Fi->o,"刮酶 %d\n",defitem[i].Dex);
fprintf(Fi->o,"瘤仿 %d\n",defitem[i].Int);
fprintf(Fi->o,"眉仿 %d\n",defitem[i].hp);
fprintf(Fi->o,"弥眉 %d\n",defitem[i].mhp);
fprintf(Fi->o,"付仿 %d\n",defitem[i].mp);
fprintf(Fi->o,"弥付 %d\n",defitem[i].mmp);
fprintf(Fi->o,"泅郴备仿 %d\n",defitem[i].cdur);
fprintf(Fi->o,"弥郴备仿 %d\n",defitem[i].mdur);
fprintf(Fi->o, "}\n");
}
fprintf(Fi->o,"\n\nEOF\n\n");
fclose(Fi->o);
}
else
{
printf("俊矾, Wox2.Itm 甫 凯荐绝嚼聪促.. 泅犁 静绊 乐唱, 酒聪搁 欺固记阑 犬牢窍技夸.\n");
}
}
void cItemCtrl::ThrowItem(int s,int slots)
{
int slot = slots-1;
//07:0 1 0 1F 0 6 0 6 C FFFFFF8A FFFFFFC0 2 0 0 0
char temp[256];
char temp2[256];
char temp3[256];
int encs = 0;
if(chr[Gs->acc[s]].ItemBag[slot][1] == 0)
{
Cw->SendMiniText(s,"酒捞袍捞 绝嚼聪促");
} else
{
//10:1 1 0 3 0
//1A:0 5 FFFFFFD3 FFFFFF95 4 0 32 0 0
temp[0] = lit(Gs->acc[s],1);
temp[1] = lit(Gs->acc[s],2);
temp[2] = lit(Gs->acc[s],3);
temp[3] = lit(Gs->acc[s],4);
temp[4] = 4;
temp[5] = 0;
temp[6] = 32;
temp[7] = 0;
//1 1 0 3 0
temp2[0] = slot%256+1;
temp2[1] = 1;
temp2[2] = 0;
temp2[3] = 3;
temp2[4] = 0;
//0 5 D3 95 4 0 32 0 0
//0 1 0 1F 0 6 0 6 C FFFFFF8A FFFFFFC0 2 0 0 0
temp3[0] = 0;
temp3[1] = 1;
temp3[2] = chr[Gs->acc[s]].backx>>8;
temp3[3] = (chr[Gs->acc[s]].backx%256);
temp3[4] = chr[Gs->acc[s]].backy>>8;
temp3[5] = (chr[Gs->acc[s]].backy%256);
//老访锅龋(酒捞袍竿啊柳芭)
temp3[6] = lit(item[chr[Gs->acc[s]].ItemBag[slot][0]].itemserial,1);
temp3[7] = lit(item[chr[Gs->acc[s]].ItemBag[slot][0]].itemserial,2);
temp3[8] = lit(item[chr[Gs->acc[s]].ItemBag[slot][0]].itemserial,3);
temp3[9] = lit(item[chr[Gs->acc[s]].ItemBag[slot][0]].itemserial,4);
temp3[10] = (0xC0+(item[chr[Gs->acc[s]].ItemBag[slot][0]].pict>>8))%256;
temp3[11] = item[chr[Gs->acc[s]].ItemBag[slot][0]].pict%256;
temp3[12] = 0;
temp3[13] = 0;
temp3[14] = 0;
mapitem[Cw->worlditemcount] = item[chr[Gs->acc[s]].ItemBag[slot][0]];
memset((void *)&item[chr[Gs->acc[s]].ItemBag[slot][0]],0,sizeof(item[chr[Gs->acc[s]].ItemBag[slot][0]]));
chr[Gs->acc[s]].ItemBag[slot][1]--;
if(chr[Gs->acc[s]].ItemBag[slot][1] == 0)
chr[Gs->acc[s]].ItemBag[slot][0] = 0;
m[mapnumber[chr[Gs->acc[s]].lastmap ] ][map[mapnumber[chr[Gs->acc[s]].lastmap]].map_y * chr[Gs->acc[s]].backy + chr[Gs->acc[s]].backx] = (unsigned short)Cw->worlditemcount;
iv[Cw->worlditemcount].x = chr[Gs->acc[s]].backx;
iv[Cw->worlditemcount].y = chr[Gs->acc[s]].backy;
iv[Cw->worlditemcount].map = chr[Gs->acc[s]].lastmap;
iv[Cw->worlditemcount].itemnum = mapitem[Cw->worlditemcount].itemserial*100;
int i =0;
for(i = 0;i < Gs->now;i++)
{
if(chr[Gs->acc[i]].lastmap == chr[Gs->acc[s]].lastmap)
{
if(Cw->inr(Gs->acc[i],Gs->acc[s]))
{
encs = Xc->Enc_Pack(i,temp,8,0x1A,3);
send(Gs->client[i],Encrypted_Messages[i],encs,0);
encs = Xc->Enc_Pack(i,temp3,15,0x07,3);
send(Gs->client[i],Encrypted_Messages[i],encs,0);
}
}
}
if((chr[Gs->acc[s]].ItemBag[slot][1] > 1) || (chr[Gs->acc[s]].ItemBag[slot][1] < 0))
{
chr[Gs->acc[s]].ItemBag[slot][1]--;
GetItem(s,slot);
} else
{
chr[Gs->acc[s]].ItemBag[slot][0] = 0;
chr[Gs->acc[s]].ItemBag[slot][1]--;
encs =Xc->Enc_Pack(s,temp2,5,0x10,3);
send(Gs->client[s],Encrypted_Messages[s],encs,0);
}
}
Cw->worlditemcount++;
}
void cItemCtrl::SendItemBox(int s)
{
int i = 0;
int encs = 0;
for(i=0;i<((int)chr[Gs->acc[s]].count[0]);i++)
{
GetItem(s,i);
}
}
void cItemCtrl::GetItem(int s, int slot)
{
//0F: 01 C0 B3 0E
//0F: 0B C2 CB 10 捞抚
char itemtemp[256];
char temp[256];
memset(itemtemp,0,256);
memset(temp,0,256);
if(chr[Gs->acc[s]].ItemBag[slot][1] > 1)
sprintf(itemtemp,"%s %d俺",item[chr[Gs->acc[s]].ItemBag[slot][0]].name,chr[Gs->acc[s]].ItemBag[slot][1]);
else sprintf(itemtemp,"%s",item[chr[Gs->acc[s]].ItemBag[slot][0]].name);
temp[0] = (slot%256)+1;
temp[1] = (0xC0+(item[chr[Gs->acc[s]].ItemBag[slot][0]].pict>>8))%256;
temp[2] = item[chr[Gs->acc[s]].ItemBag[slot][0]].pict%256;
// temp[2] = '\x50';
temp[3] = strlen(itemtemp);
memcpy(temp+4,itemtemp,strlen(itemtemp));
// memcpy(MapItem,temp,(strlen(itemtemp)+4));
chr[Gs->acc[s]].ItemBag[slot][0] = Cw->WorldItemSerial;
if(item[chr[Gs->acc[s]].ItemBag[slot][0]].itemserial == 0)
{
item[chr[Gs->acc[s]].ItemBag[slot][0]].itemserial = Cw->WorldItemSerial;
}
else item[chr[Gs->acc[s]].ItemBag[slot][0]].itemserial++;
if(chr[Gs->acc[s]].ItemBag[slot][1] > 1)
{
Cw->WorldItemSerial+=chr[Gs->acc[s]].ItemBag[slot][1];
}else Cw->WorldItemSerial++;
int encs = Xc->Enc_Pack( s,temp,(strlen(itemtemp)+4),0x0F,3);
send(Gs->client[s],Encrypted_Messages[s],encs,0);
}
void cItemCtrl::PickUpMapItem(int s)
{
//窍促 富篮 凛扁风凭
char temp[256];
// 0 5 FFFFFFD3 FFFFFF95 4 0 32 0 0
int trss = m[mapnumber[chr[Gs->acc[s]].lastmap ] ][map[mapnumber[chr[Gs->acc[s]].lastmap]].map_y * chr[Gs->acc[s]].backy + chr[Gs->acc[s]].backx];
item[Cw->worldnextitem] = mapitem[iv[trss].itemnum];
for(unsigned int i = iv[trss].itemnum;i < Cw->worlditemcount;i++)
mapitem[i] = mapitem[i+1];
memset((void *)&mapitem[i+1],0,sizeof(mapitem[i+1]));
Cw->worlditemcount--;
int ss = nextslot(s);
for(i = 0;i < Cw->worlditemcount;i++)
{
if(chr[Gs->acc[s]].lastmap == iv[i].map)
if(chr[Gs->acc[s]].backx == iv[i].x)
{
if(chr[Gs->acc[s]].backy == iv[i].y)
{
if(
chr[Gs->acc[s]].ItemBag[nextslot(s)][0] ==
mapitem[iv[trss].itemnum].itemserial)
{
chr[Gs->acc[s]].ItemBag[nextslot(s)][1]++;
break;
}
else
{
chr[Gs->acc[s]].ItemBag[nextslot(s)][0] = item[s].itemserial*100;
item[Cw->worldnextitem].owner = Gs->acc[s];
}
}
}
}
temp[0] = lit(Gs->acc[s],1);
temp[1] = lit(Gs->acc[s],2);
temp[2] = lit(Gs->acc[s],3);
temp[3] = lit(Gs->acc[s],4);
temp[4] = 4;
temp[5] = 0;
temp[6] = 32;
temp[7] = 0;
temp[8] = 0;
chr[Gs->acc[s]].ItemBag[i][0] = item[Cw->worldnextitem].itemserial*100;
Cw->worldnextitem++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -