📄 statistic.cpp
字号:
#include "statistic.h"
#include "../proto/proto.h"
#include "../proto/stt_proto.h" // for parse_STT_~
#include "../proto/ctt_proto.h" // for parse_CTT_~
#include "../proto/ttg_proto.h" // for tout
CharData sd; // CharData
// items on the ground
ItemMapT items;
char stat_s[256];
DWORD server_time_diff = 0;
// forward declarations
int chardata_init();
/////////////////////////
int stat_init(void)
{
items.clear();
MyAssert( chardata_init(), "", 0);
register_parser(DIR_STT, -1, PC_STT_CHAR, stat_on_STT_Char);
register_parser(DIR_STT, -1, PC_STT_AUTHOK, stat_on_STT_AuthOk);
register_parser(DIR_STT, -1, PC_STT_UPDATESTATUS, stat_on_STT_UpdateStatus);
register_parser(DIR_STT, -1, PC_STT_DROPITEM, stat_on_STT_DropItem);
register_parser(DIR_STT, -1, PC_STT_CLEARFLOORITEM, stat_on_STT_ClearFloorItem);
return 1;
}
int chardata_init(void)
{
sd.x = -1; sd.y = -1;
sd.to_x = -1; sd.to_y = -1;
sd.walkpath.path_len = 0;
sd.walkpath.path_pos = 0;
sd.speed = 150; // standard speed
return 1;
}
void stat_finish(void)
{
/**/
}
//***************************
DWORD stat_get_serv_time(ParsePoint * pp)
{
return (pp->timestamp - server_time_diff);
}
int stat_on_STT_Char(ParsePoint * pp)
{
t_status status;
if( !parse_STT_Char(pp, &status) )
return 0;
sd.speed = status.speed;
memcpy(sd.name, status.name, NAME_LENGTH);
return 1;
}
int stat_on_STT_AuthOk(ParsePoint * pp)
{
DWORD s_ticks;
short x, y;
if( !parse_STT_AuthOk(pp,&s_ticks,&x,&y) )
return 0;
server_time_diff = pp->timestamp - s_ticks;
sd.x = x;
sd.y = y;
return 1;
}
int stat_on_STT_UpdateStatus(ParsePoint * pp)
{
WORD type;
long value;
if( !parse_STT_UpdateStatus(pp, &type, &value) )
return 0;
if(type == SP_SPEED)
{
sd.speed = (WORD)value;
}
return 1;
}
int stat_on_STT_DropItem(ParsePoint * pp)
{
BYTE identify,subx,suby;
TItem item;
if(!parse_STT_DropItem(pp,&item,&identify,&subx,&suby))
return 0;
item.forgetme_timer = 0;
items[item.itemid] = item;
sprintf(stat_s, "+item 0x%x 0x%x x:%d y:%d %d (%d)",item.itemid, item.viewid, item.x,item.y,identify, item.amount);
send_tout(pp, stat_s);
return 1;
}
int stat_on_STT_ClearFloorItem(ParsePoint * pp)
{
DWORD itemid;
TItem item;
if(!parse_STT_ClearFloorItem(pp, &itemid))
return 0;
item = items[itemid];
sprintf(stat_s, "-item 0x%x 0x%x x:%d y:%d (%d)", item.itemid, item.viewid, item.x,item.y,item.amount);
send_tout(pp, stat_s);
items.erase(itemid);
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -