?? npc_fmwarpman.c
字號:
}
void NPC_FMWarpManWindowTalked( int meindex, int talkerindex,
int seqno, int select, char *data)
{
char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
char buf[1024], buff2[256], tmpbuf[256];
int fl, x, y, fmpks_pos, fd;
if( !CHAR_CHECKINDEX( talkerindex) )return;
fd = getfdFromCharaIndex(talkerindex);
if (fd == -1) return;
if( NPC_Util_CharDistance( talkerindex, meindex ) > 2) {
return;
}
if(select==WINDOW_BUTTONTYPE_OK){
return;
}
if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
print("GetArgStrErr");
return ;
}
// shan add
fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID) * MAX_SCHEDULE;
if (CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].host_index){
if( NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP1", buf, sizeof( buf)) == NULL ){
print("FM WARPMAN Can't Read WARP1!\n");
return;
}
}else if (CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].guest_index){
if( NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP2", buf, sizeof( buf)) == NULL ){
print("FM WARPMAN Can't Read WARP2!\n");
return;
}
}else{
CHAR_talkToCli( talkerindex, meindex, "你并非對戰雙方所屬任一家族成員!", CHAR_COLORYELLOW);
return;
}
getStringFromIndexWithDelim(buf,",",1,buff2,sizeof(buff2));
fl=atoi(buff2);
getStringFromIndexWithDelim(buf,",",2,buff2,sizeof(buff2));
x=atoi(buff2);
getStringFromIndexWithDelim(buf,",",3,buff2,sizeof(buff2));
y=atoi(buff2);
switch (seqno){
case CHAR_WINDOWTYPE_WINDOWWARPMAN_MAIN:
if(select==WINDOW_BUTTONTYPE_YES){
if( CHAR_getWorkInt( talkerindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return;
if(CHAR_getWorkInt(talkerindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE){
CHAR_talkToCli( talkerindex, meindex, "請解散團隊!", CHAR_COLORYELLOW);
return;
}
if(CHAR_getWorkInt( talkerindex , CHAR_WORKSHOPRELEVANTTRD) <= 0){
if( CHAR_getWorkInt( talkerindex, CHAR_WORKWARPCHECK ) == TRUE ) {
if (CHAR_getWorkInt(meindex, NPC_WORK_MODEFLAG) == NPC_STATEFREE){
if (CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].host_index){
int tmpnum1 = CHAR_getWorkInt(meindex, NPC_WORK_FMNUMI) + 1;
CHAR_setWorkInt(meindex, NPC_WORK_FMNUMI, tmpnum1);
}else if (CHAR_getWorkInt(talkerindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].guest_index){
int tmpnum2 = CHAR_getWorkInt(meindex, NPC_WORK_FMNUMII) + 1;
CHAR_setWorkInt(meindex, NPC_WORK_FMNUMII, tmpnum2);
}else{
CHAR_talkToCli( talkerindex, meindex, "你并非對戰雙方所屬任一家族成員!", CHAR_COLORYELLOW);
}
CHAR_setWorkInt(talkerindex, CHAR_WORKFMPKFLAG, 1);
CHAR_setWorkInt(talkerindex, CHAR_WORKFMMANINDEX, meindex);
CHAR_setWorkInt( talkerindex, CHAR_WORKWARPCHECK, FALSE );
CHAR_warpToSpecificPoint(talkerindex, fl, x,y);
/* {
FILE *fp;
struct tm tm1;
char szFileName[128];
memcpy(&tm1, localtime((time_t *)&NowTime.tv_sec), sizeof(tm1));
memset(szFileName,0,sizeof(szFileName));
sprintf(szFileName,"FMPkWarp.%d%d%d.log",tm1.tm_mon,tm1.tm_hour,tm1.tm_min);
fp = fopen(szFileName,"a+");
if(fp != NULL){
fprintf(fp,"FMName:%s\tName:%s\tWarpHost:%d\tWarpGuest:%d\tFloor:%d,%d,%d\tMaxPlayer:%d\n",
CHAR_getChar(talkerindex,CHAR_FMNAME),CHAR_getChar(talkerindex,CHAR_NAME),
CHAR_getWorkInt(meindex,NPC_WORK_FMNUMI),
CHAR_getWorkInt(meindex,NPC_WORK_FMNUMII),
fl,x,y,
fmpks[fmpks_pos].max_player);
fclose(fp);
}
else printf("%s(errno:%x)\n",sys_errlist[errno],errno);
}
*/
}
else return;
{
struct tm tm1;
int clock = 0;
int fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID) * MAX_SCHEDULE;
memcpy(&tm1, localtime((time_t *)&NowTime.tv_sec), sizeof(tm1));
clock = ((fmpks[fmpks_pos].dueltime % 100) + fmpks[fmpks_pos].prepare_time) - tm1.tm_min;
if (clock >= 60) clock = clock - 60;
sprintf(tmpbuf, "\n請等候雙方準備完畢後再開戰!"
"\n戰斗時請不要隨意登出或離開。"
"\n贏得勝利的家族也請先稍後一下,"
"\n等待裁判的宣布後再離場!"
"\n謝謝您的合作!"
"\n距離對戰時間還剩下:%4d分鐘",
clock);
lssproto_WN_send(fd,
WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK,
-1, -1,
makeEscapeString(tmpbuf, buff2, sizeof(buff2)));
}
}
}
else{
if(CHAR_getInt(talkerindex,CHAR_GOLD) < CHAR_getWorkInt(talkerindex,CHAR_WORKSHOPRELEVANTTRD)){
NPC_ERR_FMDiSP( meindex, talkerindex, 2);
return ;
}
CHAR_DelGold( talkerindex, CHAR_getWorkInt(talkerindex,CHAR_WORKSHOPRELEVANTTRD ));
CHAR_setWorkInt( talkerindex, CHAR_WORKWARPCHECK, FALSE );
CHAR_warpToSpecificPoint(talkerindex, fl, x,y);
}
}
break;
}
}
void NPC_ERR_FMDiSP(int meindex,int talker,int errNO)
{
char token[1024];
int i=0;
int otherindex;
int fd = getfdFromCharaIndex( talker);
char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
print("GetArgStrErr");
return ;
}
if(errNO==1){
/*--由□ 奴□匹 仄井仃兇--*/
if(NPC_Util_GetStrFromStrWithDelim( npcarg, "PartyMsg",token, sizeof( token))==NULL) {
/*--澀爛今木化卅仃木壬}票及丟永本□斥毛銀丹--*/
sprintf(token, "\n\n無法加入團隊,請先解散團隊!");
}
if(CHAR_getWorkInt(talker,CHAR_WORKPARTYMODE)==CHAR_PARTY_CLIENT){
}else{
/*--伉□母□互 仄井仃兇樺寧及心--*/
/*--由□ 奴□蟈夠卞丟永本□斥毛請允--*/
for( i=0 ; i < CHAR_PARTYMAX ;i++)
{
otherindex=CHAR_getWorkInt(talker,CHAR_WORKPARTYINDEX1+i);
if(otherindex != -1){
fd = getfdFromCharaIndex( otherindex);
/*-仇仇匹霜耨允月--*/
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK,
CHAR_WINDOWTYPE_WINDOWWARPMAN_ERR,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
}
}
return ;
}
}else if (errNO==2){
/*--嗯互兇曰卅中匹允[--*/
if(NPC_Util_GetStrFromStrWithDelim( npcarg, "MoneyMsg", token, sizeof( token))==NULL){
/*--云嗯互簫曰卅中及卞}澀爛今木化卅井勻兇日}票及丟永本□斥毛 歹曰卞請允--*/
sprintf(token,"\n\n金錢似乎不足唷,請存好錢後再過來。");
}
}
/*-仇仇匹霜耨允月--*/
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK,
CHAR_WINDOWTYPE_WINDOWWARPMAN_ERR,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
}
static void NPC_FMWarpMan_selectWindow( int meindex, int toindex, int num,int select)
{
struct tm tm1;
char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
char token[1024];
char buf[256];
char buf2[1024];
char buf3[256];
int fl = 0, num1 = 0, num2 = 0;
int fmpks_pos = CHAR_getWorkInt(meindex, NPC_WORK_ID) * MAX_SCHEDULE;
int floor = CHAR_getWorkInt(meindex, NPC_WORK_WARPFLOOR);
int fd = getfdFromCharaIndex( toindex);
if( fd == -1 ) {
fprint( "getfd err\n");
return;
}
if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
print("GetArgStrErr");
return ;
}
/*--澀爛白央奶伙及 卞白夫失諦醒互隙爛今木化中月井今木化中木壬白夫失諦醒及喃曰請仄*/
if(strstr(npcarg,"%4d")!=NULL){
NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP1", buf, sizeof( buf));
getStringFromIndexWithDelim(buf,",",1,buf3,sizeof(buf3));
fl = NPC_FMFloorUse(atoi(buf3));
}
CHAR_setWorkInt(toindex, CHAR_WORKWARPCHECK, TRUE);
CHAR_setWorkInt(toindex, NPC_WORK_WARPFLOOR, fl);
memcpy(&tm1, localtime((time_t *)&NowTime.tv_sec), sizeof(tm1));
if (CHAR_getWorkInt(meindex, NPC_WORK_MODEFLAG) == NPC_STATEFREE)
{
if (((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].host_index)
&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos].host_name) == 0))
|| ((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].guest_index)
&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos].guest_name) == 0)))
{
if ((fmpks[fmpks_pos].host_index != -1)
&& (CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].host_index))
{
// WON ADD 修正家族pk場的約戰問題
if(fmpks[fmpks_pos].flag == -1) return;
if (fmpks[fmpks_pos].flag != FMPKS_FLAG_SCHEDULED)
{
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK, -1, -1,
makeEscapeString("\n這場戰斗對方好像還沒同意呢!\n下次請記得先邀約對方後再來登記吧~", token, sizeof(token)));
return;
}
#ifdef _FMVER21
if (CHAR_getInt(toindex, CHAR_FMLEADERFLAG) == FMMEMBER_APPLY)
#else
if (CHAR_getInt(toindex, CHAR_FMLEADERFLAG) == 0)
#endif
{
char tmpbuf[256];
sprintf(tmpbuf, "\n你還沒有正式加入%s家族,所以不能進場!", fmpks[fmpks_pos].host_name);
lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK, -1, -1,
makeEscapeString(tmpbuf, token, sizeof(token)));
return;
}
//andy_add 2003/06/17
CHECK_FMPknumInFloor( meindex);
if (CHAR_getWorkInt(meindex, NPC_WORK_FMNUMI) > (fmpks[fmpks_pos].max_player - 1)){
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString("\n已經不能再進去羅~!\n家族進場人數已經到達設定上限了!", token, sizeof(token)));
return;
}
}
else if ((fmpks[fmpks_pos].guest_index != -1)
&& (CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos].guest_index))
{
// WON ADD 修正家族pk場的約戰問題
if(fmpks[fmpks_pos].flag == -1) return;
if (fmpks[fmpks_pos].flag != FMPKS_FLAG_SCHEDULED)
{
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK, -1, -1,
makeEscapeString("\n這場戰斗你好像還沒同意呢!\n下次請記得提早來跟我確認~", token, sizeof(token)));
return;
}
#ifdef _FMVER21
if (CHAR_getInt(toindex, CHAR_FMLEADERFLAG) == FMMEMBER_APPLY)
#else
if (CHAR_getInt(toindex, CHAR_FMLEADERFLAG) == 0)
#endif
{
char tmpbuf[256];
sprintf(tmpbuf, "\n你還沒有正式加入%s家族,所以不能進場!", fmpks[fmpks_pos].guest_name);
lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK, -1, -1,
makeEscapeString(tmpbuf, token, sizeof(token)));
return;
}
//andy_add 2003/06/17
CHECK_FMPknumInFloor( meindex);
if( CHAR_getWorkInt( meindex, NPC_WORK_FMNUMII) > (fmpks[fmpks_pos].max_player - 1)){
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK, -1, -1,
makeEscapeString("已經不能再進去羅~!\n家族進場人數已經到達設定上限了!", token, sizeof(token)));
return;
}
}
if(NPC_Util_GetStrFromStrWithDelim( npcarg, "FreeMsg", buf2, sizeof( buf2)) == NULL) return;
CONNECT_set_pass(fd, TRUE);
CONNECT_set_first_warp(fd, TRUE);
sprintf(token, buf2, fmpks[fmpks_pos].guest_name, fmpks[fmpks_pos].host_name,
tm1.tm_hour, tm1.tm_min);
CHAR_setWorkInt( toindex , CHAR_WORKFMMANINDEX, meindex );
CHAR_setWorkInt( toindex , CHAR_WORKSHOPRELEVANTTRD , -1 );
} else if ((((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos + 1].host_index)
&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos + 1].host_name) == 0))
|| ((CHAR_getWorkInt(toindex, CHAR_WORKFMINDEXI) == fmpks[fmpks_pos + 1].guest_index)
&& (strcmp(CHAR_getChar(toindex, CHAR_FMNAME), fmpks[fmpks_pos + 1].guest_name) == 0)))
&& (((fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_SCHEDULED)
|| (fmpks[fmpks_pos + 1].flag == FMPKS_FLAG_MANOR_PREPARE)))
)
{
if(NPC_Util_GetStrFromStrWithDelim( npcarg, "NextMsg", buf2, sizeof( buf2)) == NULL) return;
sprintf(token, buf2, fl, tm1.tm_hour, tm1.tm_min);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -