void NPC_DoormanTalked( int meindex , int talkerindex , char *msg , int color ) { char mode[128]; char opt[256]; char arg1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *arg; /* ¥×¥ì¥¤¥ä¡¼¤¬¥É¥¢¥Þ¥ó¤Î1¥°¥ê¥Ã¥É°Ê ¤Ê¤é¤Ï¤ó¤Î¤¦ */ if(NPC_Util_CharDistance( talkerindex, meindex ) > 1)return; arg = NPC_Util_GetArgStr( meindex, arg1, sizeof( arg1)); if( !getStringFromIndexWithDelim( arg, "|", 1, mode, sizeof( mode ))) return; if( !getStringFromIndexWithDelim( arg, "|", 2, opt, sizeof( opt ) )) return; if( strcmp( mode , "gold" ) == 0 ){ int g = atoi( opt ); int yn = NPC_Util_YN( msg ); /*char *nm = CHAR_getChar( meindex , CHAR_NAME );*/ char msg[256]; if( g > 0 && yn < 0 ){ snprintf( msg ,sizeof( msg ) , "¥´¶}ªù»Ýnµ¹§Ú%dªºª÷¤l³o¼Ë¥i¥H¶Ü¡H", g ); CHAR_talkToCli( talkerindex, meindex , msg, CHAR_COLORWHITE ); } else if( g > 0 && yn == 0 ){ snprintf( msg , sizeof( msg ), "¥´¶}ªù %dªºª÷¤l¬O¥²nªº¡C", g ); } else if( g > 0 && yn == 1 ){ int now_g = CHAR_getInt( talkerindex, CHAR_GOLD ); if( now_g < g ){ snprintf( msg , sizeof( msg ) , "¥´¶}ªù %dªºª÷¤l¬O¥²nªº¡C", g ); CHAR_talkToCli( talkerindex, meindex , msg, CHAR_COLORWHITE ); } else { snprintf( msg , sizeof( msg ), "%d ¦¬¨ìª÷¤l¤F¡C²{¦b´N¨Ó¶}ªù¡C", g ); CHAR_talkToCli( talkerindex, meindex , msg, CHAR_COLORWHITE ); /* ¶³¶â¤ò¥²¥Ã¥È */ now_g -= g; CHAR_setInt( talkerindex , CHAR_GOLD , now_g ); /* ¤¢¤¿¤é¤·¤¤¥¹ ¡¼¥¿¥¹¤òÁ÷¿® */ CHAR_send_P_StatusString(talkerindex, CHAR_P_STRING_GOLD); /* ¥É¥¢¤Ò¤é¤¯ */ NPC_DoormanOpenDoor( CHAR_getWorkChar( meindex, CHAR_WORKDOORMANDOORNAME)); } } } else if( strcmp( mode , "item" ) == 0 ){ CHAR_talkToCli( talkerindex, meindex , "©|¦b¥¼¤ä´©¼Ò¦¡¡C", CHAR_COLORWHITE); } else if( strcmp( mode , "itemhave" ) == 0 ){ CHAR_talkToCli( talkerindex, meindex , "©|¦b¥¼¤ä´©¼Ò¦¡¡C", CHAR_COLORWHITE); } else if( strcmp( mode , "itemnothave" ) == 0 ){ CHAR_talkToCli( talkerindex, meindex , "©|¦b¥¼¤ä´©¼Ò¦¡¡C", CHAR_COLORWHITE); } else if( strcmp( mode , "titlehave" ) == 0 ){ CHAR_talkToCli( talkerindex, meindex , "©|¦b¥¼¤ä´©¼Ò¦¡¡C", CHAR_COLORWHITE); } else if( strcmp( mode , "roomlimit" ) == 0 ){ /* ²°¤Î¿Í¿ôÀ©¸Â¤¬¤¢¤ë¾ì¹ç */ char szOk[256], szNg[256], szBuf[32]; int checkfloor; int maxnum, i, iNum; if( !getStringFromIndexWithDelim( arg, "|", 2, szBuf, sizeof( szBuf ) )) return; /* Ä´¤Ù¤ë¥Õ¤Ò¥¢¤È ¿Í¿ô */ if( sscanf( szBuf, "%d:%d", &checkfloor, &maxnum ) != 2 ){ return; } for( iNum = 0,i = 0; i < getFdnum(); i ++ ){ /* ¥×¥ì¥¤¥ä¡¼°Ê³°¤Ë¤Ï¶½ ¤¬ ¤¤ */ if( CHAR_getCharUse( i ) == FALSE )continue; if( CHAR_getInt( i, CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER )continue; /* »ØÄê¤Î¥Õ¤Ò¥¢°Ê³°¤Ë¶½ ¤¬ ¤¤ */ if( CHAR_getInt( i, CHAR_FLOOR ) != checkfloor )continue; iNum++; } if( !getStringFromIndexWithDelim( arg, "|", 5, szNg, sizeof( szNg ))){ strcpy( szNg, "¡C¡C¡C¡C" ); /* »ñ³Ê¤Ê¤·¤Î¥»¥ê¥Õ */ } if( !getStringFromIndexWithDelim( arg, "|", 4, szOk, sizeof( szOk ))){ strcpy( szOk, "¶}ªù§a¡C¡C¡C" ); /* »ñ³Ê¤¢¤ê¤Î¥»¥ê¥Õ */ } if( iNum >= maxnum ){ /* ¤òĶ¤¨¤Æ¤¤¤ë¾ì¹ç */ CHAR_talkToCli( talkerindex, meindex ,szNg, CHAR_COLORWHITE); }else{ /* ¤Ë ¤¿¤Ê¤¤¾ì¹ç */ CHAR_talkToCli( talkerindex, meindex ,szOk, CHAR_COLORWHITE); NPC_DoormanOpenDoor( CHAR_getWorkChar( meindex, CHAR_WORKDOORMANDOORNAME)); } } else if( strcmp( mode , "titlenothave" ) == 0 ){ CHAR_talkToCli( talkerindex, meindex , "©|¦b¥¼¤ä´©¼Ò¦¡¡C", CHAR_COLORWHITE); } }
void NPC_DoormanTalked( int meindex , int talkerindex , char *msg , int color ) { char mode[128]; char opt[256]; char arg[NPC_UTIL_GETARGSTR_BUFSIZE]; /* 皿伊奶乩□互玉失穴件及1弘伉永玉动 卅日反氏及丹 */ if(NPC_Util_CharDistance( talkerindex, meindex ) > 1)return; NPC_Util_GetArgStr( meindex, arg, sizeof( arg)); if( !getStringFromIndexWithDelim( arg, "|", 1, mode, sizeof( mode ))) return; if( !getStringFromIndexWithDelim( arg, "|", 2, opt, sizeof( opt ) )) return; if( strcmp( mode , "gold" ) == 0 ){ int g = atoi( opt ); int yn = NPC_Util_YN( msg ); /*char *nm = CHAR_getChar( meindex , CHAR_NAME );*/ char msg[256]; if( g > 0 && yn < 0 ){ snprintf( msg ,sizeof( msg ) , "打开门需要给我%d的金子这样可以吗?", g ); CHAR_talkToCli( talkerindex, meindex , msg, CHAR_COLORWHITE ); } else if( g > 0 && yn == 0 ){ snprintf( msg , sizeof( msg ), "打开门 %d的金子是必要的。", g ); } else if( g > 0 && yn == 1 ){ int now_g = CHAR_getInt( talkerindex, CHAR_GOLD ); if( now_g < g ){ snprintf( msg , sizeof( msg ) , "打开门 %d的金子是必要的。", g ); CHAR_talkToCli( talkerindex, meindex , msg, CHAR_COLORWHITE ); } else { snprintf( msg , sizeof( msg ), "%d 收到金子了。现在就来开门。", g ); CHAR_talkToCli( talkerindex, meindex , msg, CHAR_COLORWHITE ); /* 云嗯毛必永玄 */ now_g -= g; CHAR_setInt( talkerindex , CHAR_GOLD , now_g ); /* 丐凶日仄中旦 □正旦毛霜耨 */ CHAR_send_P_StatusString(talkerindex, CHAR_P_STRING_GOLD); /* 玉失夫日仁 */ NPC_DoormanOpenDoor( CHAR_getWorkChar( meindex, CHAR_WORKDOORMANDOORNAME)); } } } else if( strcmp( mode , "item" ) == 0 ){ CHAR_talkToCli( talkerindex, meindex , "尚在未支援模式。", CHAR_COLORWHITE); } else if( strcmp( mode , "itemhave" ) == 0 ){ CHAR_talkToCli( talkerindex, meindex , "尚在未支援模式。", CHAR_COLORWHITE); } else if( strcmp( mode , "itemnothave" ) == 0 ){ CHAR_talkToCli( talkerindex, meindex , "尚在未支援模式。", CHAR_COLORWHITE); } else if( strcmp( mode , "titlehave" ) == 0 ){ CHAR_talkToCli( talkerindex, meindex , "尚在未支援模式。", CHAR_COLORWHITE); } else if( strcmp( mode , "roomlimit" ) == 0 ){ /* 盒及谛醒孺蜃互丐月桦宁 */ char szOk[256], szNg[256], szBuf[32]; int checkfloor; int maxnum, i, iNum; if( !getStringFromIndexWithDelim( arg, "|", 2, szBuf, sizeof( szBuf ) )) return; /* 譬屯月白夫失午 谛醒 */ if( sscanf( szBuf, "%d:%d", &checkfloor, &maxnum ) != 2 ){ return; } for( iNum = 0,i = 0; i < getFdnum(); i ++ ){ /* 皿伊奶乩□动陆卞反饬 互 中 */ if( CHAR_getCharUse( i ) == FALSE )continue; if( CHAR_getInt( i, CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER )continue; /* 隙烂及白夫失动陆卞饬 互 中 */ if( CHAR_getInt( i, CHAR_FLOOR ) != checkfloor )continue; iNum++; } if( !getStringFromIndexWithDelim( arg, "|", 5, szNg, sizeof( szNg ))){ strcpy( szNg, "。。。。" ); /* 凤伞卅仄及本伉白 */ } if( !getStringFromIndexWithDelim( arg, "|", 4, szOk, sizeof( szOk ))){ strcpy( szOk, "开门吧。。。" ); /* 凤伞丐曰及本伉白 */ } if( iNum >= maxnum ){ /* 毛译尹化中月桦宁 */ CHAR_talkToCli( talkerindex, meindex ,szNg, CHAR_COLORWHITE); }else{ /* 卞 凶卅中桦宁 */ CHAR_talkToCli( talkerindex, meindex ,szOk, CHAR_COLORWHITE); NPC_DoormanOpenDoor( CHAR_getWorkChar( meindex, CHAR_WORKDOORMANDOORNAME)); } } else if( strcmp( mode , "titlenothave" ) == 0 ){ CHAR_talkToCli( talkerindex, meindex , "尚在未支援模式。", CHAR_COLORWHITE); } }