341 lines
10 KiB
C
341 lines
10 KiB
C
![]() |
#include "version.h"
|
|||
|
#include <string.h>
|
|||
|
#include "char.h"
|
|||
|
#include "object.h"
|
|||
|
#include "char_base.h"
|
|||
|
#include "npcutil.h"
|
|||
|
#include "npc_fmrank.h"
|
|||
|
#include "lssproto_serv.h"
|
|||
|
#include "saacproto_cli.h"
|
|||
|
#include "readmap.h"
|
|||
|
#include "battle.h"
|
|||
|
#include "log.h"
|
|||
|
#include "enemy.h"
|
|||
|
#include "handletime.h"
|
|||
|
#include "npc_eventaction.h"
|
|||
|
#include "npc_healer.h"
|
|||
|
#include "configfile.h"
|
|||
|
#include "sasql.h"
|
|||
|
|
|||
|
extern char fmrankname[20][50];
|
|||
|
extern int fmrankpoint[20];
|
|||
|
int fmrankcnt=0;
|
|||
|
enum {
|
|||
|
WINDOW_START=1,
|
|||
|
WINDOW_SELECT,
|
|||
|
WINDOW_FMRANKTOP_NEXT,
|
|||
|
WINDOW_FMRANKTOP_PREV,
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
enum {
|
|||
|
NPC_WORK_CURRENTTIME = CHAR_NPCWORKINT1,
|
|||
|
NPC_WORK_TIMEFLAG = CHAR_NPCWORKINT9,
|
|||
|
/*
|
|||
|
NPC_WORK_ROUTETOY = CHAR_NPCWORKINT2,
|
|||
|
NPC_WORK_ROUTEPOINT = CHAR_NPCWORKINT3,
|
|||
|
NPC_WORK_ROUNDTRIP = CHAR_NPCWORKINT4,
|
|||
|
NPC_WORK_MODE = CHAR_NPCWORKINT5,
|
|||
|
NPC_WORK_CURRENTROUTE = CHAR_NPCWORKINT6,
|
|||
|
NPC_WORK_ROUTEMAX = CHAR_NPCWORKINT7,
|
|||
|
NPC_WORK_WAITTIME = CHAR_NPCWORKINT8,
|
|||
|
NPC_WORK_CURRENTTIME = CHAR_NPCWORKINT9,
|
|||
|
NPC_WORK_SEFLG = CHAR_NPCWORKINT10,
|
|||
|
*/
|
|||
|
};
|
|||
|
enum {
|
|||
|
NPC_FMRANK_START,
|
|||
|
NPC_FMRANK_SELECT,
|
|||
|
NPC_FMRANK_ADDPOINT,
|
|||
|
NPC_FMRANK_ADDFM,
|
|||
|
NPC_FMRANK_TOP20,
|
|||
|
};
|
|||
|
#define STANDBYTIME 50
|
|||
|
|
|||
|
static void NPC_FmRank_selectWindow( int meindex, int toindex, int num,int select);
|
|||
|
|
|||
|
BOOL NPC_FmRankInit( int meindex )
|
|||
|
{
|
|||
|
char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
|
|||
|
|
|||
|
if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
|
|||
|
print("TRANSER_MAN: GetArgStrErr!!");
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
// CHAR_setInt( meindex, CHAR_WHICHTYPE, CHAR_TRANSERMANS);
|
|||
|
|
|||
|
//CHAR_setInt( meindex, CHAR_LOOPINTERVAL, NEWNPCMAN_STANDBY);
|
|||
|
CHAR_setWorkInt( meindex, NPC_WORK_CURRENTTIME, NowTime.tv_sec);
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
//CHAR_setWorkInt(talkerindex,CHAR_WORKSHOPRELEVANT,1);
|
|||
|
void NPC_FmRankTalked( int meindex, int talkerindex, char *msg, int color )
|
|||
|
{
|
|||
|
if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER )
|
|||
|
return;
|
|||
|
if(NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) {
|
|||
|
if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE)
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0);
|
|||
|
NPC_FmRank_selectWindow( meindex, talkerindex, WINDOW_START, 0);
|
|||
|
}
|
|||
|
|
|||
|
void NPC_FmRankWindowTalked( int meindex, int talkerindex, int seqno,
|
|||
|
int select, char *data)
|
|||
|
{
|
|||
|
int myfmindex=-1;
|
|||
|
if( select == WINDOW_BUTTONTYPE_CANCEL || select == WINDOW_BUTTONTYPE_NO)
|
|||
|
return;
|
|||
|
switch( seqno) {
|
|||
|
case NPC_FMRANK_START:
|
|||
|
break;
|
|||
|
case NPC_FMRANK_SELECT:
|
|||
|
NPC_FmRank_selectWindow( meindex, talkerindex, WINDOW_SELECT, atoi( data));
|
|||
|
break;
|
|||
|
case NPC_FMRANK_ADDPOINT:
|
|||
|
if(atoi(data)<1000 || atoi(data)>1000000){
|
|||
|
CHAR_talkToCli( talkerindex, -1,"<EFBFBD><EFBFBD><EFBFBD>ӵĵ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>1000<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>100W<EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>",CHAR_COLORRED);
|
|||
|
return;
|
|||
|
}
|
|||
|
if(sasql_ampoint(CHAR_getChar(talkerindex,CHAR_CDKEY),0,0)<atoi(data)){
|
|||
|
CHAR_talkToCli( talkerindex, -1,"<EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><EFBFBD>۵ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",CHAR_COLORRED);
|
|||
|
return;
|
|||
|
}
|
|||
|
myfmindex = CHAR_getInt(talkerindex, CHAR_FMINDEX);
|
|||
|
if(myfmindex>0){
|
|||
|
int myfmpoint = sasql_fmpoint_query(myfmindex);
|
|||
|
if(myfmpoint>0){
|
|||
|
if(sasql_fmpoint_add(myfmindex,(myfmpoint+atoi(data)))==1){
|
|||
|
sasql_ampoint(CHAR_getChar(talkerindex,CHAR_CDKEY),-atoi(data),1);
|
|||
|
CHAR_talkToCli( talkerindex, -1,"<EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>徺<EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>",CHAR_COLORRED);
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case NPC_FMRANK_ADDFM:
|
|||
|
if(atoi(data)<5000 || atoi(data)>1000000){
|
|||
|
CHAR_talkToCli( talkerindex, -1,"<EFBFBD><EFBFBD><EFBFBD>״ξ<EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>5000<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>100W<EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>",CHAR_COLORRED);
|
|||
|
return;
|
|||
|
}
|
|||
|
if(sasql_ampoint(CHAR_getChar(talkerindex,CHAR_CDKEY),0,0)<atoi(data)){
|
|||
|
CHAR_talkToCli( talkerindex, -1,"<EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><EFBFBD>۵ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",CHAR_COLORRED);
|
|||
|
return;
|
|||
|
}
|
|||
|
myfmindex = CHAR_getInt(talkerindex, CHAR_FMINDEX);
|
|||
|
if(myfmindex>0){
|
|||
|
int myfmpoint = sasql_fmpoint_query(myfmindex);
|
|||
|
char* fmname = CHAR_getChar(talkerindex,CHAR_FMNAME);
|
|||
|
if(myfmpoint<=0){
|
|||
|
if(sasql_fmindex_add(myfmindex,fmname,atoi(data))==1){
|
|||
|
sasql_ampoint(CHAR_getChar(talkerindex,CHAR_CDKEY),-atoi(data),1);
|
|||
|
CHAR_talkToCli( talkerindex, -1,"<EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>徺<EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>",CHAR_COLORRED);
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case NPC_FMRANK_TOP20:
|
|||
|
if( select == WINDOW_BUTTONTYPE_CANCEL )
|
|||
|
return;
|
|||
|
if( select == WINDOW_BUTTONTYPE_NEXT )
|
|||
|
{
|
|||
|
if(fmrankcnt>7){
|
|||
|
NPC_FmRank_selectWindow( meindex, talkerindex, WINDOW_FMRANKTOP_NEXT, atoi( data));
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
if( select == WINDOW_BUTTONTYPE_PREV )
|
|||
|
{
|
|||
|
if(fmrankcnt>7){
|
|||
|
NPC_FmRank_selectWindow( meindex, talkerindex, WINDOW_FMRANKTOP_PREV, atoi( data));
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
static void NPC_FmRank_selectWindow( int meindex, int toindex, int num,int select)
|
|||
|
{
|
|||
|
int myfmindex=-1;
|
|||
|
char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
|
|||
|
char token[256];
|
|||
|
char buff[128];
|
|||
|
int buttontype = 0, windowtype = 0, windowno = 0;
|
|||
|
int fd = getfdFromCharaIndex( toindex);
|
|||
|
if(NPC_Util_isFaceToFace( meindex ,toindex , 2) == FALSE) {
|
|||
|
if(NPC_Util_isFaceToChara( toindex, meindex, 1) == FALSE)
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
memset( npcarg, 0, sizeof( npcarg));
|
|||
|
if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
|
|||
|
print("TRANSER_MAN: GetArgStrErr!!");
|
|||
|
return;
|
|||
|
}
|
|||
|
memset( token, 0, sizeof( token));
|
|||
|
|
|||
|
switch( num) {
|
|||
|
case WINDOW_START:
|
|||
|
sprintf(token, "3\n\n <20><><EFBFBD><EFBFBD><EFBFBD>徺<EFBFBD><E5BEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>\n\n"
|
|||
|
" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>\n"
|
|||
|
" <20><><EFBFBD>Ӿ<EFBFBD><D3BE>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD>\n"
|
|||
|
" <20><><EFBFBD>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ρ<EFBFBD>\n"
|
|||
|
" <20><><EFBFBD>鿴ǰ<E9BFB4><C7B0>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD>\n"
|
|||
|
" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>ܡ<EFBFBD>\n");
|
|||
|
CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, WINDOW_START);
|
|||
|
windowtype = WINDOW_MESSAGETYPE_SELECT;
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL;
|
|||
|
windowno = NPC_FMRANK_SELECT;
|
|||
|
break;
|
|||
|
case WINDOW_SELECT:
|
|||
|
windowtype = WINDOW_MESSAGETYPE_MESSAGE;
|
|||
|
if(select==1 || select == 2){
|
|||
|
myfmindex = CHAR_getInt(toindex, CHAR_FMINDEX);
|
|||
|
if(myfmindex>0){
|
|||
|
int myfmpoint = sasql_fmpoint_query(myfmindex);
|
|||
|
windowtype = WINDOW_MESSAGETYPE_MESSAGEANDLINEINPUT;
|
|||
|
if(myfmpoint>0){
|
|||
|
sprintf(token, " <20><><EFBFBD><EFBFBD><EFBFBD>徺<EFBFBD><E5BEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>\n\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD>ڵľ<EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>%d<>㣡\n\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡾ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",myfmpoint);
|
|||
|
buttontype = WINDOW_BUTTONTYPE_YESNO;
|
|||
|
windowno = NPC_FMRANK_ADDPOINT;
|
|||
|
}else{
|
|||
|
sprintf(token, " <20><><EFBFBD><EFBFBD><EFBFBD>徺<EFBFBD><E5BEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>\n\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>廹δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>\n\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡾ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
buttontype = WINDOW_BUTTONTYPE_YESNO;
|
|||
|
windowno = NPC_FMRANK_ADDFM;
|
|||
|
}
|
|||
|
}else{
|
|||
|
sprintf(token, " <20><><EFBFBD><EFBFBD><EFBFBD>徺<EFBFBD><E5BEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>\n\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬<EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><EFBFBD>д˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL;
|
|||
|
}
|
|||
|
}else if(select==3){
|
|||
|
myfmindex = CHAR_getInt(toindex, CHAR_FMINDEX);
|
|||
|
if(myfmindex>0){
|
|||
|
int myfmpoint = sasql_fmpoint_query(myfmindex);
|
|||
|
if(myfmpoint>0){
|
|||
|
int myfmno = sasql_fmno_query(myfmindex);
|
|||
|
sprintf(token, " <20><><EFBFBD><EFBFBD><EFBFBD>徺<EFBFBD><E5BEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>\n\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ\n\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD>ڵľ<EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>%d<><64>\n\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%dλ<64><CEBB>",myfmpoint,myfmno);
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL;
|
|||
|
}else{
|
|||
|
sprintf(token, " <20><><EFBFBD><EFBFBD><EFBFBD>徺<EFBFBD><E5BEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>\n\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>廹δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>\n");
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL;
|
|||
|
}
|
|||
|
}else{
|
|||
|
sprintf(token, " <20><><EFBFBD><EFBFBD><EFBFBD>徺<EFBFBD><E5BEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>\n\n"
|
|||
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬<EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><EFBFBD>д˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL;
|
|||
|
}
|
|||
|
}else if(select==4){
|
|||
|
CHAR_setWorkInt(toindex,CHAR_WORKLISTPAGE,1);
|
|||
|
sprintf(token, " <20><>ǰ20<32><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>\n");
|
|||
|
fmrankcnt = sasql_fm_query();
|
|||
|
if(fmrankcnt>0){
|
|||
|
int fmshowmax;
|
|||
|
if(fmrankcnt>7) fmshowmax=7;
|
|||
|
else fmshowmax = fmrankcnt;
|
|||
|
int i;
|
|||
|
for(i=0;i<fmshowmax;i++){
|
|||
|
sprintf(buff,"%d.%s <20><><EFBFBD>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD>%d\n",i+1,fmrankname[i],fmrankpoint[i]);
|
|||
|
strcat(token,buff);
|
|||
|
}
|
|||
|
}
|
|||
|
if(fmrankcnt>7)
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_NEXT;
|
|||
|
else
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL;
|
|||
|
windowno = NPC_FMRANK_TOP20;
|
|||
|
}else if(select==5){
|
|||
|
sprintf(token, "\n1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>þ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n"
|
|||
|
"2<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>ʾǰ20λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ۡ<EFBFBD>\n"
|
|||
|
"3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ <20><><EFBFBD>š<EFBFBD>\n"
|
|||
|
"4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٳ<EFBFBD><EFBFBD><EFBFBD>Ϊһ<EFBFBD>ٵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n"
|
|||
|
"5<EFBFBD><EFBFBD>ˢ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ϊ15<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ϵ<EFBFBD><CFB5>\n"
|
|||
|
"6<EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ͳ<EFBFBD><CDB3>\n");
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WINDOW_FMRANKTOP_NEXT:
|
|||
|
if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)<1) return;
|
|||
|
windowtype = WINDOW_MESSAGETYPE_MESSAGE;
|
|||
|
sprintf(token, " <20><>ǰ20<32><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>\n");
|
|||
|
if(fmrankcnt>0){
|
|||
|
int fmshowmax;
|
|||
|
if(fmrankcnt<=7) return;
|
|||
|
if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)==1){
|
|||
|
if(fmrankcnt>14){
|
|||
|
fmshowmax = 14;
|
|||
|
buttontype = WINDOW_BUTTONTYPE_PREV|WINDOW_BUTTONTYPE_NEXT;
|
|||
|
}
|
|||
|
else{
|
|||
|
fmshowmax = fmrankcnt;
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_PREV;
|
|||
|
}
|
|||
|
}else if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)==2){
|
|||
|
if(fmrankcnt<=14) return;
|
|||
|
fmshowmax = fmrankcnt;
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_PREV;
|
|||
|
}else{
|
|||
|
return;
|
|||
|
}
|
|||
|
int i;
|
|||
|
for(i=7*CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE);i<fmshowmax;i++){
|
|||
|
sprintf(buff,"%d.%s <20><><EFBFBD>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD>%d\n",i+1,fmrankname[i],fmrankpoint[i]);
|
|||
|
strcat(token,buff);
|
|||
|
}
|
|||
|
CHAR_setWorkInt(toindex,CHAR_WORKLISTPAGE,CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)+1);
|
|||
|
windowno = NPC_FMRANK_TOP20;
|
|||
|
}else
|
|||
|
return;
|
|||
|
break;
|
|||
|
case WINDOW_FMRANKTOP_PREV:
|
|||
|
if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)>3) return;
|
|||
|
windowtype = WINDOW_MESSAGETYPE_MESSAGE;
|
|||
|
sprintf(token, " <20><>ǰ20<32><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>\n");
|
|||
|
if(fmrankcnt>0){
|
|||
|
int fmshowmax;
|
|||
|
if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)==3){
|
|||
|
if(fmrankcnt<=14) return;
|
|||
|
fmshowmax = 14;
|
|||
|
buttontype = WINDOW_BUTTONTYPE_PREV|WINDOW_BUTTONTYPE_NEXT;
|
|||
|
}else if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)==2){
|
|||
|
if(fmrankcnt<=7) return;
|
|||
|
fmshowmax = 7;
|
|||
|
buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_NEXT;
|
|||
|
}
|
|||
|
int i;
|
|||
|
for(i=fmshowmax-7;i<fmshowmax;i++){
|
|||
|
sprintf(buff,"%d.%s <20><><EFBFBD>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD>%d\n",i+1,fmrankname[i],fmrankpoint[i]);
|
|||
|
strcat(token,buff);
|
|||
|
}
|
|||
|
CHAR_setWorkInt(toindex,CHAR_WORKLISTPAGE,CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)-1);
|
|||
|
windowno = NPC_FMRANK_TOP20;
|
|||
|
}else
|
|||
|
return;
|
|||
|
break;
|
|||
|
}
|
|||
|
lssproto_WN_send( fd, windowtype, buttontype, windowno,
|
|||
|
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void NPC_FmRankLoop( void )
|
|||
|
{
|
|||
|
}
|
|||
|
|