2020-06-23 15:53:23 +08:00
|
|
|
|
#include<stdio.h>
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#include<stdlib.h>
|
|
|
|
|
#include<string.h>
|
|
|
|
|
#include<direct.h>
|
|
|
|
|
#include<math.h>
|
|
|
|
|
|
|
|
|
|
#include "../systeminc/version.h"
|
|
|
|
|
#include"../systeminc/system.h"
|
|
|
|
|
#include"../systeminc/loadrealbin.h"
|
|
|
|
|
#include"../systeminc/loadsprbin.h"
|
|
|
|
|
#include"../systeminc/anim_tbl.h"
|
|
|
|
|
#include"../systeminc/login.h"
|
|
|
|
|
#include"../systeminc/menu.h"
|
|
|
|
|
#include"../systeminc/map.h"
|
|
|
|
|
#include"../systeminc/lssproto_cli.h"
|
|
|
|
|
#include"../systeminc/pc.h"
|
|
|
|
|
#include"../systeminc/netmain.h"
|
|
|
|
|
#include"../systeminc/handletime.h"
|
|
|
|
|
#include"../systeminc/character.h"
|
|
|
|
|
#include "../other/caryIme.h"
|
|
|
|
|
#include "../systeminc/ime_sa.h"
|
|
|
|
|
#include "../systeminc/t_music.h"
|
|
|
|
|
#include "../systeminc/netproc.h"
|
|
|
|
|
#include "../systeminc/tool.h"
|
|
|
|
|
#include "../systeminc/onlinegm.h"
|
|
|
|
|
|
|
|
|
|
extern int ProcNo2;
|
|
|
|
|
#ifdef _PET_ITEM
|
|
|
|
|
extern int nPetItemEquipBmpNumber[PET_EQUIPNUM][2];
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
|
|
|
|
#include"netproc.h"
|
|
|
|
|
#include"character.h"
|
|
|
|
|
#include "battleProc.h"
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#include "../systeminc/field.h"
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
short drawFieldButtonFlag = 1;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
int fieldBtnHitId[FIELD_FUNC_END]; // ?????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
short drawTimeAnimeFlag = 0;
|
|
|
|
|
|
|
|
|
|
extern BOOL bNewServer;
|
|
|
|
|
extern BOOL g_bUseAlpha;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//新增 动作表情切换地图BUG
|
|
|
|
|
ACTION *ptActMenuWin1 = NULL;//表情动作窗口
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _WATERANIMATION //Syu ADD 泪之海动画层
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#define RAND(x,y) ((x - 1) + 1 + (int)((double)(y - (x - 1)) * rand() / (RAND_MAX + 1.0)))
|
|
|
|
|
bool in817flag = false;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _TEACHER_SYSTEM
|
|
|
|
|
void TeacherSystemWndfunc(int flag,char *data);
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
BOOL BattlingFlag = FALSE; //for线回系统与任务日志使用
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
#ifdef __ONLINEGM
|
|
|
|
|
BOOL OnlineGmFlag = FALSE;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _JOBDAILY
|
|
|
|
|
//BOOL JobDailyFlag = FALSE;
|
|
|
|
|
JOBDAILY jobdaily[MAXMISSION];
|
|
|
|
|
int JobdailyGetMax = FALSE;
|
|
|
|
|
//int MaxPage = 0;
|
|
|
|
|
//int PageIndex = 0;
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _CLOUD_EFFECT // (不可开) ROG ADD云层效果
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void CloudDraw();
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _SURFACE_ANIM //ROG ADD 动态地上物显示
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int ani_num = 0;
|
|
|
|
|
BOOL breadAniFlag = FALSE;
|
|
|
|
|
ACTION *SPACT[MAX_ANIM];
|
2020-06-23 15:53:23 +08:00
|
|
|
|
int ProduceXY[MAX_ANIM][7] = { -1 }; //0: spr编号, 1: x座标, 2: y座标, 3: 出现时间 4:优先权 5:是否完成 6:ACTION
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _SPECIALSPACEANIM // Syu ADD 特殊场景动画配置
|
2020-06-22 17:49:02 +08:00
|
|
|
|
static ACTION *SPACT[MAX_ANIM];
|
|
|
|
|
#ifdef _SPECIALSPACEANIM_FIX
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _MOON_FAIRYLAND // ROG ADD 月之仙境
|
|
|
|
|
// 0:地图上x座标 1:地图上y座标 2:地图编号 3:grano 4:此ProduceXY有没有使用 5:此ProduceXY在SPACT的位置 6:显示优先顺序
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int ProduceXY[TOTAL_ANIM][7] = {
|
|
|
|
|
{ 48 , 27 , 1200 , 101290 , 0 , -1 , 30},
|
|
|
|
|
{ 36 , 28 , 8255 , 101730 , 0 , -1 , 0 },
|
|
|
|
|
{ 33 , 30 , 8255 , 101739 , 0 , -1 , 0 },
|
|
|
|
|
{ 25 , 38 , 8255 , 101733 , 0 , -1 , 0 },
|
|
|
|
|
{ 34 , 31 , 8255 , 101731 , 0 , -1 , 20}
|
|
|
|
|
};
|
|
|
|
|
#else
|
|
|
|
|
int ProduceXY[TOTAL_ANIM][7] = {
|
|
|
|
|
{ 48 , 27 , 1200 , 101290 , 0 , -1 , 30}
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
#else
|
|
|
|
|
int ProduceXY[TOTAL_ANIM][6] = {
|
|
|
|
|
{ 48 , 27 , 1200 , 101290 , 0 , -1 }
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniCrossFrame // Syu ADD 动画层游过画面生物
|
|
|
|
|
static ACTION *WaterAct2; //游过画面动画
|
|
|
|
|
bool delFlag = false; //游过画面动画删除与否旗标
|
|
|
|
|
bool flag22 = true; //游过画面动画的什么忘了
|
|
|
|
|
bool Timeflag2 = false; //游过画面动画计时器旗标
|
|
|
|
|
int TimeTick2 = 0; //游过画面动画计时器
|
|
|
|
|
int TimeTickMax2 = 0; //游过画面动画计时器上限
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniRandom // Syu ADD 随机产生环境动画
|
|
|
|
|
static ACTION *WaterAct[50]; //环境动画
|
|
|
|
|
bool Timeflag[50] = {false}; //环境动画产生旗标
|
|
|
|
|
int TimeTick[50] = {0}; //环境动画计时器
|
|
|
|
|
int TimeTickMax[50] = {0}; //环境动画计时器上限
|
|
|
|
|
bool AniFlag = false; //环境动画消灭旗标
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniImmobile // Syu ADD 定点产生特定动画
|
|
|
|
|
static ACTION *WaterAct3[30]; //定点动画
|
|
|
|
|
bool Updownflag = false; //定点动画上下漂浮旗标
|
|
|
|
|
int XYposition[560][7] = //定点动画产生点阵列
|
|
|
|
|
//{ X座标, Y座标, 图号, 存在与否旗标, 配置的Action编号,
|
|
|
|
|
// 漂浮上下旗标(1会动,2不会动), 漂浮计时器}
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
{ 252 , 255 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 233 , 268 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 227 , 257 , 101516 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 209 , 254 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 308 , 133 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 305 , 101 , 101518 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 316 , 121 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 303 , 104 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 287 , 122 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 253 , 53 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 109 , 98 , 101516 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 144 , 89 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 114 , 86 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 101 , 84 , 101517 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 94 , 93 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 371 , 108 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 183 , 120 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 210 , 187 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 382 , 187 , 101519 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 225 , 178 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 355 , 206 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 364 , 217 , 101517 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 239 , 150 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 343 , 217 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 245 , 139 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 334 , 242 , 101516 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 324 , 218 , 101517 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 260 , 124 , 101518 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 301 , 246 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 288 , 265 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 278 , 267 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 226 , 23 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 344 , 43 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 368 , 110 , 101516 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 360 , 145 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 347 , 232 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 327 , 230 , 101519 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 147 , 23 , 101518 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 147 , 42 , 101517 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 280 , 38 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 158 , 44 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 145 , 68 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 189 , 66 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 204 , 55 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 199 , 55 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 235 , 52 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 253 , 34 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 288 , 51 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 298 , 62 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 299 , 72 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 256 , 94 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 284 , 106 , 101516 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 344 , 42 , 101518 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 329 , 72 , 101519 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 351 , 82 , 101516 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 379 , 82 , 101517 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 164 , 264 , 101519 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 155 , 263 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 124 , 267 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 125 , 266 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 112 , 290 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 102 , 287 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 95 , 308 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 65 , 335 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 50 , 335 , 101516 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 48 , 366 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 72 , 354 , 101517 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 79 , 376 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 112 , 372 , 101518 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 129 , 411 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 134 , 421 , 101519 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 169 , 416 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 201 , 418 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 196 , 376 , 101516 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 206 , 366 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 202 , 342 , 101517 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 172 , 334 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 192 , 323 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 155 , 337 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 132 , 45 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 99 , 489 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 99 , 466 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 114 , 435 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 119 , 465 , 101516 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 142 , 435 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 166 , 427 , 101517 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 159 , 383 , 101518 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 47 , 156 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 47 , 132 , 101519 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 36 , 123 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 61 , 162 , 101517 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 79 , 145 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 93 , 157 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 107 , 154 , 101511 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 118 , 165 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 133 , 164 , 101519 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 138 , 176 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 146 , 205 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 162 , 211 , 101516 , 0 , -1 , 1 , 0},
|
|
|
|
|
{ 170 , 202 , 101510 , 0 , -1 , 1 , 0},
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//大红海草右 101595 大红海草左 101597
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{130,181, 101595 , 0 , -1 , 2 , 0},{275,255, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{124,161, 101595 , 0 , -1 , 2 , 0},{261,265, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{243,90 , 101595 , 0 , -1 , 2 , 0},{226,250, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{269,73 , 101595 , 0 , -1 , 2 , 0},{212,249, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{292,55 , 101595 , 0 , -1 , 2 , 0},{182,250, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{307,108, 101595 , 0 , -1 , 2 , 0},{169,260, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{307,102, 101595 , 0 , -1 , 2 , 0},{147,262, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{183,95 , 101595 , 0 , -1 , 2 , 0},{121,281, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{156,56 , 101595 , 0 , -1 , 2 , 0},{109,289, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{137,183, 101595 , 0 , -1 , 2 , 0},{103,297, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{133,167, 101595 , 0 , -1 , 2 , 0},{46,320 , 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{130,163, 101595 , 0 , -1 , 2 , 0},{63,338 , 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{112,164, 101595 , 0 , -1 , 2 , 0},{50,360 , 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{82,151 , 101595 , 0 , -1 , 2 , 0},{92,365 , 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{66,154 , 101595 , 0 , -1 , 2 , 0},{122,380, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{47,132 , 101595 , 0 , -1 , 2 , 0},{151,409, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{43,130 , 101595 , 0 , -1 , 2 , 0},{162,416, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{52,140 , 101595 , 0 , -1 , 2 , 0},{209,369, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{76,155 , 101595 , 0 , -1 , 2 , 0},{192,338, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{120,169, 101595 , 0 , -1 , 2 , 0},{165,315, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{148,220, 101595 , 0 , -1 , 2 , 0},{166,343, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{225,175, 101595 , 0 , -1 , 2 , 0},{199,403, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{244,144, 101595 , 0 , -1 , 2 , 0},{171,408, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{229,103, 101595 , 0 , -1 , 2 , 0},{145,406, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{238,110, 101595 , 0 , -1 , 2 , 0},{164,461, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{99,88 , 101595 , 0 , -1 , 2 , 0},{188,508, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{134,80 , 101595 , 0 , -1 , 2 , 0},{158,457, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{207,46 , 101595 , 0 , -1 , 2 , 0},{148,487, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{315,43 , 101595 , 0 , -1 , 2 , 0},{103,460, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{337,36 , 101595 , 0 , -1 , 2 , 0},{111,446, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{353,75 , 101595 , 0 , -1 , 2 , 0},{126,443, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{359,90 , 101595 , 0 , -1 , 2 , 0},{132,409, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{359,100, 101595 , 0 , -1 , 2 , 0},{110,382, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{355,100, 101595 , 0 , -1 , 2 , 0},{378,186, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{351,152, 101595 , 0 , -1 , 2 , 0},{370,209, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{360,157, 101595 , 0 , -1 , 2 , 0},{349,225, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{370,170, 101595 , 0 , -1 , 2 , 0},{341,234, 101597 , 0 , -1 , 2 , 0},
|
|
|
|
|
{300,254, 101595 , 0 , -1 , 2 , 0},{311,239, 101597 , 0 , -1 , 2 , 0},
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//大绿海草右 101594 大绿海草左 101596
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{129,185, 101594 , 0 , -1 , 2 , 0},{367,204, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{133,160, 101594 , 0 , -1 , 2 , 0},{340,221, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{248,87 , 101594 , 0 , -1 , 2 , 0},{330,227, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{262,36 , 101594 , 0 , -1 , 2 , 0},{316,250, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{256,83 , 101594 , 0 , -1 , 2 , 0},{291,250, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{313,115, 101594 , 0 , -1 , 2 , 0},{276,261, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{303,110, 101594 , 0 , -1 , 2 , 0},{252,261, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{173,83 , 101594 , 0 , -1 , 2 , 0},{222,249, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{142,87 , 101594 , 0 , -1 , 2 , 0},{209,249, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{252,126, 101594 , 0 , -1 , 2 , 0},{179,248, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{221,179, 101594 , 0 , -1 , 2 , 0},{167,256, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{199,182, 101594 , 0 , -1 , 2 , 0},{142,261, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{96,149 , 101594 , 0 , -1 , 2 , 0},{113,278, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{85,141 , 101594 , 0 , -1 , 2 , 0},{103,288, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{61,157 , 101594 , 0 , -1 , 2 , 0},{84,307 , 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{39,135 , 101594 , 0 , -1 , 2 , 0},{46,324 , 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{40,131 , 101594 , 0 , -1 , 2 , 0},{63,343 , 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{55,148 , 101594 , 0 , -1 , 2 , 0},{53,363 , 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{92,147 , 101594 , 0 , -1 , 2 , 0},{100,369, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{129,176, 101594 , 0 , -1 , 2 , 0},{135,390, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{151,208, 101594 , 0 , -1 , 2 , 0},{153,407, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{229,166, 101594 , 0 , -1 , 2 , 0},{169,419, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{254,132, 101594 , 0 , -1 , 2 , 0},{212,370, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{309,109, 101594 , 0 , -1 , 2 , 0},{196,338, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{236,76 , 101594 , 0 , -1 , 2 , 0},{161,321, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{111,89 , 101594 , 0 , -1 , 2 , 0},{184,335, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{137,76 , 101594 , 0 , -1 , 2 , 0},{182,410, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{269,57 , 101594 , 0 , -1 , 2 , 0},{179,425, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{308,40 , 101594 , 0 , -1 , 2 , 0},{151,399, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{345,60 , 101594 , 0 , -1 , 2 , 0},{167,487, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{346,79 , 101594 , 0 , -1 , 2 , 0},{187,516, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{359,98 , 101594 , 0 , -1 , 2 , 0},{106,488, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{373,110, 101594 , 0 , -1 , 2 , 0},{143,487, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{373,106, 101594 , 0 , -1 , 2 , 0},{106,455, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{356,152, 101594 , 0 , -1 , 2 , 0},{104,458, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{365,154, 101594 , 0 , -1 , 2 , 0},{146,428, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{360,169, 101594 , 0 , -1 , 2 , 0},{128,405, 101596 , 0 , -1 , 2 , 0},
|
|
|
|
|
{373,186, 101594 , 0 , -1 , 2 , 0},{92,381 , 101596 , 0 , -1 , 2 , 0},
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 中绿海草右 101598 中绿海草左 101600
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{148,199, 101598 , 0 , -1 , 2 , 0},{356,218, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{120,158, 101598 , 0 , -1 , 2 , 0},{337,222, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{235,78 , 101598 , 0 , -1 , 2 , 0},{319,233, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{286,49 , 101598 , 0 , -1 , 2 , 0},{305,242, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{372,121, 101598 , 0 , -1 , 2 , 0},{281,260, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{346,62 , 101598 , 0 , -1 , 2 , 0},{271,262, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{325,80 , 101598 , 0 , -1 , 2 , 0},{243,246, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{156,52 , 101598 , 0 , -1 , 2 , 0},{223,250, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{159,74 , 101598 , 0 , -1 , 2 , 0},{202,247, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{240,153, 101598 , 0 , -1 , 2 , 0},{175,257, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{204,176, 101598 , 0 , -1 , 2 , 0},{163,256, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{189,189, 101598 , 0 , -1 , 2 , 0},{135,263, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{88,142 , 101598 , 0 , -1 , 2 , 0},{113,288, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{76,147 , 101598 , 0 , -1 , 2 , 0},{99,291 , 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{58,140 , 101598 , 0 , -1 , 2 , 0},{76,318 , 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{39,119 , 101598 , 0 , -1 , 2 , 0},{69,325 , 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{27,125 , 101598 , 0 , -1 , 2 , 0},{74,354 , 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{60,158 , 101598 , 0 , -1 , 2 , 0},{77,357 , 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{100,157, 101598 , 0 , -1 , 2 , 0},{100,375, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{141,192, 101598 , 0 , -1 , 2 , 0},{126,403, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{189,196, 101598 , 0 , -1 , 2 , 0},{160,399, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{244,160, 101598 , 0 , -1 , 2 , 0},{176,433, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{258,116, 101598 , 0 , -1 , 2 , 0},{205,364, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{305,113, 101598 , 0 , -1 , 2 , 0},{191,330, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{169,103, 101598 , 0 , -1 , 2 , 0},{150,329, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{131,84 , 101598 , 0 , -1 , 2 , 0},{186,344, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{196,97 , 101598 , 0 , -1 , 2 , 0},{183,413, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{285,49 , 101598 , 0 , -1 , 2 , 0},{175,434, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{330,24 , 101598 , 0 , -1 , 2 , 0},{162,462, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{355,70 , 101598 , 0 , -1 , 2 , 0},{165,500, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{328,60 , 101598 , 0 , -1 , 2 , 0},{180,510, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{368,104, 101598 , 0 , -1 , 2 , 0},{137,489, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{371,118, 101598 , 0 , -1 , 2 , 0},{130,491, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{359,138, 101598 , 0 , -1 , 2 , 0},{114,443, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{359,170, 101598 , 0 , -1 , 2 , 0},{99,470 , 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{349,131, 101598 , 0 , -1 , 2 , 0},{132,414, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{372,177, 101598 , 0 , -1 , 2 , 0},{137,392, 101600 , 0 , -1 , 2 , 0},
|
|
|
|
|
{381,203, 101598 , 0 , -1 , 2 , 0},{79,374 , 101600 , 0 , -1 , 2 , 0},
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//中蓝海草右 101599 中蓝海草左 101601
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{141,202, 101599 , 0 , -1 , 2 , 0},{358,210, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{125,162, 101599 , 0 , -1 , 2 , 0},{344,230, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{243,94 , 101599 , 0 , -1 , 2 , 0},{326,229, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{284,46 , 101599 , 0 , -1 , 2 , 0},{318,248, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{317,126, 101599 , 0 , -1 , 2 , 0},{288,252, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{354,75 , 101599 , 0 , -1 , 2 , 0},{274,255, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{315,116, 101599 , 0 , -1 , 2 , 0},{243,263, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{155,73 , 101599 , 0 , -1 , 2 , 0},{224,253, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{161,78 , 101599 , 0 , -1 , 2 , 0},{208,252, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{250,139, 101599 , 0 , -1 , 2 , 0},{178,254, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{206,197, 101599 , 0 , -1 , 2 , 0},{160,260, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{195,192, 101599 , 0 , -1 , 2 , 0},{135,264, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{94,155 , 101599 , 0 , -1 , 2 , 0},{112,281, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{77,153 , 101599 , 0 , -1 , 2 , 0},{103,296, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{55,146 , 101599 , 0 , -1 , 2 , 0},{79,310 , 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{45,122 , 101599 , 0 , -1 , 2 , 0},{66,328 , 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{39,120 , 101599 , 0 , -1 , 2 , 0},{68,351 , 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{48,157 , 101599 , 0 , -1 , 2 , 0},{74,353 , 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{99,151 , 101599 , 0 , -1 , 2 , 0},{107,374, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{136,182, 101599 , 0 , -1 , 2 , 0},{138,393, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{173,203, 101599 , 0 , -1 , 2 , 0},{163,399, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{223,160, 101599 , 0 , -1 , 2 , 0},{171,411, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{254,121, 101599 , 0 , -1 , 2 , 0},{214,383, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{315,118, 101599 , 0 , -1 , 2 , 0},{192,330, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{234,69 , 101599 , 0 , -1 , 2 , 0},{155,322, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{123,88 , 101599 , 0 , -1 , 2 , 0},{183,336, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{164,80 , 101599 , 0 , -1 , 2 , 0},{182,421, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{284,45 , 101599 , 0 , -1 , 2 , 0},{175,430, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{333,30 , 101599 , 0 , -1 , 2 , 0},{150,415, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{352,62 , 101599 , 0 , -1 , 2 , 0},{169,498, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{335,83 , 101599 , 0 , -1 , 2 , 0},{188,517, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{363,100, 101599 , 0 , -1 , 2 , 0},{118,492, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{370,103, 101599 , 0 , -1 , 2 , 0},{136,490, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{338,91 , 101599 , 0 , -1 , 2 , 0},{113,446, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{359,153, 101599 , 0 , -1 , 2 , 0},{110,464, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{363,162, 101599 , 0 , -1 , 2 , 0},{134,424, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{373,171, 101599 , 0 , -1 , 2 , 0},{127,403, 101601 , 0 , -1 , 2 , 0},
|
|
|
|
|
{385,192, 101599 , 0 , -1 , 2 , 0},{85,377 , 101601 , 0 , -1 , 2 , 0},
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 小绿海草右 101603 小绿海草左 101605
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{136,173, 101603 , 0 , -1 , 2 , 0},{349,213, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{118,158, 101603 , 0 , -1 , 2 , 0},{339,225, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{227,75 , 101603 , 0 , -1 , 2 , 0},{322,244, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{286,57 , 101603 , 0 , -1 , 2 , 0},{299,247, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{353,90 , 101603 , 0 , -1 , 2 , 0},{281,258, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{322,70 , 101603 , 0 , -1 , 2 , 0},{272,256, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{352,40 , 101603 , 0 , -1 , 2 , 0},{230,249, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{155,52 , 101603 , 0 , -1 , 2 , 0},{216,248, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{152,71 , 101603 , 0 , -1 , 2 , 0},{190,243, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{234,168, 101603 , 0 , -1 , 2 , 0},{172,255, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{199,190, 101603 , 0 , -1 , 2 , 0},{150,258, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{175,203, 101603 , 0 , -1 , 2 , 0},{117,271, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{85,141 , 101603 , 0 , -1 , 2 , 0},{109,284, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{72,151 , 101603 , 0 , -1 , 2 , 0},{100,301, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{44,139 , 101603 , 0 , -1 , 2 , 0},{75,315 , 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{45,122 , 101603 , 0 , -1 , 2 , 0},{74,311 , 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{29,116 , 101603 , 0 , -1 , 2 , 0},{61,367 , 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{72,151 , 101603 , 0 , -1 , 2 , 0},{48,346 , 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{115,157, 101603 , 0 , -1 , 2 , 0},{111,376, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{154,202, 101603 , 0 , -1 , 2 , 0},{142,397, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{212,183, 101603 , 0 , -1 , 2 , 0},{162,398, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{244,157, 101603 , 0 , -1 , 2 , 0},{188,385, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{256,105, 101603 , 0 , -1 , 2 , 0},{199,363, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{281,113, 101603 , 0 , -1 , 2 , 0},{188,322, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{154,73 , 101603 , 0 , -1 , 2 , 0},{161,330, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{148,73 , 101603 , 0 , -1 , 2 , 0},{185,389, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{252,41 , 101603 , 0 , -1 , 2 , 0},{173,430, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{296,59 , 101603 , 0 , -1 , 2 , 0},{134,436, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{312,67 , 101603 , 0 , -1 , 2 , 0},{189,470, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{352,62 , 101603 , 0 , -1 , 2 , 0},{184,506, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{333,86 , 101603 , 0 , -1 , 2 , 0},{164,499, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{371,113, 101603 , 0 , -1 , 2 , 0},{156,486, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{397,131, 101603 , 0 , -1 , 2 , 0},{110,491, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{353,132, 101603 , 0 , -1 , 2 , 0},{117,438, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{363,164, 101603 , 0 , -1 , 2 , 0},{99,480 , 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{365,165, 101603 , 0 , -1 , 2 , 0},{142,398, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{373,184, 101603 , 0 , -1 , 2 , 0},{105,385, 101605 , 0 , -1 , 2 , 0},
|
|
|
|
|
{372,185, 101603 , 0 , -1 , 2 , 0},{71,371 , 101605 , 0 , -1 , 2 , 0},
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//小红海草右 101602 小红海草右 101604
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
{154,200, 101602 , 0 , -1 , 2 , 0},{349,211, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{119,157, 101602 , 0 , -1 , 2 , 0},{345,231, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{239,82 , 101602 , 0 , -1 , 2 , 0},{326,243, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{290,59 , 101602 , 0 , -1 , 2 , 0},{312,248, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{358,99 , 101602 , 0 , -1 , 2 , 0},{281,253, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{328,69 , 101602 , 0 , -1 , 2 , 0},{265,257, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{258,37 , 101602 , 0 , -1 , 2 , 0},{235,247, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{153,51 , 101602 , 0 , -1 , 2 , 0},{219,248, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{153,72 , 101602 , 0 , -1 , 2 , 0},{197,244, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{132,187, 101602 , 0 , -1 , 2 , 0},{174,252, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{131,179, 101602 , 0 , -1 , 2 , 0},{161,257, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{120,169, 101602 , 0 , -1 , 2 , 0},{131,271, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{101,151, 101602 , 0 , -1 , 2 , 0},{108,285, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{71,158 , 101602 , 0 , -1 , 2 , 0},{97,294 , 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{58,139 , 101602 , 0 , -1 , 2 , 0},{75,311 , 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{29,128 , 101602 , 0 , -1 , 2 , 0},{71,311 , 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{20,119 , 101602 , 0 , -1 , 2 , 0},{77,356 , 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{67,156 , 101602 , 0 , -1 , 2 , 0},{47,349 , 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{108,157, 101602 , 0 , -1 , 2 , 0},{87,372 , 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{149,200, 101602 , 0 , -1 , 2 , 0},{128,406, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{187,190, 101602 , 0 , -1 , 2 , 0},{141,396, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{238,157, 101602 , 0 , -1 , 2 , 0},{176,434, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{270,120, 101602 , 0 , -1 , 2 , 0},{200,358, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{271,120, 101602 , 0 , -1 , 2 , 0},{187,326, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{155,57 , 101602 , 0 , -1 , 2 , 0},{151,334, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{140,88 , 101602 , 0 , -1 , 2 , 0},{182,404, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{240,70 , 101602 , 0 , -1 , 2 , 0},{165,419, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{287,51 , 101602 , 0 , -1 , 2 , 0},{134,438, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{302,57 , 101602 , 0 , -1 , 2 , 0},{182,471, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{355,64 , 101602 , 0 , -1 , 2 , 0},{174,503, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{342,93 , 101602 , 0 , -1 , 2 , 0},{186,505, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{369,107, 101602 , 0 , -1 , 2 , 0},{148,487, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{372,123, 101602 , 0 , -1 , 2 , 0},{120,491, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{355,138, 101602 , 0 , -1 , 2 , 0},{117,438, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{366,161, 101602 , 0 , -1 , 2 , 0},{98,475 , 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{363,163, 101602 , 0 , -1 , 2 , 0},{132,411, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{369,181, 101602 , 0 , -1 , 2 , 0},{110,391, 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
{374,189, 101602 , 0 , -1 , 2 , 0},{81,373 , 101604 , 0 , -1 , 2 , 0},
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
int iOldGX,iOldGY;
|
|
|
|
|
extern ITEM_BUFFER ItemBuffer[MAX_ITEM];
|
|
|
|
|
ACTION *pActStreetVendorWnd = NULL;
|
|
|
|
|
ACTION *pActStreetVendorBuyWnd = NULL;
|
|
|
|
|
short sStreetVendorBtn = 0;
|
|
|
|
|
short sStreetVendorBuyBtn = 0;
|
|
|
|
|
short sStreetVendorBtnFocus = 0;
|
|
|
|
|
int sStreetVendorBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_SV_BTN_OFF,
|
|
|
|
|
CG_FIELD_SV_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 输入售价视窗
|
2020-06-22 17:49:02 +08:00
|
|
|
|
extern void CheckNumber(char *buf,int num);
|
|
|
|
|
static ACTION *pActSellPriceWnd = NULL;
|
|
|
|
|
int SellPriceWndfunc()
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
static STR_BUFFER str_bufferMoney; // 售价输入栏,最多一千万
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int x,y,iConfirm;
|
|
|
|
|
|
|
|
|
|
if (pActSellPriceWnd == NULL)
|
|
|
|
|
{
|
|
|
|
|
int winW = 106;
|
|
|
|
|
int winH = 80;
|
|
|
|
|
int winX = (lpDraw->xSize-winW)/2;
|
|
|
|
|
int winY = (lpDraw->ySize-winH)/2;
|
|
|
|
|
|
|
|
|
|
pActSellPriceWnd = MakeWindowDisp(winX, winY,
|
|
|
|
|
winW, winH, CG_FIELD_SV_SELL_PRICE_PANEL, -1, FALSE);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 售价文字初始化
|
2020-06-22 17:49:02 +08:00
|
|
|
|
ZeroMemory(str_bufferMoney.buffer, sizeof(str_bufferMoney.buffer));
|
|
|
|
|
str_bufferMoney.cnt = 0;
|
|
|
|
|
str_bufferMoney.cursor = 0;
|
|
|
|
|
str_bufferMoney.color = 0;
|
|
|
|
|
str_bufferMoney.len = 8;
|
|
|
|
|
str_bufferMoney.lineLen = 8;
|
|
|
|
|
str_bufferMoney.lineDist = 0;
|
|
|
|
|
str_bufferMoney.x = pActSellPriceWnd->x + 10;
|
|
|
|
|
str_bufferMoney.y = pActSellPriceWnd->y + 28;
|
|
|
|
|
str_bufferMoney.fontPrio = FONT_PRIO_FRONT;
|
|
|
|
|
GetKeyInputFocus(&str_bufferMoney);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (pActSellPriceWnd->hp > 0)
|
|
|
|
|
{
|
|
|
|
|
x = pActSellPriceWnd->x;
|
|
|
|
|
y = pActSellPriceWnd->y;
|
|
|
|
|
StockDispBuffer(((WINDOW_DISP *)pActSellPriceWnd->pYobi)->mx,
|
|
|
|
|
((WINDOW_DISP *)pActSellPriceWnd->pYobi)->my,
|
|
|
|
|
DISP_PRIO_MENU, CG_FIELD_SV_SELL_PRICE_PANEL, 1);
|
|
|
|
|
iConfirm = StockDispBuffer(x + 55,y + 67, DISP_PRIO_IME3, 26289, 2);
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 按下确定
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if ((mouse.onceState & MOUSE_LEFT_CRICK) && HitDispNo == iConfirm)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pActSellPriceWnd);
|
|
|
|
|
pActSellPriceWnd = NULL;
|
|
|
|
|
GetKeyInputFocus(&MyChatBuffer);
|
|
|
|
|
return atoi(str_bufferMoney.buffer);
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 滑鼠在售价区内
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (MakeHitBox(str_bufferMoney.x, str_bufferMoney.y, str_bufferMoney.x + 88, str_bufferMoney.y + 22, DISP_PRIO_BOX2) == TRUE)
|
|
|
|
|
GetKeyInputFocus(&str_bufferMoney);
|
|
|
|
|
CheckNumber(str_bufferMoney.buffer, 10000000);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示价格
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer2(&str_bufferMoney);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 摆摊功能视窗
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
extern void CheckSpace(char *buf);
|
|
|
|
|
ACTION *pShowPet = NULL;
|
|
|
|
|
Show_Sell_Item ShowSellItem[MAX_SELL_ITEM];
|
2020-06-23 15:53:23 +08:00
|
|
|
|
STR_BUFFER str_bufferVendorName; // 店名
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
Show_Sell_Item *GetEmptyShowSellItem(Show_Sell_Item *ShowSellItem)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < MAX_SELL_ITEM; i++)
|
|
|
|
|
{
|
|
|
|
|
if (ShowSellItem[i].usage == false)
|
|
|
|
|
return ShowSellItem + i;
|
|
|
|
|
}
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void StreetVendorWndfunc(bool bReset,char *data)
|
|
|
|
|
{
|
|
|
|
|
int i,j,x,y,itemx,itemy,selId = 0;
|
|
|
|
|
char temp[8],szMsg[128];
|
|
|
|
|
static int iBtn[7],iSellItemBtn[MAX_SELL_ITEM],iShowPet,iPetOnSell[MAX_PET],iGetSellPrice,iListStart;
|
|
|
|
|
static ITEM *pItem = NULL;
|
|
|
|
|
static bool bChangePet = true,bRunSellPrice = false;
|
|
|
|
|
static Show_Sell_Item *pShowSellItem = NULL;
|
|
|
|
|
#ifdef _NEW_ITEM_
|
2020-06-23 15:53:23 +08:00
|
|
|
|
extern int 道具栏页数;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
static int iItemOnSell[MAX_MAXHAVEITEM*3];
|
|
|
|
|
#else
|
|
|
|
|
static int iItemOnSell[MAX_MAXHAVEITEM];
|
|
|
|
|
#endif
|
|
|
|
|
if (pActStreetVendorWnd == NULL)
|
|
|
|
|
{
|
|
|
|
|
int winW = 622;
|
|
|
|
|
int winH = 413;
|
|
|
|
|
int winX = (lpDraw->xSize-winW)/2;
|
|
|
|
|
int winY = (lpDraw->ySize-winH)/2;
|
|
|
|
|
#ifdef _NEW_ITEM_
|
2020-06-23 15:53:23 +08:00
|
|
|
|
道具栏页数=0;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _NEW_RESOMODE
|
|
|
|
|
pActStreetVendorWnd = MakeWindowDisp(winX, winY, winW, winH, CG_FIELD_SV_SELL_PANEL, -1, FALSE);
|
|
|
|
|
#else
|
|
|
|
|
pActStreetVendorWnd = MakeWindowDisp((DEF_APPSIZEX >> 1) - (622 >> 1), 0, 622, 413, CG_FIELD_SV_SELL_PANEL, -1);
|
|
|
|
|
#endif
|
|
|
|
|
memset(iBtn, -1, sizeof(iBtn));
|
|
|
|
|
memset(iItemOnSell, -1, sizeof(iItemOnSell));
|
|
|
|
|
memset(iPetOnSell, -1, sizeof(iPetOnSell));
|
|
|
|
|
for (i = 0; i < MAX_SELL_ITEM; i++)
|
|
|
|
|
{
|
|
|
|
|
ShowSellItem[i].name[0] = '\0';
|
|
|
|
|
ShowSellItem[i].freeName[0] = '\0';
|
|
|
|
|
ShowSellItem[i].needGetPrice = false;
|
|
|
|
|
ShowSellItem[i].pile = 0;
|
|
|
|
|
ShowSellItem[i].price = 0;
|
|
|
|
|
ShowSellItem[i].usage = false;
|
|
|
|
|
ShowSellItem[i].kind = -1;
|
|
|
|
|
ShowSellItem[i].index = -1;
|
|
|
|
|
}
|
|
|
|
|
if (bReset)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 店名文字初始化
|
2020-06-22 17:49:02 +08:00
|
|
|
|
ZeroMemory(str_bufferVendorName.buffer, sizeof(str_bufferVendorName.buffer));
|
|
|
|
|
str_bufferVendorName.cnt = 0;
|
|
|
|
|
str_bufferVendorName.cursor = 0;
|
|
|
|
|
str_bufferVendorName.color = 0;
|
|
|
|
|
str_bufferVendorName.len = 16;
|
|
|
|
|
str_bufferVendorName.lineLen = 16;
|
|
|
|
|
str_bufferVendorName.lineDist = 0;
|
|
|
|
|
str_bufferVendorName.x = pActStreetVendorWnd->x + 25;
|
|
|
|
|
str_bufferVendorName.y = pActStreetVendorWnd->y + 346;
|
|
|
|
|
str_bufferVendorName.fontPrio = FONT_PRIO_FRONT;
|
|
|
|
|
}
|
|
|
|
|
pItem = pc.item;
|
|
|
|
|
iShowPet = 0;
|
|
|
|
|
iListStart = 0;
|
|
|
|
|
bChangePet = true;
|
|
|
|
|
bRunSellPrice = false;
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
|
|
|
|
pShowSellItem = NULL;
|
|
|
|
|
if (data != NULL)
|
|
|
|
|
{
|
|
|
|
|
int count = 0, kind, index, price;
|
|
|
|
|
|
|
|
|
|
getStringToken(data, '|', 2, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
count = atoi(szMsg);
|
|
|
|
|
for (i = 0; i < count; i++)
|
|
|
|
|
{
|
|
|
|
|
getStringToken(data, '|', 3 + i * 3, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
kind = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 4 + i * 3, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
index = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 5 + i * 3, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
price = atoi(szMsg);
|
|
|
|
|
pShowSellItem = GetEmptyShowSellItem(ShowSellItem);
|
|
|
|
|
if (pShowSellItem != NULL)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 道具
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (kind == 0 && pItem[index].useFlag)
|
|
|
|
|
{
|
|
|
|
|
pShowSellItem->kind = kind;
|
|
|
|
|
pShowSellItem->index = index;
|
|
|
|
|
pShowSellItem->price = price;
|
|
|
|
|
sprintf_s(pShowSellItem->name, "%s", pItem[index].name);
|
|
|
|
|
pShowSellItem->pile = pItem[index].pile;
|
|
|
|
|
pShowSellItem->usage = true;
|
|
|
|
|
iItemOnSell[index - 9] = index;
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 宠
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if(kind == 1 && pet[index].useFlag)
|
|
|
|
|
{
|
|
|
|
|
pShowSellItem->kind = kind;
|
|
|
|
|
pShowSellItem->index = index;
|
|
|
|
|
pShowSellItem->price = price;
|
|
|
|
|
sprintf_s(pShowSellItem->name, "%s", pet[index].name);
|
|
|
|
|
sprintf_s(pShowSellItem->freeName, "%s", pet[index].freeName);
|
|
|
|
|
pShowSellItem->pile = 1;
|
|
|
|
|
pShowSellItem->usage = true;
|
|
|
|
|
iPetOnSell[index] = index;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (pActStreetVendorWnd->hp > 0)
|
|
|
|
|
{
|
|
|
|
|
if (bRunSellPrice)
|
|
|
|
|
{
|
|
|
|
|
iGetSellPrice = SellPriceWndfunc();
|
|
|
|
|
if (iGetSellPrice != -1)
|
|
|
|
|
{
|
|
|
|
|
for(i = 0; i <MAX_SELL_ITEM; i++)
|
|
|
|
|
{
|
|
|
|
|
if (ShowSellItem[i].needGetPrice)
|
|
|
|
|
{
|
|
|
|
|
ShowSellItem[i].price = iGetSellPrice;
|
|
|
|
|
ShowSellItem[i].needGetPrice = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
bRunSellPrice = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
x = pActStreetVendorWnd->x;
|
|
|
|
|
y = pActStreetVendorWnd->y;
|
|
|
|
|
selId = focusFontId(iSellItemBtn, sizeof(iSellItemBtn) / sizeof(int));
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示及设定button出现的位置
|
|
|
|
|
// 确定
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[0] = StockDispBuffer(x + 80, y + 388, DISP_PRIO_IME3, 26289, 2);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 取消
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[1] = StockDispBuffer(x + 230, y + 388, DISP_PRIO_IME3, 26291, 2);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 上卷箭头
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[2] = StockDispBuffer(x + 305, y + 44, DISP_PRIO_IME3, 26331, 2);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 下卷箭头
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[3] = StockDispBuffer(x + 305, y + 304, DISP_PRIO_IME3, 26332, 2);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 放置按钮
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[4] = StockDispBuffer(x + 335, y + 300, DISP_PRIO_IME3, 26062, 2);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 左箭头
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[5] = StockDispBuffer(x + 520, y + 60, DISP_PRIO_IME3, 26047, 2);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 右箭头
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[6] = StockDispBuffer(x + 570, y + 60, DISP_PRIO_IME3, 26048, 2);
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示左方的物品列表
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for (i = iListStart, j = 0; i < iListStart + 10; i++, j++)
|
|
|
|
|
{
|
|
|
|
|
if (ShowSellItem[i].usage)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _NEWFONT_
|
|
|
|
|
extern int getTextLength(char * str);
|
|
|
|
|
char tempstr[128];
|
|
|
|
|
if (ShowSellItem[i].kind == 0){
|
|
|
|
|
if (ShowSellItem[i].price == 0){
|
|
|
|
|
StockFontBuffer(x + 20, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowSellItem[i].name, 0);
|
|
|
|
|
sprintf(tempstr,"x%d",ShowSellItem[i].pile);
|
|
|
|
|
StockFontBuffer(x + 180-getTextLength(tempstr)/2, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, tempstr, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(x + 250-getTextLength("议价")/2, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, "议价", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}else{
|
|
|
|
|
StockFontBuffer(x + 20, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowSellItem[i].name, 0);
|
|
|
|
|
sprintf(tempstr,"x%d",ShowSellItem[i].pile);
|
|
|
|
|
StockFontBuffer(x + 180-getTextLength(tempstr)/2, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, tempstr, 0);
|
|
|
|
|
sprintf(tempstr,"%d",ShowSellItem[i].price);
|
|
|
|
|
StockFontBuffer(x + 250-getTextLength(tempstr)/2, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, tempstr, 0);
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
if (ShowSellItem[i].price == 0){
|
|
|
|
|
StockFontBuffer(x + 20, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowSellItem[i].name, 0);
|
|
|
|
|
StockFontBuffer(x + 175- getTextLength(ShowSellItem[i].freeName)/2, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowSellItem[i].freeName, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(x + 250-getTextLength("议价")/2, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, "议价", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}else{
|
|
|
|
|
StockFontBuffer(x + 20, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowSellItem[i].name, 0);
|
|
|
|
|
StockFontBuffer(x + 175 - getTextLength(ShowSellItem[i].freeName)/2, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowSellItem[i].freeName, 0);
|
|
|
|
|
sprintf(tempstr,"%d",ShowSellItem[i].price);
|
|
|
|
|
StockFontBuffer(x + 250-getTextLength(tempstr)/2, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, tempstr, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
iSellItemBtn[j] = StockFontBuffer(x + 20, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE,
|
|
|
|
|
" ", 2);
|
|
|
|
|
#else
|
|
|
|
|
if (ShowSellItem[i].kind == 0)
|
|
|
|
|
{
|
|
|
|
|
if (ShowSellItem[i].price == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "%-20sx%3d%13s", ShowSellItem[i].name, ShowSellItem[i].pile, "议价");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
sprintf_s(szMsg, "%-20sx%3d%13d", ShowSellItem[i].name, ShowSellItem[i].pile, ShowSellItem[i].price);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (ShowSellItem[i].price == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "%-17s%-12s%8s", ShowSellItem[i].name, ShowSellItem[i].freeName, "议价");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
sprintf_s(szMsg, "%-17s%-12s%8d", ShowSellItem[i].name, ShowSellItem[i].freeName, ShowSellItem[i].price);
|
|
|
|
|
}
|
|
|
|
|
iSellItemBtn[j] = StockFontBuffer(x + 20, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 2);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
iSellItemBtn[j] = StockFontBuffer(x + 20, y + 32 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, "", 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 7; i++)
|
|
|
|
|
{
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
if (HitDispNo == iBtn[i])
|
|
|
|
|
{
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
switch (i)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 确定
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 0:
|
|
|
|
|
if (!bRunSellPrice)
|
|
|
|
|
{
|
|
|
|
|
int count = 0;
|
|
|
|
|
char szMsg[512], szTemp[512], szTemp1[16];
|
|
|
|
|
|
|
|
|
|
memset(szMsg, 0, sizeof(szMsg));
|
|
|
|
|
memset(szTemp, 0, sizeof(szTemp));
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 把要卖的东西的索引传给server
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for (j = 0; j < MAX_SELL_ITEM; j++)
|
|
|
|
|
{
|
|
|
|
|
if (ShowSellItem[j].usage)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(szTemp1, "%d|%d|%d|", ShowSellItem[j].kind, ShowSellItem[j].index, ShowSellItem[j].price);
|
|
|
|
|
strcat_s(szTemp, szTemp1);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
count++; // 总数统计
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (count != 0)
|
|
|
|
|
{
|
|
|
|
|
if (str_bufferVendorName.cnt == 0 || str_bufferVendorName.cnt>16)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(str_bufferVendorName.buffer, "欢迎光临!!");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
str_bufferVendorName.cnt = 10;
|
|
|
|
|
}
|
|
|
|
|
sprintf_s(szMsg, "S|%d|%s%s", count, szTemp, str_bufferVendorName.buffer);
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, szMsg);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 摆摊有骑宠,要下马
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (pc.ridePetNo > -1)
|
|
|
|
|
{
|
|
|
|
|
char buf[64];
|
|
|
|
|
|
|
|
|
|
sprintf_s(buf, "R|P|-1");
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
if ((bNewServer & 0xf000000) == 0xf000000)
|
|
|
|
|
lssproto_PETST_send(sockfd, pc.ridePetNo, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, "E|");
|
|
|
|
|
pc.iOnStreetVendor = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
break;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 取消
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 1:
|
|
|
|
|
if (i == 1)
|
|
|
|
|
{
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, "E|");
|
|
|
|
|
pc.iOnStreetVendor = 0;
|
|
|
|
|
}
|
|
|
|
|
sStreetVendorBtn = 0;
|
|
|
|
|
actBtn = 0;
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
|
|
|
|
if (pActSellPriceWnd != NULL)
|
|
|
|
|
DeathAction(pActSellPriceWnd);
|
|
|
|
|
pActSellPriceWnd = NULL;
|
|
|
|
|
GetKeyInputFocus(&MyChatBuffer);
|
|
|
|
|
break;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 上卷
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 2:
|
|
|
|
|
iListStart--;
|
|
|
|
|
if (iListStart < 0)
|
|
|
|
|
iListStart = 0;
|
|
|
|
|
break;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 下卷
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 3:
|
|
|
|
|
iListStart++;
|
|
|
|
|
if (iListStart > 10)
|
|
|
|
|
iListStart = 10;
|
|
|
|
|
break;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 放置
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 4:
|
|
|
|
|
if (!bRunSellPrice)
|
|
|
|
|
{
|
|
|
|
|
pShowSellItem = GetEmptyShowSellItem(ShowSellItem);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 还有空间能卖
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (pShowSellItem != NULL && iPetOnSell[iShowPet] == -1 && pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
iPetOnSell[iShowPet] = iShowPet;
|
|
|
|
|
bRunSellPrice = true;
|
|
|
|
|
pShowSellItem->usage = true;
|
|
|
|
|
pShowSellItem->needGetPrice = true;
|
|
|
|
|
sprintf_s(pShowSellItem->name, "%s", pet[iShowPet].name);
|
|
|
|
|
sprintf_s(pShowSellItem->freeName, "%s", pet[iShowPet].freeName);
|
|
|
|
|
pShowSellItem->pile = 1;
|
|
|
|
|
pShowSellItem->kind = 1;
|
|
|
|
|
pShowSellItem->index = iShowPet;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 左箭头
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 5:
|
|
|
|
|
if (!bRunSellPrice)
|
|
|
|
|
{
|
|
|
|
|
iShowPet = (iShowPet + 1 > 4 ? 0:iShowPet + 1);
|
|
|
|
|
bChangePet = true;
|
|
|
|
|
}
|
|
|
|
|
break;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 右箭头
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 6:
|
|
|
|
|
if (!bRunSellPrice)
|
|
|
|
|
{
|
|
|
|
|
iShowPet = (iShowPet - 1 < 0 ? 4:iShowPet - 1);
|
|
|
|
|
bChangePet = true;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!bRunSellPrice)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < 10; i++)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 修改价格
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
if (selId == iSellItemBtn[i])
|
|
|
|
|
{
|
|
|
|
|
ShowSellItem[i + iListStart].needGetPrice = true;
|
|
|
|
|
bRunSellPrice = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 取消不卖
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (mouse.onceState & MOUSE_RIGHT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
if (selId == iSellItemBtn[i])
|
|
|
|
|
{
|
|
|
|
|
if (ShowSellItem[i + iListStart].kind == 0)
|
|
|
|
|
iItemOnSell[ShowSellItem[i + iListStart].index - 9] = -1;
|
|
|
|
|
else
|
|
|
|
|
iPetOnSell[ShowSellItem[i + iListStart].index] = -1;
|
|
|
|
|
ShowSellItem[i+iListStart].name[0] = '\0';
|
|
|
|
|
ShowSellItem[i+iListStart].freeName[0] = '\0';
|
|
|
|
|
ShowSellItem[i+iListStart].needGetPrice = false;
|
|
|
|
|
ShowSellItem[i+iListStart].pile = 0;
|
|
|
|
|
ShowSellItem[i+iListStart].price = 0;
|
|
|
|
|
ShowSellItem[i+iListStart].usage = false;
|
|
|
|
|
ShowSellItem[i+iListStart].kind = -1;
|
|
|
|
|
ShowSellItem[i+iListStart].index = -1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef _NEW_ITEM_
|
|
|
|
|
for(i=0;i<3;i++){
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if(i==道具栏页数){
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockDispBuffer(722,350+i*56, DISP_PRIO_IME3,55223+i, 1);
|
|
|
|
|
}else{
|
|
|
|
|
BOOL flg=FALSE;
|
|
|
|
|
if(i){
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if(pc.道具栏状态&1<<i){
|
2020-06-22 17:49:02 +08:00
|
|
|
|
flg=TRUE;
|
|
|
|
|
}
|
|
|
|
|
}else flg=TRUE;
|
|
|
|
|
if(flg){
|
|
|
|
|
StockDispBuffer(727-9,350+i*56, DISP_PRIO_IME3,55226+i, 1);
|
|
|
|
|
if(MakeHitBox(717-9 ,322+i*56,717+20-9,319+i*56+60, DISP_PRIO_IME4)){
|
|
|
|
|
if(mouse.onceState & MOUSE_LEFT_CRICK){
|
2020-06-23 15:53:23 +08:00
|
|
|
|
道具栏页数=i;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else StockDispBuffer(727-9,350+i*56, DISP_PRIO_IME3,55229+i, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
for (j = 0; j < 3; j++)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < 5; i++)
|
|
|
|
|
{
|
|
|
|
|
itemx = x + 323 + i * 51;
|
|
|
|
|
itemy = y + 247 + j * 48;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示玩家身上的道具
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
#ifdef _NEW_ITEM_
|
2020-06-23 15:53:23 +08:00
|
|
|
|
int 道具索引 = j * 5 + i + 9+道具栏页数*15;
|
|
|
|
|
if (pItem[道具索引].useFlag)
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
if (!bRunSellPrice)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockDispBuffer(itemx + 25, itemy + 25, DISP_PRIO_ITEM, pItem[道具索引].graNo, 0);
|
|
|
|
|
// 若输入价格视窗开启,disp_prio 设定成menu才不会盖在价格视窗上
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockDispBuffer(itemx + 25, itemy + 25, DISP_PRIO_MENU, pItem[道具索引].graNo, 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (iItemOnSell[道具索引-9] != -1)
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 若输入价格视窗开启,不显示sell
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (!bRunSellPrice)
|
|
|
|
|
StockFontBuffer(itemx + 25, itemy + 25, FONT_PRIO_FRONT, FONT_PAL_RED, "SELL", 0);
|
|
|
|
|
}
|
|
|
|
|
if (!bRunSellPrice)
|
|
|
|
|
{
|
|
|
|
|
if (MakeHitBox(itemx, itemy, itemx + 50, itemy + 47, DISP_PRIO_IME3) == TRUE)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _NPC_ITEMUP
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if( pItem[道具索引].useFlag )
|
|
|
|
|
ShowItemup(pItem[道具索引].itemup,mouse.nowPoint.x,mouse.nowPoint.y);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 有这个道具
|
|
|
|
|
if (pItem[道具索引].useFlag &&
|
|
|
|
|
// 判断道具是否被选择
|
2020-06-22 17:49:02 +08:00
|
|
|
|
(mouse.onceState & MOUSE_LEFT_DBL_CRICK) &&
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 还没卖
|
|
|
|
|
(iItemOnSell[道具索引-9] == -1)
|
2020-06-22 17:49:02 +08:00
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
pShowSellItem = GetEmptyShowSellItem(ShowSellItem);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 还有空间能卖
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (pShowSellItem != NULL)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
iItemOnSell[道具索引-9] = 道具索引; // 记录身上那个道具要被卖
|
2020-06-22 17:49:02 +08:00
|
|
|
|
play_se(217,320,240);
|
|
|
|
|
bRunSellPrice = true;
|
|
|
|
|
pShowSellItem->usage = true;
|
|
|
|
|
pShowSellItem->needGetPrice = true;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(pShowSellItem->name, "%s", pItem[道具索引].name);
|
|
|
|
|
pShowSellItem->pile = pItem[道具索引].pile;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
pShowSellItem->kind = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
pShowSellItem->index = 道具索引;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (pItem[j * 5 + i + 9].useFlag)
|
|
|
|
|
{
|
|
|
|
|
if (!bRunSellPrice)
|
|
|
|
|
StockDispBuffer(itemx + 25, itemy + 25, DISP_PRIO_ITEM, pItem[j * 5 + i + 9].graNo, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 若输入价格视窗开启,disp_prio 设定成menu才不会盖在价格视窗上
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
StockDispBuffer(itemx + 25, itemy + 25, DISP_PRIO_MENU, pItem[j * 5 + i + 9].graNo, 0);
|
|
|
|
|
}
|
|
|
|
|
if (iItemOnSell[j * 5 + i] != -1)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 若输入价格视窗开启,不显示sell
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (!bRunSellPrice)
|
|
|
|
|
StockFontBuffer(itemx + 25, itemy + 25, FONT_PRIO_FRONT, FONT_PAL_RED, "SELL", 0);
|
|
|
|
|
}
|
|
|
|
|
if (!bRunSellPrice)
|
|
|
|
|
{
|
|
|
|
|
if (MakeHitBox(itemx, itemy, itemx + 50, itemy + 47, DISP_PRIO_IME3) == TRUE)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _NPC_ITEMUP
|
|
|
|
|
if( pItem[j * 5 + i + 9].useFlag )
|
|
|
|
|
ShowItemup(pItem[j * 5 + i + 9].itemup,mouse.nowPoint.x,mouse.nowPoint.y);
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 有这个道具
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (pItem[j * 5 + i + 9].useFlag &&
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 判断道具是否被选择
|
2020-06-22 17:49:02 +08:00
|
|
|
|
(mouse.onceState & MOUSE_LEFT_DBL_CRICK) &&
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 还没卖
|
2020-06-22 17:49:02 +08:00
|
|
|
|
(iItemOnSell[j * 5 + i] == -1)
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
pShowSellItem = GetEmptyShowSellItem(ShowSellItem);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 还有空间能卖
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (pShowSellItem != NULL)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
iItemOnSell[j * 5 + i] = j * 5 + i + 9; // 记录身上那个道具要被卖
|
2020-06-22 17:49:02 +08:00
|
|
|
|
play_se(217,320,240);
|
|
|
|
|
bRunSellPrice = true;
|
|
|
|
|
pShowSellItem->usage = true;
|
|
|
|
|
pShowSellItem->needGetPrice = true;
|
|
|
|
|
sprintf_s(pShowSellItem->name, "%s", pItem[j * 5 + i + 9].name);
|
|
|
|
|
pShowSellItem->pile = pItem[j * 5 + i + 9].pile;
|
|
|
|
|
pShowSellItem->kind = 0;
|
|
|
|
|
pShowSellItem->index = j * 5 + i + 9;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 秀宠物
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for (i = 0; i < MAX_PET; i++)
|
|
|
|
|
{
|
|
|
|
|
if (bChangePet && !bRunSellPrice)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 有这只宠且不是正在骑乘及设定成宠邮的宠
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (pet[iShowPet].useFlag == 1 && (pc.ridePetNo != iShowPet) && (pc.mailPetNo != iShowPet))
|
|
|
|
|
{
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
|
|
|
|
pShowPet = MakeAnimDisp(x + 396, y + 170, pet[iShowPet].graNo, 0);
|
|
|
|
|
bChangePet = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (HitDispNo == iBtn[5])
|
|
|
|
|
iShowPet = (iShowPet + 1 > 4 ? 0:iShowPet + 1);
|
|
|
|
|
else if (HitDispNo == iBtn[6])
|
|
|
|
|
iShowPet = (iShowPet - 1 < 0 ? 4:iShowPet - 1);
|
|
|
|
|
else
|
|
|
|
|
iShowPet = (iShowPet + 1 > 4 ? 0:iShowPet + 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠物资料
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (iPetOnSell[iShowPet] != -1)
|
|
|
|
|
StockFontBuffer(x + 440, y + 195, FONT_PRIO_FRONT, FONT_PAL_RED, "SELL", 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠物名称
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (strlen(pet[iShowPet].freeName) > 0)
|
|
|
|
|
StockFontBuffer(x + 336, y + 28, FONT_PRIO_FRONT, 0, pet[iShowPet].freeName, 0);
|
|
|
|
|
else
|
|
|
|
|
StockFontBuffer(x + 336, y + 28, FONT_PRIO_FRONT, 0, pet[iShowPet].name, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠物的属性
|
2020-06-22 17:49:02 +08:00
|
|
|
|
_itoa_s(pet[iShowPet].level, temp, 10);
|
|
|
|
|
StockFontBuffer(x + 542, y + 92 , FONT_PRIO_FRONT, FONT_PAL_WHITE, temp, 0);
|
|
|
|
|
_itoa_s(pet[iShowPet].atk, temp, 10);
|
|
|
|
|
StockFontBuffer(x + 542, y + 92 + 25, FONT_PRIO_FRONT, FONT_PAL_WHITE, temp, 0);
|
|
|
|
|
_itoa_s(pet[iShowPet].def, temp, 10);
|
|
|
|
|
StockFontBuffer(x + 542, y + 92 + 50, FONT_PRIO_FRONT, FONT_PAL_WHITE, temp, 0);
|
|
|
|
|
_itoa_s(pet[iShowPet].quick, temp, 10);
|
|
|
|
|
StockFontBuffer(x + 542, y + 92 + 73, FONT_PRIO_FRONT, FONT_PAL_WHITE, temp, 0);
|
|
|
|
|
_itoa_s(pet[iShowPet].maxHp, temp, 10);
|
|
|
|
|
StockFontBuffer(x + 542, y + 92 + 97, FONT_PRIO_FRONT, FONT_PAL_WHITE, temp, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 身上没宠
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (i == MAX_PET && bChangePet)
|
|
|
|
|
{
|
|
|
|
|
bChangePet = false;
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 滑鼠在店名区内
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (MakeHitBox(str_bufferVendorName.x, str_bufferVendorName.y, str_bufferVendorName.x + 250,
|
|
|
|
|
str_bufferVendorName.y + 24, DISP_PRIO_BOX2) == TRUE)
|
|
|
|
|
GetKeyInputFocus(&str_bufferVendorName);
|
|
|
|
|
CheckSpace(str_bufferVendorName.buffer);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示店名
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer2(&str_bufferVendorName);
|
|
|
|
|
StockDispBuffer(((WINDOW_DISP *)pActStreetVendorWnd->pYobi)->mx,
|
|
|
|
|
((WINDOW_DISP *)pActStreetVendorWnd->pYobi)->my,
|
|
|
|
|
DISP_PRIO_MENU, CG_FIELD_SV_SELL_PANEL, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 摆摊购买介面
|
2020-06-22 17:49:02 +08:00
|
|
|
|
Show_Vendor_Item ShowVendorItem[MAX_SELL_ITEM];
|
|
|
|
|
|
|
|
|
|
void StreetVendorBuyWndfunc(char *data)
|
|
|
|
|
{
|
|
|
|
|
int i,j,x,y,selId = 0;
|
|
|
|
|
const int iMaxBtnNum = 5;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
static int iBtn[iMaxBtnNum],iBuyItemBtn[MAX_SELL_ITEM],iListStart,iTotalBuy[2]; //iTotalBuy[0]:买入道具数量 iTotalBuy[1]:宠物买入数量
|
|
|
|
|
static int iEmptyNum[2],iCurrentShow,iTotalBuyMoney; // iEmptyNum[0]:身上道具栏空位数量 iEmptyNum[1]:宠物栏空位数量
|
2020-06-22 17:49:02 +08:00
|
|
|
|
static int iMakePetAni = -1;
|
|
|
|
|
#ifdef _PET_ITEM
|
|
|
|
|
static BOOL bViewPetItem = FALSE;
|
|
|
|
|
#endif
|
|
|
|
|
char szMsg[1024];
|
|
|
|
|
|
|
|
|
|
if (pActStreetVendorBuyWnd == NULL)
|
|
|
|
|
{
|
|
|
|
|
int winW = 617;
|
|
|
|
|
int winH = 405;
|
|
|
|
|
int winX = (lpDraw->xSize-winW)/2;
|
|
|
|
|
int winY = (lpDraw->ySize-winH)/2;
|
|
|
|
|
|
|
|
|
|
#ifdef _NEW_RESOMODE
|
|
|
|
|
pActStreetVendorBuyWnd = MakeWindowDisp(winX, winY, winW, winH, CG_FIELD_SV_BUY_PANEL, -1, FALSE);
|
|
|
|
|
#else
|
|
|
|
|
pActStreetVendorBuyWnd = MakeWindowDisp((DEF_APPSIZEX >> 1) - (617 >> 1), 0, 617, 405, CG_FIELD_SV_BUY_PANEL, -1);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
memset(ShowVendorItem, 0, sizeof(ShowVendorItem));
|
|
|
|
|
memset(iBuyItemBtn, 0, sizeof(iBuyItemBtn));
|
|
|
|
|
iTotalBuy[0] = iTotalBuy[1] = iListStart = iEmptyNum[0] = iEmptyNum[1] = iCurrentShow = iTotalBuyMoney = 0;
|
|
|
|
|
iMakePetAni = -1;
|
|
|
|
|
for (i = MAX_ITEMSTART; i < MAX_ITEM; i++)
|
|
|
|
|
{
|
|
|
|
|
if (pc.item[i].useFlag == FALSE)
|
|
|
|
|
iEmptyNum[0]++;
|
|
|
|
|
}
|
|
|
|
|
for (i = 0; i < MAX_PET; i++)
|
|
|
|
|
{
|
|
|
|
|
if (pet[i].useFlag == 0)
|
|
|
|
|
iEmptyNum[1]++;
|
|
|
|
|
}
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
|
|
|
|
#ifdef _PET_ITEM
|
|
|
|
|
InitItem(pActStreetVendorBuyWnd->x + 310, pActStreetVendorBuyWnd->y + 20, TRUE);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (pActStreetVendorBuyWnd->hp > 0)
|
|
|
|
|
{
|
|
|
|
|
x = pActStreetVendorBuyWnd->x;
|
|
|
|
|
y = pActStreetVendorBuyWnd->y;
|
|
|
|
|
selId = focusFontId(iBuyItemBtn, sizeof(iBuyItemBtn) / sizeof(int));
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示及设定button出现的位置
|
|
|
|
|
// 确定
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[0] = StockDispBuffer(x + 410, y + 378, DISP_PRIO_IME3, 26289, 2);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 取消
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[1] = StockDispBuffer(x + 535, y + 378, DISP_PRIO_IME3, 26291, 2);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 上卷箭头
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[2] = StockDispBuffer(x + 300, y + 34, DISP_PRIO_IME3, 26331, 2);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 下卷箭头
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iBtn[3] = StockDispBuffer(x + 300, y + 374, DISP_PRIO_IME3, 26332, 2);
|
|
|
|
|
#ifdef _PET_ITEM
|
|
|
|
|
if (bViewPetItem)
|
|
|
|
|
iBtn[4] = StockDispBuffer(x + 560, y + 318, DISP_PRIO_IME3, 26472, 2);
|
|
|
|
|
else
|
|
|
|
|
iBtn[4] = StockDispBuffer(x + 560, y + 318, DISP_PRIO_IME3, 26471, 2);
|
|
|
|
|
#endif
|
|
|
|
|
for (i = 0; i < iMaxBtnNum; i++)
|
|
|
|
|
{
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
if (HitDispNo == iBtn[i])
|
|
|
|
|
{
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
switch (i)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 确定
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 0:
|
|
|
|
|
{
|
|
|
|
|
int count = 0;
|
|
|
|
|
char szMsg[128], szTemp[128], szTemp1[8];
|
|
|
|
|
|
|
|
|
|
memset(szMsg, 0, sizeof(szMsg));
|
|
|
|
|
memset(szTemp, 0, sizeof(szTemp));
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 把要买的东西的索引传给server
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for(j = 0; j < MAX_SELL_ITEM; j++)
|
|
|
|
|
{
|
|
|
|
|
if (ShowVendorItem[j].bBuy)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(szTemp1, "%d|", ShowVendorItem[j].index);
|
|
|
|
|
strcat_s(szTemp, szTemp1);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
count++; // 总数统计
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (count != 0)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(szMsg, "B|%d|%s", count, szTemp);
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, szMsg);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, "N|");
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 取消
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 1:
|
|
|
|
|
if (i == 1)
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, "N|");
|
|
|
|
|
sStreetVendorBuyBtn = 0;
|
|
|
|
|
actBtn = 0;
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
|
|
|
|
if (pActSellPriceWnd != NULL)
|
|
|
|
|
DeathAction(pActSellPriceWnd);
|
|
|
|
|
pActSellPriceWnd = NULL;
|
|
|
|
|
break;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 上卷
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 2:
|
|
|
|
|
iListStart--;
|
|
|
|
|
if (iListStart < 0)
|
|
|
|
|
iListStart = 0;
|
|
|
|
|
break;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 下卷
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 3:
|
|
|
|
|
iListStart++;
|
|
|
|
|
if (iListStart > 13)
|
|
|
|
|
iListStart = 13;
|
|
|
|
|
break;
|
|
|
|
|
#ifdef _PET_ITEM
|
|
|
|
|
case 4:
|
|
|
|
|
bViewPetItem = !bViewPetItem;
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示左方的物品列表
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for (i = iListStart, j = 0; i < iListStart + 13; i++, j++)
|
|
|
|
|
{
|
|
|
|
|
iBuyItemBtn[j]=-2;
|
|
|
|
|
if (ShowVendorItem[i].usage)
|
|
|
|
|
{
|
|
|
|
|
if (ShowVendorItem[i].kind == 0)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _NEWFONT_
|
|
|
|
|
extern int getTextLength(char * str);
|
|
|
|
|
char tempstr[128];
|
|
|
|
|
if (ShowVendorItem[i].price == 0){
|
|
|
|
|
StockFontBuffer(x + 20, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowVendorItem[i].name, 0);
|
|
|
|
|
sprintf(tempstr,"x%d",ShowVendorItem[i].pile);
|
|
|
|
|
StockFontBuffer(x + 180-getTextLength(tempstr)/2, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, tempstr, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(x + 250-getTextLength("议价")/2, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, "议价", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}else{
|
|
|
|
|
StockFontBuffer(x + 20, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowVendorItem[i].name, 0);
|
|
|
|
|
sprintf(tempstr,"x%d",ShowVendorItem[i].pile);
|
|
|
|
|
StockFontBuffer(x + 180-getTextLength(tempstr)/2, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, tempstr, 0);
|
|
|
|
|
sprintf(tempstr,"%d",ShowVendorItem[i].price);
|
|
|
|
|
StockFontBuffer(x + 250-getTextLength(tempstr)/2, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, tempstr, 0);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ShowVendorItem[i].price == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "%-20sx%3d%13s", ShowVendorItem[i].name, ShowVendorItem[i].pile, "议价");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
sprintf_s(szMsg, "%-20sx%3d%13d", ShowVendorItem[i].name, ShowVendorItem[i].pile, ShowVendorItem[i].price);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
#ifdef _NEWFONT_
|
|
|
|
|
extern int getTextLength(char * str);
|
|
|
|
|
char tempstr[128];
|
|
|
|
|
if (ShowVendorItem[i].price == 0){
|
|
|
|
|
StockFontBuffer(x + 20, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowVendorItem[i].name, 0);
|
|
|
|
|
StockFontBuffer(x + 175- getTextLength(ShowVendorItem[i].freeName)/2, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowVendorItem[i].freeName, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(x + 250-getTextLength("议价")/2, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, "议价", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}else{
|
|
|
|
|
StockFontBuffer(x + 20, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowVendorItem[i].name, 0);
|
|
|
|
|
StockFontBuffer(x + 175 - getTextLength(ShowVendorItem[i].freeName)/2, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowVendorItem[i].freeName, 0);
|
|
|
|
|
sprintf(tempstr,"%d",ShowVendorItem[i].price);
|
|
|
|
|
StockFontBuffer(x + 250-getTextLength(tempstr)/2, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, tempstr, 0);
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if (ShowVendorItem[i].price == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "%-17s%-12s%8s", ShowVendorItem[i].name, ShowVendorItem[i].freeName, "议价");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
sprintf_s(szMsg, "%-17s%-12s%8d", ShowVendorItem[i].name, ShowVendorItem[i].freeName, ShowVendorItem[i].price);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
#ifdef _NEWFONT_
|
|
|
|
|
iBuyItemBtn[j] = StockFontBuffer(x + 20, y + 21 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE,
|
|
|
|
|
" ", 2);
|
|
|
|
|
#else
|
|
|
|
|
iBuyItemBtn[j] = StockFontBuffer(x + 20, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 2);
|
|
|
|
|
#endif
|
|
|
|
|
if (ShowVendorItem[i].bBuy)
|
|
|
|
|
StockBoxDispBuffer(x + 18, y + 19 + 28 * j, x + 280, y + 39 + 28 * j, DISP_PRIO_BOX2, SYSTEM_PAL_RED, 0);
|
|
|
|
|
}
|
|
|
|
|
//else
|
|
|
|
|
//iBuyItemBtn[j] = StockFontBuffer(x + 20, y + 22 + 28 * j, FONT_PRIO_FRONT, FONT_PAL_WHITE, "", 0);
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示项目详细资料
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (ShowVendorItem[iCurrentShow].bGetData)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示道具详细资料
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (ShowVendorItem[iCurrentShow].kind == 0)
|
|
|
|
|
{
|
|
|
|
|
int iy = y + 198, color = ShowVendorItem[iCurrentShow].color;
|
|
|
|
|
char *splitPoint = ShowVendorItem[iCurrentShow].memo;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 清除宠物图
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示道具
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockDispBuffer(x + 415, y + 100, DISP_PRIO_ITEM, ShowVendorItem[iCurrentShow].bmpNo, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示道具底下的石板
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockDispBuffer(x + 415, y + 100, DISP_PRIO_IME3, 26269, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示道具名称
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 150, FONT_PRIO_FRONT, color, ShowVendorItem[iCurrentShow].name, 0);
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示道具耐久度
|
|
|
|
|
sprintf_s(szMsg, "耐久度(%s)", ShowVendorItem[iCurrentShow].damage);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 174, FONT_PRIO_FRONT, color, szMsg, 0);
|
|
|
|
|
|
|
|
|
|
#ifdef _NPC_ITEMUP
|
|
|
|
|
ShowItemup(ShowVendorItem[iCurrentShow].itemup,x+325+250,y+194);
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示道具叙述
|
2020-06-22 17:49:02 +08:00
|
|
|
|
while (1)
|
|
|
|
|
{
|
|
|
|
|
if (strlen(splitPoint) > 28)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(szMsg, "%s", splitPoint);
|
|
|
|
|
szMsg[28] = NULL;
|
|
|
|
|
if (GetStrLastByte(szMsg) == 3)
|
|
|
|
|
{
|
|
|
|
|
szMsg[27] = NULL;
|
|
|
|
|
splitPoint += 27;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
szMsg[28] = NULL;
|
|
|
|
|
splitPoint += 28;
|
|
|
|
|
}
|
|
|
|
|
StockFontBuffer(x + 325, iy, FONT_PRIO_FRONT, 0, szMsg, 0);
|
|
|
|
|
iy += 24;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strcpy(szMsg, splitPoint);
|
|
|
|
|
StockFontBuffer(x + 325, iy, FONT_PRIO_FRONT, 0, szMsg, 0);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠物详细资料
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _PET_ITEM
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠物身上道具
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (bViewPetItem)
|
|
|
|
|
{
|
|
|
|
|
int nY = 251, nColor;
|
|
|
|
|
char *splitPoint;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠物装备栏的底图及装备
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for (i = 0; i < PET_EQUIPNUM; i++)
|
|
|
|
|
{
|
|
|
|
|
StockDispBuffer(ItemBuffer[i].defX, ItemBuffer[i].defY, DISP_PRIO_IME3, nPetItemEquipBmpNumber[i][0], 0);
|
|
|
|
|
if (ShowVendorItem[iCurrentShow].oPetItemInfo[i].bmpNo > 0)
|
|
|
|
|
StockDispBuffer(ItemBuffer[i].defX, ItemBuffer[i].defY, DISP_PRIO_ITEM, ShowVendorItem[iCurrentShow].oPetItemInfo[i].bmpNo, 0);
|
|
|
|
|
}
|
|
|
|
|
for (i = 0; i < PET_EQUIPNUM; i++)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示装备内容
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (MakeHitBox( ItemBuffer[i].defX - 26, ItemBuffer[i].defY - 26,
|
|
|
|
|
ItemBuffer[i].defX + 26, ItemBuffer[i].defY + 23, DISP_PRIO_IME3) == TRUE)
|
|
|
|
|
{
|
|
|
|
|
if (ShowVendorItem[iCurrentShow].oPetItemInfo[i].bmpNo > 0)
|
|
|
|
|
{
|
|
|
|
|
nColor = ShowVendorItem[iCurrentShow].oPetItemInfo[i].color;
|
|
|
|
|
splitPoint = ShowVendorItem[iCurrentShow].oPetItemInfo[i].memo;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 装备名称
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 195, FONT_PRIO_FRONT, nColor, ShowVendorItem[iCurrentShow].oPetItemInfo[i].name,0);
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 耐久度
|
|
|
|
|
sprintf_s(szMsg, "耐久度(%s)", ShowVendorItem[iCurrentShow].oPetItemInfo[i].damage);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 215, FONT_PRIO_FRONT, nColor, szMsg, 0);
|
|
|
|
|
|
|
|
|
|
#ifdef _NPC_ITEMUP
|
|
|
|
|
ShowItemup(ShowVendorItem[iCurrentShow].itemup,x+325+250,y+235);
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示道具叙述
|
2020-06-22 17:49:02 +08:00
|
|
|
|
while (1)
|
|
|
|
|
{
|
|
|
|
|
if (strlen(splitPoint) > 28)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(szMsg, 28, "%s", splitPoint);
|
|
|
|
|
szMsg[28] = NULL;
|
|
|
|
|
if (GetStrLastByte(szMsg) == 3)
|
|
|
|
|
{
|
|
|
|
|
szMsg[27] = NULL;
|
|
|
|
|
splitPoint += 27;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
szMsg[28] = NULL;
|
|
|
|
|
splitPoint += 28;
|
|
|
|
|
}
|
|
|
|
|
StockFontBuffer(x + 325, nY, FONT_PRIO_FRONT, 0, szMsg, 0);
|
|
|
|
|
nY += 24;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strcpy(szMsg, splitPoint);
|
|
|
|
|
StockFontBuffer(x + 325, nY, FONT_PRIO_FRONT, 0, szMsg, 0);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠物名字
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 35, FONT_PRIO_FRONT, FONT_PAL_WHITE, ShowVendorItem[iCurrentShow].name, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠物转生数
|
|
|
|
|
sprintf_s(szMsg, "%d 转", ShowVendorItem[iCurrentShow].trans);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 570, y + 35, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠物被改后的名字
|
2020-06-22 17:49:02 +08:00
|
|
|
|
//StockFontBuffer(x + 325, y + 55, FONT_PRIO_FRONT, FONT_PAL_RED, ShowVendorItem[iCurrentShow].freeName, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠物等级,,血,攻,防,敏,四属性
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef _NEWFONT_
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, " 当前 原始 预测 成长 其它");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, " 当前 原始 预测 成长 其它");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
StockFontBuffer(x + 325, y + 60, FONT_PRIO_FRONT, FONT_PAL_GREEN, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "Lv:%d", ShowVendorItem[iCurrentShow].level);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 80, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
#ifdef _PETBLESS_
|
|
|
|
|
if(ShowVendorItem[iCurrentShow].maxhp < 0 ){
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "血:%d", abs(ShowVendorItem[iCurrentShow].maxhp));
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 100, FONT_PRIO_FRONT, FONT_PAL_RED, szMsg, 0);
|
|
|
|
|
}
|
|
|
|
|
else{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "血:%d", ShowVendorItem[iCurrentShow].maxhp);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 100, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(ShowVendorItem[iCurrentShow].attack < 0 ){
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "攻:%d", abs(ShowVendorItem[iCurrentShow].attack));
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 120, FONT_PRIO_FRONT, FONT_PAL_RED, szMsg, 0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "攻:%d", ShowVendorItem[iCurrentShow].attack);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 120, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if(ShowVendorItem[iCurrentShow].defence < 0 ){
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "防:%d", abs(ShowVendorItem[iCurrentShow].defence));
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 140, FONT_PRIO_FRONT, FONT_PAL_RED, szMsg, 0);
|
|
|
|
|
}
|
|
|
|
|
else{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "防:%d", ShowVendorItem[iCurrentShow].defence);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 140, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
}
|
|
|
|
|
if(ShowVendorItem[iCurrentShow].dex < 0 ){
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "敏:%d", abs(ShowVendorItem[iCurrentShow].dex));
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 160, FONT_PRIO_FRONT, FONT_PAL_RED, szMsg, 0);
|
|
|
|
|
}
|
|
|
|
|
else{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "敏:%d", ShowVendorItem[iCurrentShow].dex);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 160, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
}
|
|
|
|
|
#else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "Lv:%d", ShowVendorItem[iCurrentShow].level);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 80, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "血:%d", ShowVendorItem[iCurrentShow].maxhp);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 100, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "攻:%d", ShowVendorItem[iCurrentShow].attack);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 120, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "防:%d", ShowVendorItem[iCurrentShow].defence);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 140, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "敏:%d", ShowVendorItem[iCurrentShow].dex);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 160, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
#endif
|
|
|
|
|
sprintf_s(szMsg, "%d", ShowVendorItem[iCurrentShow].ylv);
|
|
|
|
|
StockFontBuffer(x + 395, y + 80, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%d", ShowVendorItem[iCurrentShow].yhp);
|
|
|
|
|
StockFontBuffer(x + 392, y + 100, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%d", ShowVendorItem[iCurrentShow].yack);
|
|
|
|
|
StockFontBuffer(x + 392, y + 120, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%d", ShowVendorItem[iCurrentShow].ydef);
|
|
|
|
|
StockFontBuffer(x + 392, y + 140, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%d", ShowVendorItem[iCurrentShow].ydex);
|
|
|
|
|
StockFontBuffer(x + 392, y + 160, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
float a,b,c,d,e,f;
|
|
|
|
|
float a1,b1,c1,d1,e1;
|
|
|
|
|
|
|
|
|
|
if(ShowVendorItem[iCurrentShow].level != ShowVendorItem[iCurrentShow].ylv && ShowVendorItem[iCurrentShow].ylv){
|
|
|
|
|
f = (float)(ShowVendorItem[iCurrentShow].level-ShowVendorItem[iCurrentShow].ylv);
|
|
|
|
|
a = (abs(ShowVendorItem[iCurrentShow].maxhp)- ShowVendorItem[iCurrentShow].yhp)/f;
|
|
|
|
|
b = (abs(ShowVendorItem[iCurrentShow].attack)-ShowVendorItem[iCurrentShow].yack)/f;
|
|
|
|
|
c = (abs(ShowVendorItem[iCurrentShow].defence)-ShowVendorItem[iCurrentShow].ydef)/f;
|
|
|
|
|
d = (abs(ShowVendorItem[iCurrentShow].dex)-ShowVendorItem[iCurrentShow].ydex)/f;
|
|
|
|
|
|
|
|
|
|
f = 140.00 - ShowVendorItem[iCurrentShow].ylv;
|
|
|
|
|
|
|
|
|
|
a1 = f*a+ShowVendorItem[iCurrentShow].yhp;
|
|
|
|
|
b1 = f*b+ShowVendorItem[iCurrentShow].yack;
|
|
|
|
|
c1 = f*c+ShowVendorItem[iCurrentShow].ydef;
|
|
|
|
|
d1 = f*d+ShowVendorItem[iCurrentShow].ydex;
|
|
|
|
|
}else{
|
|
|
|
|
a=b=c=d=1.0000;
|
|
|
|
|
a1=b1=c1=d1=0;
|
|
|
|
|
}
|
|
|
|
|
e=b+c+d;
|
|
|
|
|
e1 = abs(ShowVendorItem[iCurrentShow].maxhp)*0.25 + abs(ShowVendorItem[iCurrentShow].attack)+abs(ShowVendorItem[iCurrentShow].defence)+abs(ShowVendorItem[iCurrentShow].dex);
|
|
|
|
|
|
|
|
|
|
sprintf_s(szMsg, "%3d", 140);
|
|
|
|
|
|
|
|
|
|
StockFontBuffer(x + 445, y + 80, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%3.2f", a1);
|
|
|
|
|
StockFontBuffer(x + 435, y + 100, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%3.2f", b1);
|
|
|
|
|
StockFontBuffer(x + 435, y + 120, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%3.2f", c1);
|
|
|
|
|
StockFontBuffer(x + 435, y + 140, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%3.2f", d1);
|
|
|
|
|
StockFontBuffer(x + 435, y + 160, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sprintf_s(szMsg, "%3.4f", b+c+d);
|
|
|
|
|
StockFontBuffer(x + 500, y + 80, FONT_PRIO_FRONT, FONT_PAL_RED, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%3.4f", a);
|
|
|
|
|
StockFontBuffer(x + 500, y + 100, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%3.4f", b);
|
|
|
|
|
StockFontBuffer(x + 500, y + 120, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%3.4f", c);
|
|
|
|
|
StockFontBuffer(x + 500, y + 140, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
sprintf_s(szMsg, "%3.4f", d);
|
|
|
|
|
StockFontBuffer(x + 500, y + 160, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "地:%d", ShowVendorItem[iCurrentShow].earth/10);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 560, y + 80, FONT_PRIO_FRONT, FONT_PAL_GREEN, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "水:%d", ShowVendorItem[iCurrentShow].water/10);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 560, y + 100, FONT_PRIO_FRONT, FONT_PAL_BLUE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "火:%d", ShowVendorItem[iCurrentShow].fire/10);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 560, y + 120, FONT_PRIO_FRONT, FONT_PAL_RED, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "风:%d", ShowVendorItem[iCurrentShow].wind/10);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 560, y + 140, FONT_PRIO_FRONT, FONT_PAL_YELLOW, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "忠:%d", ShowVendorItem[iCurrentShow].fidelity);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 560, y + 160, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示宠技
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for (i = 0; i < ShowVendorItem[iCurrentShow].maxSkill; i++)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "技 %d:%s", i + 1, ShowVendorItem[iCurrentShow].skillname[i]);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 325, y + 190 + i * 20, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 处理左方项目
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int kind;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 13; i++)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 选定要买
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
//selId = focusFontId(iBuyItemBtn, sizeof(iBuyItemBtn) / sizeof(int));
|
|
|
|
|
if (HitFontNo == iBuyItemBtn[i])
|
|
|
|
|
{
|
|
|
|
|
kind = ShowVendorItem[i + iListStart].kind;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 若已点选则取消
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (ShowVendorItem[i + iListStart].bBuy)
|
|
|
|
|
{
|
|
|
|
|
ShowVendorItem[i + iListStart].bBuy = false;
|
|
|
|
|
iTotalBuy[kind]--;
|
|
|
|
|
iTotalBuyMoney -= ShowVendorItem[i + iListStart].price;
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 是否是议价物品
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (ShowVendorItem[i + iListStart].price > 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 身上还有空位
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (iEmptyNum[kind] > iTotalBuy[kind])
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 身上的钱足够
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if ((iTotalBuyMoney + ShowVendorItem[i + iListStart].price) <= pc.gold)
|
|
|
|
|
{
|
|
|
|
|
ShowVendorItem[i + iListStart].bBuy = true;
|
|
|
|
|
iTotalBuy[kind]++;
|
|
|
|
|
iTotalBuyMoney += ShowVendorItem[i + iListStart].price;
|
|
|
|
|
}
|
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("石币不足!", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (kind == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("身上道具栏位不足!", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (kind == 1)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("身上宠物栏栏位不足!", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("议价物品不可点选!", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 看项目内容
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (mouse.onceState & MOUSE_RIGHT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
if (HitFontNo == iBuyItemBtn[i])
|
|
|
|
|
{
|
|
|
|
|
if (!ShowVendorItem[i+iListStart].bGetData)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(szMsg, "D|%d|", ShowVendorItem[i + iListStart].index);
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, szMsg);
|
|
|
|
|
}
|
|
|
|
|
else if (ShowVendorItem[i + iListStart].kind == 1)
|
|
|
|
|
{
|
|
|
|
|
if (iCurrentShow != i + iListStart)
|
|
|
|
|
{
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
|
|
|
|
iMakePetAni = i + iListStart;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
iCurrentShow = i + iListStart;
|
|
|
|
|
#ifdef _PET_ITEM
|
|
|
|
|
bViewPetItem = FALSE;
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示身上的钱
|
2020-06-22 17:49:02 +08:00
|
|
|
|
sprintf_s(szMsg, "%d", pc.gold);
|
|
|
|
|
StockFontBuffer(x + 380, y + 336, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示点选的物品的总价
|
2020-06-22 17:49:02 +08:00
|
|
|
|
sprintf_s(szMsg, "%d", iTotalBuyMoney);
|
|
|
|
|
StockFontBuffer(x + 525, y + 336, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
|
|
|
|
if (iMakePetAni > -1)
|
|
|
|
|
{
|
|
|
|
|
pShowPet = MakeAnimDisp(x + 520, y + 300, ShowVendorItem[iMakePetAni].bmpNo, 0);
|
|
|
|
|
iMakePetAni = -1;
|
|
|
|
|
}
|
|
|
|
|
StockDispBuffer(((WINDOW_DISP *)pActStreetVendorBuyWnd->pYobi)->mx,
|
|
|
|
|
((WINDOW_DISP *)pActStreetVendorBuyWnd->pYobi)->my,
|
|
|
|
|
DISP_PRIO_MENU, CG_FIELD_SV_BUY_PANEL, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (data != NULL)
|
|
|
|
|
{
|
|
|
|
|
int count, index;
|
|
|
|
|
#ifdef _PET_ITEM
|
|
|
|
|
int nPetItemPlace;
|
|
|
|
|
#endif
|
|
|
|
|
getStringToken(data, '|', 1, sizeof(szMsg) - 1, szMsg);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 贩卖物基本资料
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (szMsg[0] == 'B')
|
|
|
|
|
{
|
|
|
|
|
getStringToken(data, '|', 2, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
count = atoi(szMsg);
|
|
|
|
|
for (i = 0; i < count; i++)
|
|
|
|
|
{
|
|
|
|
|
getStringToken(data, '|', 3 + i * 5, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[i].kind = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 4 + i * 5, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[i].price = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 5 + i * 5, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
strncpy_s(ShowVendorItem[i].name, szMsg, sizeof(ShowVendorItem[i].name));
|
|
|
|
|
getStringToken(data, '|', 6 + i * 5, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
if (ShowVendorItem[i].kind == 0)
|
|
|
|
|
ShowVendorItem[i].pile = atoi(szMsg);
|
|
|
|
|
else
|
|
|
|
|
strncpy_s(ShowVendorItem[i].freeName, szMsg, sizeof(ShowVendorItem[i].freeName));
|
|
|
|
|
getStringToken(data, '|', 7 + i * 5, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[i].index = atoi(szMsg);
|
|
|
|
|
ShowVendorItem[i].usage = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 贩卖物详细资料
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (szMsg[0] == 'D')
|
|
|
|
|
{
|
|
|
|
|
getStringToken(data, '|', 2, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
index = atoi(szMsg);
|
|
|
|
|
for (i = 0; i < MAX_SELL_ITEM; i++)
|
|
|
|
|
{
|
|
|
|
|
if (ShowVendorItem[i].usage && ShowVendorItem[i].index == index)
|
|
|
|
|
{
|
|
|
|
|
index = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (index >= 0 && index < MAX_SELL_ITEM)
|
|
|
|
|
{
|
|
|
|
|
if (ShowVendorItem[index].kind == 0)
|
|
|
|
|
{
|
|
|
|
|
getStringToken(data, '|', 3, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
strncpy_s(ShowVendorItem[index].memo, szMsg, sizeof(ShowVendorItem[index].memo)-1);
|
|
|
|
|
getStringToken(data, '|', 4, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
strncpy_s(ShowVendorItem[index].damage, szMsg, sizeof(ShowVendorItem[index].damage)-1);
|
|
|
|
|
getStringToken(data, '|', 5, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].color = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 6, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].bmpNo = atoi(szMsg);
|
|
|
|
|
#ifdef _NPC_ITEMUP
|
|
|
|
|
getStringToken(data, '|', 7, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].itemup = atoi(szMsg);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
int size = sizeof(ShowVendorItem[index].skillname[0]);
|
|
|
|
|
|
|
|
|
|
getStringToken(data, '|', 3, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
count = atoi(szMsg);
|
|
|
|
|
for (i = 0; i < count; i++)
|
|
|
|
|
{
|
|
|
|
|
getStringToken(data, '|', 4 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
strncpy_s(ShowVendorItem[index].skillname[i], szMsg, size);
|
|
|
|
|
}
|
|
|
|
|
ShowVendorItem[index].maxSkill = count;
|
|
|
|
|
getStringToken(data, '|', 4 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].level = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 5 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].maxhp = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 6 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].attack = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 7 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].defence = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 8 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].dex = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 9 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].earth = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 10 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].water = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 11 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].fire = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 12 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].wind = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 13 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].fidelity = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 14 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].trans = atoi(szMsg);
|
|
|
|
|
getStringToken(data, '|', 15 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].bmpNo = atoi(szMsg);
|
|
|
|
|
#ifdef _PETCOM_
|
|
|
|
|
i++;
|
|
|
|
|
getStringToken(data, '|', 15 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].ylv = atoi(szMsg);
|
|
|
|
|
i++;
|
|
|
|
|
getStringToken(data, '|', 15 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].yhp = atoi(szMsg);
|
|
|
|
|
i++;
|
|
|
|
|
getStringToken(data, '|', 15 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].yack = atoi(szMsg);
|
|
|
|
|
i++;
|
|
|
|
|
getStringToken(data, '|', 15 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].ydef = atoi(szMsg);
|
|
|
|
|
i++;
|
|
|
|
|
getStringToken(data, '|', 15 + i, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].ydex = atoi(szMsg);
|
|
|
|
|
#endif
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
|
|
|
|
iMakePetAni = index;
|
|
|
|
|
#ifdef _PET_ITEM
|
|
|
|
|
for (int j = 0; j < MAX_PET_ITEM; j++)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 装备位置
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (getStringToken(data, '|', 16 + i + j * 6, sizeof(szMsg) - 1, szMsg))
|
|
|
|
|
continue;
|
|
|
|
|
nPetItemPlace = atoi(szMsg);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 名字
|
2020-06-22 17:49:02 +08:00
|
|
|
|
getStringToken(data, '|', 17 + i + j * 6,
|
|
|
|
|
sizeof(ShowVendorItem[index].oPetItemInfo[nPetItemPlace].name) - 1,
|
|
|
|
|
ShowVendorItem[index].oPetItemInfo[nPetItemPlace].name);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 说明
|
2020-06-22 17:49:02 +08:00
|
|
|
|
getStringToken(data, '|', 18 + i + j * 6,
|
|
|
|
|
sizeof(ShowVendorItem[index].oPetItemInfo[nPetItemPlace].memo) - 1,
|
|
|
|
|
ShowVendorItem[index].oPetItemInfo[nPetItemPlace].memo);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 耐久度
|
2020-06-22 17:49:02 +08:00
|
|
|
|
getStringToken(data, '|', 19 + i + j * 6,
|
|
|
|
|
sizeof(ShowVendorItem[index].oPetItemInfo[nPetItemPlace].damage) - 1,
|
|
|
|
|
ShowVendorItem[index].oPetItemInfo[nPetItemPlace].damage);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 文字颜色
|
2020-06-22 17:49:02 +08:00
|
|
|
|
getStringToken(data, '|', 20 + i + j * 6, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].oPetItemInfo[nPetItemPlace].color = atoi(szMsg);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 图号
|
2020-06-22 17:49:02 +08:00
|
|
|
|
getStringToken(data, '|', 21 + i + j * 6, sizeof(szMsg) - 1, szMsg);
|
|
|
|
|
ShowVendorItem[index].oPetItemInfo[nPetItemPlace].bmpNo = atoi(szMsg);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
ShowVendorItem[index].bGetData = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _TABLEOFSKILL // (不可开) Syu ADD 7.0 新增人物技能表单
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int SkillWnd = 0 ;
|
|
|
|
|
ACTION *pActSkillWnd;
|
|
|
|
|
short skillBtn = 0;
|
|
|
|
|
short skillBtnFocus = 0;
|
|
|
|
|
int skillBtnGraNo[] =
|
|
|
|
|
{d
|
|
|
|
|
CG_FIELD_SKILL_BTN_OFF,
|
|
|
|
|
CG_FIELD_SKILL_BTN_ON
|
|
|
|
|
};
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 职业技能视窗
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void SkillWndfunc()
|
|
|
|
|
{
|
|
|
|
|
int x , y , j ;
|
|
|
|
|
char msg[256];
|
|
|
|
|
char buf[256];
|
|
|
|
|
char msg2[256];
|
|
|
|
|
if (pActSkillWnd == NULL)
|
|
|
|
|
{
|
|
|
|
|
pActSkillWnd = MakeWindowDisp(354, 0, 300, 456, 0, -1);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _NEW_RESOMODE //800 600模式
|
2020-06-22 17:49:02 +08:00
|
|
|
|
x = pActSkillWnd->x;
|
|
|
|
|
y = pActSkillWnd->y;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (pActSkillWnd->hp > 0)
|
|
|
|
|
{
|
|
|
|
|
StockDispBuffer(((WINDOW_DISP*)pActSkillWnd->pYobi)->mx - 10, ((WINDOW_DISP*)pActSkillWnd->pYobi )->my - 5 , DISP_PRIO_MENU, CG_FIELD_SKILL_PANEL, 1);
|
|
|
|
|
x = pActSkillWnd->x + 2;
|
|
|
|
|
y = pActSkillWnd->y - 5;
|
|
|
|
|
fieldBtnHitId[14] = StockDispBuffer(x + 201, y + 442, DISP_PRIO_IME3, CG_CLOSE_BTN, 2);
|
|
|
|
|
StockFontBuffer(x + 58, y + 40, FONT_PRIO_FRONT, 1, pc.profession_class_name, 2);
|
|
|
|
|
sprintf_s(msg, "%d", pc.profession_skill_point);
|
|
|
|
|
StockFontBuffer(x + 228, y + 40, FONT_PRIO_FRONT, 1, msg, 0);
|
|
|
|
|
memset(msg, -1, sizeof(msg));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (int i = 0; i < 3; i++)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _READ16BITBMP
|
|
|
|
|
if (g_bUseAlpha)
|
|
|
|
|
{
|
|
|
|
|
if (MakeHitBox(x + 258, y + 15 + i * 78, x + 288, y + 93 + i * 78, DISP_PRIO_IME3) == TRUE)
|
|
|
|
|
{
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
SkillWnd = i ;
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
if (MakeHitBox(x + 250, y + 18 + i * 79, x + 280, y + 96 + i * 79, DISP_PRIO_IME3) == TRUE)
|
|
|
|
|
{
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
SkillWnd = i ;
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
if (HitDispNo == fieldBtnHitId[14])
|
|
|
|
|
{
|
|
|
|
|
actBtn = 0 ;
|
|
|
|
|
skillBtn = 0 ;
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
extern int BattleSkill[20];
|
|
|
|
|
extern int AssitSkill[20];
|
|
|
|
|
extern int AdvanceSkill[20];
|
|
|
|
|
for (i = 0; i < 4; i++)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < 4; j++)
|
|
|
|
|
StockDispBuffer(x + 143 + j * 60, y + 210 + i * 57, DISP_PRIO_IME3, CG_FIELD_SKILL_TILE, 0);
|
|
|
|
|
}
|
|
|
|
|
switch (SkillWnd)
|
|
|
|
|
{
|
|
|
|
|
case 0 :
|
|
|
|
|
#ifdef _READ16BITBMP
|
|
|
|
|
if (g_bUseAlpha)
|
|
|
|
|
StockDispBuffer(x + 147, y + 225, DISP_PRIO_IME3, CG_FIELD_SKILL_ASSIT, 0);
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
StockDispBuffer(x + 138, y + 228, DISP_PRIO_IME3, CG_FIELD_SKILL_ASSIT, 0);
|
|
|
|
|
for (i = 0; i < 4; i++)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < 4; j++)
|
|
|
|
|
{
|
|
|
|
|
if (AssitSkill[j + i * 4] == -1)
|
|
|
|
|
break;
|
|
|
|
|
if (HitDispNo == StockDispBuffer(x + 29 + j * 60, y + 102 + i * 57, DISP_PRIO_IME3 + 1, profession_skill[AssitSkill[j + i * 4]].icon, 2))
|
|
|
|
|
{
|
|
|
|
|
int use_color = 0;
|
|
|
|
|
|
|
|
|
|
if (pc.mp >= profession_skill[AssitSkill[j + i * 4]].costmp && profession_skill[AssitSkill[j + i * 4]].costmp != 0)
|
|
|
|
|
use_color = FONT_PAL_WHITE;
|
|
|
|
|
else
|
|
|
|
|
use_color = FONT_PAL_GRAY;
|
|
|
|
|
sprintf_s(msg, "%s", profession_skill[AssitSkill[j + i * 4]].name);
|
|
|
|
|
StockFontBuffer(355, 310 + DISPLACEMENT_Y, FONT_PRIO_FRONT, use_color, msg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(msg, "%d%", profession_skill[AssitSkill[j + i * 4]].skill_level);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(440, 310 + DISPLACEMENT_Y, FONT_PRIO_FRONT, use_color, msg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(msg, "(耗费MP:%d)", profession_skill[AssitSkill[j + i * 4]].costmp);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(500, 310 + DISPLACEMENT_Y, FONT_PRIO_FRONT, use_color, msg, 0);
|
|
|
|
|
sprintf_s(msg, "%s", profession_skill[AssitSkill[j + i * 4]].memo);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _OUTOFBATTLESKILL // (不可开) Syu ADD 非战斗时技能Protocol
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK && profession_skill[AssitSkill[j + i * 4]].useFlag == 0)
|
|
|
|
|
{
|
|
|
|
|
if (pc.mp >= profession_skill[AssitSkill[j + i * 4]].costmp && profession_skill[AssitSkill[j + i * 4]].costmp != 0)
|
|
|
|
|
{
|
|
|
|
|
lssproto_BATTLESKILL_send(sockfd, AssitSkill[j + i * 4]);
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
sprintf_s(msg2, "%8s", profession_skill[AssitSkill[j + i * 4]].name);
|
|
|
|
|
StockFontBuffer(x + j * 60, y + 110 + i * 57, FONT_PRIO_FRONT, profession_skill[AssitSkill[j + i * 4]].useFlag + 1, msg2, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 1 :
|
|
|
|
|
#ifdef _READ16BITBMP
|
|
|
|
|
if (g_bUseAlpha)
|
|
|
|
|
StockDispBuffer(x + 147,y + 225, DISP_PRIO_IME3, CG_FIELD_SKILL_BATTLE, 0);
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
StockDispBuffer(x + 138, y + 228, DISP_PRIO_IME3, CG_FIELD_SKILL_BATTLE, 0);
|
|
|
|
|
for (i = 0; i < 4; i++)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < 4; j++)
|
|
|
|
|
{
|
|
|
|
|
if (BattleSkill[j + i * 4] == -1)
|
|
|
|
|
break;
|
|
|
|
|
if (HitDispNo == StockDispBuffer(x + 29 + j * 60, y + 102 + i * 57, DISP_PRIO_IME3 + 1, profession_skill[BattleSkill[j + i * 4]].icon, 2))
|
|
|
|
|
{
|
|
|
|
|
int use_color = 0;
|
|
|
|
|
|
|
|
|
|
if (pc.mp >= profession_skill[BattleSkill[j + i * 4]].costmp && profession_skill[BattleSkill[j + i * 4]].costmp != 0)
|
|
|
|
|
use_color = FONT_PAL_WHITE;
|
|
|
|
|
else
|
|
|
|
|
use_color = FONT_PAL_GRAY;
|
|
|
|
|
|
|
|
|
|
sprintf_s(msg, "%s", profession_skill[BattleSkill[j + i * 4]].name);
|
|
|
|
|
StockFontBuffer(355, 310 + DISPLACEMENT_Y, FONT_PRIO_FRONT, use_color, msg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(msg, "%d%", profession_skill[BattleSkill[j + i * 4]].skill_level);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(440, 310 + DISPLACEMENT_Y, FONT_PRIO_FRONT, use_color, msg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(msg, "(耗费MP:%d)", profession_skill[BattleSkill[j + i * 4]].costmp);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(500, 310 + DISPLACEMENT_Y, FONT_PRIO_FRONT, use_color, msg, 0);
|
|
|
|
|
sprintf_s(msg, "%s", profession_skill[BattleSkill[j + i * 4]].memo);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _OUTOFBATTLESKILL // (不可开) Syu ADD 非战斗时技能Protocol
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK && profession_skill[BattleSkill[j + i * 4]].useFlag == 0)
|
|
|
|
|
{
|
|
|
|
|
if (pc.mp >= profession_skill[BattleSkill[j + i * 4]].costmp && profession_skill[BattleSkill[j + i * 4]].costmp != 0)
|
|
|
|
|
{
|
|
|
|
|
lssproto_BATTLESKILL_send(sockfd , BattleSkill[j + i * 4]);
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
sprintf_s(msg2, "%8s", profession_skill[BattleSkill[j + i * 4]].name);
|
|
|
|
|
StockFontBuffer(x + j * 60, y + 110 + i * 57, FONT_PRIO_FRONT, profession_skill[BattleSkill[j + i * 4]].useFlag + 1, msg2, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
#ifdef _READ16BITBMP
|
|
|
|
|
if (g_bUseAlpha)
|
|
|
|
|
StockDispBuffer(x + 147, y + 225, DISP_PRIO_IME3, CG_FIELD_SKILL_ADVSK, 0);
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
StockDispBuffer(x + 138, y + 228, DISP_PRIO_IME3, CG_FIELD_SKILL_ADVSK, 0);
|
|
|
|
|
for (i = 0; i < 4; i++)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < 4; j++)
|
|
|
|
|
{
|
|
|
|
|
if (AdvanceSkill[j + i * 4] == -1)
|
|
|
|
|
break;
|
|
|
|
|
if (HitDispNo == StockDispBuffer(x + 29 + j * 60, y + 102 + i * 57, DISP_PRIO_IME3 + 1, profession_skill[AdvanceSkill[j + i * 4]].icon, 2))
|
|
|
|
|
{
|
|
|
|
|
int use_color = 0;
|
|
|
|
|
|
|
|
|
|
if (pc.mp >= profession_skill[AdvanceSkill[j + i * 4]].costmp && profession_skill[AdvanceSkill[j + i * 4]].costmp != 0)
|
|
|
|
|
use_color = FONT_PAL_WHITE;
|
|
|
|
|
else
|
|
|
|
|
use_color = FONT_PAL_GRAY;
|
|
|
|
|
|
|
|
|
|
sprintf_s(msg, "%s", profession_skill[AdvanceSkill[j + i * 4]].name);
|
|
|
|
|
StockFontBuffer(355, 310 + DISPLACEMENT_Y, FONT_PRIO_FRONT, use_color, msg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(msg, "%d%", profession_skill[AdvanceSkill[j + i * 4]].skill_level);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(440, 310 + DISPLACEMENT_Y, FONT_PRIO_FRONT, use_color, msg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(msg, "(耗费MP:%d)" , profession_skill[AdvanceSkill[j + i * 4]].costmp);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(500, 310 + DISPLACEMENT_Y, FONT_PRIO_FRONT, use_color, msg, 0);
|
|
|
|
|
sprintf_s(msg, "%s", profession_skill[AdvanceSkill[j + i * 4]].memo);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _OUTOFBATTLESKILL // (不可开) Syu ADD 非战斗时技能Protocol
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK && profession_skill[AdvanceSkill[j + i * 4]].useFlag == 0)
|
|
|
|
|
{
|
|
|
|
|
if (pc.mp >= profession_skill[AdvanceSkill[j + i * 4]].costmp && profession_skill[AdvanceSkill[j + i * 4]].costmp != 0)
|
|
|
|
|
{
|
|
|
|
|
lssproto_BATTLESKILL_send(sockfd , AdvanceSkill[j + i * 4]);
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
sprintf_s(msg2 , "%8s", profession_skill[AdvanceSkill[j + i * 4]].name);
|
|
|
|
|
StockFontBuffer(x + j * 60, y + 110 + i * 57, FONT_PRIO_FRONT, profession_skill[AdvanceSkill[j + i * 4]].useFlag + 1, msg2, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
char *splitPoint = msg;
|
|
|
|
|
|
|
|
|
|
sprintf_s(buf, "%s", msg);
|
|
|
|
|
x = 355;
|
|
|
|
|
y = 340;
|
|
|
|
|
while (1)
|
|
|
|
|
{
|
|
|
|
|
if (strlen(splitPoint) > 34)
|
|
|
|
|
{
|
|
|
|
|
strncpy_s(msg, splitPoint, 34);
|
|
|
|
|
buf[34] = NULL;
|
|
|
|
|
if (GetStrLastByte(buf) == 3)
|
|
|
|
|
{
|
|
|
|
|
buf[33] = NULL;
|
|
|
|
|
splitPoint += 33;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
buf[34] = NULL;
|
|
|
|
|
splitPoint += 34;
|
|
|
|
|
}
|
|
|
|
|
StockFontBuffer(x, y, FONT_PRIO_FRONT, 0, buf, 0);
|
|
|
|
|
y += 24;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strcpy(buf, splitPoint);
|
|
|
|
|
StockFontBuffer(x, y, FONT_PRIO_FRONT, 0, buf, 0);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _FRIENDCHANNEL //ROG ADD 好友频道
|
2020-06-22 17:49:02 +08:00
|
|
|
|
ACTION *pChatRoomWnd;
|
|
|
|
|
short chatRoomBtn = 0;
|
|
|
|
|
short SelRoomBtn = 0;
|
|
|
|
|
short chatRoomBtnFocus = 0;
|
|
|
|
|
int chatRoomBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_CHATROOM_BTN_OFF,
|
|
|
|
|
CG_FIELD_CHATROOM_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// ???????
|
|
|
|
|
short menuBtn = 0;
|
|
|
|
|
short menuBtnFocus = 0;
|
|
|
|
|
int menuBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_MENU_BTN_OFF,
|
|
|
|
|
CG_FIELD_MENU_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???
|
2020-06-22 17:49:02 +08:00
|
|
|
|
short cardBtn = 0;
|
|
|
|
|
short cardBtnFocus = 0;
|
|
|
|
|
int cardBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_CARD_BTN_OFF,
|
|
|
|
|
CG_FIELD_CARD_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Robin 04/12 Trade Button
|
|
|
|
|
short tradeBtn = 0;
|
|
|
|
|
short tradeBtnFocus = 0;
|
|
|
|
|
//short tradeBtnEnableFlag = 1;
|
|
|
|
|
int tradeBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_TRADE_BTN_OFF,
|
|
|
|
|
CG_FIELD_TRADE_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#ifdef _MO_SIGN_IN
|
|
|
|
|
short signInBtn = 0;
|
|
|
|
|
short signInBtnFocus = 0;
|
|
|
|
|
int signInBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_SIGNIN_BTN_OFF,
|
|
|
|
|
CG_FIELD_SIGNIN_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _CHANGETEAM_
|
|
|
|
|
short changeteamBtn = 0;
|
|
|
|
|
short changeteamBtnFocus = 0;
|
|
|
|
|
int schangeteamBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_CHANGETEAM_BTN_OFF,
|
|
|
|
|
CG_FIELD_CHANGETEAM_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _NEWSHOP_
|
|
|
|
|
short marketBtn = 0;
|
|
|
|
|
short marketBtnFocus = 0;
|
|
|
|
|
int marketBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_MARKET_BTN_OFF,
|
|
|
|
|
CG_FIELD_MARKET_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _ANGEL_SUMMON
|
|
|
|
|
extern short HelpProcNo;
|
|
|
|
|
extern short jumpHelpPage;
|
|
|
|
|
extern short jumpHelpSeg;
|
|
|
|
|
|
|
|
|
|
int angelFlag = FALSE;
|
|
|
|
|
int angelRecvType;
|
|
|
|
|
int angelRecvButton;
|
|
|
|
|
char angelMsg[1024*10] = "";
|
|
|
|
|
|
|
|
|
|
short angelLampDrawFlag = 0;
|
|
|
|
|
unsigned int angelLampFlashTime = 0;
|
|
|
|
|
|
|
|
|
|
short angelBtn = 0;
|
|
|
|
|
short angelBtnFocus = 0;
|
|
|
|
|
int angelBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
35273, // CG_FIELD_ANGEL_BTN_OFF
|
|
|
|
|
35272 // CG_FIELD_ANGEL_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// Robin 06/01 Channel Button
|
|
|
|
|
short channelBtn = 0;
|
|
|
|
|
short channelBtnFocus = 0;
|
|
|
|
|
short channelWNFlag = 1;
|
|
|
|
|
int channelBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_CHANNEL_BTN_OFF,
|
|
|
|
|
CG_FIELD_CHANNEL_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// ?????
|
|
|
|
|
short partyBtn = 0;
|
|
|
|
|
short partyBtnFocus = 0;
|
|
|
|
|
short partyBtnEnableFlag = 1;
|
|
|
|
|
int partyBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_GROUP_BTN_OFF,
|
|
|
|
|
CG_FIELD_GROUP_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// ??????
|
|
|
|
|
short mailLamp = 0;
|
|
|
|
|
short mailLampDrawFlag = 0;
|
|
|
|
|
|
|
|
|
|
#ifdef __PHONEMESSAGE
|
|
|
|
|
// LeiBoy 2002 Jan.26 --- Cell Phone's Messages Button -- BEGIN
|
|
|
|
|
short msgBtn = 0;
|
|
|
|
|
short msgBtnFocus = 0;
|
|
|
|
|
int msgBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_MSG_BTN_OFF,
|
|
|
|
|
CG_FIELD_MSG_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
// LeiBoy 2002 Jan.26 --- Cell Phone's Messages Button -- END
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _NEW_MATCH
|
|
|
|
|
int helpBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_HELP_BTN_ON,
|
|
|
|
|
CG_FIELD_HELP_BTN_OFF
|
|
|
|
|
};
|
|
|
|
|
#else
|
|
|
|
|
int helpBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_HELP_BTN_ON,
|
|
|
|
|
CG_FIELD_HELP_BTN_OFF
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
short helpBtn = 0;
|
|
|
|
|
short helpBtnFocus = 0;
|
|
|
|
|
#ifdef _RED_MEMOY_
|
|
|
|
|
short redmemoyBtn = 0;
|
|
|
|
|
short redmemoyBtnFocus = 0;
|
|
|
|
|
int redmemoyGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
60005,60006
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
unsigned int mailLampFlashTime = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???
|
2020-06-22 17:49:02 +08:00
|
|
|
|
short joinBattleBtn = 0;
|
|
|
|
|
short joinBattleBtnFocus = 0;
|
|
|
|
|
short joinBattleBtnEnableFlag = 1;
|
|
|
|
|
short joinBattleHelpMsgFlag = 1;
|
|
|
|
|
int joinBattleBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_JOIN_BTL_BTN_OFF,
|
|
|
|
|
CG_FIELD_JOIN_BTL_BTN_ON
|
|
|
|
|
};
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???
|
2020-06-22 17:49:02 +08:00
|
|
|
|
short duelBtn = 0;
|
|
|
|
|
short duelBtnFocus = 0;
|
|
|
|
|
int duelBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_DUEL_BTN_OFF,
|
|
|
|
|
CG_FIELD_DUEL_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// ????????
|
|
|
|
|
short actBtn = 0;
|
|
|
|
|
short actBtnForcus = 0;
|
|
|
|
|
int actBtnUpTime;
|
|
|
|
|
int nowActMode;
|
|
|
|
|
int actBtnGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_ACT_BTN_OFF,
|
|
|
|
|
CG_FIELD_ACT_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
short charActionAnimeChangeProcNo;
|
|
|
|
|
short charActionAnimeChangeWindowFlag;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????OK???????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
short etcSwitchProcNo;
|
|
|
|
|
short etcSwitchChangeFlag = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int amPmAnimeTime;
|
|
|
|
|
int amPmAnimeX;
|
|
|
|
|
int amPmAnimeGraNoIndex0, amPmAnimeGraNoIndex1;
|
|
|
|
|
int amPmAnimeGraNo[] =
|
|
|
|
|
{
|
|
|
|
|
CG_FIELD_AM_PM_01,
|
|
|
|
|
CG_FIELD_AM_PM_02,
|
|
|
|
|
CG_FIELD_AM_PM_03,
|
|
|
|
|
CG_FIELD_AM_PM_00
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#ifdef _TEACHER_SYSTEM
|
|
|
|
|
short sTeacherSystemBtn = 0;
|
|
|
|
|
short sTeacherSystemBtnFocus = 0;
|
|
|
|
|
int iTeacherSystemBtnGraNo[] = {
|
|
|
|
|
CG_FIELD_TS_BTN_OFF,
|
|
|
|
|
CG_FIELD_TS_BTN_ON
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// ????????????????
|
|
|
|
|
short etcSendFlag = 0;
|
|
|
|
|
// ??????
|
|
|
|
|
short nowFieldMenuOpenFlag = 0; // ??????????????????
|
|
|
|
|
// ???????????????????????
|
|
|
|
|
unsigned int fieldBtnPushTime = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
unsigned int fieldInfoTime = 0;
|
|
|
|
|
// ??????
|
|
|
|
|
void initCharActionAnimeChange( void );
|
|
|
|
|
int charActionAnimeChange( void );
|
|
|
|
|
void initEtcSwitch( void );
|
|
|
|
|
int etcSwitch( void );
|
|
|
|
|
// Robin 06/02
|
|
|
|
|
void initJoinChannelWN( void );
|
|
|
|
|
void closeJoinChannelWN( void );
|
|
|
|
|
void joinChannelWN( void );
|
|
|
|
|
void initJoinChannel2WN( char *data );
|
|
|
|
|
void closeJoinChannel2WN( void );
|
|
|
|
|
void joinChannel2WN( void );
|
|
|
|
|
void leaderFuncWN( void );
|
|
|
|
|
//static short joinChannelProc = 0;
|
|
|
|
|
static short joinChannel2Proc = 0;
|
|
|
|
|
struct tm serverAliveTime;
|
|
|
|
|
time_t serverAliveLongTime;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void initFieldProc( void )
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
drawFieldButtonFlag = 1;
|
|
|
|
|
menuBtn = 0;
|
|
|
|
|
cardBtn = 0;
|
|
|
|
|
partyBtn = 0;
|
|
|
|
|
tradeBtn = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// initPcAll()??????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
// mailLamp = 0;
|
|
|
|
|
#ifdef __PHONEMESSAGE
|
|
|
|
|
msgBtn = 0; //LeiBoy 2002 Jan.26
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
sStreetVendorBtn = 0;
|
|
|
|
|
sStreetVendorBuyBtn = 0;
|
|
|
|
|
#else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _TABLEOFSKILL // (不可开) Syu ADD 7.0 新增人物技能表单
|
2020-06-22 17:49:02 +08:00
|
|
|
|
skillBtn = 0 ;
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _FRIENDCHANNEL //ROG ADD 好友频道
|
2020-06-22 17:49:02 +08:00
|
|
|
|
chatRoomBtn = 0;
|
|
|
|
|
SelRoomBtn = 0;
|
|
|
|
|
TalkMode = 0;
|
|
|
|
|
#endif
|
|
|
|
|
mailLampDrawFlag = 0;
|
|
|
|
|
mailLampFlashTime = 0;
|
|
|
|
|
joinBattleBtn = 0;
|
|
|
|
|
duelBtn = 0;
|
|
|
|
|
actBtn = 0;
|
|
|
|
|
actBtnForcus = 0;
|
|
|
|
|
nowActMode = 0;
|
|
|
|
|
drawTimeAnimeFlag = 1;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < FIELD_FUNC_END; i++)
|
|
|
|
|
fieldBtnHitId[i] = -2;
|
|
|
|
|
|
|
|
|
|
etcSendFlag = 0;
|
|
|
|
|
etcSwitchChangeFlag = 0;
|
|
|
|
|
fieldInfoTime = 0;
|
|
|
|
|
partyBtnEnableFlag = 1;
|
|
|
|
|
joinBattleBtnEnableFlag = 1;
|
|
|
|
|
joinBattleHelpMsgFlag = 1;
|
|
|
|
|
//tradeBtnEnableFlag = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ????????????
|
|
|
|
|
void resetFieldProc(void)
|
|
|
|
|
{
|
|
|
|
|
actBtn = 0;
|
|
|
|
|
menuBtn = 0;
|
|
|
|
|
fieldInfoTime = 0;
|
|
|
|
|
#ifdef __PHONEMESSAGE
|
|
|
|
|
msgBtn = 0;
|
|
|
|
|
#endif
|
|
|
|
|
channelWNFlag = 0;
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
sStreetVendorBtn = 0;
|
|
|
|
|
sStreetVendorBuyBtn = 0;
|
|
|
|
|
#else
|
|
|
|
|
#ifdef _TABLEOFSKILL
|
|
|
|
|
skillBtn = 0 ;
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
helpBtn = 0;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void fieldProc( void )
|
|
|
|
|
{
|
|
|
|
|
int selId;
|
|
|
|
|
int pushId;
|
|
|
|
|
int focusId;
|
|
|
|
|
BOOL walkFlag = FALSE;
|
|
|
|
|
|
|
|
|
|
// ??????
|
|
|
|
|
rand2();
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
actionShortCutKeyProc();
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????????????????
|
|
|
|
|
// ???????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (etcSwitchChangeFlag && eventWarpSendFlag == 0 && eventEnemySendFlag == 0 && sendEnFlag == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime+FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FS_send(sockfd, pc.etcFlag);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FS_send(sockfd, pc.etcFlag);
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
etcSwitchChangeFlag = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (CheckMenuFlag() || windowTypeWN > -1 || actBtn == 1 || menuBtn == 1 || channelWNFlag == 1)
|
|
|
|
|
drawFieldButtonFlag = 0;
|
|
|
|
|
else
|
|
|
|
|
drawFieldButtonFlag = 1;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
nowFieldMenuOpenFlag = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (windowTypeWN != -1)
|
|
|
|
|
nowFieldMenuOpenFlag = 1;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (actBtn == 1)
|
|
|
|
|
nowFieldMenuOpenFlag = 1;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????OK??????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (menuBtn == 1)
|
|
|
|
|
nowFieldMenuOpenFlag = 1;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????????????????????1?1024?
|
2020-06-22 17:49:02 +08:00
|
|
|
|
amPmAnimeTime = (SaTime.hour + 832) % 1024;
|
|
|
|
|
amPmAnimeGraNoIndex0 = amPmAnimeTime / 256;
|
|
|
|
|
amPmAnimeGraNoIndex1 = (amPmAnimeGraNoIndex0 + 1) % 4;
|
|
|
|
|
amPmAnimeX = (amPmAnimeTime % 256) / 4;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (nowVx != 0 || nowVy != 0)
|
|
|
|
|
walkFlag = TRUE;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????????????????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (etcSendFlag)
|
|
|
|
|
{
|
|
|
|
|
if (prSendFlag == 0 && jbSendFlag == 0 && duelSendFlag == 0)
|
|
|
|
|
etcSendFlag = 0;
|
|
|
|
|
else
|
|
|
|
|
etcSendFlag = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ?????????????????????
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????
|
|
|
|
|
// ??????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#if 1
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
selId = selGraId(fieldBtnHitId, sizeof(fieldBtnHitId) / sizeof(int));
|
|
|
|
|
pushId = pushGraId(fieldBtnHitId, sizeof(fieldBtnHitId) / sizeof(int));
|
|
|
|
|
focusId = focusGraId(fieldBtnHitId, sizeof(fieldBtnHitId) / sizeof(int));
|
|
|
|
|
if (etcSendFlag != 0 || (walkFlag != FALSE && selId != FIELD_FUNC_PARTY))
|
|
|
|
|
selId = -1;
|
|
|
|
|
#else
|
|
|
|
|
if (etcSendFlag == 0 && walkFlag == FALSE)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
selId = selGraId(fieldBtnHitId, sizeof(fieldBtnHitId) / sizeof(int));
|
|
|
|
|
pushId = pushGraId(fieldBtnHitId, sizeof(fieldBtnHitId) / sizeof(int));
|
|
|
|
|
focusId = focusGraId(fieldBtnHitId, sizeof(fieldBtnHitId) / sizeof(int));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
selId = -1;
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (/* nowFloor == 32021
|
|
|
|
|
|| */nowFloor == 31706 || nowFloor == 10204 || (10601 <= nowFloor && nowFloor <= 10605)
|
|
|
|
|
|| nowFloor == 10919 || nowFloor == 10920 || nowFloor == 20711 || nowFloor == 20712
|
|
|
|
|
|| nowFloor == 1008 || nowFloor == 1021 || nowFloor == 3008 || nowFloor == 3021
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _LOCKPARTYFLOOR // (可开放) Syu ADD 增加不可组队的地图编号
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|| ( nowFloor <= 8213 && nowFloor >= 8200 )
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
|| ( nowFloor >= 30017 && nowFloor <= 30021 ) || ( nowFloor == 7025 ) // 森林捉宠活动
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef _THEATER
|
2020-06-23 15:53:23 +08:00
|
|
|
|
|| nowFloor == 17001 // 剧场
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
#ifdef _NPC_MAGICCARD
|
|
|
|
|
|| nowFloor == 17003 || nowFloor == 17005
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _NPC_DANCE
|
|
|
|
|
|| nowFloor == 7027
|
|
|
|
|
#endif
|
|
|
|
|
)
|
|
|
|
|
partyBtnEnableFlag = 0;
|
|
|
|
|
else
|
|
|
|
|
partyBtnEnableFlag = 1;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (nowFloor < 10000 && (nowFloor / 1000 > 0) && (nowFloor % 1000 == 7) || nowFloor == 130)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
joinBattleHelpMsgFlag = 0; // ?
|
2020-06-22 17:49:02 +08:00
|
|
|
|
joinBattleBtnEnableFlag = 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (nowFloor == 1008 || nowFloor == 1021 || nowFloor == 3008 || nowFloor == 3021
|
|
|
|
|
|| nowFloor == 10919 || nowFloor == 10920 || nowFloor == 20711 || nowFloor == 20712
|
|
|
|
|
|| nowFloor == 10204)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
joinBattleHelpMsgFlag = 2; // ?????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
joinBattleBtnEnableFlag = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
joinBattleHelpMsgFlag = 1; //
|
2020-06-22 17:49:02 +08:00
|
|
|
|
joinBattleBtnEnableFlag = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (selId == FIELD_FUNC_MENU || (joy_trg[1] & JOY_CTRL_Q)
|
|
|
|
|
#ifdef __PHONEMESSAGE
|
|
|
|
|
&& msgBtn == 0
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
&& sStreetVendorBtn == 0
|
|
|
|
|
&& sStreetVendorBuyBtn == 0
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef __ONLINEGM
|
|
|
|
|
&& OnlineGmFlag == FALSE
|
|
|
|
|
#endif
|
|
|
|
|
/*#ifdef _JOBDAILY
|
|
|
|
|
&& JobDailyFlag == FALSE
|
|
|
|
|
#endif*/
|
|
|
|
|
&& helpBtn == 0
|
|
|
|
|
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
if (menuBtn == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????????????????????
|
|
|
|
|
// ?????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
closeCharActionAnimeChange();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
|
|
|
|
|
initEtcSwitch();
|
|
|
|
|
menuBtn = 1;
|
|
|
|
|
play_se(202, 320, 240); // ????????
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
}
|
|
|
|
|
if (menuBtn == 1 && etcSwitch())
|
|
|
|
|
menuBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_MENU)
|
|
|
|
|
menuBtnFocus = 1; // ???????????????
|
|
|
|
|
else
|
|
|
|
|
menuBtnFocus = 0;
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
if (pushId == FIELD_FUNC_STREET_VENDOR)
|
|
|
|
|
{
|
|
|
|
|
if (selId == FIELD_FUNC_STREET_VENDOR)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _THEATER
|
|
|
|
|
if (pc.iTheaterMode & 0x00000002)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("请专心表演", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
#endif //_THEATER
|
|
|
|
|
{
|
|
|
|
|
#ifdef _MOVE_SCREEN
|
|
|
|
|
if(pc.bMoveScreenMode)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("特殊状态无法摆摊",FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
play_se( 202, 320, 240 );
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, "O|");
|
|
|
|
|
sStreetVendorBtn = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (sStreetVendorBtn == 1 || sStreetVendorBtn == 3)
|
|
|
|
|
{
|
|
|
|
|
actBtn = 1;
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
sStreetVendorBtn = 2;
|
|
|
|
|
iOldGX = nowGx;
|
|
|
|
|
iOldGY = nowGy;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 交易及组队及PK选项关闭
|
2020-06-22 17:49:02 +08:00
|
|
|
|
pc.etcFlag &= ~PC_ETCFLAG_TRADE;
|
|
|
|
|
pc.etcFlag &= ~PC_ETCFLAG_PARTY;
|
|
|
|
|
pc.etcFlag &= ~PC_ETCFLAG_DUEL;
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FS_send(sockfd, pc.etcFlag);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FS_send(sockfd, pc.etcFlag);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (sStreetVendorBtn == 2)
|
|
|
|
|
{
|
|
|
|
|
StreetVendorWndfunc(true, NULL);
|
|
|
|
|
if (((joy_trg[0] & JOY_ESC) && GetImeString() == NULL) || CheckMenuFlag())
|
|
|
|
|
{
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
sStreetVendorBtn = 0;
|
|
|
|
|
actBtn = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (pActStreetVendorWnd)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pActStreetVendorWnd);
|
|
|
|
|
pActStreetVendorWnd = NULL;
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (pActSellPriceWnd)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pActSellPriceWnd);
|
|
|
|
|
pActSellPriceWnd = NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (sStreetVendorBuyBtn == 1)
|
|
|
|
|
{
|
|
|
|
|
actBtn = 1;
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
sStreetVendorBuyBtn = 2;
|
|
|
|
|
iOldGX = nowGx;
|
|
|
|
|
iOldGY = nowGy;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (sStreetVendorBuyBtn == 2)
|
|
|
|
|
{
|
|
|
|
|
StreetVendorBuyWndfunc(NULL);
|
|
|
|
|
if (((joy_trg[0] & JOY_ESC) && GetImeString() == NULL) || CheckMenuFlag())
|
|
|
|
|
{
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
sStreetVendorBuyBtn = 0;
|
|
|
|
|
actBtn = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (pActStreetVendorBuyWnd)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pActStreetVendorBuyWnd);
|
|
|
|
|
pActStreetVendorBuyWnd = NULL;
|
|
|
|
|
actBtn = 0;
|
|
|
|
|
if (pShowPet != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pShowPet);
|
|
|
|
|
pShowPet = NULL;
|
|
|
|
|
}
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, "N|");
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 在摆摊或是向摆摊的人购买时走动则取消
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if ((pc.iOnStreetVendor == 1 || sStreetVendorBuyBtn == 2) && (iOldGX != nowGx || iOldGY != nowGy))
|
|
|
|
|
{
|
|
|
|
|
if (pc.iOnStreetVendor == 1)
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, "E|");
|
|
|
|
|
if (sStreetVendorBuyBtn == 2)
|
|
|
|
|
lssproto_STREET_VENDOR_send(sockfd, "N|");
|
|
|
|
|
pc.iOnStreetVendor = 0;
|
|
|
|
|
sStreetVendorBtn = 0;
|
|
|
|
|
sStreetVendorBuyBtn = 0;
|
|
|
|
|
actBtn = 0;
|
|
|
|
|
closeCharActionAnimeChange();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (focusId == FIELD_FUNC_STREET_VENDOR)
|
|
|
|
|
sStreetVendorBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
sStreetVendorBtnFocus = 0;
|
|
|
|
|
#else
|
|
|
|
|
#ifndef _BACK_VERSION
|
|
|
|
|
#ifdef _TABLEOFSKILL
|
|
|
|
|
if (pushId == FIELD_FUNC_SKILL)
|
|
|
|
|
{
|
|
|
|
|
if (selId == FIELD_FUNC_SKILL)
|
|
|
|
|
{
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
play_se(202, 320, 240);
|
|
|
|
|
actBtn = 1;
|
|
|
|
|
skillBtn = 1 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (skillBtn == 1)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//主要技能视窗函式
|
2020-06-22 17:49:02 +08:00
|
|
|
|
SkillWndfunc();
|
|
|
|
|
if (((joy_trg[0] & JOY_ESC) && GetImeString() == NULL) || CheckMenuFlag())
|
|
|
|
|
{
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
skillBtn = 0 ;
|
|
|
|
|
actBtn = 0 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (pActSkillWnd)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pActSkillWnd);
|
|
|
|
|
pActSkillWnd = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (focusId == FIELD_FUNC_SKILL)
|
|
|
|
|
skillBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
skillBtnFocus = 0;
|
|
|
|
|
#endif //_TABLEOFSKILL
|
|
|
|
|
#endif //_BACK_VERSION
|
|
|
|
|
#endif //_STREET_VENDOR
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (pushId == FIELD_FUNC_CARD)
|
|
|
|
|
{
|
|
|
|
|
cardBtn = 1;
|
|
|
|
|
|
|
|
|
|
if (selId == FIELD_FUNC_CARD)
|
|
|
|
|
{
|
|
|
|
|
int dx, dy;
|
|
|
|
|
int flag;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
getRouteData(pc.dir, &dx, &dy);
|
|
|
|
|
flag = checkCharObjPoint(nowGx+dx, nowGy+dy, CHAROBJ_TYPE_USER_NPC);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (partyModeFlag == 0 && flag == TRUE && eventWarpSendFlag == 0 && eventEnemySendFlag == 0 && sendEnFlag == 0
|
|
|
|
|
#ifdef _THEATER
|
|
|
|
|
&& pc.iTheaterMode == 0
|
|
|
|
|
#endif
|
|
|
|
|
)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime+FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_AAB_send(sockfd, nowGx, nowGy);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_AAB_send(sockfd, nowGx, nowGy);
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#ifdef _THEATER
|
|
|
|
|
if (pc.iTheaterMode > 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("请专心表演", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
play_se(217, 320, 240); // ?????
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
cardBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_CARD)
|
|
|
|
|
cardBtnFocus = 1; // ???????????????
|
|
|
|
|
else
|
|
|
|
|
cardBtnFocus = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef _MO_SIGN_IN
|
|
|
|
|
if (pushId == FIELD_FUNC_SIGNIN)
|
|
|
|
|
{
|
|
|
|
|
signInBtn = 1;
|
|
|
|
|
|
|
|
|
|
if (selId == FIELD_FUNC_SIGNIN)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _RIDEQUERY_
|
2020-06-23 15:53:23 +08:00
|
|
|
|
lssproto_RideQuery_send(sockfd);//骑宠封包
|
2020-06-22 17:49:02 +08:00
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _CHARSIGNDAY_
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
lssproto_SignDay_send(sockfd);//骑宠封包
|
2020-06-22 17:49:02 +08:00
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
signInBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_SIGNIN)
|
|
|
|
|
signInBtnFocus = 1; // ???????????????
|
|
|
|
|
else
|
|
|
|
|
signInBtnFocus = 0;
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _CHANGETEAM_
|
|
|
|
|
if (pushId == FIELD_FUNC_CHANGETEAM){
|
|
|
|
|
changeteamBtn = 1;
|
|
|
|
|
if (selId == FIELD_FUNC_CHANGETEAM)
|
|
|
|
|
{
|
|
|
|
|
lssproto_SaMenu_send(sockfd, 30);
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
}else
|
|
|
|
|
changeteamBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_CHANGETEAM)
|
|
|
|
|
changeteamBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
changeteamBtnFocus = 0;
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _NEWSHOP_
|
|
|
|
|
if (pushId == FIELD_FUNC_MARKET){
|
|
|
|
|
marketBtn = 1;
|
|
|
|
|
if (selId == FIELD_FUNC_MARKET){
|
|
|
|
|
#ifdef __AI
|
|
|
|
|
extern void AI_CloseWnd();
|
|
|
|
|
AI_CloseWnd();
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
extern ACTION* 商城动作地址;
|
|
|
|
|
if(商城动作地址){
|
|
|
|
|
DeathAction(商城动作地址);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
windowTypeWN = -1;
|
|
|
|
|
wnCloseFlag = 1;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
商城动作地址 = 0;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}else{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
extern 商城文件_ 商城文件[5];
|
2020-06-22 17:49:02 +08:00
|
|
|
|
extern int util_mkint(char *buffer, int value);
|
|
|
|
|
extern void util_SendMesg(int fd, int func, char *buffer);
|
|
|
|
|
extern int util_mkstring(char *buffer, char *value);
|
|
|
|
|
int checksum=0;
|
|
|
|
|
char buf[1024*4*4];
|
|
|
|
|
memset(buf,0,1024*4*4);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
checksum += util_mkstring(buf,商城文件[0].MD5码);
|
|
|
|
|
checksum += util_mkstring(buf,商城文件[1].MD5码);
|
|
|
|
|
checksum += util_mkstring(buf,商城文件[2].MD5码);
|
|
|
|
|
checksum += util_mkstring(buf,商城文件[3].MD5码);
|
|
|
|
|
checksum += util_mkstring(buf,商城文件[4].MD5码);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
util_mkint(buf, checksum);
|
|
|
|
|
util_SendMesg(sockfd, 203, buf);
|
|
|
|
|
}
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
}else
|
|
|
|
|
marketBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_MARKET)
|
|
|
|
|
marketBtnFocus = 1; // ???????????????
|
|
|
|
|
else
|
|
|
|
|
marketBtnFocus = 0;
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _FRIENDCHANNEL //ROG ADD 好友频道
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (pushId == FIELD_FUNC_CHATROOM)
|
|
|
|
|
{
|
|
|
|
|
if( selId == FIELD_FUNC_CHATROOM)
|
|
|
|
|
{
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
|
|
|
|
|
if (strcmp(pc.chatRoomNum, "") == 0)
|
|
|
|
|
{
|
|
|
|
|
if (SelRoomBtn == 1 || pSelChanlWnd != NULL)
|
|
|
|
|
SelRoomBtn = 0;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
/*
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// WON ADD 防止传送太频繁
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
unsigned int now_time = (unsigned int)time(NULL);
|
|
|
|
|
static unsigned int old_time = 0;
|
|
|
|
|
|
|
|
|
|
chatRoomBtn = 1;
|
|
|
|
|
|
|
|
|
|
if( now_time > old_time ){
|
|
|
|
|
|
|
|
|
|
old_time = now_time + 10;
|
|
|
|
|
|
|
|
|
|
lssproto_CHATROOM_send( sockfd,"B|");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
old_time = now_time + 10;
|
|
|
|
|
*/
|
|
|
|
|
#ifdef _CHATROOMPROTOCOL
|
|
|
|
|
lssproto_CHATROOM_send(sockfd, "B|");
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (chatRoomBtn == 1 || pChtChanlWnd != NULL)
|
|
|
|
|
chatRoomBtn = 0;
|
|
|
|
|
else
|
|
|
|
|
chatRoomBtn = 1;
|
|
|
|
|
}
|
|
|
|
|
if ((joy_trg[0] & JOY_ESC) || CheckMenuFlag())
|
|
|
|
|
{
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
chatRoomBtn = 0 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(SelRoomBtn == 1)
|
|
|
|
|
{
|
|
|
|
|
SelectChatRoom();
|
|
|
|
|
if (((joy_trg[0] & JOY_ESC) && GetImeString() == NULL) || CheckMenuFlag())
|
|
|
|
|
{
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
SelRoomBtn = 0 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if(chatRoomBtn == 1)
|
|
|
|
|
{
|
|
|
|
|
ChatRoomWnd();
|
|
|
|
|
if (((joy_trg[0] & JOY_ESC) && GetImeString() == NULL) || CheckMenuFlag())
|
|
|
|
|
{
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
chatRoomBtn = 0 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (pChtChanlWnd)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pChtChanlWnd);
|
|
|
|
|
pChtChanlWnd = NULL;
|
|
|
|
|
}
|
|
|
|
|
if( pSelChanlWnd)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pSelChanlWnd);
|
|
|
|
|
pSelChanlWnd = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (focusId == FIELD_FUNC_CHATROOM)
|
|
|
|
|
chatRoomBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
chatRoomBtnFocus = 0;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// Robin 04/11 Trade
|
|
|
|
|
if (pushId == FIELD_FUNC_TRADE)
|
|
|
|
|
{
|
|
|
|
|
tradeBtn = 1;
|
|
|
|
|
|
|
|
|
|
if (selId == FIELD_FUNC_TRADE)
|
|
|
|
|
{
|
|
|
|
|
int dx, dy;
|
|
|
|
|
int flag;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
getRouteData(pc.dir, &dx, &dy);
|
|
|
|
|
flag = checkCharObjPoint(nowGx+dx, nowGy+dy, CHAROBJ_TYPE_USER_NPC);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (partyModeFlag == 0 && flag == TRUE && eventWarpSendFlag == 0 && eventEnemySendFlag == 0
|
|
|
|
|
&& sendEnFlag == 0 && tradeFlag == 0
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
&& (pc.iOnStreetVendor == 0 || sStreetVendorBuyBtn == 2)
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _THEATER
|
|
|
|
|
&& pc.iTheaterMode == 0
|
|
|
|
|
#endif
|
|
|
|
|
)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime+FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
//if (bNewServer)
|
|
|
|
|
// lssproto_TD_send(sockfd, "D|D");
|
|
|
|
|
//else
|
|
|
|
|
// old_lssproto_TD_send(sockfd, "D|D");
|
|
|
|
|
|
|
|
|
|
joy_trg[0] |= JOY_CTRL_T;
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
if (pc.iOnStreetVendor == 1)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("摆摊中不得进行交易", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
#ifdef _THEATER
|
|
|
|
|
if (pc.iTheaterMode > 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("请专心表演", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
//play_se(217, 320, 240); // ?????
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
tradeBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_TRADE)
|
|
|
|
|
tradeBtnFocus = 1; // ???????????????
|
|
|
|
|
else
|
|
|
|
|
tradeBtnFocus = 0;
|
|
|
|
|
#ifdef _ANGEL_SUMMON
|
|
|
|
|
if (pushId == FIELD_FUNC_ANGEL)
|
|
|
|
|
{
|
|
|
|
|
angelBtn = 1;
|
|
|
|
|
|
|
|
|
|
if (selId == FIELD_FUNC_ANGEL)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime+FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
//lssproto_WN_send( sockfd, nowGx, nowGy, WINDOW_MESSAGETYPE_ANGELMESSAGE, , WINDOW_BUTTONTYPE_YES, msg ) ;
|
|
|
|
|
if (angelFlag)
|
|
|
|
|
openServerWindow(WINDOW_MESSAGETYPE_MESSAGE, angelRecvButton, angelRecvType, -1, angelMsg);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (helpBtn == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????OK???????????????????????
|
|
|
|
|
// ?????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
closeJoinChannelWN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
HelpProcNo = 0;
|
|
|
|
|
helpBtn = 1;
|
|
|
|
|
actBtn = 1;
|
|
|
|
|
jumpHelpPage = 52;
|
|
|
|
|
jumpHelpSeg = 29;
|
|
|
|
|
play_se( 202, 320, 240 ); // ????????
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
HelpProcNo = 1000;
|
|
|
|
|
}
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
play_se(217, 320, 240); // ?????
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
angelBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_ANGEL)
|
|
|
|
|
angelBtnFocus = 1; // ???????????????
|
|
|
|
|
else
|
|
|
|
|
angelBtnFocus = 0;
|
|
|
|
|
|
|
|
|
|
if (angelFlag)
|
|
|
|
|
{
|
|
|
|
|
// ???
|
|
|
|
|
if (angelLampFlashTime == 0 )
|
|
|
|
|
{
|
|
|
|
|
angelLampDrawFlag = 1;
|
|
|
|
|
angelLampFlashTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
else if (angelLampFlashTime+FIELD_MAIL_LAMP_FLASH_TIME < TimeGetTime())
|
|
|
|
|
{
|
|
|
|
|
angelLampDrawFlag++;
|
|
|
|
|
angelLampDrawFlag &= 1;
|
|
|
|
|
angelLampFlashTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
angelLampDrawFlag = 0;
|
|
|
|
|
angelLampFlashTime = 0;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _TEACHER_SYSTEM
|
|
|
|
|
if (pushId == FIELD_FUNC_TEACHER && selId == FIELD_FUNC_TEACHER)
|
|
|
|
|
{
|
|
|
|
|
if (fieldBtnPushTime + FIELD_BTN_PUSH_WAIT < TimeGetTime())
|
|
|
|
|
{
|
|
|
|
|
play_se(202, 320, 240);
|
|
|
|
|
lssproto_TEACHER_SYSTEM_send(sockfd, "P|");
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
sTeacherSystemBtn = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (sTeacherSystemBtn == 1)
|
|
|
|
|
{
|
|
|
|
|
if (helpBtn == 0)
|
|
|
|
|
{
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
HelpProcNo = 0;
|
|
|
|
|
helpBtn = 1;
|
|
|
|
|
actBtn = 1;
|
|
|
|
|
jumpHelpPage = 54+1;
|
|
|
|
|
jumpHelpSeg = 30;
|
|
|
|
|
play_se(202,320,240);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
HelpProcNo = 1000;
|
|
|
|
|
sTeacherSystemBtn = 0;
|
|
|
|
|
}
|
|
|
|
|
else if (sTeacherSystemBtn == 2)
|
|
|
|
|
TeacherSystemWndfunc(0,NULL);
|
|
|
|
|
else if (sTeacherSystemBtn == 3)
|
|
|
|
|
TeacherSystemWndfunc(1,NULL);
|
|
|
|
|
else if (sTeacherSystemBtn == 4)
|
|
|
|
|
TeacherSystemWndfunc(2,NULL);
|
|
|
|
|
else if (sTeacherSystemBtn == 5)
|
|
|
|
|
TeacherSystemWndfunc(3,NULL);
|
|
|
|
|
#ifdef _TEACHER_SYSTEM_2
|
|
|
|
|
else if (sTeacherSystemBtn == 6)
|
|
|
|
|
TeacherSystemWndfunc(4,NULL);
|
|
|
|
|
else if (sTeacherSystemBtn == 7)
|
|
|
|
|
TeacherSystemWndfunc(5,NULL);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (focusId == FIELD_FUNC_TEACHER)
|
|
|
|
|
sTeacherSystemBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
sTeacherSystemBtnFocus = 0;
|
|
|
|
|
#endif
|
|
|
|
|
// Robin 06/01 Channel
|
|
|
|
|
if (selId == FIELD_FUNC_CHANNEL)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _FRIENDCHANNEL
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
#endif
|
|
|
|
|
if (pc.familyName[0] == NULL)
|
|
|
|
|
{
|
|
|
|
|
char buf[64];
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
lssproto_TK_recv(sockfd, 0, "P|请先加入家族。", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
sprintf_s(buf, "S|P", selId);
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (channelWNFlag == 0)
|
|
|
|
|
{
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
channelWNFlag = 1;
|
|
|
|
|
initJoinChannelWN();
|
|
|
|
|
play_se(202, 320, 240); // ????????
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
}
|
|
|
|
|
if (focusId == FIELD_FUNC_CHANNEL)
|
|
|
|
|
channelBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
channelBtnFocus = 0;
|
|
|
|
|
|
|
|
|
|
if (channelWNFlag == 1)
|
|
|
|
|
joinChannelWN();
|
|
|
|
|
|
|
|
|
|
#ifndef _CHANNEL_MODIFY
|
|
|
|
|
if (bNewServer && joy_trg[1] & JOY_CTRL_C)
|
|
|
|
|
{
|
|
|
|
|
char buf[64];
|
|
|
|
|
|
|
|
|
|
if (pc.channel == -1)
|
|
|
|
|
{
|
|
|
|
|
if ((pc.quickChannel != -1) && (pc.familyName[0] != NULL))
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(buf, "C|J|%d", pc.quickChannel);
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, "C|J|-1");
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, "C|J|-1");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// ???????
|
|
|
|
|
if (pushId == FIELD_FUNC_PARTY)
|
|
|
|
|
{
|
|
|
|
|
partyBtn = 1;
|
|
|
|
|
if (partyBtnEnableFlag == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
partyBtn = 0;
|
|
|
|
|
play_se(220, 320, 240); // ???
|
|
|
|
|
}
|
|
|
|
|
else if (selId == FIELD_FUNC_PARTY)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (partyModeFlag == 0)
|
|
|
|
|
{
|
|
|
|
|
int dx, dy;
|
|
|
|
|
int flag;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
getRouteData(pc.dir, &dx, &dy);
|
|
|
|
|
flag = checkCharObjPointNotStatus(nowGx+dx, nowGy+dy, (CHAROBJ_TYPE_USER_NPC | CHAROBJ_TYPE_PARTY_OK), CHR_STATUS_BATTLE);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (flag == 1 && eventWarpSendFlag == 0 && eventEnemySendFlag == 0 && sendEnFlag == 0
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
&& (pc.iOnStreetVendor == 0 || sStreetVendorBuyBtn == 2)
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _THEATER
|
|
|
|
|
&& pc.iTheaterMode == 0
|
|
|
|
|
#endif
|
|
|
|
|
)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime+FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_PR_send(sockfd, nowGx, nowGy, 1);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_PR_send(sockfd, nowGx, nowGy, 1);
|
|
|
|
|
prSendMode = 1;
|
|
|
|
|
prSendFlag = 1;
|
|
|
|
|
etcSendFlag = 1;
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
if (pc.iOnStreetVendor == 1)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("摆摊中不得组队", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
#ifdef _THEATER
|
|
|
|
|
if (pc.iTheaterMode > 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("请专心表演", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
if (eventWarpSendFlag == 0 && eventEnemySendFlag == 0 && sendEnFlag == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime + FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_PR_send(sockfd, nowGx, nowGy, 0);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_PR_send(sockfd, nowGx, nowGy, 0);
|
|
|
|
|
prSendMode = 0;
|
|
|
|
|
prSendFlag = 1;
|
|
|
|
|
etcSendFlag = 1;
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
#ifdef _CHANNEL_MODIFY
|
|
|
|
|
TalkMode = 0;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
play_se(217, 320, 240); // ?????
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
partyBtn = 0;
|
|
|
|
|
|
|
|
|
|
if (focusId == FIELD_FUNC_PARTY)
|
|
|
|
|
partyBtnFocus = 1; // ???????????????
|
|
|
|
|
else
|
|
|
|
|
partyBtnFocus = 0;
|
|
|
|
|
#ifdef __PHONEMESSAGE
|
|
|
|
|
// LeiBoy 2002 Feb. 2 --- Cell Phone's Messages Button -- BEGIN
|
|
|
|
|
if (focusId == FIELD_FUNC_MSG)
|
|
|
|
|
msgBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
msgBtnFocus = 0;
|
|
|
|
|
if (pushId == FIELD_FUNC_MSG)
|
|
|
|
|
{
|
|
|
|
|
extern int MsgID;
|
|
|
|
|
|
|
|
|
|
if (selId == FIELD_FUNC_MSG)
|
|
|
|
|
{
|
|
|
|
|
if (msgBtn==0)
|
|
|
|
|
{
|
|
|
|
|
/*closeEtcSwitch();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
MsgID = 0;
|
|
|
|
|
msgBtn = 1;
|
|
|
|
|
play_se(202, 320, 240);
|
|
|
|
|
actBtn = 1;*/
|
|
|
|
|
|
|
|
|
|
//::ShellExecute(hWnd, NULL, "http://www.longzoro.com/", NULL, NULL, SW_SHOW );
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//if (msgBtn == 1)
|
|
|
|
|
//{
|
|
|
|
|
// extern int MsgProc();
|
|
|
|
|
|
|
|
|
|
// int msgret = MsgProc();
|
|
|
|
|
|
|
|
|
|
// if (msgret)
|
|
|
|
|
// {
|
|
|
|
|
// msgBtn = 0;
|
|
|
|
|
// actBtn = 0;
|
|
|
|
|
// GetKeyInputFocus(&MyChatBuffer);
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
// LeiBoy 2002 Feb. 2 --- Cell Phone's Messages Button -- END
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _RENWU_
|
2020-06-23 15:53:23 +08:00
|
|
|
|
extern BOOL 任务查询开关;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
extern int HelpProc();
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if(任务查询开关)
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (HelpProc()==1)
|
|
|
|
|
{
|
|
|
|
|
actBtn = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
任务查询开关=FALSE;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef _NEW_MATCH
|
|
|
|
|
if (pushId == FIELD_FUNC_HELP){
|
|
|
|
|
helpBtn = 1;
|
|
|
|
|
if (selId == FIELD_FUNC_HELP)
|
|
|
|
|
{
|
|
|
|
|
lssproto_LB_send(sockfd, nowGx, nowGy);
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
}else
|
|
|
|
|
helpBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_HELP)
|
|
|
|
|
helpBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
helpBtnFocus = 0;
|
|
|
|
|
#else
|
|
|
|
|
helpBtnFocus = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_HELP)
|
|
|
|
|
helpBtnFocus = 1;
|
|
|
|
|
if (selId == FIELD_FUNC_HELP)
|
|
|
|
|
{
|
|
|
|
|
extern short HelpProcNo;
|
|
|
|
|
|
|
|
|
|
if (helpBtn == 0)
|
|
|
|
|
{
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
HelpProcNo = 0;
|
|
|
|
|
helpBtn = 1;
|
|
|
|
|
//actBtn = 1;
|
|
|
|
|
play_se( 202, 320, 240 );
|
|
|
|
|
}else HelpProcNo = 1000;
|
|
|
|
|
}
|
|
|
|
|
if (helpBtn == 1)
|
|
|
|
|
{
|
|
|
|
|
extern int HelpProc();
|
|
|
|
|
|
|
|
|
|
#ifdef _TRADE_BUG_LOG
|
|
|
|
|
extern bool __writeFirstTime;
|
|
|
|
|
|
|
|
|
|
if (__writeFirstTime)
|
|
|
|
|
{
|
|
|
|
|
FILE *logf;
|
|
|
|
|
logf = fopen(".\\debug.txt", "w+");
|
|
|
|
|
if (logf != NULL)
|
|
|
|
|
{
|
|
|
|
|
fseek(logf, 0, SEEK_END);
|
|
|
|
|
struct tm nowTime;
|
|
|
|
|
time_t longTime;
|
|
|
|
|
time(&longTime);
|
|
|
|
|
localtime_s(&nowTime, &longTime);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
fprintf(logf, "[%02d-%02d-%02d %02d:%02d:%02d] 状态=%d; 标记=%d; 值=%d\r\n",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
(nowTime.tm_year % 100), nowTime.tm_mon + 1, nowTime.tm_mday,
|
|
|
|
|
nowTime.tm_hour, nowTime.tm_min, nowTime.tm_sec,
|
|
|
|
|
tradeStatus, MenuToggleFlag, MenuToggleFlag & JOY_CTRL_T);
|
|
|
|
|
fclose(logf);
|
|
|
|
|
}
|
|
|
|
|
tradeStatus = 0;
|
|
|
|
|
tradeFlag = 0;
|
|
|
|
|
MenuToggleFlag = 0;
|
|
|
|
|
__writeFirstTime = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (HelpProc())
|
|
|
|
|
{
|
|
|
|
|
helpBtn = 0;
|
|
|
|
|
actBtn = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _RED_MEMOY_
|
|
|
|
|
if (pushId == FIELD_FUNC_RED_MEMOY){
|
|
|
|
|
redmemoyBtn = 1;
|
|
|
|
|
if (selId == FIELD_FUNC_RED_MEMOY)
|
|
|
|
|
{
|
|
|
|
|
extern void lssproto_redMemoy_send(int fd,int index,char *str);
|
|
|
|
|
lssproto_redMemoy_send(sockfd, 1, "");
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
}else
|
|
|
|
|
redmemoyBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_RED_MEMOY)
|
|
|
|
|
redmemoyBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
redmemoyBtnFocus = 0;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (pushId == FIELD_FUNC_JOIN_BATTLE)
|
|
|
|
|
{
|
|
|
|
|
joinBattleBtn = 1;
|
|
|
|
|
if (joinBattleBtnEnableFlag == 0)
|
|
|
|
|
{
|
|
|
|
|
joinBattleBtn = 0;
|
|
|
|
|
play_se(220, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
else if (selId == FIELD_FUNC_JOIN_BATTLE)
|
|
|
|
|
{
|
|
|
|
|
int dx, dy;
|
|
|
|
|
int flag;
|
|
|
|
|
getRouteData(pc.dir, &dx, &dy);
|
|
|
|
|
flag = checkCharObjPointStatus(nowGx+dx, nowGy+dy, CHAROBJ_TYPE_USER_NPC, CHR_STATUS_BATTLE | CHR_STATUS_WATCH);
|
|
|
|
|
if ((partyModeFlag == 0 || (partyModeFlag == 1 && (pc.status & CHR_STATUS_LEADER) != 0))
|
|
|
|
|
&& flag == 1 && eventWarpSendFlag == 0 && eventEnemySendFlag == 0 && sendEnFlag == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime + FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
{
|
|
|
|
|
if (nowFloor == 9000)
|
|
|
|
|
lssproto_LB_send(sockfd, nowGx, nowGy);
|
|
|
|
|
else
|
|
|
|
|
lssproto_JB_send(sockfd, nowGx, nowGy);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_JB_send(sockfd, nowGx, nowGy);
|
|
|
|
|
jbSendFlag = 1;
|
|
|
|
|
etcSendFlag = 1;
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
joinBattleBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_JOIN_BATTLE)
|
|
|
|
|
joinBattleBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
joinBattleBtnFocus = 0;
|
|
|
|
|
|
|
|
|
|
if (pushId == FIELD_FUNC_DUEL)
|
|
|
|
|
{
|
|
|
|
|
duelBtn = 1;
|
|
|
|
|
|
|
|
|
|
if (selId == FIELD_FUNC_DUEL)
|
|
|
|
|
{
|
|
|
|
|
int dx, dy;
|
|
|
|
|
int flag;
|
|
|
|
|
|
|
|
|
|
getRouteData(pc.dir, &dx, &dy);
|
|
|
|
|
flag = checkCharObjPoint(nowGx+dx, nowGy+dy, CHAROBJ_TYPE_USER_NPC);
|
|
|
|
|
|
|
|
|
|
if ((partyModeFlag == 0 || (partyModeFlag == 1 && (pc.status & CHR_STATUS_LEADER) != 0))
|
|
|
|
|
&& flag == TRUE && eventWarpSendFlag == 0 && eventEnemySendFlag == 0 && sendEnFlag == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime + FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_DU_send(sockfd, nowGx, nowGy);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_DU_send(sockfd, nowGx, nowGy);
|
|
|
|
|
duelSendFlag = 1;
|
|
|
|
|
etcSendFlag = 1;
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
duelBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_DUEL)
|
|
|
|
|
duelBtnFocus = 1;
|
|
|
|
|
else
|
|
|
|
|
duelBtnFocus = 0;
|
|
|
|
|
|
|
|
|
|
// ??????????
|
|
|
|
|
if (selId == FIELD_FUNC_ACT || (joy_trg[1] & JOY_CTRL_W)
|
|
|
|
|
#ifdef __ONLINEGM
|
|
|
|
|
&& OnlineGmFlag == FALSE
|
|
|
|
|
#endif
|
|
|
|
|
/*#ifdef _JOBDAILY
|
|
|
|
|
&& JobDailyFlag == FALSE
|
|
|
|
|
#endif*/
|
|
|
|
|
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _THEATER
|
|
|
|
|
if (pc.iTheaterMode & 0x00000001)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("请专心看表演", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
actBtn = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
if (actBtn == 0)
|
|
|
|
|
{
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
initCharActionAnimeChange();
|
|
|
|
|
actBtn = 1;
|
|
|
|
|
play_se(202, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
closeCharActionAnimeChange();
|
|
|
|
|
}
|
|
|
|
|
if (actBtn == 1 && charActionAnimeChange())
|
|
|
|
|
actBtn = 0;
|
|
|
|
|
if (focusId == FIELD_FUNC_ACT)
|
|
|
|
|
actBtnForcus = 1;
|
|
|
|
|
else
|
|
|
|
|
actBtnForcus = 0;
|
|
|
|
|
|
|
|
|
|
if (mailLamp)
|
|
|
|
|
{
|
|
|
|
|
if (mailLampFlashTime == 0)
|
|
|
|
|
{
|
|
|
|
|
mailLampDrawFlag = 1;
|
|
|
|
|
mailLampFlashTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
else if (mailLampFlashTime + FIELD_MAIL_LAMP_FLASH_TIME < TimeGetTime())
|
|
|
|
|
{
|
|
|
|
|
mailLampDrawFlag++;
|
|
|
|
|
mailLampDrawFlag &= 1;
|
|
|
|
|
mailLampFlashTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
mailLampDrawFlag = 0;
|
|
|
|
|
mailLampFlashTime = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void fieldProc2(void)
|
|
|
|
|
{
|
|
|
|
|
// ?????????(CTRL+Q)
|
|
|
|
|
if ((joy_trg[1] & JOY_CTRL_Q))
|
|
|
|
|
{
|
|
|
|
|
if (menuBtn == 0)
|
|
|
|
|
{
|
|
|
|
|
closeCharActionAnimeChange();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
initEtcSwitch();
|
|
|
|
|
menuBtn = 1;
|
|
|
|
|
play_se(202, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
}
|
|
|
|
|
if (menuBtn == 1 && etcSwitch())
|
|
|
|
|
menuBtn = 0;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniCrossFrame // Syu ADD 动画层游过画面生物
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void crossAniRelease()
|
|
|
|
|
{
|
|
|
|
|
if (WaterAct2 != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(WaterAct2);
|
|
|
|
|
WaterAct2 = NULL;
|
|
|
|
|
Timeflag2 = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniImmobile // Syu ADD 定点产生特定动画
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void ImmobileAniRelease()
|
|
|
|
|
{
|
|
|
|
|
Updownflag = false;
|
|
|
|
|
for (int i = 0; i < 560; i++)
|
|
|
|
|
{
|
|
|
|
|
if (XYposition[i][3] == 1)
|
|
|
|
|
{
|
|
|
|
|
if (WaterAct3[XYposition[i][4]] != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(WaterAct3[XYposition[i][4]]);
|
|
|
|
|
WaterAct3[XYposition[i][4]] = NULL;
|
|
|
|
|
XYposition[i][3] = 0 ;
|
|
|
|
|
XYposition[i][4] = -1 ;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// XYposition[i][5] = 1 ; //新增不漂浮的旗标2,故不做
|
2020-06-22 17:49:02 +08:00
|
|
|
|
XYposition[i][6] = 0 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniRandom // Syu ADD 随机产生环境动画
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void AniRandomRelease()
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < 50; i ++)
|
|
|
|
|
{
|
|
|
|
|
if (WaterAct[i] != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(WaterAct[i]);
|
|
|
|
|
WaterAct[i] = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void drawField(void)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
int leftUpPanelX = 0; // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int leftUpPanelY = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
int rightUpPanelX = 504 + DISPLACEMENT_X ; // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int rightUpPanelY = 0;
|
|
|
|
|
int i;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _WATERANIMATION //Syu ADD 泪之海动画层
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int Createflag = 0;
|
|
|
|
|
int RandAnimate = 0 ;
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniRandom // Syu ADD 随机产生环境动画
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int x1 , y1;
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniCrossFrame // Syu ADD 动画层游过画面生物
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int x2 , y2;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
#ifdef _STONDEBUG__MSG
|
|
|
|
|
|
|
|
|
|
char msg[256];
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????Echo??????????
|
|
|
|
|
// ???????????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
sprintf_s(msg, "%s Server Alive -> %02d/%02d/%02d %02d:%02d:%02d",
|
|
|
|
|
selectServerName2[selectServerIndex],
|
|
|
|
|
(serverAliveTime.tm_year % 100), serverAliveTime.tm_mon+1, serverAliveTime.tm_mday,
|
|
|
|
|
serverAliveTime.tm_hour, serverAliveTime.tm_min, serverAliveTime.tm_sec);
|
|
|
|
|
StockFontBuffer( 108, 8, FONT_PRIO_FRONT, 0, msg, 0 );
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _SPECIALSPACEANIM // Syu ADD 特殊场景动画配置
|
2020-06-22 17:49:02 +08:00
|
|
|
|
SpecAnim(nowFloor);
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniCrossFrame // Syu ADD 动画层游过画面生物
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if ((nowFloor == 817) || (nowFloor == 8007) || (nowFloor == 8101) || (nowFloor == 8100) ||
|
|
|
|
|
(nowFloor == 8027) || (nowFloor == 8028) || (nowFloor == 8029) || (nowFloor == 8015) || (nowFloor == 8113) || (nowFloor == 8114) )
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//游过画面动画 Start
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (flag22 == false)
|
|
|
|
|
{
|
|
|
|
|
if (WaterAct2 != NULL && Timeflag2 == false)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(WaterAct2);
|
|
|
|
|
WaterAct2 = NULL;
|
|
|
|
|
Timeflag2 = true;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//结束后下一次出现的等待时间
|
2020-06-22 17:49:02 +08:00
|
|
|
|
TimeTickMax2 = RAND(500, 1500);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (Timeflag2 == true)
|
|
|
|
|
{
|
|
|
|
|
TimeTick2 ++;
|
|
|
|
|
if (TimeTick2 > TimeTickMax2)
|
|
|
|
|
{
|
|
|
|
|
Timeflag2 = false;
|
|
|
|
|
TimeTick2 = 0 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (WaterAct2 == NULL || delFlag == false)
|
|
|
|
|
{
|
|
|
|
|
delFlag = true;
|
|
|
|
|
flag22 = true;
|
|
|
|
|
x2 = RAND(0, 1);
|
|
|
|
|
RandAnimate = RAND(0, 2);
|
|
|
|
|
if (RandAnimate > 1)
|
|
|
|
|
RandAnimate = RAND(101512, 101515);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//有右下、左下、右上、左上四个方向
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
RandAnimate = RAND(0, 4);
|
|
|
|
|
if (RandAnimate > 2)
|
|
|
|
|
RandAnimate = RAND(101582, 101593);
|
|
|
|
|
else
|
|
|
|
|
RandAnimate = RAND(101516, 101523);
|
|
|
|
|
if (RandAnimate == 101516 || RandAnimate == 101518)
|
|
|
|
|
x2 = RAND(2, 3);
|
|
|
|
|
else if (RandAnimate == 101521 || RandAnimate == 101523 ||
|
|
|
|
|
(RandAnimate <= 101587 && RandAnimate >= 101582))
|
2020-06-23 15:53:23 +08:00
|
|
|
|
x2 = RAND(4, 5); //左上
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (RandAnimate == 101522 || RandAnimate == 101520 ||
|
|
|
|
|
(RandAnimate <= 101593 && RandAnimate >= 101588))
|
2020-06-23 15:53:23 +08:00
|
|
|
|
x2 = RAND(6, 7); //右上
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//决定进入画面的位置
|
|
|
|
|
if (x2 == 0) // 左下
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
x2 = RAND(50, lpDraw->xSize);
|
|
|
|
|
y2 = 0 ;
|
|
|
|
|
WaterAct2 = MakeAnimDisp(x2, y2, RandAnimate, 18);
|
|
|
|
|
}
|
|
|
|
|
else if (x2 == 1)
|
|
|
|
|
{
|
|
|
|
|
x2 = 640 ;
|
|
|
|
|
y2 = RAND(50, lpDraw->ySize);
|
|
|
|
|
WaterAct2 = MakeAnimDisp(x2, y2, RandAnimate, 18);
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
else if (x2 == 2) // 右下
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
x2 = RAND(0, lpDraw->xSize);
|
|
|
|
|
y2 = 0 ;
|
|
|
|
|
WaterAct2 = MakeAnimDisp(x2, y2, RandAnimate, 18);
|
|
|
|
|
}
|
|
|
|
|
else if (x2 == 3)
|
|
|
|
|
{
|
|
|
|
|
x2 = 0 ;
|
|
|
|
|
y2 = RAND(50, lpDraw->ySize);
|
|
|
|
|
WaterAct2 = MakeAnimDisp(x2, y2, RandAnimate, 18);
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
else if (x2 == 4) // 左上
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
x2 = RAND(50, lpDraw->xSize);
|
|
|
|
|
y2 = lpDraw->ySize ;
|
|
|
|
|
WaterAct2 = MakeAnimDisp(x2, y2, RandAnimate, 18);
|
|
|
|
|
}
|
|
|
|
|
else if (x2 == 5)
|
|
|
|
|
{
|
|
|
|
|
x2 = lpDraw->xSize ;
|
|
|
|
|
y2 = RAND(50, lpDraw->ySize);
|
|
|
|
|
WaterAct2 = MakeAnimDisp(x2, y2, RandAnimate, 18);
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
else if (x2 == 6) // 右上
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
x2 = 0 ;
|
|
|
|
|
y2 = RAND(50, lpDraw->ySize);
|
|
|
|
|
WaterAct2 = MakeAnimDisp(x2, y2, RandAnimate, 18);
|
|
|
|
|
}
|
|
|
|
|
else if (x2 == 7)
|
|
|
|
|
{
|
|
|
|
|
x2 = RAND(0, lpDraw->xSize);
|
|
|
|
|
y2 = lpDraw->ySize ;
|
|
|
|
|
WaterAct2 = MakeAnimDisp(x2, y2, RandAnimate, 18);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((nowFloor != 817 ) && (nowFloor != 8007) && (nowFloor != 8100) && (nowFloor != 8101) &&
|
|
|
|
|
(nowFloor != 8027) && (nowFloor != 8028) && (nowFloor != 8029) && (nowFloor != 8015) && (nowFloor != 8113) && (nowFloor != 8114) )
|
|
|
|
|
{
|
|
|
|
|
delFlag = false;
|
|
|
|
|
flag22 = true;
|
|
|
|
|
Timeflag2 = false;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniImmobile // Syu ADD 定点产生特定动画
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (nowFloor == 817)
|
|
|
|
|
{
|
|
|
|
|
in817flag = true ;
|
|
|
|
|
for (i = 0; i < 560; i++)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//判断定点动画产生点是否在人物 32 * 32范围内
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if ((nowGx > XYposition[i][0] - 16) && (nowGx < XYposition[i][0] + 16) &&
|
|
|
|
|
(nowGy > XYposition[i][1] - 16) && (nowGy < XYposition[i][1] + 16))
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//判断是否已产生
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (XYposition[i][3] == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//配置ACTION
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for (int j = 0; j < 30; j++)
|
|
|
|
|
{
|
|
|
|
|
if (WaterAct3[j] == NULL)
|
|
|
|
|
{
|
|
|
|
|
if (XYposition[i][5] == 2)
|
|
|
|
|
WaterAct3[j] = createWaterAnimation(XYposition[i][2], XYposition[i][0], XYposition[i][1], 0);
|
|
|
|
|
else
|
|
|
|
|
WaterAct3[j] = createWaterAnimation(XYposition[i][2], XYposition[i][0], XYposition[i][1], 30);
|
|
|
|
|
XYposition[i][3] = 1;
|
|
|
|
|
XYposition[i][4] = j;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//做定点动画的漂浮
|
2020-06-22 17:49:02 +08:00
|
|
|
|
XYposition[i][6]++;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//时间固定
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (XYposition[i][6] > 65)
|
|
|
|
|
{
|
|
|
|
|
XYposition[i][6] = 0;
|
|
|
|
|
//(XYposition[i][5]== 1 ) ? 0 : 1;
|
|
|
|
|
if (XYposition[i][5] == 1)
|
|
|
|
|
XYposition[i][5] = 0;
|
|
|
|
|
else if (XYposition[i][5] == 0)
|
|
|
|
|
XYposition[i][5] = 1;
|
|
|
|
|
}
|
|
|
|
|
if (XYposition[i][5] == 1)
|
|
|
|
|
{
|
|
|
|
|
WaterAct3[XYposition[i][4]]->mx = WaterAct3[XYposition[i][4]]->mx + float(0.5);
|
|
|
|
|
WaterAct3[XYposition[i][4]]->my = WaterAct3[XYposition[i][4]]->my - float(0.5);
|
|
|
|
|
}
|
|
|
|
|
else if (XYposition[i][5] == 0)
|
|
|
|
|
{
|
|
|
|
|
WaterAct3[XYposition[i][4]]->mx = WaterAct3[XYposition[i][4]]->mx - float(0.5);
|
|
|
|
|
WaterAct3[XYposition[i][4]]->my = WaterAct3[XYposition[i][4]]->my + float(0.5);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 合并
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (XYposition[i][3] == 1)
|
|
|
|
|
{
|
|
|
|
|
if ((nowGx < XYposition[i][0] - 16) || (nowGx > XYposition[i][0] + 16 ) ||
|
|
|
|
|
(nowGy < XYposition[i][1] - 16) || (nowGy > XYposition[i][1] + 16))
|
|
|
|
|
{
|
|
|
|
|
if (WaterAct3[XYposition[i][4]] != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(WaterAct3[XYposition[i][4]]);
|
|
|
|
|
WaterAct3[XYposition[i][4]] = NULL;
|
|
|
|
|
XYposition[i][3] = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (in817flag == true)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < 560; i++)
|
|
|
|
|
{
|
|
|
|
|
if (XYposition[i][3] == 1)
|
|
|
|
|
{
|
|
|
|
|
if (WaterAct3[XYposition[i][4]] != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(WaterAct3[XYposition[i][4]]);
|
|
|
|
|
WaterAct3[XYposition[i][4]] = NULL;
|
|
|
|
|
XYposition[i][3] = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
in817flag = false ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _AniRandom // Syu ADD 随机产生环境动画
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if ((nowFloor == 817) || (nowFloor == 8007) || (nowFloor == 8100) || (nowFloor == 8101) ||
|
2020-06-23 15:53:23 +08:00
|
|
|
|
(nowFloor == 8029) || (nowFloor == 8028) || (nowFloor == 8027) || (nowFloor == 8015) || (nowFloor == 8113) || (nowFloor == 8114) ) //判断地图
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
AniFlag = true;
|
|
|
|
|
for (i = 0; i < 50; i++)
|
|
|
|
|
{
|
|
|
|
|
if (Timeflag[i] == false)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//随机决定产生与否,不论与否都产生等待时间
|
2020-06-22 17:49:02 +08:00
|
|
|
|
Createflag = RAND(0, 3);
|
|
|
|
|
if (Createflag > 0)
|
|
|
|
|
{
|
|
|
|
|
if (WaterAct[i] == NULL)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//产生范围在人物 30 * 30 范围中
|
2020-06-22 17:49:02 +08:00
|
|
|
|
x1 = RAND(nowGx - 15, nowGx + 15);
|
|
|
|
|
y1 = RAND(nowGy - 15, nowGy + 15);
|
|
|
|
|
RandAnimate = RAND(0, 6);
|
|
|
|
|
if (RandAnimate > 2)
|
|
|
|
|
RandAnimate = RAND(101502, 101509);
|
|
|
|
|
else
|
|
|
|
|
RandAnimate = RAND(101524, 101529);
|
|
|
|
|
WaterAct[i]=createWaterAnimation(RandAnimate, x1, y1, 103);
|
|
|
|
|
Timeflag[i] = true;
|
|
|
|
|
TimeTickMax[i] = RAND(100, 400);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Timeflag[i] = true;
|
|
|
|
|
TimeTickMax[i] = RAND(300, 600);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//活着的环境动画计时
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for (i = 0; i < 50; i++)
|
|
|
|
|
{
|
|
|
|
|
if (Timeflag[i] == true)
|
|
|
|
|
TimeTick[i]++;
|
|
|
|
|
if (TimeTick[i] > TimeTickMax[i])
|
|
|
|
|
{
|
|
|
|
|
TimeTick[i] = -100;
|
|
|
|
|
Timeflag[i] = false;
|
|
|
|
|
DeathAction(WaterAct[i]);
|
|
|
|
|
WaterAct[i] = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//消灭动画
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (((nowFloor != 817) && (nowFloor != 8007) && (nowFloor != 8100) && (nowFloor != 8101) && (nowFloor != 8113) && (nowFloor != 8114) &&
|
|
|
|
|
(nowFloor != 8027) && (nowFloor != 8028) && (nowFloor != 8029) && (nowFloor != 8015)) && (AniFlag == true))
|
|
|
|
|
{
|
|
|
|
|
AniFlag = false;
|
|
|
|
|
for (i = 0; i < 50; i++)
|
|
|
|
|
{
|
|
|
|
|
if (WaterAct[i] != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(WaterAct[i]);
|
|
|
|
|
WaterAct[i] = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (drawFieldButtonFlag)
|
|
|
|
|
{
|
|
|
|
|
#ifdef __PHONEMESSAGE
|
|
|
|
|
// LeiBoy 2002 Jan.26 --- Cell Phone's Messages Button -- BEGIN
|
|
|
|
|
#ifdef _TABLEOFSKILL
|
|
|
|
|
#ifdef _ANGEL_SUMMON
|
|
|
|
|
#ifdef _TEACHER_SYSTEM
|
|
|
|
|
StockDispBuffer(leftUpPanelX + 163, leftUpPanelY + 27, DISP_PRIO_MENU, CG_FIELD_TS_LEFT_MENU, 0);
|
|
|
|
|
#else
|
|
|
|
|
StockDispBuffer(leftUpPanelX + 150, leftUpPanelY + 29, DISP_PRIO_MENU, CG_FIELD_MENU_LEFT_75, 0);
|
|
|
|
|
#endif
|
|
|
|
|
if (angelLampDrawFlag)
|
|
|
|
|
StockDispBuffer(leftUpPanelX + 64, leftUpPanelY + 42, DISP_PRIO_IME3, CG_FIELD_ANGEL_LAMP, 0);
|
|
|
|
|
#else
|
|
|
|
|
#ifdef _FRIENDCHANNEL
|
|
|
|
|
StockDispBuffer(leftUpPanelX + 141, leftUpPanelY + 29, DISP_PRIO_MENU, CG_FIELD_CHANNEL_MENU, 0);
|
|
|
|
|
#else
|
|
|
|
|
StockDispBuffer(leftUpPanelX + 141, leftUpPanelY + 29, DISP_PRIO_MENU, CG_FIELD_SKILL_MENU, 0);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
#else
|
|
|
|
|
StockDispBuffer(leftUpPanelX + 100, leftUpPanelY + 28, DISP_PRIO_MENU, CG_FIELD_MENU_LEFT, 0);
|
|
|
|
|
#endif
|
|
|
|
|
// LeiBoy 2002 Jan.26 --- Cell Phone's Messages Button -- END
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
|
|
//#ifdef __FAMILY_UI_
|
|
|
|
|
if (bNewServer)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef _SPECIAL_LOGO
|
|
|
|
|
#ifdef _SA_VERSION_25
|
|
|
|
|
StockDispBuffer(leftUpPanelX + 148, leftUpPanelY + 27, DISP_PRIO_MENU, CG_FIELD_MENU_LEFT_NEW, 0);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
StockDispBuffer(leftUpPanelX + 26 + 58, leftUpPanelY + 28, DISP_PRIO_MENU, CG_FIELD_MENU_LEFT_NEW, 0);
|
|
|
|
|
#endif
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
StockDispBuffer(leftUpPanelX + 26 + 52, leftUpPanelY + 28, DISP_PRIO_MENU, CG_FIELD_MENU_LEFT, 0);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef _MO_SIGN_IN
|
2020-06-23 15:53:23 +08:00
|
|
|
|
static int 临时;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef _CHARSIGNADY_NO_
|
|
|
|
|
extern PC pc;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
static DWORD 时间记录 = TimeGetTime() + 300;
|
|
|
|
|
if(!pc.签到标记){
|
|
|
|
|
if(时间记录 < TimeGetTime()){
|
|
|
|
|
时间记录 = TimeGetTime() + 300;
|
|
|
|
|
if(临时) 临时 =0;
|
|
|
|
|
else 临时=1;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
}else 临时 = signInBtn;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
临时 = signInBtn;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
fieldBtnHitId[FIELD_FUNC_SIGNIN] = StockDispBuffer(leftUpPanelX + 207, leftUpPanelY + 19, DISP_PRIO_IME3, signInBtnGraNo[临时], 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (signInBtnFocus)
|
|
|
|
|
#ifdef _SA_VERSION_25
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "骑宠查询。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _CHANGETEAM_
|
|
|
|
|
#ifdef _SA_VERSION_25
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_CHANGETEAM] = StockDispBuffer(leftUpPanelX + 241, leftUpPanelY + 19, DISP_PRIO_IME3, schangeteamBtnGraNo[changeteamBtn], 2);
|
|
|
|
|
#endif
|
|
|
|
|
if (changeteamBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "队长切换。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _NEWSHOP_
|
|
|
|
|
#ifdef _SA_VERSION_25
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_MARKET] = StockDispBuffer(leftUpPanelX + 271, leftUpPanelY + 19, DISP_PRIO_IME3, marketBtnGraNo[marketBtn], 2);
|
|
|
|
|
if (marketBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "商城功能。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_STREET_VENDOR] = StockDispBuffer(leftUpPanelX + 176, leftUpPanelY + 19, DISP_PRIO_IME3, sStreetVendorBtnGraNo[pc.iOnStreetVendor], 2);
|
|
|
|
|
if (sStreetVendorBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "摆摊功能。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#else
|
|
|
|
|
#ifdef _TABLEOFSKILL
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_SKILL] = StockDispBuffer(leftUpPanelX + 108, leftUpPanelY + 28, DISP_PRIO_IME3, skillBtnGraNo[skillBtn], 2);
|
|
|
|
|
if (skillBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "职业技能。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
fieldBtnHitId[FIELD_FUNC_MENU] = StockDispBuffer(leftUpPanelX + 52, leftUpPanelY + 28, DISP_PRIO_IME3, menuBtnGraNo[menuBtn], 2);
|
|
|
|
|
if (menuBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "游戏设定。");
|
|
|
|
|
// ????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
fieldBtnHitId[FIELD_FUNC_CARD] = StockDispBuffer(leftUpPanelX + 52, leftUpPanelY + 28, DISP_PRIO_IME3, cardBtnGraNo[cardBtn], 2);
|
|
|
|
|
if (cardBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "交换名片。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
// Robin 04/12 Trade
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_TRADE] = StockDispBuffer(leftUpPanelX + 104 + 10, leftUpPanelY + 28 - 10, DISP_PRIO_IME3, tradeBtnGraNo[tradeBtn], 2);
|
|
|
|
|
if (tradeBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "进行交易。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
#ifdef __PHONEMESSAGE
|
|
|
|
|
// LeiBoy 2002 Jan.26 --- Cell Phone's Messages Button -- BEGIN
|
|
|
|
|
#ifdef _TABLEOFSKILL
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_MSG] = StockDispBuffer(leftUpPanelX + 132, leftUpPanelY + 28, DISP_PRIO_IME3, msgBtnGraNo[msgBtn], 2);
|
|
|
|
|
#else
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_MSG] = StockDispBuffer(leftUpPanelX + 101, leftUpPanelY + 28, DISP_PRIO_IME3, msgBtnGraNo[msgBtn], 2);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (msgBtnFocus)
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "(免费)积分商城。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
// LeiBoy 2002 Jan.26 --- Cell Phone's Messages Button -- END
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _FRIENDCHANNEL //ROG ADD 好友频道
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (SelRoomBtn == 1 || chatRoomBtn == 1)
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_CHATROOM] = StockDispBuffer(leftUpPanelX + 141, leftUpPanelY + 29, DISP_PRIO_IME3, chatRoomBtnGraNo[1], 2);
|
|
|
|
|
else
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_CHATROOM] = StockDispBuffer(leftUpPanelX + 141, leftUpPanelY + 29, DISP_PRIO_IME3, chatRoomBtnGraNo[0], 2);
|
|
|
|
|
if (chatRoomBtnFocus)
|
|
|
|
|
{
|
|
|
|
|
if(strcmp(pc.chatRoomNum, "") == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "选择频道");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "开启频道");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
//#ifdef __FAMILY_UI_
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
{
|
|
|
|
|
// Robin 06/01 Channel
|
|
|
|
|
#ifndef _CHANNEL_MODIFY
|
|
|
|
|
if (pc.channel != -1)
|
|
|
|
|
channelBtn = 1;
|
|
|
|
|
else
|
|
|
|
|
channelBtn = 0;
|
|
|
|
|
#else
|
|
|
|
|
if (pc.channel == 5)
|
|
|
|
|
channelBtn = 1;
|
|
|
|
|
else
|
|
|
|
|
channelBtn = 0;
|
|
|
|
|
#endif
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_CHANNEL] = StockDispBuffer(leftUpPanelX + 115, leftUpPanelY + 28, DISP_PRIO_IME3, channelBtnGraNo[channelBtn], 2);
|
|
|
|
|
if (channelBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "家族功能。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
//#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
fieldBtnHitId[FIELD_FUNC_PARTY] = StockDispBuffer(leftUpPanelX + 52, leftUpPanelY + 28, DISP_PRIO_IME3, partyBtnGraNo[partyBtn], 2);
|
|
|
|
|
if (partyBtnFocus)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????
|
|
|
|
|
// ???????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (partyBtnEnableFlag == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "不能加入队伍。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "加入队伍。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mailLampDrawFlag)
|
|
|
|
|
StockDispBuffer(leftUpPanelX + 52, leftUpPanelY + 28, DISP_PRIO_IME3, CG_FIELD_MAIL_LAMP, 0);
|
|
|
|
|
|
|
|
|
|
#ifdef _RED_MEMOY_
|
|
|
|
|
StockDispBuffer(rightUpPanelX + 40, rightUpPanelY + 31, DISP_PRIO_MENU, CG_FIELD_MENU_RIGHT, 0);
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_RED_MEMOY] = StockDispBuffer(rightUpPanelX - 34, rightUpPanelY + 19, DISP_PRIO_IME3, redmemoyGraNo[redmemoyBtn], 2);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (redmemoyBtnFocus) ShowBottomLineString(FONT_PAL_WHITE, "发红包。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#else
|
|
|
|
|
StockDispBuffer(rightUpPanelX + 54, rightUpPanelY + 33, DISP_PRIO_MENU, CG_FIELD_MENU_RIGHT, 0);
|
|
|
|
|
#endif
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_JOIN_BATTLE] = StockDispBuffer(rightUpPanelX + 38, rightUpPanelY + 32, DISP_PRIO_IME3, joinBattleBtnGraNo[joinBattleBtn], 2);
|
|
|
|
|
if (joinBattleBtnFocus)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _NEW_MATCH
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "加入战斗。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#else
|
|
|
|
|
if (joinBattleHelpMsgFlag == 1)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "加入战斗。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (joinBattleHelpMsgFlag == 2)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "不能加入战斗。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE,"观战。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
fieldBtnHitId[FIELD_FUNC_DUEL] = StockDispBuffer(rightUpPanelX + 38, rightUpPanelY + 32, DISP_PRIO_IME3, duelBtnGraNo[duelBtn], 2);
|
|
|
|
|
if (duelBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "跟其他玩家决斗。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (helpBtnFocus)
|
|
|
|
|
#ifdef _NEW_MATCH
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "观战。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "任务查询。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_HELP] = StockDispBuffer(rightUpPanelX + 115, rightUpPanelY + 33, DISP_PRIO_IME3, helpBtnGraNo[helpBtn], 2);
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_ACT] = StockDispBuffer(rightUpPanelX + 68, rightUpPanelY + 32, DISP_PRIO_IME3, actBtnGraNo[actBtn], 2);
|
|
|
|
|
if (actBtnForcus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "人物的各种动作。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
// ?????
|
|
|
|
|
if (drawTimeAnimeFlag)
|
|
|
|
|
{
|
|
|
|
|
StockDispBuffer(rightUpPanelX + 104 - amPmAnimeX, rightUpPanelY + 21, DISP_PRIO_MENU, amPmAnimeGraNo[amPmAnimeGraNoIndex0], 0);
|
|
|
|
|
StockDispBuffer(rightUpPanelX + 104 + 64 - amPmAnimeX, rightUpPanelY + 21, DISP_PRIO_MENU, amPmAnimeGraNo[amPmAnimeGraNoIndex1], 0);
|
|
|
|
|
}
|
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockDispBuffer(rightUpPanelX + 68, rightUpPanelY + 32, DISP_PRIO_MENU, CG_FIELD_MENU_RIGHT_BACK, 0);
|
|
|
|
|
|
|
|
|
|
#ifdef _ANGEL_SUMMON
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_ANGEL] = StockDispBuffer(leftUpPanelX + 104 + 10 + 158, leftUpPanelY + 20, DISP_PRIO_IME3, angelBtnGraNo[angelBtn], 2);
|
|
|
|
|
if (angelBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "精灵的召唤。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
#ifdef _TEACHER_SYSTEM
|
|
|
|
|
fieldBtnHitId[FIELD_FUNC_TEACHER] = StockDispBuffer(leftUpPanelX + 305, leftUpPanelY + 20, DISP_PRIO_IME3, iTeacherSystemBtnGraNo[sTeacherSystemBtn > 0 ? 1:0], 2);
|
|
|
|
|
if (sTeacherSystemBtnFocus)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "导师系统。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < FIELD_FUNC_END; i++)
|
|
|
|
|
fieldBtnHitId[i] = -2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ????????????
|
|
|
|
|
BOOL checkFieldMenuFlag(void)
|
|
|
|
|
{
|
|
|
|
|
return nowFieldMenuOpenFlag;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
// ???
|
|
|
|
|
void initCharActionAnimeChange(void)
|
|
|
|
|
{
|
|
|
|
|
charActionAnimeChangeProcNo = 0;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void closeCharActionAnimeChange(void)
|
|
|
|
|
{
|
|
|
|
|
charActionAnimeChangeProcNo = 1000;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int charActionAnimeChange(void)
|
|
|
|
|
{
|
|
|
|
|
static int x, y, w, h;
|
|
|
|
|
static int btnId[13];
|
|
|
|
|
int id = 0;
|
|
|
|
|
int focusId = 0;
|
|
|
|
|
char *msg[] =
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
" 坐 下 ",
|
|
|
|
|
" 站 立 ",
|
|
|
|
|
" 挥 手 ",
|
|
|
|
|
" 走 动 ",
|
|
|
|
|
" 点 头 ",
|
|
|
|
|
" 晕 倒 ",
|
|
|
|
|
" 高 兴 ",
|
|
|
|
|
" 攻 击 ",
|
|
|
|
|
" 生 气 ",
|
|
|
|
|
" 防 御 ",
|
|
|
|
|
" 悲 伤 ",
|
|
|
|
|
" 受 伤 ",
|
|
|
|
|
" 投 掷 "
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef __EMOTION
|
2020-06-23 15:53:23 +08:00
|
|
|
|
," 打 呼 "
|
|
|
|
|
," 冷 场 "
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
};
|
|
|
|
|
char *msg2[] =
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"坐下的动作。 (Ctrl+1)",
|
|
|
|
|
"站立的动作。 (Ctrl+7)",
|
|
|
|
|
"挥手的动作。 (Ctrl+2)",
|
|
|
|
|
"走动的动作。 (Ctrl+8)",
|
|
|
|
|
"点头的动作。 (Ctrl+3)",
|
|
|
|
|
"晕倒的动作。 (Ctrl+9)",
|
|
|
|
|
"高兴的动作。 (Ctrl+4)",
|
|
|
|
|
"攻击的动作。 (Ctrl+0)",
|
|
|
|
|
"生气的动作。 (Ctrl+5)",
|
|
|
|
|
"防御的动作。 (Ctrl+-)",
|
|
|
|
|
"悲伤的动作。 (Ctrl+6)",
|
|
|
|
|
"受伤的动作。 (Ctrl+=)",
|
|
|
|
|
"投掷的动作。 (Ctrl+\\)"
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef __EMOTION
|
2020-06-23 15:53:23 +08:00
|
|
|
|
,"睡觉的动作。"
|
|
|
|
|
,"冷场的动作。"
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
};
|
|
|
|
|
int i, j;
|
|
|
|
|
int x1, y1, x2, y2;
|
|
|
|
|
int chgTbl[] =
|
|
|
|
|
{
|
|
|
|
|
5, // ? ?
|
|
|
|
|
3, // ? ?
|
2020-06-23 15:53:23 +08:00
|
|
|
|
6, // ??
|
|
|
|
|
4, // ?
|
2020-06-22 17:49:02 +08:00
|
|
|
|
11, // ????
|
2020-06-23 15:53:23 +08:00
|
|
|
|
2, // ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
7, // ? ?
|
|
|
|
|
0, // ? ?
|
2020-06-23 15:53:23 +08:00
|
|
|
|
8, // ?
|
2020-06-22 17:49:02 +08:00
|
|
|
|
10, // ???
|
2020-06-23 15:53:23 +08:00
|
|
|
|
9, // ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
1, // ????
|
|
|
|
|
12 // ???
|
|
|
|
|
};
|
|
|
|
|
#ifdef __EMOTION
|
|
|
|
|
int emotion[] = { SPR_sleep, SPR_stone};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (charActionAnimeChangeProcNo == 0)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < sizeof(btnId) / sizeof(int); i++)
|
|
|
|
|
btnId[i] = -2;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
w = 3;
|
|
|
|
|
h = 6;
|
|
|
|
|
x = 440;
|
|
|
|
|
y = 16;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//新增 动作表情切换地图BUG
|
2020-06-22 17:49:02 +08:00
|
|
|
|
ptActMenuWin1 = MakeWindowDisp(x, y, w, h, NULL, 1);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _NEW_RESOMODE //800 600模式
|
2020-06-22 17:49:02 +08:00
|
|
|
|
x = ptActMenuWin1->x;
|
|
|
|
|
y = ptActMenuWin1->y;
|
|
|
|
|
#endif
|
|
|
|
|
charActionAnimeChangeProcNo++;
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//新增 动作表情切换地图BUG
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (ptActMenuWin1 != NULL)
|
|
|
|
|
{
|
|
|
|
|
id = -1;
|
|
|
|
|
focusId = -1;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//新增 动作表情切换地图BUG
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (ptActMenuWin1->hp >= 1)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
id = selGraId(btnId, sizeof(btnId) / sizeof(int));
|
|
|
|
|
focusId = focusGraId(btnId, sizeof(btnId) / sizeof(int));
|
|
|
|
|
|
|
|
|
|
#ifdef __EMOTION
|
|
|
|
|
for (i = 0; i < 7; i++)
|
|
|
|
|
#else
|
|
|
|
|
for (i = 0; i < 6; i++)
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < 2; j++)
|
|
|
|
|
{
|
|
|
|
|
x1 = x + 84 * j + 18;
|
|
|
|
|
y1 = y + i * 30 + 21;
|
|
|
|
|
x2 = x1 + 73;
|
|
|
|
|
y2 = y1 + 22;
|
|
|
|
|
if (MakeHitBox(x1, y1, x2, y2, DISP_PRIO_BOX2))
|
|
|
|
|
{
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
id = i * 2 + j + 1;
|
|
|
|
|
focusId = i * 2 + j + 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef __EMOTION
|
|
|
|
|
i = 7;
|
|
|
|
|
#else
|
|
|
|
|
i = 6;
|
|
|
|
|
#endif
|
|
|
|
|
j = 0;
|
|
|
|
|
x1 = x + 42 + 18;
|
|
|
|
|
y1 = y + i * 30 + 21;
|
|
|
|
|
x2 = x1 + 73;
|
|
|
|
|
y2 = y1 + 22;
|
|
|
|
|
if (MakeHitBox(x1, y1, x2, y2, DISP_PRIO_BOX2))
|
|
|
|
|
{
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
id = i * 2 + j + 1;
|
|
|
|
|
focusId = i * 2 + j + 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
id = 100;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
else if ((joy_trg[0] & JOY_ESC) && GetImeString() == NULL) // ESC????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
id = 100;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
else if (charActionAnimeChangeProcNo == 1000) // ???????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
id = 100;
|
|
|
|
|
|
|
|
|
|
// ?????
|
|
|
|
|
if (id == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (1 <= id && id <= 13)
|
|
|
|
|
{
|
|
|
|
|
id--;
|
|
|
|
|
if (eventWarpSendFlag == 0 && eventEnemySendFlag == 0 && sendEnFlag == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime + FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_AC_send(sockfd, nowGx, nowGy, chgTbl[id]);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_AC_send(sockfd, nowGx, nowGy, chgTbl[id]);
|
|
|
|
|
setPcAction(chgTbl[id]);
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
id = -1;
|
|
|
|
|
play_se(217, 320, 240); // ?????
|
|
|
|
|
}
|
|
|
|
|
#ifdef __EMOTION
|
|
|
|
|
if (14 <= id && id <= 15)
|
|
|
|
|
{
|
|
|
|
|
id -= 14;
|
|
|
|
|
setPcEmotion(emotion[id]);
|
|
|
|
|
id = -1;
|
|
|
|
|
play_se(217, 320, 240); // ?????
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
if (id >= 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//新增 动作表情切换地图BUG
|
2020-06-22 17:49:02 +08:00
|
|
|
|
DeathAction(ptActMenuWin1);
|
|
|
|
|
ptActMenuWin1 = NULL;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
//新增 动作表情切换地图BUG
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (ptActMenuWin1->hp >= 1)
|
|
|
|
|
{
|
|
|
|
|
btnId[0] = StockDispBuffer(x + 96, y + 258, DISP_PRIO_MENU, CG_CLOSE_BTN, 2);
|
|
|
|
|
if (focusId == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "关闭动作视窗");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef __EMOTION
|
|
|
|
|
for (i = 0; i < 7; i++)
|
|
|
|
|
#else
|
|
|
|
|
for (i = 0; i < 6; i++)
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < 2; j++)
|
|
|
|
|
{
|
|
|
|
|
StockFontBuffer(x + 84 * j + 20, y + i * 30 + 24, FONT_PRIO_FRONT, FONT_PAL_WHITE, msg[i * 2 + j], 0);
|
|
|
|
|
if ((i * 2 + j) == (focusId - 1))
|
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, msg2[i * 2 + j]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#ifdef __EMOTION
|
|
|
|
|
i = 7;
|
|
|
|
|
#else
|
|
|
|
|
i = 6;
|
|
|
|
|
#endif
|
|
|
|
|
j = 0;
|
|
|
|
|
StockFontBuffer(x + 42 + 20, y + i * 30 + 24, FONT_PRIO_FRONT, FONT_PAL_WHITE, msg[i * 2 + j], 0);
|
|
|
|
|
if ((i * 2 + j) == (focusId - 1))
|
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, msg2[i * 2 + j]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????OK?????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
// ???
|
|
|
|
|
void initEtcSwitch(void)
|
|
|
|
|
{
|
|
|
|
|
etcSwitchProcNo = 0;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void closeEtcSwitch(void)
|
|
|
|
|
{
|
|
|
|
|
etcSwitchProcNo = 1000;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????OK??????
|
|
|
|
|
// ??: 0 ... ???
|
2020-06-22 17:49:02 +08:00
|
|
|
|
// !0 ... ????
|
|
|
|
|
#ifdef _CHANNEL_MODIFY
|
|
|
|
|
void SaveChatData(char *msg,char KindOfChannel,bool bCloseFile);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
short onlinegmProcNo;
|
|
|
|
|
|
|
|
|
|
int etcSwitch(void)
|
|
|
|
|
{
|
|
|
|
|
static ACTION *ptActMenuWin = NULL;
|
|
|
|
|
#ifdef _CHANNEL_MODIFY
|
|
|
|
|
static ACTION *pActChannelWin = NULL;
|
|
|
|
|
static int iChannelbtnId[6];
|
|
|
|
|
FILE *pf = NULL;
|
|
|
|
|
#endif
|
|
|
|
|
static int x, y, w, h;
|
|
|
|
|
|
|
|
|
|
static int btnId[8];
|
|
|
|
|
|
|
|
|
|
int id = 0;
|
|
|
|
|
int focusId = 0;
|
|
|
|
|
char *msg[] =
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"组 队:",
|
|
|
|
|
"决 斗:",
|
|
|
|
|
"交换名片:",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifndef _CHANNEL_MODIFY
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"聊 天:",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#else
|
|
|
|
|
#ifdef _NEWFONT_
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"频 道 开 关",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"频 道 开 关",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"交 易:",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef __ONLINEGM
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"线 上 回 报",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
//#ifdef _JOBDAILY
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// "任 务 日 志",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
//#endif
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
char *msg2[] =
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
" N O",
|
|
|
|
|
" YES",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
//" Other"
|
|
|
|
|
};
|
|
|
|
|
#ifndef _CHANNEL_MODIFY
|
|
|
|
|
char *msg3[] =
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
" 全 员",
|
|
|
|
|
" 队 伍"
|
2020-06-22 17:49:02 +08:00
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
char *msg4[] =
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"设定是否接受其他人加入你的队伍。",
|
|
|
|
|
"设定是否接受其他人的挑战。",
|
|
|
|
|
"设定是否接受名片交换。",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifndef _CHANNEL_MODIFY
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"设定聊天内容可以被听到的范围。",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"设定各个频道的开启或关闭。",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"设定是否接受交易。"
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef __ONLINEGM
|
|
|
|
|
,
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"开启线上回报系统",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
//#ifdef _JOBDAILY
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// "查看任务日志",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
//#endif
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
unsigned int mask[] =
|
|
|
|
|
{
|
|
|
|
|
PC_ETCFLAG_PARTY,
|
|
|
|
|
PC_ETCFLAG_DUEL,
|
|
|
|
|
PC_ETCFLAG_MAIL,
|
|
|
|
|
#ifndef _CHANNEL_MODIFY
|
|
|
|
|
PC_ETCFLAG_CHAT_MODE,
|
|
|
|
|
#else
|
|
|
|
|
0,
|
|
|
|
|
#endif
|
|
|
|
|
PC_ETCFLAG_TRADE
|
|
|
|
|
#ifdef __ONLINEGM
|
|
|
|
|
,0
|
|
|
|
|
#endif
|
|
|
|
|
};
|
|
|
|
|
#ifdef _CHANNEL_MODIFY
|
|
|
|
|
char *pszChannel[] = {
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"密语频道",
|
|
|
|
|
"家族频道",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef _CHAR_PROFESSION
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"职业频道",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"对话储存"
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#ifdef _CHANNEL_WORLD
|
2020-06-23 15:53:23 +08:00
|
|
|
|
,"世界频道"
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
#ifdef _CHANNEL_ALL_SERV
|
2020-06-23 15:53:23 +08:00
|
|
|
|
,"星球频道"
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
};
|
|
|
|
|
int iChannelSwitch[] = {
|
|
|
|
|
PC_ETCFLAG_CHAT_TELL
|
|
|
|
|
,PC_ETCFLAG_CHAT_FM
|
|
|
|
|
#ifdef _CHAR_PROFESSION
|
|
|
|
|
,PC_ETCFLAG_CHAT_OCC
|
|
|
|
|
#endif
|
|
|
|
|
,PC_ETCFLAG_CHAT_SAVE
|
|
|
|
|
#ifdef _CHANNEL_WORLD
|
|
|
|
|
,PC_ETCFLAG_CHAT_WORLD
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _CHANNEL_ALL_SERV
|
|
|
|
|
,PC_ETCFLAG_ALL_SERV
|
|
|
|
|
#endif
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/*#ifdef _JOBDAILY
|
|
|
|
|
char *msg5[] = {
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"关 闭",
|
|
|
|
|
"上一页",
|
|
|
|
|
"下一页"
|
2020-06-22 17:49:02 +08:00
|
|
|
|
};
|
|
|
|
|
#endif*/
|
|
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
int x1, y1, x2, y2;
|
|
|
|
|
|
|
|
|
|
if (etcSwitchProcNo == 0)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < sizeof(btnId) / sizeof(int); i++)
|
|
|
|
|
btnId[i] = -2;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
w = 3;
|
|
|
|
|
h = 5;
|
|
|
|
|
x = 16;
|
|
|
|
|
//x = 440;
|
|
|
|
|
//y = 72;
|
|
|
|
|
y = 16;
|
|
|
|
|
ptActMenuWin = MakeWindowDisp(x, y, w, h, NULL, 1); //ptActMenuWin = MakeWindowDisp(x, y, w, h+1, NULL, 1);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _NEW_RESOMODE //800 600模式
|
2020-06-22 17:49:02 +08:00
|
|
|
|
x = ptActMenuWin->x;
|
|
|
|
|
y = ptActMenuWin->y;
|
|
|
|
|
#endif
|
|
|
|
|
etcSwitchProcNo++;
|
|
|
|
|
}
|
|
|
|
|
#ifdef _CHANNEL_MODIFY
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 频道开关视窗
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (etcSwitchProcNo == 100)
|
|
|
|
|
{
|
|
|
|
|
w = 3;
|
|
|
|
|
|
|
|
|
|
h = 5;
|
|
|
|
|
|
|
|
|
|
x = 16;
|
|
|
|
|
y = 16;
|
|
|
|
|
pActChannelWin = MakeWindowDisp(x, y, w, h, NULL, 1);
|
|
|
|
|
etcSwitchProcNo++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (pActChannelWin != NULL)
|
|
|
|
|
{
|
|
|
|
|
id = -1;
|
|
|
|
|
focusId = -1;
|
|
|
|
|
if (pActChannelWin->hp >= 1)
|
|
|
|
|
{
|
|
|
|
|
id = selGraId(iChannelbtnId, sizeof(iChannelbtnId) / sizeof(int));
|
|
|
|
|
focusId = focusGraId(iChannelbtnId, sizeof(iChannelbtnId) / sizeof(int));
|
|
|
|
|
for (i = 0; i < sizeof(pszChannel) / sizeof(char*); i++)
|
|
|
|
|
{
|
|
|
|
|
x1 = x + 18;
|
|
|
|
|
y1 = y + i * 30 + 23;
|
|
|
|
|
x2 = x1 + 157;
|
|
|
|
|
y2 = y1 + 22;
|
|
|
|
|
if (MakeHitBox(x1, y1, x2, y2, DISP_PRIO_BOX2))
|
|
|
|
|
{
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
id = i + 1;
|
|
|
|
|
focusId = i + 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
id = 100;
|
|
|
|
|
else if (((joy_trg[0] & JOY_ESC) && GetImeString() == NULL))
|
|
|
|
|
{
|
|
|
|
|
id = 100;
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
else if (etcSwitchProcNo == 1000)
|
|
|
|
|
id = 100;
|
|
|
|
|
|
|
|
|
|
if (id == 0)
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
else if (1 <= id && id <= sizeof(msg) / sizeof(char*))
|
|
|
|
|
{
|
|
|
|
|
id--;
|
|
|
|
|
if (pc.etcFlag & iChannelSwitch[id])
|
|
|
|
|
{
|
|
|
|
|
pc.etcFlag &= ~iChannelSwitch[id];
|
|
|
|
|
TalkMode = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
pc.etcFlag |= iChannelSwitch[id];
|
|
|
|
|
switch (id)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
if (pc.familyleader <= 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("你尚未加入家族", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
pc.etcFlag &= ~iChannelSwitch[id];
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
#ifdef _CHAR_PROFESSION
|
|
|
|
|
case 2:
|
|
|
|
|
if (pc.profession_class == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("你尚未就职", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
pc.etcFlag &= ~iChannelSwitch[id];
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
#else
|
|
|
|
|
case 2:
|
|
|
|
|
if (!(pc.etcFlag & iChannelSwitch[id]))
|
|
|
|
|
SaveChatData(NULL, 0, true);
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _CHANNEL_WORLD
|
|
|
|
|
case 3:
|
|
|
|
|
if ( pc.etcFlag & iChannelSwitch[id] )
|
|
|
|
|
{
|
|
|
|
|
SaveChatData(NULL, 0, true);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _CHANNEL_ALL_SERV
|
|
|
|
|
case 4:
|
|
|
|
|
if ( pc.etcFlag & iChannelSwitch[id] )
|
|
|
|
|
{
|
|
|
|
|
SaveChatData(NULL, 0, true);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
if (eventWarpSendFlag == 0 && eventEnemySendFlag == 0 && sendEnFlag == 0)
|
|
|
|
|
{
|
|
|
|
|
if (fieldBtnPushTime + FIELD_BTN_PUSH_WAIT < TimeGetTime())
|
|
|
|
|
{
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FS_send(sockfd, pc.etcFlag);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FS_send(sockfd, pc.etcFlag);
|
|
|
|
|
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
etcSwitchChangeFlag = 1;
|
|
|
|
|
}
|
|
|
|
|
id = -1;
|
|
|
|
|
play_se(217, 320, 240);
|
|
|
|
|
}
|
|
|
|
|
if (id >= 0)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pActChannelWin);
|
|
|
|
|
pActChannelWin = NULL;
|
|
|
|
|
if ((pf = fopen("data\\channel.dat","w+")) == NULL)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("频道设定档读取失败", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
char buf[5];
|
|
|
|
|
|
|
|
|
|
buf[0] = (pc.etcFlag & PC_ETCFLAG_CHAT_TELL) ? 1:0;
|
|
|
|
|
buf[1] = (pc.etcFlag & PC_ETCFLAG_CHAT_SAVE) ? 1:0;
|
|
|
|
|
#ifdef _CHAR_PROFESSION
|
|
|
|
|
buf[2] = (pc.etcFlag & PC_ETCFLAG_CHAT_OCC) ? 1:0;
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _CHANNEL_WORLD
|
|
|
|
|
buf[3] = (pc.etcFlag & PC_ETCFLAG_CHAT_WORLD) ? 1:0;
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _CHANNEL_ALL_SERV
|
|
|
|
|
buf[4] = (pc.etcFlag & PC_ETCFLAG_ALL_SERV) ? 1:0;
|
|
|
|
|
#endif
|
|
|
|
|
fwrite(buf, 1, sizeof(buf), pf);
|
|
|
|
|
fclose(pf);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
iChannelbtnId[0] = StockDispBuffer(x + 96, h * 48 - 24, DISP_PRIO_IME3, CG_CLOSE_BTN, 2);
|
|
|
|
|
|
|
|
|
|
if (focusId == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "关闭选单视窗。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
for (i = 0; i < sizeof(pszChannel) / sizeof(char*); i++)
|
|
|
|
|
{
|
|
|
|
|
StockFontBuffer(x + 20, y + i * 30 + 26, FONT_PRIO_FRONT, FONT_PAL_WHITE, pszChannel[i], 0);
|
|
|
|
|
StockFontBuffer(x + 105, y + i * 30 + 26, FONT_PRIO_FRONT, FONT_PAL_WHITE, msg2[((pc.etcFlag & iChannelSwitch[i]) ? 1:0)], 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef __ONLINEGM
|
|
|
|
|
if (etcSwitchProcNo == 200)
|
|
|
|
|
{
|
|
|
|
|
int ret = iOnlineGmProc();
|
|
|
|
|
|
|
|
|
|
if (ret)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
{ // 关闭
|
2020-06-22 17:49:02 +08:00
|
|
|
|
GetKeyInputFocus(&MyChatBuffer);
|
|
|
|
|
OnlineGmFlag = FALSE;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
OnlineGmFlag = TRUE;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
/*#ifdef _JOBDAILY
|
|
|
|
|
|
|
|
|
|
if(etcSwitchProcNo==201){
|
|
|
|
|
w = 8;
|
|
|
|
|
h = 7;
|
|
|
|
|
x = 63;
|
|
|
|
|
y = 70;
|
|
|
|
|
pActJobdailyWin = MakeWindowDisp( x, y, w, h, NULL, 1 );
|
|
|
|
|
for(i=0;i<MAXMISSION;i++){
|
|
|
|
|
jobdaily[i].JobId = 0;
|
|
|
|
|
jobdaily[i].explain[0] = '\0';
|
|
|
|
|
jobdaily[i].state[0] = '\0';
|
|
|
|
|
}
|
|
|
|
|
char look[10];
|
|
|
|
|
strcpy(look,"dyedye");
|
|
|
|
|
lssproto_JOBDAILY_send(sockfd,look);
|
|
|
|
|
etcSwitchProcNo++;
|
|
|
|
|
PageIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
if( pActJobdailyWin != NULL )
|
|
|
|
|
{
|
|
|
|
|
id = -1;
|
|
|
|
|
focusId = -1;
|
|
|
|
|
if( CheckMenuFlag() )
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pActJobdailyWin);
|
|
|
|
|
pActJobdailyWin = NULL;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
if(pActJobdailyWin->hp >= 1){
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(274,94,FONT_PRIO_FRONT,FONT_PAL_YELLOW,"任 务 日 志",0);
|
|
|
|
|
StockFontBuffer(x+30,118,FONT_PRIO_FRONT,FONT_PAL_GREEN,"编号 --------------------任务说明--------------------",0);
|
|
|
|
|
StockFontBuffer(x+440,118,FONT_PRIO_FRONT,FONT_PAL_GREEN,"状态",0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if(JobdailyGetFlag){ //把接收到的资料秀出
|
2020-06-22 17:49:02 +08:00
|
|
|
|
char buf[20];
|
|
|
|
|
for(i=0;i<10;i++){
|
|
|
|
|
sprintf_s(buf,"%d",jobdaily[i+PageIndex*10].JobId);
|
|
|
|
|
if(!atoi(buf)) buf[0] = '\0';
|
|
|
|
|
if(jobdaily[i+PageIndex*10].explain[0]==NULL) MaxPage = PageIndex+1;
|
|
|
|
|
StockFontBuffer(x+30,145+i*20,FONT_PRIO_FRONT,FONT_PAL_WHITE,buf,0);
|
|
|
|
|
StockFontBuffer(x+72,145+i*20,FONT_PRIO_FRONT,FONT_PAL_WHITE,jobdaily[i+PageIndex*10].explain,0);
|
|
|
|
|
StockFontBuffer(x+432 ,145+i*20,FONT_PRIO_FRONT,FONT_PAL_WHITE,jobdaily[i+PageIndex*10].state,0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
id = selGraId(iJobdailybtnId,sizeof(iJobdailybtnId)/sizeof(int));
|
|
|
|
|
focusId = focusGraId(iJobdailybtnId,sizeof(iJobdailybtnId)/sizeof(int));
|
|
|
|
|
|
|
|
|
|
for(i = 0;i < sizeof(msg5)/sizeof(char*);i++){
|
|
|
|
|
x1 = x+78+i*150;
|
|
|
|
|
y1 = y+30+23+196+45;
|
|
|
|
|
x2 = x1 + 48;
|
|
|
|
|
y2 = y1 + 22;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if(i==1) if(PageIndex==0) continue; //上一页
|
|
|
|
|
if(i==2) if(PageIndex==MaxPage-1) continue; //下一页
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if(MakeHitBox(x1,y1,x2,y2,DISP_PRIO_BOX2)){
|
|
|
|
|
if(mouse.onceState & MOUSE_LEFT_CRICK) id = i+1;
|
|
|
|
|
focusId = i+1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(CheckMenuFlag()) id = 100;
|
|
|
|
|
else if(((joy_trg[0] & JOY_ESC) && GetImeString() == NULL)){
|
|
|
|
|
id = 100;
|
|
|
|
|
play_se(203,320,240);
|
|
|
|
|
}
|
|
|
|
|
else if(etcSwitchProcNo == 1000) id = 100;
|
|
|
|
|
|
|
|
|
|
if(id == 1){
|
|
|
|
|
play_se(203,320,240);
|
|
|
|
|
DeathAction(pActJobdailyWin);
|
|
|
|
|
pActJobdailyWin = NULL;
|
|
|
|
|
return 1;
|
|
|
|
|
}else if(id == 2){
|
|
|
|
|
PageIndex --;
|
|
|
|
|
if(PageIndex<=0) PageIndex=0;
|
|
|
|
|
}else if(id == 3){
|
|
|
|
|
PageIndex ++;
|
|
|
|
|
if(PageIndex==MaxPage) PageIndex--;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if(focusId == 1) ShowBottomLineString(FONT_PAL_WHITE,"关闭任务日志视窗。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
for(i = 0;i < sizeof(msg5)/sizeof(char*);i++){
|
|
|
|
|
StockFontBuffer(x+80+i*150,y+30+26+196+45,FONT_PRIO_FRONT,FONT_PAL_YELLOW,msg5[i],0);
|
|
|
|
|
//StockFontBuffer(x+105,y+i*30+26,FONT_PRIO_FRONT, FONT_PAL_WHITE,msg2[((pc.etcFlag & iChannelSwitch[i]) ? 1:0)],0);
|
|
|
|
|
}
|
|
|
|
|
//char buf[10];
|
|
|
|
|
//sprintf_s(buf,"PageIndex:%d", PageIndex);
|
|
|
|
|
//StockFontBuffer( 400 , 230 , FONT_PRIO_FRONT, 1 , buf , 0 );
|
|
|
|
|
//sprintf_s(buf,"MaxPage:%d",MaxPage);
|
|
|
|
|
//StockFontBuffer( 400 , 250 , FONT_PRIO_FRONT, 1 , buf , 0 );
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif*/
|
|
|
|
|
|
|
|
|
|
if (ptActMenuWin != NULL)
|
|
|
|
|
{
|
|
|
|
|
id = -1;
|
|
|
|
|
focusId = -1;
|
|
|
|
|
if (ptActMenuWin->hp >= 1)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
id = selGraId(btnId, sizeof(btnId) / sizeof(int));
|
|
|
|
|
focusId = focusGraId(btnId, sizeof(btnId) / sizeof(int));
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < sizeof(msg) / sizeof(char*); i++)
|
|
|
|
|
{
|
|
|
|
|
x1 = x+18;
|
|
|
|
|
y1 = y+i*30+23;
|
|
|
|
|
x2 = x1 + 157;
|
|
|
|
|
y2 = y1 + 22;
|
|
|
|
|
if (MakeHitBox(x1, y1, x2, y2, DISP_PRIO_BOX2))
|
|
|
|
|
{
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
id = i + 1;
|
|
|
|
|
focusId = i + 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
id = 100;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
else if (((joy_trg[0] & JOY_ESC) && GetImeString() == NULL)) // ESC????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
id = 100;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
else if (etcSwitchProcNo == 1000) // ???????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
id = 100;
|
|
|
|
|
// ?????
|
|
|
|
|
if (id == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se( 203, 320, 240 ); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
#ifdef _CHANNEL_MODIFY
|
|
|
|
|
if (id == 4)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(ptActMenuWin);
|
|
|
|
|
ptActMenuWin = NULL;
|
|
|
|
|
etcSwitchProcNo = 100;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef __ONLINEGM
|
|
|
|
|
if (id == 6)
|
|
|
|
|
{
|
|
|
|
|
if (BattlingFlag == FALSE)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(ptActMenuWin);
|
|
|
|
|
ptActMenuWin = NULL;
|
|
|
|
|
onlinegmProcNo = 0 ;
|
|
|
|
|
etcSwitchProcNo = 200;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("战斗中无法开启线上回报系统...", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/*#ifdef _JOBDAILY
|
|
|
|
|
if(id == 7){
|
|
|
|
|
if(BattlingFlag == FALSE){
|
|
|
|
|
DeathAction( ptActMenuWin );
|
|
|
|
|
ptActMenuWin = NULL;
|
|
|
|
|
//onlinegmProcNo = 0 ;
|
|
|
|
|
etcSwitchProcNo = 201;
|
|
|
|
|
return 0;
|
|
|
|
|
}else{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("战斗中无法开启任务日志...",FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif*/
|
|
|
|
|
|
|
|
|
|
if (1 <= id && id <= sizeof(msg) / sizeof(char*))
|
|
|
|
|
{
|
|
|
|
|
id--;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (pc.etcFlag & mask[id])
|
|
|
|
|
pc.etcFlag &= ~mask[id];
|
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
if (pc.iOnStreetVendor == 1 || sStreetVendorBuyBtn == 2)
|
|
|
|
|
{
|
|
|
|
|
if (mask[id] == PC_ETCFLAG_TRADE || mask[id] == PC_ETCFLAG_PARTY || mask[id] == PC_ETCFLAG_DUEL)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("摆摊中不可开交易、组队及对战功能", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
pc.etcFlag |= mask[id];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
pc.etcFlag |= mask[id];
|
|
|
|
|
#else
|
|
|
|
|
pc.etcFlag |= mask[id];
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
if (eventWarpSendFlag == 0 && eventEnemySendFlag == 0 && sendEnFlag == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime + FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FS_send(sockfd, pc.etcFlag);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FS_send(sockfd, pc.etcFlag);
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
else // ?????????????????????? ????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
etcSwitchChangeFlag = 1;
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
id = -1;
|
|
|
|
|
play_se(217, 320, 240); //?????
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (id >= 0)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(ptActMenuWin);
|
|
|
|
|
ptActMenuWin = NULL;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ptActMenuWin->hp >= 1)
|
|
|
|
|
{
|
|
|
|
|
btnId[0] = StockDispBuffer(x + 96, h * 48 - 24 , DISP_PRIO_IME3, CG_CLOSE_BTN, 2);
|
|
|
|
|
if (focusId == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "关闭选单视窗。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for (i = 0; i < sizeof(msg) / sizeof(char*); i++)
|
|
|
|
|
{
|
|
|
|
|
StockFontBuffer(x + 20, y + i * 30 + 26, FONT_PRIO_FRONT, FONT_PAL_WHITE, msg[i], 0);
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (i != 3 && i != 5) //修改主选单必须注意
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 105, y + i * 30 + 26, FONT_PRIO_FRONT, FONT_PAL_WHITE, msg2[((pc.etcFlag & mask[i]) ? 1:0)], 0);
|
|
|
|
|
#ifndef _CHANNEL_MODIFY
|
|
|
|
|
else
|
|
|
|
|
StockFontBuffer(x + 105, y + i * 30 + 26, FONT_PRIO_FRONT, FONT_PAL_WHITE, msg3[((pc.etcFlag & mask[i]) ? 1:0)], 0);
|
|
|
|
|
#endif
|
|
|
|
|
if (i == focusId - 1)
|
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, msg4[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ????????
|
|
|
|
|
// ??: 0 ... ???
|
2020-06-22 17:49:02 +08:00
|
|
|
|
// 1 ... "??"????????
|
|
|
|
|
int disconnectServer( void )
|
|
|
|
|
{
|
|
|
|
|
static ACTION *ptActMenuWin = NULL;
|
|
|
|
|
static int x, y, w, h;
|
|
|
|
|
static int btnId[1];
|
|
|
|
|
int id = 0;
|
|
|
|
|
char *msg[] =
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"与服务器切断连线",
|
|
|
|
|
"回到开头画面"
|
2020-06-22 17:49:02 +08:00
|
|
|
|
};
|
|
|
|
|
int i;
|
|
|
|
|
int ret = 0;
|
|
|
|
|
int xx, yy;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (ptActMenuWin == NULL)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
InitMenu2();
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
closeCharActionAnimeChange();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < sizeof(btnId) / sizeof(int); i++)
|
|
|
|
|
btnId[i] = -2;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
w = 5;
|
|
|
|
|
h = 3;
|
|
|
|
|
x = (lpDraw->xSize - w * 64) / 2;
|
|
|
|
|
y = (lpDraw->ySize - h * 48) / 2;
|
|
|
|
|
ptActMenuWin = MakeWindowDisp(x, y, w, h, NULL, 1, FALSE);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _NEW_RESOMODE //800 600模式
|
2020-06-22 17:49:02 +08:00
|
|
|
|
x = ptActMenuWin->x;
|
|
|
|
|
y = ptActMenuWin->y;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
#ifdef _AIDENGLU_
|
2020-06-23 15:53:23 +08:00
|
|
|
|
extern int 自动登陆是否开启;
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
if (ptActMenuWin != NULL)
|
|
|
|
|
{
|
|
|
|
|
id = -1;
|
|
|
|
|
if (ptActMenuWin->hp >= 1)
|
|
|
|
|
{
|
|
|
|
|
id = selFontId(btnId, sizeof(btnId) / sizeof(int));
|
|
|
|
|
if (
|
|
|
|
|
id >= 0
|
|
|
|
|
#ifdef _AIDENGLU_
|
2020-06-23 15:53:23 +08:00
|
|
|
|
|| 自动登陆是否开启
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(ptActMenuWin);
|
|
|
|
|
ptActMenuWin = NULL;
|
|
|
|
|
ret = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
yy = (h * 48) / 4;
|
|
|
|
|
for (i = 0; i < sizeof(msg) / sizeof(char*); i++)
|
|
|
|
|
{
|
|
|
|
|
xx = (w * 64 - strlen(msg[i]) / 2 * 17) / 2;
|
|
|
|
|
StockFontBuffer(x+ xx, y + (i + 1) * yy, FONT_PRIO_FRONT, FONT_PAL_WHITE, msg[i], 0);
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
xx = (w * 64 - strlen("确定") / 2 * 17) / 2;
|
|
|
|
|
btnId[0] = StockFontBuffer(x + xx, y + 3 * yy, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "确定", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ?????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void drawFieldInfoWin(void)
|
|
|
|
|
{
|
|
|
|
|
static ACTION *ptActMenuWin = NULL;
|
|
|
|
|
static int x, y, w, h;
|
|
|
|
|
int xx, yy;
|
|
|
|
|
|
|
|
|
|
if (fieldInfoTime == 0)
|
|
|
|
|
{
|
|
|
|
|
if (ptActMenuWin != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(ptActMenuWin);
|
|
|
|
|
ptActMenuWin = NULL;
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (MapWmdFlagBak)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (ptActMenuWin == NULL)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
{
|
|
|
|
|
// ?????????????????
|
|
|
|
|
if (MenuToggleFlag & JOY_CTRL_M)
|
|
|
|
|
MapWmdFlagBak = TRUE;
|
|
|
|
|
InitMenu2();
|
|
|
|
|
}
|
|
|
|
|
closeEtcSwitch();
|
|
|
|
|
closeCharActionAnimeChange();
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
w = 4;
|
|
|
|
|
h = 2;
|
|
|
|
|
x = (lpDraw->xSize - w * 64) / 2;
|
|
|
|
|
y = (lpDraw->ySize - 24 - h * 48) / 2;
|
|
|
|
|
ptActMenuWin = MakeWindowDisp(x, y, w, h, NULL, 3, FALSE);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _NEW_RESOMODE //800 600模式
|
2020-06-22 17:49:02 +08:00
|
|
|
|
x = ptActMenuWin->x;
|
|
|
|
|
y = ptActMenuWin->y;
|
|
|
|
|
#endif
|
|
|
|
|
play_se(202, 320, 240); // ????????
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ptActMenuWin != NULL)
|
|
|
|
|
{
|
|
|
|
|
if (fieldInfoTime + 2000 <= TimeGetTime() || CheckMenuFlag() || windowTypeWN > -1 || actBtn == 1 || menuBtn == 1)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(ptActMenuWin);
|
|
|
|
|
ptActMenuWin = NULL;
|
|
|
|
|
fieldInfoTime = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (ptActMenuWin->hp >= 1)
|
|
|
|
|
{
|
|
|
|
|
xx = (w * 64 - strlen(nowFloorName) / 2 * 17) / 2;
|
|
|
|
|
yy = (h * 48 - 16) / 2;
|
|
|
|
|
StockFontBuffer(x + xx, y + yy, FONT_PRIO_FRONT, FONT_PAL_WHITE, nowFloorName, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ???????????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void actionShortCutKeyProc(void)
|
|
|
|
|
{
|
|
|
|
|
unsigned int key[] =
|
|
|
|
|
{
|
|
|
|
|
JOY_CTRL_0, // 0
|
|
|
|
|
JOY_CTRL_CIRCUMFLEX, // 1
|
|
|
|
|
JOY_CTRL_9, // 2
|
|
|
|
|
JOY_CTRL_7, // 3
|
|
|
|
|
JOY_CTRL_8, // 4
|
|
|
|
|
JOY_CTRL_1, // 5
|
|
|
|
|
JOY_CTRL_2, // 6
|
|
|
|
|
JOY_CTRL_4, // 7
|
|
|
|
|
JOY_CTRL_5, // 8
|
|
|
|
|
JOY_CTRL_6, // 9
|
|
|
|
|
JOY_CTRL_MINUS, // 10
|
|
|
|
|
JOY_CTRL_3, // 11
|
|
|
|
|
JOY_CTRL_YEN // 12
|
|
|
|
|
};
|
|
|
|
|
int i;
|
|
|
|
|
BOOL pushFlag = FALSE;
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ??????????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (moveRouteCnt != 0 || nowVx != 0 || nowVy != 0)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < sizeof(key) / sizeof(unsigned int); i++)
|
|
|
|
|
{
|
|
|
|
|
if (joy_trg[1] & key[i])
|
|
|
|
|
{
|
|
|
|
|
pushFlag = TRUE;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!pushFlag)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (eventWarpSendFlag == 0 && eventEnemySendFlag == 0 && sendEnFlag == 0)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _THEATER
|
|
|
|
|
if (pc.iTheaterMode & 0x00000001)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockChatBufferLine("请专心看表演", FONT_PAL_RED);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
|
|
|
|
#endif
|
2020-06-23 15:53:23 +08:00
|
|
|
|
if (fieldBtnPushTime + FIELD_BTN_PUSH_WAIT < TimeGetTime())// ??
|
2020-06-22 17:49:02 +08:00
|
|
|
|
{
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_AC_send(sockfd, nowGx, nowGy, i);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_AC_send(sockfd, nowGx, nowGy, i);
|
|
|
|
|
setPcAction(i);
|
|
|
|
|
fieldBtnPushTime = TimeGetTime();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static ACTION *ptActChannelWin = NULL;
|
|
|
|
|
static ACTION *ptActChannel2Win = NULL;
|
|
|
|
|
static ACTION *ptActLeaderFuncWin = NULL;
|
|
|
|
|
|
|
|
|
|
#ifndef _FM_MODIFY
|
|
|
|
|
char channelName[9][20] =
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
" 家族资料 ",
|
|
|
|
|
"家族频道 1",
|
|
|
|
|
"家族频道 2",
|
|
|
|
|
"家族频道 3",
|
|
|
|
|
"家族频道 4",
|
|
|
|
|
" 族长广播 ",
|
|
|
|
|
" 离开频道 ",
|
|
|
|
|
" 族长功能 ",
|
|
|
|
|
" 离 开 "
|
2020-06-22 17:49:02 +08:00
|
|
|
|
};
|
|
|
|
|
#else
|
|
|
|
|
char channelName[5][20] =
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
" 家族资料 ",
|
|
|
|
|
" 族长功能 ",
|
|
|
|
|
"家族布告栏",
|
|
|
|
|
" 关闭广播 ",
|
|
|
|
|
" 家族徽章 "
|
2020-06-22 17:49:02 +08:00
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
void initJoinChannelWN(void)
|
|
|
|
|
{
|
|
|
|
|
channelWNFlag = 1;
|
|
|
|
|
//joinChannelProc = 1000;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void closeJoinChannelWN(void)
|
|
|
|
|
{
|
|
|
|
|
channelWNFlag = 0;
|
|
|
|
|
//joinChannelProc = 0;
|
|
|
|
|
DeathAction(ptActChannelWin);
|
|
|
|
|
ptActChannelWin = NULL;
|
|
|
|
|
joinChannel2Proc = 0;
|
|
|
|
|
DeathAction(ptActChannel2Win);
|
|
|
|
|
ptActChannel2Win = NULL;
|
|
|
|
|
DeathAction(ptActLeaderFuncWin);
|
|
|
|
|
ptActLeaderFuncWin = NULL;
|
|
|
|
|
#ifdef _FRIENDCHANNEL
|
|
|
|
|
chatRoomBtn = 0;
|
|
|
|
|
SelRoomBtn = 0;
|
|
|
|
|
#ifdef _STREET_VENDOR
|
|
|
|
|
if (sStreetVendorBtn != 3)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pActStreetVendorWnd);
|
|
|
|
|
pActStreetVendorWnd = NULL;
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
#ifdef _TABLEOFSKILL
|
|
|
|
|
DeathAction(pActSkillWnd);
|
|
|
|
|
pActSkillWnd = NULL;
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void joinChannelWN(void)
|
|
|
|
|
{
|
|
|
|
|
//static ACTION *ptActMenuWin = NULL;
|
|
|
|
|
int x, y, w, h, i;
|
|
|
|
|
#ifndef _FM_MODIFY
|
|
|
|
|
static int btnId[9];
|
|
|
|
|
#else
|
|
|
|
|
static int btnId[5];
|
|
|
|
|
#endif
|
|
|
|
|
static int graId[1];
|
|
|
|
|
char buf[1024], buf2[64];
|
|
|
|
|
int selId = 0;
|
|
|
|
|
int selgraId;
|
|
|
|
|
|
|
|
|
|
x = 20;
|
|
|
|
|
y = 30;
|
|
|
|
|
w = 2;
|
|
|
|
|
#ifndef _FM_MODIFY
|
|
|
|
|
h = 8;
|
|
|
|
|
#else
|
|
|
|
|
h = 5;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (ptActChannelWin == NULL)
|
|
|
|
|
{
|
|
|
|
|
ptActChannelWin = MakeWindowDisp(x, y, w, h, NULL, 1, FALSE);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _NEW_RESOMODE //800 600模式
|
2020-06-22 17:49:02 +08:00
|
|
|
|
x = ptActChannelWin->x;
|
|
|
|
|
y = ptActChannelWin->y;
|
|
|
|
|
#endif
|
|
|
|
|
for (i = 0; i < sizeof(btnId) / sizeof(int); i++)
|
|
|
|
|
btnId[i] = -2;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (ptActChannelWin->hp >= 1)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ESC????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (((joy_trg[0] & JOY_ESC) && GetImeString() == NULL))
|
|
|
|
|
{
|
|
|
|
|
closeJoinChannelWN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
|
|
|
|
|
selId = focusFontId(btnId, sizeof(btnId) / sizeof(int));
|
|
|
|
|
selgraId = focusGraId(graId, sizeof(graId) / sizeof(int));
|
|
|
|
|
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
if (selgraId == 0)
|
|
|
|
|
{
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
#ifndef _FM_MODIFY
|
|
|
|
|
switch (selId)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
sprintf_s(buf, "S|D2", selId);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
case 2:
|
|
|
|
|
case 3:
|
|
|
|
|
sprintf_s(buf, "C|L|%d", selId);
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
#ifdef _FMVER21
|
|
|
|
|
if (pc.familyleader != FMMEMBER_LEADER)
|
|
|
|
|
return;
|
|
|
|
|
#else
|
|
|
|
|
if (pc.familyleader != 1)
|
|
|
|
|
return;
|
|
|
|
|
#endif
|
|
|
|
|
sprintf_s(buf, "C|J|5");
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
sprintf_s(buf, "C|J|-1");
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
DeathAction(ptActChannel2Win);
|
|
|
|
|
ptActChannel2Win = NULL;
|
|
|
|
|
joinChannel2Proc = 2000;
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
return;
|
|
|
|
|
case 8:
|
|
|
|
|
sprintf_s(buf, "S|SELF");
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
switch (selId)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
sprintf_s(buf, "S|D2", selId);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
DeathAction(ptActChannel2Win);
|
|
|
|
|
ptActChannel2Win = NULL;
|
|
|
|
|
joinChannel2Proc = 2000;
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
return;
|
|
|
|
|
case 2:
|
|
|
|
|
sprintf_s(buf, "D");
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
sprintf_s(buf, "C|J|-1");
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
sprintf_s(buf, "S|SELF");
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
play_se(203, 320, 240);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
if (selId != -1)
|
|
|
|
|
{
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
strcpy(buf2, "");
|
|
|
|
|
for (i= 0; i < (int)(16 - strlen(pc.familyName)) / 2; i++)
|
|
|
|
|
strcat_s(buf2, " ");
|
|
|
|
|
strcat_s(buf2, pc.familyName);
|
|
|
|
|
|
|
|
|
|
#ifndef _FM_MODIFY
|
|
|
|
|
btnId[8] = StockFontBuffer(x + 7, y + 30, FONT_PRIO_FRONT, FONT_PAL_GREEN, buf2, 0);
|
|
|
|
|
#else
|
|
|
|
|
btnId[4] = StockFontBuffer(x + 7, y + 30, FONT_PRIO_FRONT, FONT_PAL_GREEN, buf2, 0);
|
|
|
|
|
btnId[2] = StockFontBuffer(x + 25, y + 65 + 36 * 2, FONT_PRIO_FRONT, FONT_PAL_WHITE, channelName[2], 2);
|
|
|
|
|
#endif
|
|
|
|
|
btnId[0] = StockFontBuffer(x + 25, y + 65, FONT_PRIO_FRONT, FONT_PAL_WHITE, channelName[0], 2);
|
|
|
|
|
|
|
|
|
|
#ifndef _FM_MODIFY
|
|
|
|
|
for (i = 1; i < 4; i++)
|
|
|
|
|
{
|
|
|
|
|
if (pc.channel == i)
|
|
|
|
|
btnId[i] = StockFontBuffer(x + 25, y + 65 + 36 * i, FONT_PRIO_FRONT, FONT_PAL_YELLOW, channelName[i], 2);
|
|
|
|
|
else
|
|
|
|
|
btnId[i] = StockFontBuffer(x + 25, y + 65 + 36 * i, FONT_PRIO_FRONT, FONT_PAL_WHITE, channelName[i], 2);
|
|
|
|
|
}
|
|
|
|
|
btnId[6] = StockFontBuffer(x + 25, y + 65 + 36 * 4, FONT_PRIO_FRONT, FONT_PAL_WHITE, channelName[6], 2);
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef _FMVER21
|
|
|
|
|
// shan add
|
|
|
|
|
if (pc.familyleader == FMMEMBER_LEADER || pc.familyleader == FMMEMBER_ELDER)
|
|
|
|
|
#else
|
|
|
|
|
if (pc.familyleader == 1)
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _FM_MODIFY
|
|
|
|
|
btnId[7] = StockFontBuffer(x + 25, y + 65 + 36 * 5, FONT_PRIO_FRONT, FONT_PAL_WHITE, channelName[7], 2);
|
|
|
|
|
else
|
|
|
|
|
btnId[7] = StockFontBuffer(x + 25, y + 65 + 36 * 5, FONT_PRIO_FRONT, FONT_PAL_GRAY, channelName[7], 0);
|
|
|
|
|
graId[0] = StockDispBuffer(x + 65, y + 13 + 320, DISP_PRIO_IME3, CG_CLOSE_BTN, 2);
|
|
|
|
|
#else
|
|
|
|
|
{
|
|
|
|
|
btnId[1] = StockFontBuffer(x + 25, y + 65 + 36, FONT_PRIO_FRONT, FONT_PAL_WHITE, channelName[1], 2);
|
|
|
|
|
btnId[3] = StockFontBuffer(x + 25, y + 65 + 36 * 3, FONT_PRIO_FRONT, FONT_PAL_WHITE, channelName[3], 2);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
btnId[1] = StockFontBuffer(x + 25, y + 65 + 36, FONT_PRIO_FRONT, FONT_PAL_GRAY, channelName[1], 0);
|
|
|
|
|
btnId[3] = StockFontBuffer(x + 25, y + 65 + 36 * 3, FONT_PRIO_FRONT, FONT_PAL_GRAY, channelName[3], 0);
|
|
|
|
|
}
|
|
|
|
|
graId[0] = StockDispBuffer(x + 65, y + 13 + 200, DISP_PRIO_IME3, CG_CLOSE_BTN, 2);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifndef _FM_MODIFY
|
|
|
|
|
switch (selId)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "查看家族详细资料。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
case 2:
|
|
|
|
|
case 3:
|
|
|
|
|
if (pc.channel == selId)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(buf, "你目前在这个频道。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(buf, "查看这个聊天频道。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, buf);
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "族长对全星系的族员广播。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 6:
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "退出目前的频道。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 7:
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "族长专用功能。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
if (selgraId == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "离开聊天频道选单。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
switch (selId)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "查看家族详细资料。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 1:
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "族长专用功能。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 2:
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "使用家族布告栏功能。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 3:
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "关闭族长广播功能。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
if (selgraId == 0)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "离开聊天频道选单。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
if (joinChannel2Proc == 1000)
|
|
|
|
|
joinChannel2WN();
|
|
|
|
|
else if (joinChannel2Proc == 2000)
|
|
|
|
|
leaderFuncWN();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct TchannelData{
|
|
|
|
|
int index;
|
|
|
|
|
int num;
|
|
|
|
|
int join[FAMILY_MAXMEMBER];
|
|
|
|
|
int joinNum;
|
|
|
|
|
char name[FAMILY_MAXMEMBER][20];
|
|
|
|
|
};
|
|
|
|
|
static TchannelData channelData;
|
|
|
|
|
|
|
|
|
|
char pageStr[2][10] =
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
"上一页",
|
|
|
|
|
"下一页",
|
2020-06-22 17:49:02 +08:00
|
|
|
|
};
|
|
|
|
|
static int pageNum;
|
|
|
|
|
|
|
|
|
|
void initJoinChannel2WN(char *data)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
char buf[256];
|
|
|
|
|
|
|
|
|
|
channelData.joinNum = 0;
|
|
|
|
|
getStringToken(data, '|', 3, sizeof(buf) - 1, buf);
|
|
|
|
|
channelData.index = atoi(buf);
|
|
|
|
|
getStringToken(data, '|', 4, sizeof(buf) - 1, buf);
|
|
|
|
|
channelData.num = atoi(buf);
|
|
|
|
|
|
|
|
|
|
if (channelData.num > 0)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < channelData.num && i < FAMILY_MAXMEMBER; i++)
|
|
|
|
|
{
|
|
|
|
|
getStringToken(data, '|', 4 + (i * 2) + 1, sizeof(buf) - 1, buf);
|
|
|
|
|
channelData.join[i] = atoi(buf);
|
|
|
|
|
if (channelData.join[i] == 1)
|
|
|
|
|
channelData.joinNum++;
|
|
|
|
|
getStringToken(data, '|', 4 + (i * 2) + 2, sizeof(buf) - 1, buf);
|
|
|
|
|
makeStringFromEscaped(buf);
|
|
|
|
|
strcpy(channelData.name[i], buf);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
pageNum = 0;
|
|
|
|
|
play_se(202, 320, 240); // ????????
|
|
|
|
|
joinChannel2Proc = 1000;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void closeJoinChannel2WN(void)
|
|
|
|
|
{
|
|
|
|
|
joinChannel2Proc = 0;
|
|
|
|
|
DeathAction(ptActChannel2Win);
|
|
|
|
|
ptActChannel2Win = NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void joinChannel2WN(void)
|
|
|
|
|
{
|
|
|
|
|
//static ACTION *ptActMenuWin = NULL;
|
|
|
|
|
int x, y, w, h, i;
|
|
|
|
|
static int fontBtnId[4];
|
|
|
|
|
char buf[1024];
|
|
|
|
|
int selId;
|
|
|
|
|
|
|
|
|
|
x = 160;
|
|
|
|
|
y = 30;
|
|
|
|
|
w = 7;
|
|
|
|
|
h = 8;
|
|
|
|
|
|
|
|
|
|
if (ptActChannel2Win == NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(ptActLeaderFuncWin);
|
|
|
|
|
ptActLeaderFuncWin = NULL;
|
|
|
|
|
ptActChannel2Win = MakeWindowDisp(x, y, w, h, NULL, 1);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _NEW_RESOMODE //800 600模式
|
2020-06-22 17:49:02 +08:00
|
|
|
|
x = ptActChannel2Win->x;
|
|
|
|
|
y = ptActChannel2Win->y;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else if (ptActChannel2Win->hp >= 1)
|
|
|
|
|
{
|
|
|
|
|
selId = focusFontId(fontBtnId, sizeof(fontBtnId) / sizeof(int));
|
|
|
|
|
|
|
|
|
|
switch (selId)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "加入本频道。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 1:
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "关闭这个视窗。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
switch (selId)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
sprintf_s(buf, "C|J|%d", channelData.index);
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
closeJoinChannelWN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
if (pc.channel == channelData.index)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(buf, "C|J|-1");
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
}
|
|
|
|
|
closeJoinChannel2WN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
if (pageNum > 0)
|
|
|
|
|
pageNum--;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
if (pageNum < 2)
|
|
|
|
|
pageNum++;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
fontBtnId[0] = StockFontBuffer(x + 240, y + 340, FONT_PRIO_FRONT, FONT_PAL_YELLOW, " 加 入 ", 2);
|
|
|
|
|
fontBtnId[1] = StockFontBuffer(x + 340, y + 340, FONT_PRIO_FRONT, FONT_PAL_YELLOW, " 离 开 ", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
switch (pageNum)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
if (channelData.num > 30)
|
|
|
|
|
fontBtnId[3] = StockFontBuffer(x + 120, y + 340, FONT_PRIO_FRONT, FONT_PAL_YELLOW, pageStr[1], 2);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
if (channelData.num > 60)
|
|
|
|
|
fontBtnId[3] = StockFontBuffer(x + 120, y + 340, FONT_PRIO_FRONT, FONT_PAL_YELLOW, pageStr[1], 2);
|
|
|
|
|
fontBtnId[2] = StockFontBuffer(x + 50, y + 340, FONT_PRIO_FRONT, FONT_PAL_YELLOW, pageStr[0], 2);
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
fontBtnId[2] = StockFontBuffer(x + 50, y + 340, FONT_PRIO_FRONT, FONT_PAL_YELLOW, pageStr[0], 2);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
StockFontBuffer(x + 25, y + 25, FONT_PRIO_FRONT, FONT_PAL_WHITE, channelName[channelData.index], 0);
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(x + 25, y + 50, FONT_PRIO_FRONT, FONT_PAL_WHITE, "[ 频 道 成 员 ]", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(buf, "目前有 %d 位家族成员在本星球。", channelData.num);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 200, y + 25, FONT_PRIO_FRONT, FONT_PAL_WHITE, buf, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(buf, "有 %d 人在本频道。", channelData.joinNum);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(x + 280, y + 50, FONT_PRIO_FRONT, FONT_PAL_WHITE, buf, 0);
|
|
|
|
|
|
|
|
|
|
for (i = 0 ; i < channelData.num; i++)
|
|
|
|
|
{
|
|
|
|
|
int color;
|
|
|
|
|
|
|
|
|
|
if (channelData.join[i] == 1)
|
|
|
|
|
color = FONT_PAL_WHITE;
|
|
|
|
|
else
|
|
|
|
|
color = FONT_PAL_GRAY;
|
|
|
|
|
|
|
|
|
|
if (pageNum == 0 && i < 30)
|
|
|
|
|
{
|
|
|
|
|
if (i < 10)
|
|
|
|
|
StockFontBuffer(x + 25, y + 80 + i * 25, FONT_PRIO_FRONT, color, channelData.name[i], 0);
|
|
|
|
|
else if(i < 20)
|
|
|
|
|
StockFontBuffer(x + 25 + 140, y + 80 + (i - 10) * 25, FONT_PRIO_FRONT, color, channelData.name[i], 0);
|
|
|
|
|
else if(i < 30)
|
|
|
|
|
StockFontBuffer(x + 25 + 280, y + 80 + (i - 20) * 25, FONT_PRIO_FRONT, color, channelData.name[i], 0);
|
|
|
|
|
}
|
|
|
|
|
else if (pageNum == 1 && i >= 30 && i < 60)
|
|
|
|
|
{
|
|
|
|
|
if (i < 40)
|
|
|
|
|
StockFontBuffer(x + 25, y + 80 + (i - 30) * 25, FONT_PRIO_FRONT, color, channelData.name[i], 0);
|
|
|
|
|
else if (i < 50)
|
|
|
|
|
StockFontBuffer(x + 25 + 140, y + 80 + (i - 40) * 25, FONT_PRIO_FRONT, color, channelData.name[i], 0);
|
|
|
|
|
else if (i < 60)
|
|
|
|
|
StockFontBuffer(x + 25 + 280, y + 80 + (i - 50) * 25, FONT_PRIO_FRONT, color, channelData.name[i], 0);
|
|
|
|
|
}
|
|
|
|
|
else if (pageNum == 2 && i >= 60)
|
|
|
|
|
{
|
|
|
|
|
if (i < 70)
|
|
|
|
|
StockFontBuffer(x + 25, y + 80 + (i - 60) * 25, FONT_PRIO_FRONT, color, channelData.name[i], 0);
|
|
|
|
|
else if (i < 80)
|
|
|
|
|
StockFontBuffer(x + 25 + 140, y + 80 + (i - 70) * 25, FONT_PRIO_FRONT, color, channelData.name[i], 0);
|
|
|
|
|
else if (i < 90)
|
|
|
|
|
StockFontBuffer(x + 25 + 280, y + 80 + (i - 80) * 25, FONT_PRIO_FRONT, color, channelData.name[i], 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void leaderFuncWN(void)
|
|
|
|
|
{
|
|
|
|
|
//static ACTION *ptActMenuWin = NULL;
|
|
|
|
|
int x, y, w, h;
|
|
|
|
|
static int btnId[9];
|
|
|
|
|
static int graId[1];
|
|
|
|
|
char buf[1024];
|
|
|
|
|
int selId;
|
|
|
|
|
int selgraId;
|
|
|
|
|
|
|
|
|
|
x = 160;
|
|
|
|
|
y = 30;
|
|
|
|
|
w = 2;
|
|
|
|
|
h = 5;
|
|
|
|
|
|
|
|
|
|
if (ptActLeaderFuncWin == NULL)
|
|
|
|
|
{
|
|
|
|
|
ptActLeaderFuncWin = MakeWindowDisp(x, y, w, h, NULL, 1, FALSE);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _NEW_RESOMODE //800 600模式
|
2020-06-22 17:49:02 +08:00
|
|
|
|
x = ptActLeaderFuncWin->x;
|
|
|
|
|
y = ptActLeaderFuncWin->y;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else if (ptActLeaderFuncWin->hp >= 1)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// ESC????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (((joy_trg[0] & JOY_ESC) && GetImeString() == NULL))
|
|
|
|
|
{
|
|
|
|
|
closeJoinChannelWN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
}
|
|
|
|
|
if (CheckMenuFlag())
|
|
|
|
|
closeJoinChannelWN();
|
|
|
|
|
|
|
|
|
|
selId = focusFontId(btnId, sizeof(btnId) / sizeof(int));
|
|
|
|
|
selgraId = focusGraId(graId, sizeof(graId) / sizeof(int));
|
|
|
|
|
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
if (selId == 1)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _FMVER21
|
|
|
|
|
if (pc.familyleader != FMMEMBER_LEADER)
|
|
|
|
|
#else
|
|
|
|
|
if (pc.familyleader != 1)
|
|
|
|
|
#endif
|
|
|
|
|
return;
|
|
|
|
|
sprintf_s(buf, "C|J|5");
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
closeJoinChannelWN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (selId == 2)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(buf, "L|F|1");
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
closeJoinChannelWN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (selId == 3)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(buf, "L|L|1");
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
closeJoinChannelWN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (selId == 4)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(buf, "L|L|2");
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
closeJoinChannelWN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (selId == 5)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(buf, "L|CHANGE|L");
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
closeJoinChannelWN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _ADD_FAMILY_TAX // WON ADD 增加庄园税收
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (selId == 6)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(buf, "L|FMTAX|W");
|
|
|
|
|
if (bNewServer)
|
|
|
|
|
lssproto_FM_send(sockfd, buf);
|
|
|
|
|
else
|
|
|
|
|
old_lssproto_FM_send(sockfd, buf);
|
|
|
|
|
closeJoinChannelWN();
|
2020-06-23 15:53:23 +08:00
|
|
|
|
play_se(203, 320, 240); // ????????
|
2020-06-22 17:49:02 +08:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef _FMVER21
|
|
|
|
|
if (pc.familyleader == FMMEMBER_LEADER)
|
|
|
|
|
#else
|
|
|
|
|
if (pc.familyleader == 1)
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
if (pc.channel == 5)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
btnId[1] = StockFontBuffer(x + 22, y + 65 + 36 * 0, FONT_PRIO_FRONT, FONT_PAL_YELLOW, " 族长广播 ", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
btnId[1] = StockFontBuffer(x + 22, y + 65 + 36 * 0, FONT_PRIO_FRONT, FONT_PAL_WHITE, " 族长广播 ", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
btnId[2] = StockFontBuffer(x + 22, y + 65 + 36 * 1, FONT_PRIO_FRONT, FONT_PAL_WHITE, "家族成员管理", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
btnId[3] = StockFontBuffer(x + 22, y + 65 + 36 * 2, FONT_PRIO_FRONT, FONT_PAL_WHITE, " 家族邀请函 ", 2);
|
|
|
|
|
//btnId[4] = StockFontBuffer(x + 22, y + 65 + 36 * 3, FONT_PRIO_FRONT, FONT_PAL_WHITE, " 学习同意书 ", 2);
|
|
|
|
|
//btnId[5] = StockFontBuffer(x + 22, y + 65 + 36 * 4, FONT_PRIO_FRONT, FONT_PAL_WHITE, " 族长让位 ", 2);
|
|
|
|
|
btnId[5] = StockFontBuffer(x + 22, y + 65 + 36 * 3, FONT_PRIO_FRONT, FONT_PAL_WHITE, " 族长让位 ", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _ADD_FAMILY_TAX // WON ADD 增加庄园税收
|
|
|
|
|
btnId[6] = StockFontBuffer(x + 22, y + 65 + 36 * 5, FONT_PRIO_FRONT, FONT_PAL_WHITE, "调整庄园税率", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
// shan begin
|
|
|
|
|
#ifdef _FMVER21
|
|
|
|
|
if (pc.familyleader == FMMEMBER_ELDER)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
btnId[1] = StockFontBuffer(x + 22, y + 65 + 36 * 0, FONT_PRIO_FRONT, FONT_PAL_GRAY, " 族长广播 ", 0);
|
|
|
|
|
btnId[2] = StockFontBuffer(x + 22, y + 65 + 36 * 1, FONT_PRIO_FRONT, FONT_PAL_WHITE, "家族成员管理", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
btnId[3] = StockFontBuffer(x + 22, y + 65 + 36 * 2, FONT_PRIO_FRONT, FONT_PAL_WHITE, " 家族邀请函 ", 2);
|
|
|
|
|
btnId[4] = StockFontBuffer(x + 22, y + 65 + 36 * 3, FONT_PRIO_FRONT, FONT_PAL_WHITE, " 学习同意书 ", 2);
|
|
|
|
|
btnId[5] = StockFontBuffer(x + 22, y + 65 + 36 * 4, FONT_PRIO_FRONT, FONT_PAL_GRAY, " 族长让位 ", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _ADD_FAMILY_TAX // WON ADD 增加庄园税收
|
|
|
|
|
btnId[6] = StockFontBuffer(x + 22, y + 65 + 36 * 5, FONT_PRIO_FRONT, FONT_PAL_GRAY, " 调整庄园税率 ", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
// shan end
|
|
|
|
|
if (selId == 1)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "族长对全星系的族员广播。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (selId == 2)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "家族成员列表。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (selId == 3)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "制作家族参观邀请函。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (selId == 4)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "制作学习骑乘同意书。");
|
|
|
|
|
#ifdef _ADD_FAMILY_TAX // WON ADD 增加庄园税收
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (selId == 6)
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ShowBottomLineString(FONT_PAL_WHITE, "调整庄园内物品税收。");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _SURFACE_ANIM //ROG ADD 动态地上物显示
|
2020-06-22 17:49:02 +08:00
|
|
|
|
int ReadAniFile(int floor)
|
|
|
|
|
{
|
|
|
|
|
HANDLE hFile;
|
|
|
|
|
DWORD readbyte;
|
|
|
|
|
char fileName[32];
|
|
|
|
|
ani_num = 0;
|
|
|
|
|
int col = 0, row = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
breadAniFlag = TRUE; //读取档案旗标
|
2020-06-22 17:49:02 +08:00
|
|
|
|
sprintf_s(fileName, "map\\%d.ani", floor);
|
|
|
|
|
for (int i = 0; i < MAX_ANIM; i++)
|
|
|
|
|
{
|
|
|
|
|
ProduceXY[i][5] = -2 ;
|
|
|
|
|
ProduceXY[i][6] = -1 ;
|
|
|
|
|
}
|
|
|
|
|
hFile = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_EXISTING, NULL, NULL);
|
|
|
|
|
if (hFile == INVALID_HANDLE_VALUE)
|
|
|
|
|
return -1;
|
|
|
|
|
while (ReadFile(hFile, &ProduceXY[row], sizeof(int) * 5, &readbyte, NULL) && readbyte)
|
|
|
|
|
{
|
|
|
|
|
ProduceXY[row][5] = 0 ;
|
|
|
|
|
row++;
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
ani_num = row; //该地图总动画数
|
2020-06-22 17:49:02 +08:00
|
|
|
|
CloseHandle(hFile);
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
void SpecAnim(int floor)
|
|
|
|
|
{
|
|
|
|
|
int j = 0;
|
|
|
|
|
|
|
|
|
|
if (breadAniFlag && ProduceXY[0][5] == -2)
|
|
|
|
|
return;
|
|
|
|
|
else if (breadAniFlag == FALSE && ReadAniFile(floor) == -1)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < ani_num; i ++)
|
|
|
|
|
{
|
|
|
|
|
switch (SaTimeZoneNo)
|
|
|
|
|
{
|
|
|
|
|
case LS_NIGHT:
|
|
|
|
|
if (ProduceXY[i][3] == 1 && ProduceXY[i][5] == 1)
|
|
|
|
|
{
|
|
|
|
|
if (SPACT[ProduceXY[i][6]] != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(SPACT[ProduceXY[i][6]]);
|
|
|
|
|
SPACT[ProduceXY[i][6]] = NULL ;
|
|
|
|
|
ProduceXY[i][6] = -1 ;
|
|
|
|
|
}
|
|
|
|
|
ProduceXY[i][5] = -1;
|
|
|
|
|
}
|
|
|
|
|
else if (ProduceXY[i][3] == 2 && ProduceXY[i][5] == -1)
|
|
|
|
|
ProduceXY[i][5] = 0;
|
|
|
|
|
break;
|
|
|
|
|
case LS_MORNING:
|
|
|
|
|
case LS_NOON:
|
|
|
|
|
case LS_EVENING:
|
|
|
|
|
if (ProduceXY[i][3] == 2 && ProduceXY[i][5] == 1)
|
|
|
|
|
{
|
|
|
|
|
if (SPACT[ProduceXY[i][6]] != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(SPACT[ProduceXY[i][6]]);
|
|
|
|
|
SPACT[ProduceXY[i][6]] = NULL ;
|
|
|
|
|
ProduceXY[i][6] = -1 ;
|
|
|
|
|
}
|
|
|
|
|
ProduceXY[i][5] = -1;
|
|
|
|
|
}
|
|
|
|
|
else if(ProduceXY[i][3] == 1 && ProduceXY[i][5] == -1)
|
|
|
|
|
ProduceXY[i][5] = 0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ProduceXY[i][5] == 0)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < MAX_ANIM; j ++)
|
|
|
|
|
{
|
|
|
|
|
if (SPACT[j] == NULL)
|
|
|
|
|
{
|
|
|
|
|
float mx, my;
|
|
|
|
|
SPACT[j] = GetAction(DISP_PRIO_BOX3,sizeof(CHAREXTRA));
|
|
|
|
|
if (SPACT[j] == NULL)
|
|
|
|
|
break;
|
|
|
|
|
SPACT[j]->anim_chr_no = ProduceXY[i][0];
|
|
|
|
|
SPACT[j]->anim_no = ANIM_STAND;
|
|
|
|
|
SPACT[j]->anim_ang = 1;
|
|
|
|
|
SPACT[j]->dispPrio = ProduceXY[i][4];
|
|
|
|
|
SPACT[j]->atr |= ACT_ATR_HIT;
|
|
|
|
|
SPACT[j]->nextGx = ProduceXY[i][1];
|
|
|
|
|
SPACT[j]->nextGy = ProduceXY[i][2];
|
|
|
|
|
SPACT[j]->bufCount = 0;
|
|
|
|
|
SPACT[j]->gx = ProduceXY[i][1];
|
|
|
|
|
SPACT[j]->gy = ProduceXY[i][2];
|
|
|
|
|
SPACT[j]->mx = (float)ProduceXY[i][1] * GRID_SIZE;
|
|
|
|
|
SPACT[j]->my = (float)ProduceXY[i][2] * GRID_SIZE;
|
|
|
|
|
SPACT[j]->vx = 0;
|
|
|
|
|
SPACT[j]->vy = 0;
|
|
|
|
|
camMapToGamen(SPACT[j]->mx, SPACT[j]->my, &mx, &my);
|
|
|
|
|
SPACT[j]->x = (int)(mx+.5);
|
|
|
|
|
SPACT[j]->y = (int)(my+.5);
|
|
|
|
|
pattern(SPACT[j],ANM_NOMAL_SPD,ANM_LOOP);
|
|
|
|
|
ProduceXY[i][5] = 1;
|
|
|
|
|
ProduceXY[i][6] = j;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ReleaseSpecAnim ()
|
|
|
|
|
{
|
|
|
|
|
breadAniFlag = FALSE;
|
|
|
|
|
for (int i = 0; i < ani_num; i++)
|
|
|
|
|
{
|
|
|
|
|
if (ProduceXY[i][5] == 1)
|
|
|
|
|
{
|
|
|
|
|
if (SPACT[ProduceXY[i][6]] != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(SPACT[ProduceXY[i][6]]);
|
|
|
|
|
SPACT[ProduceXY[i][6]] = NULL ;
|
|
|
|
|
ProduceXY[i][6] = -1 ;
|
|
|
|
|
ProduceXY[i][5] = 0 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _SPECIALSPACEANIM // Syu ADD 特殊场景动画配置
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void SpecAnim (int floor)
|
|
|
|
|
{
|
|
|
|
|
int j = 0;
|
|
|
|
|
for (int i = 0; i < TOTAL_ANIM; i++)
|
|
|
|
|
{
|
|
|
|
|
if (floor == ProduceXY[i][2] && ProduceXY[i][4] == 0)
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < MAX_ANIM; j++)
|
|
|
|
|
{
|
|
|
|
|
if (SPACT[j] == NULL)
|
|
|
|
|
{
|
|
|
|
|
#ifdef _SPECIALSPACEANIM_FIX
|
|
|
|
|
SPACT[j] = createWaterAnimation(ProduceXY[i][3] , ProduceXY[i][0] , ProduceXY[i][1] , ProduceXY[i][6]);
|
|
|
|
|
#else
|
|
|
|
|
SPACT[j] = createWaterAnimation(ProduceXY[i][3] , ProduceXY[i][0] , ProduceXY[i][1] , 30);
|
|
|
|
|
#endif
|
|
|
|
|
ProduceXY[i][4] = 1;
|
|
|
|
|
ProduceXY[i][5] = j;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (floor != ProduceXY[i][2] && ProduceXY[i][4] == 1)
|
|
|
|
|
{
|
|
|
|
|
if (SPACT[ProduceXY[i][5]] != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(SPACT[ProduceXY[i][5]]);
|
|
|
|
|
SPACT[ProduceXY[i][5]] = NULL ;
|
|
|
|
|
ProduceXY[i][5] = -1 ;
|
|
|
|
|
ProduceXY[i][4] = 0 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ReleaseSpecAnim()
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < TOTAL_ANIM; i++)
|
|
|
|
|
{
|
|
|
|
|
if (ProduceXY[i][4] == 1)
|
|
|
|
|
{
|
|
|
|
|
if (SPACT[ProduceXY[i][5]] != NULL)
|
|
|
|
|
{
|
|
|
|
|
DeathAction(SPACT[ProduceXY[i][5]]);
|
|
|
|
|
SPACT[ProduceXY[i][5]] = NULL ;
|
|
|
|
|
ProduceXY[i][5] = -1 ;
|
|
|
|
|
ProduceXY[i][4] = 0 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-06-23 15:53:23 +08:00
|
|
|
|
#ifdef _CLOUD_EFFECT // (不可开) ROG ADD云层效果
|
2020-06-22 17:49:02 +08:00
|
|
|
|
void CloudDraw()
|
|
|
|
|
{
|
|
|
|
|
static DWORD SlowDraw;
|
|
|
|
|
static int dif, dif1;
|
|
|
|
|
DWORD now;
|
|
|
|
|
|
|
|
|
|
if ((now = TimeGetTime()) > SlowDraw)
|
|
|
|
|
{
|
|
|
|
|
SlowDraw = now + 10;
|
|
|
|
|
dif ++;
|
|
|
|
|
if (dif > 1000)
|
|
|
|
|
dif = 0;
|
|
|
|
|
dif1 += 2;
|
|
|
|
|
if (dif1 > 1000)
|
|
|
|
|
dif1 =0;
|
|
|
|
|
}
|
|
|
|
|
StockDispBuffer(0 + dif - 200, 0 + dif, 20, 40500, 1);
|
|
|
|
|
StockDispBuffer(0 + dif1 - 360, 20 + dif1, 20, 40501, 1);
|
|
|
|
|
StockDispBuffer(0 + dif - 50, 10 + dif - 480, 20, 40502, 1);
|
|
|
|
|
StockDispBuffer(0 + dif1 - 100, 50 + dif - 400, 20, 40503, 1);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef _TEACHER_SYSTEM
|
|
|
|
|
void TeacherSystemWndfunc(int flag, char *data)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
static int winX, winY, winW, winH, iOnline = 0, iGetNum = 0;
|
|
|
|
|
static int iFontId[7], iIndex[5];
|
|
|
|
|
static ACTION *pActTeacherSystemWnd = NULL;
|
|
|
|
|
static char szBuf[6][32];
|
|
|
|
|
static BOOL bOpen = FALSE;
|
|
|
|
|
char szMsg[128];
|
|
|
|
|
|
|
|
|
|
if (pActTeacherSystemWnd == NULL)
|
|
|
|
|
{
|
|
|
|
|
memset(iFontId, -1, sizeof(iFontId));
|
|
|
|
|
memset(iIndex, -1, sizeof(iIndex));
|
|
|
|
|
memset(szBuf, 0, sizeof(szBuf));
|
|
|
|
|
switch (flag)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 只有一个人
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 0:
|
|
|
|
|
winW = 5;
|
|
|
|
|
winH = 2;
|
|
|
|
|
// get name
|
2020-06-23 15:53:23 +08:00
|
|
|
|
getStringToken(data, '|', 2, sizeof(szBuf[0]) - 1, szBuf[0]); // 存导师的名字
|
|
|
|
|
getStringToken(data, '|', 3, sizeof(szBuf[6]) - 1, szBuf[6]); // 取出导师 index
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iIndex[0] = atoi(szBuf[6]);
|
|
|
|
|
break;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 一人以上在同一格
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 1:
|
|
|
|
|
winW = 5;
|
|
|
|
|
winH = 5;
|
|
|
|
|
getStringToken(data, '|', 2, sizeof(szBuf[6]) - 1, szBuf[6]);
|
|
|
|
|
iGetNum = atoi(szBuf[6]);
|
|
|
|
|
// get name
|
|
|
|
|
for (i = 0; i < iGetNum; i++)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
getStringToken(data, '|', 3 + i * 2, sizeof(szBuf[i]) - 1, szBuf[i]); // 存导师的名字
|
|
|
|
|
getStringToken(data, '|', 4 + i * 2, sizeof(szBuf[6]) - 1, szBuf[6]); // 取出导师 index
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iIndex[i] = atoi(szBuf[6]);
|
|
|
|
|
}
|
|
|
|
|
break;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示导师资料
|
2020-06-22 17:49:02 +08:00
|
|
|
|
case 2:
|
|
|
|
|
winW = 5;
|
|
|
|
|
winH = 3;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
getStringToken(data, '|', 2, sizeof(szBuf[0]) - 1, szBuf[0]); // 存导师的名字
|
|
|
|
|
getStringToken(data, '|', 3, sizeof(szBuf[6]) - 1, szBuf[6]); // 取出在不在线状态
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iOnline = atoi(szBuf[6]);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
getStringToken(data, '|', 4, sizeof(szBuf[1]) - 1, szBuf[1]); // 存星系 ip
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
winW = 5;
|
|
|
|
|
winH = 2;
|
|
|
|
|
break;
|
|
|
|
|
#ifdef _TEACHER_SYSTEM_2
|
|
|
|
|
case 4:
|
|
|
|
|
winW = 5;
|
|
|
|
|
winH = 3;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
getStringToken(data, '|', 2, sizeof(szBuf[0]) - 1, szBuf[0]); // 存学生的名字
|
|
|
|
|
getStringToken(data, '|', 3, sizeof(szBuf[6]) - 1, szBuf[6]); // 取出在不在线状态
|
2020-06-22 17:49:02 +08:00
|
|
|
|
iOnline = atoi(szBuf[6]);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
getStringToken(data, '|', 4, sizeof(szBuf[1]) - 1, szBuf[1]); // 存星系 ip
|
2020-06-22 17:49:02 +08:00
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
winW = 5;
|
|
|
|
|
winH = 2;
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
iOldGX = nowGx;
|
|
|
|
|
iOldGY = nowGy;
|
|
|
|
|
winX = (lpDraw->xSize - winW * 64) / 2;
|
|
|
|
|
winY = (lpDraw->ySize - winH * 48) / 2;
|
|
|
|
|
pActTeacherSystemWnd = MakeWindowDisp(winX, winY, winW, winH, NULL, 1);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// close window
|
|
|
|
|
if (CheckMenuFlag() || (joy_trg[0] & JOY_ESC) || actBtn == 1 || menuBtn == 1 ||
|
|
|
|
|
disconnectServerFlag == TRUE || (iOldGX != nowGx || iOldGY != nowGy))
|
|
|
|
|
{
|
|
|
|
|
DeathAction(pActTeacherSystemWnd);
|
|
|
|
|
pActTeacherSystemWnd = NULL;
|
|
|
|
|
sTeacherSystemBtn = 0;
|
|
|
|
|
bOpen = FALSE;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (pActTeacherSystemWnd->hp >= 1)
|
|
|
|
|
{
|
|
|
|
|
if (!bOpen)
|
|
|
|
|
bOpen = TRUE;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 只有一个人询问是否要对方当你的导师
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (flag == 0)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "你是否将认定 %s", szBuf[0]);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(winX + 20, winY + 20, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(winX + 20, winY + 36, FONT_PRIO_FRONT, FONT_PAL_WHITE, "成为你的导师?", 0);
|
|
|
|
|
iFontId[0] = StockFontBuffer(winX + 64, winY + winH * 30, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "确 定", 2);
|
|
|
|
|
iFontId[1] = StockFontBuffer(winX + (winW + 1) * 32, winY + winH * 30, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "取 消", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < 2; i++)
|
|
|
|
|
{
|
|
|
|
|
if (HitFontNo == iFontId[i])
|
|
|
|
|
{
|
|
|
|
|
play_se(217, 320, 240);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 确定
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (i == 0)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(szMsg, "O|%d", iIndex[0]);
|
|
|
|
|
lssproto_TEACHER_SYSTEM_send(sockfd, szMsg);
|
|
|
|
|
}
|
|
|
|
|
DeathAction(pActTeacherSystemWnd);
|
|
|
|
|
pActTeacherSystemWnd = NULL;
|
|
|
|
|
sTeacherSystemBtn = 0;
|
|
|
|
|
bOpen = FALSE;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 一人以上在同一格询问是否要对方当你的导师
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (flag == 1)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "选谁作为你的导师呢?");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(winX + 20, winY + 20, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
iFontId[0] = StockFontBuffer(winX + winW / 2 * 64, winY + (winH - 1)* 48, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "取 消", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
for (i = 0; i < iGetNum; i++)
|
|
|
|
|
iFontId[i+1] = StockFontBuffer(winX + 20, winY + 46 + i * 24, FONT_PRIO_FRONT, FONT_PAL_WHITE, szBuf[i], 2);
|
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < 7; i++)
|
|
|
|
|
{
|
|
|
|
|
if (HitFontNo == iFontId[i])
|
|
|
|
|
{
|
|
|
|
|
play_se(217,320,240);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 选好了导师
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (i != 0)
|
|
|
|
|
{
|
|
|
|
|
sprintf_s(szMsg, "O|%d", iIndex[i-1]);
|
|
|
|
|
lssproto_TEACHER_SYSTEM_send(sockfd, szMsg);
|
|
|
|
|
}
|
|
|
|
|
DeathAction(pActTeacherSystemWnd);
|
|
|
|
|
pActTeacherSystemWnd = NULL;
|
|
|
|
|
sTeacherSystemBtn = 0;
|
|
|
|
|
bOpen = FALSE;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示导师资料
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (flag == 2)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "导师状态");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(winX + 130, winY + 20, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "导师姓名:%s", szBuf[0]);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(winX + 20, winY + 36, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(winX + 20, winY + 52, FONT_PRIO_FRONT, FONT_PAL_WHITE, "状态:", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(winX + 66, winY + 52, FONT_PRIO_FRONT,
|
|
|
|
|
iOnline == 1 ? FONT_PAL_YELLOW : FONT_PAL_RED, iOnline == 1 ? "Online" : "Offline", 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(winX + 148, winY + 52, FONT_PRIO_FRONT, FONT_PAL_WHITE, "星系:", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (iOnline == 1)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < MAX_GMSV; i++)
|
|
|
|
|
{
|
|
|
|
|
if (gmsv[i].used == '1')
|
|
|
|
|
{
|
|
|
|
|
if (strcmp(szBuf[1], gmsv[i].ipaddr) == 0)
|
|
|
|
|
{
|
|
|
|
|
StockFontBuffer(winX + 190, winY + 52, FONT_PRIO_FRONT, FONT_PAL_GREEN, gmsv[i].name, 0);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(winX + 190, winY + 52, FONT_PRIO_FRONT, FONT_PAL_WHITE, "无", 0);
|
|
|
|
|
iFontId[0] = StockFontBuffer(winX + 64, winY + winH * 30, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "关 闭", 2);
|
|
|
|
|
iFontId[1] = StockFontBuffer(winX + (winW + 1) * 32, winY + winH * 30, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "取消导师资格", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < 2; i++)
|
|
|
|
|
{
|
|
|
|
|
if (HitFontNo == iFontId[i])
|
|
|
|
|
{
|
|
|
|
|
play_se(217,320,240);
|
|
|
|
|
sTeacherSystemBtn = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 取消导师资格
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (i != 0)
|
|
|
|
|
sTeacherSystemBtn = 5;
|
|
|
|
|
DeathAction(pActTeacherSystemWnd);
|
|
|
|
|
pActTeacherSystemWnd = NULL;
|
|
|
|
|
bOpen = FALSE;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 确认是否真的要取消导师
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (flag == 3)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(winX + 20, winY + 20, FONT_PRIO_FRONT, FONT_PAL_WHITE, "取消导师将会减少你的魅力值,", 0);
|
|
|
|
|
StockFontBuffer(winX + 20, winY + 40, FONT_PRIO_FRONT, FONT_PAL_WHITE, "你确定要取消导师?", 0);
|
|
|
|
|
iFontId[0] = StockFontBuffer(winX + 64, winY + winH * 30, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "确 定", 2);
|
|
|
|
|
iFontId[1] = StockFontBuffer(winX + (winW + 1) * 32, winY + winH * 30, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "取 消", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < 2; i++)
|
|
|
|
|
{
|
|
|
|
|
if (HitFontNo == iFontId[i])
|
|
|
|
|
{
|
|
|
|
|
play_se(217,320,240);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 取消导师资格
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (i == 0)
|
|
|
|
|
lssproto_TEACHER_SYSTEM_send(sockfd, "C|");
|
|
|
|
|
DeathAction(pActTeacherSystemWnd);
|
|
|
|
|
pActTeacherSystemWnd = NULL;
|
|
|
|
|
sTeacherSystemBtn = 0;
|
|
|
|
|
bOpen = FALSE;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#ifdef _TEACHER_SYSTEM_2
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 显示学生资料
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (flag == 4)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "学生状态");
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(winX + 130, winY + 20, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
sprintf_s(szMsg, "学生姓名:%s", szBuf[0]);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(winX + 20, winY + 36, FONT_PRIO_FRONT, FONT_PAL_WHITE, szMsg, 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(winX + 20, winY + 52, FONT_PRIO_FRONT, FONT_PAL_WHITE, "状态:", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
StockFontBuffer(winX + 66, winY + 52, FONT_PRIO_FRONT,
|
|
|
|
|
iOnline == 1 ? FONT_PAL_YELLOW : FONT_PAL_RED, iOnline == 1 ? "Online" : "Offline", 0);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(winX + 148, winY + 52, FONT_PRIO_FRONT, FONT_PAL_WHITE, "星系:", 0);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (iOnline == 1)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < MAX_GMSV; i++)
|
|
|
|
|
{
|
|
|
|
|
if (gmsv[i].used == '1')
|
|
|
|
|
{
|
|
|
|
|
if (strcmp(szBuf[1], gmsv[i].ipaddr) == 0)
|
|
|
|
|
{
|
|
|
|
|
StockFontBuffer(winX + 190, winY + 52, FONT_PRIO_FRONT, FONT_PAL_GREEN, gmsv[i].name, 0);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(winX + 190, winY + 52, FONT_PRIO_FRONT, FONT_PAL_WHITE, "无", 0);
|
|
|
|
|
iFontId[0] = StockFontBuffer(winX + 64, winY + winH * 30, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "关 闭", 2);
|
|
|
|
|
iFontId[1] = StockFontBuffer(winX + (winW + 1) * 32, winY + winH * 30, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "取消学生资格", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < 2; i++)
|
|
|
|
|
{
|
|
|
|
|
if (HitFontNo == iFontId[i])
|
|
|
|
|
{
|
|
|
|
|
play_se(217,320,240);
|
|
|
|
|
sTeacherSystemBtn = 0;
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 取消学生资格
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (i != 0)
|
|
|
|
|
sTeacherSystemBtn = 7;
|
|
|
|
|
DeathAction(pActTeacherSystemWnd);
|
|
|
|
|
pActTeacherSystemWnd = NULL;
|
|
|
|
|
bOpen = FALSE;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 确认是否真的要取消学生
|
2020-06-22 17:49:02 +08:00
|
|
|
|
else if (flag == 5)
|
|
|
|
|
{
|
2020-06-23 15:53:23 +08:00
|
|
|
|
StockFontBuffer(winX + 20, winY + 20, FONT_PRIO_FRONT, FONT_PAL_WHITE, "你确定要取消学生?", 0);
|
|
|
|
|
iFontId[0] = StockFontBuffer(winX + 64, winY + winH * 30, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "确 定", 2);
|
|
|
|
|
iFontId[1] = StockFontBuffer(winX + (winW + 1) * 32, winY + winH * 30, FONT_PRIO_FRONT, FONT_PAL_YELLOW, "取 消", 2);
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (mouse.onceState & MOUSE_LEFT_CRICK)
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < 2; i++)
|
|
|
|
|
{
|
|
|
|
|
if (HitFontNo == iFontId[i])
|
|
|
|
|
{
|
|
|
|
|
play_se(217,320,240);
|
2020-06-23 15:53:23 +08:00
|
|
|
|
// 取消学生资格
|
2020-06-22 17:49:02 +08:00
|
|
|
|
if (i == 0)
|
|
|
|
|
lssproto_TEACHER_SYSTEM_send(sockfd, "D|");
|
|
|
|
|
DeathAction(pActTeacherSystemWnd);
|
|
|
|
|
pActTeacherSystemWnd = NULL;
|
|
|
|
|
sTeacherSystemBtn = 0;
|
|
|
|
|
bOpen = FALSE;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (bOpen)
|
|
|
|
|
{
|
|
|
|
|
bOpen = FALSE;
|
|
|
|
|
DeathAction(pActTeacherSystemWnd);
|
|
|
|
|
pActTeacherSystemWnd = NULL;
|
|
|
|
|
sTeacherSystemBtn = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|