chuyiwen_gmsv/include/npc_scheduleman.h
2017-01-14 00:37:03 +09:00

83 lines
2.9 KiB
C

#ifndef __NPC_SCHEDULEMAN_H__
#define __NPC_SCHEDULEMAN_H__
#define CHARNAME_MAX 32
// 最大 scheduleman 数量
#ifdef _FAMILY_MANORNUM_CHANGE
#define MAX_SCHEDULEMAN 20
#else
#define MAX_SCHEDULEMAN 12
#endif
// 每一个 scheduleman 控管的 schedule 数量
#define MAX_SCHEDULE 24
// schedule 列表的一页所能列出的最大数量
#define MAXSCHEDULEINONEWINDOW 10
// family 列表的一页所能列出的最大数量
#define MAXFAMILYINONEWINDOW 10
// 每一个 scheduleman 所使用的 schedule 储存位置
// 对应在 fmpks 的 ID*MAX_SCHEDULE 上 (ID=0~MAX_SCHEDULEMAN-1)
// ID 是写在 data/npc 中指定给 "id:" 的值
// dueltime = (隔天?10000:0) + (小时*100)
typedef struct tagFamilyPKSchedule {
int dueltime; // 比赛时刻
int host_index; // 主队家族
char host_name[CHARNAME_MAX]; // 主队家族名称
int guest_index; // 客队家族
char guest_name[CHARNAME_MAX]; // 客队家族名称
int prepare_time; // 准备时间 (1~40 分钟)
int max_player; // 最大出场人数 (1~家族人数上限)
int flag; // 状态
int win; // 胜利条件设定
int challenge_timeout; // 挑战时限
int setting_timeout; // 设定状态的 timeout
char gmsv_name[256];
} FamilyPKSchedule;
// 纪录在 FamilyPKSchedule (fmpks) 的 flag 值
#define FMPKS_FLAG_NONE -1 // 没有任何排程
#define FMPKS_FLAG_CHALLENGE 0 // 等待客队同意中
#define FMPKS_FLAG_SETTING 1 // 主队正在设定排程 (取消时变成 NONE)
#define FMPKS_FLAG_CONFIRMING 2 // 客队正在同意中
#define FMPKS_FLAG_SCHEDULED 3 // 已经排好排程,尚未开打
#define FMPKS_FLAG_DUEL 4 // 开打中
#define FMPKS_FLAG_HOSTWIN 5 // 主队胜
#define FMPKS_FLAG_GUESTWIN 6 // 客队胜
#define FMPKS_FLAG_MANOR_BATTLEBEGIN 7 // 庄园挑战 战斗中
#define FMPKS_FLAG_MANOR_PREPARE 8 // 庄园挑战 准备中
#define FMPKS_FLAG_MANOR_PEACE 9 // 庄园挑战 休战中
#define FMPKS_FLAG_MANOR_OTHERPLANET 10 // 庄园挑战 在别的星球决战
#define FMPKS_FLAG_MANOR_BATTLEEND 11 // 庄园挑战 战斗结束
#define FMPKS_FLAG_MANOR_PEACE_SAVE 12 // 将庄园挑战存档
#define FMPKS_FLAG_MANOR_READYTOFIGHT 13 // (GM: manorpk) 全星系变成可约战状态
#define FMPKS_FLAG_MANOR_CLEANFLAG 14 // (GM: manorpk) 本星球清除状态
#ifdef _NEW_MANOR_LAW
#define FMPKS_FLAG_WAIT 15 // 进入挑战期,已记录家族气势,等待挑战排程
#endif
// 传给 client 的 flag
#define FLAG_NONE -1
#define FLAG_MODIFY 0
#define FLAG_ACCEPT 1
#define FLAG_SETTING 2
#define FLAG_CONFIRM 3
#define FLAG_SCHEDULED 4
extern FamilyPKSchedule fmpks[MAX_SCHEDULE*MAX_SCHEDULEMAN];
BOOL NPC_SchedulemanInit(int meindex);
void NPC_SchedulemanTalked(int meindex, int talkerindex, char *msg, int color);
void NPC_SchedulemanWindowTalked(int meindex, int talkerindex,
int seqno, int select, char *data);
void NPC_SchedulemanLoop(int meindex);
#endif
/*__NPC_SCHEDULEMAN_H__*/