?? npc_alldoman.c
字號:
#include "version.h"
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include "object.h"
#include "char_base.h"
#include "char.h"
#include "util.h"
#include "npcutil.h"
#include "item.h"
#include "readmap.h"
#include "enemy.h"
#include "chatmagic.h"
#include "log.h"
#include "npc_itemchange.h"
#include "lssproto_serv.h"
#include "saacproto_cli.h"
#include "npc_eventaction.h"
#include "npc_charm.h"
#ifdef _ALLDOMAN
#include "npc_alldoman.h"
#ifdef _FIX_ALLDOMAN
void Send_S_herolist( int ti );
#define MAX_HERO_LIST 50
typedef struct _tagHerolistBase
{
char strings[3][64];
int intdata[3];
int use;
}HerolistBase;
HerolistBase Herolist[MAX_HERO_LIST];
#else
#define MAX_HERO_COLUMN 7
#define MAX_HERO_LIST 100
char Herolist[MAX_HERO_LIST][MAX_HERO_COLUMN][72];
#endif
int sort[MAX_HERO_LIST][2];
int countnum = -1 ;
int showpage = 1 ;
int totalpage = 1;
static void NPC_Alldoman_selectWindow( int meindex, int talker, int seqno,char *data);
void NPC_AlldomanWindowTalked(int meindex, int talkerindex, int seqno, int select,char *data)
{
char buf2[256];
char buf[256];
int i;
int playernum = CHAR_getPlayerMaxNum();
//andy_log
print( "seqno:%d\n", seqno);
switch(seqno)
{
case NPC_ALLDOMAN_MAIN_WND:
if ( select == WINDOW_BUTTONTYPE_NEXT ) {
showpage ++ ;
NPC_Alldoman_selectWindow(meindex , talkerindex , 4 ,"");
}
if ( select == WINDOW_BUTTONTYPE_OK ) {
//CHAR_talkToCli(talkerindex,meindex,"看清楚了!",CHAR_COLORRED);
showpage = 1 ;
NPC_Alldoman_selectWindow(meindex , talkerindex, 5 ,"");
}
break;
case NPC_ALLDOMAN_SELECT_WND:
if(atoi(data)==2) {
//CHAR_talkToCli(talkerindex,meindex,"1!",CHAR_COLORRED);
if ( CHAR_getInt( talkerindex , CHAR_FLOOR ) != 8200 ) {
CHAR_talkToCli(talkerindex,-1,"這里只能給真正的英雄刻寫!",CHAR_COLORRED);
break;
}
if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) > 132 ||
CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) <= 0 ) {
CHAR_setWorkInt( talkerindex , CHAR_WORKHEROFLOOR , 0 ) ;
CHAR_talkToCli(talkerindex,-1,"這里只能給真正的英雄刻寫!",CHAR_COLORRED);
break;
}
sprintf( buf2 , "你拿出了打敗守靈者%3d的證明,試圖將自己的姓名刻上石碑!" , CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) );
CHAR_talkToCli(talkerindex,-1,buf2,CHAR_COLORRED);
if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) == 132 ) {
sprintf( buf2 , "%s" , "尼斯大陸英雄" ) ;
//到達頂層對全星系廣播
sprintf( buf , "%s征服了英雄戰場,由風之精靈將這個消息通知全世界,新的英雄誕生了!!" , CHAR_getChar( talkerindex, CHAR_NAME ) );
for( i = 0 ; i < playernum ; i++) {
if( CHAR_getCharUse(i) != FALSE ) {
CHAR_talkToCli( i, -1, buf, CHAR_COLORBLUE2);
}
}
}
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 130 )
sprintf( buf2 , "%s" , "尼斯大陸戰士" ) ;
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 125 )
sprintf( buf2 , "%s" , "尼斯大陸勇士" ) ;
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 120 )
sprintf( buf2 , "%s" , "薩伊那斯英雄" ) ;
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 115 )
sprintf( buf2 , "%s" , "斯巴達戰士" ) ;
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 110 )
sprintf( buf2 , "%s" , "薩姆吉爾戰士" ) ;
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 100 )
sprintf( buf2 , "%s" , "瑪麗那絲戰士" ) ;
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 80 )
sprintf( buf2 , "%s" , "卡坦戰士" ) ;
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 60 )
sprintf( buf2 , "%s" , "霍特爾戰士" ) ;
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 40 )
sprintf( buf2 , "%s" , "降魔勇士" ) ;
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 20 )
sprintf( buf2 , "%s" , "圣靈勇士" ) ;
else if ( CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ) >= 1 )
sprintf( buf2 , "%s" , "初犢勇士" ) ;
else
sprintf( buf2 , " " );
saacproto_UpdataStele_send (
acfd ,
CHAR_getChar( talkerindex , CHAR_CDKEY ),
CHAR_getChar( talkerindex , CHAR_NAME ) ,
buf2 ,
CHAR_getInt( talkerindex , CHAR_LV ) ,
CHAR_getInt( talkerindex , CHAR_TRANSMIGRATION) ,
10 ,
CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR )
) ;
//清除WorkFloor
CHAR_setWorkInt( talkerindex , CHAR_WORKHEROFLOOR , 0 ) ;
}
if(atoi(data)==4) {
//CHAR_talkToCli(talkerindex,meindex,"2!",CHAR_COLORRED);
showpage = 1 ;
NPC_Alldoman_selectWindow(meindex , talkerindex, 6 ,"");
}
if(atoi(data)==6) {
//CHAR_talkToCli(talkerindex,meindex,"3!",CHAR_COLORRED);
}
break;
case NPC_ALLDOMAN_LIST_WND:
if( select == WINDOW_BUTTONTYPE_OK ){
print("\nSyu log FloorWorkint => %d" , CHAR_getWorkInt( talkerindex , CHAR_WORKHEROFLOOR ));
}
if( select == WINDOW_BUTTONTYPE_PREV && showpage > 1 ) {
showpage -- ;
NPC_Alldoman_selectWindow(meindex , talkerindex, 6 ,"" );
}
if( select == WINDOW_BUTTONTYPE_NEXT && showpage < totalpage ) {
showpage ++ ;
NPC_Alldoman_selectWindow(meindex , talkerindex, 6 ,"");
}
break;
}
}
static void NPC_Alldoman_selectWindow( int meindex, int talker, int num, char *data)
{
int buttontype = 0,windowtype = 0,windowno = 0 , i ;
int fd = getfdFromCharaIndex( talker);
char token[1024];
char token2[100 * 100];
//andy_log
print( "NPC_Alldoman_selectWindow( num:%d)\n", num);
switch(num)
{
case 4:
if ( showpage == 1 ) {
buttontype = WINDOW_BUTTONTYPE_NEXT;
sprintf( token, "485447圣餅時,吉魯出現大批機暴橫行,所到之處皆無一幸免,尼斯各村的長老達成共識,調集各村勇士,前往消滅這群發狂的機暴,這群勇士在海底隧道入口跟這群機暴激戰,不料,實力相差懸殊,勇士們傷亡慘重,殘馀的勇士,選擇在霍特爾海底通路的入口做最");
}
else if ( showpage == 2 ) {
buttontype = WINDOW_BUTTONTYPE_NEXT;
sprintf( token, "後的的抵抗,各村長老召集大批人力,封死所有通往吉魯的海底通道,終於在大批機暴涌入前,將入口封死,此地為485550圣餅時所建造,為紀念485447圣餅時所犧牲的勇士,立此石碑,建此地洞,命名為“英雄戰場”,望後世人效法先烈的行徑,達到強種強");
}
else if ( showpage == 3) {
buttontype = WINDOW_BUTTONTYPE_OK;
sprintf( token, "族為目的,讓尼斯大陸的人們生生不息,上面的英雄是最近勇闖“英雄戰場”所留下來的,特此詔告全尼斯英雄!\n\n 英雄戰場制作委員會");
}
windowtype = WINDOW_MESSAGETYPE_MESSAGE;
windowno = NPC_ALLDOMAN_MAIN_WND;
lssproto_WN_send(fd, windowtype, buttontype, windowno,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token );
break;
case 5:
buttontype = WINDOW_BUTTONTYPE_NONE;
windowtype = WINDOW_MESSAGETYPE_SELECT;
windowno = NPC_ALLDOMAN_SELECT_WND;
sprintf(token,
"0\n\n 刻寫石碑"
"\n\n 檢視其他勇者"
"\n\n 取消"
);
lssproto_WN_send( fd, windowtype, buttontype, windowno,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),token);
break;
case 6:
if ( totalpage != 1 && showpage == 1 )
buttontype = WINDOW_BUTTONTYPE_OK | WINDOW_BUTTONTYPE_NEXT;
else if ( totalpage == 1 )
buttontype = WINDOW_BUTTONTYPE_OK ;
else if ( totalpage != 1 && showpage == totalpage )
buttontype = WINDOW_BUTTONTYPE_OK | WINDOW_BUTTONTYPE_PREV;
else if ( totalpage != 1 && showpage != 1 && showpage != totalpage )
buttontype = WINDOW_BUTTONTYPE_OK | WINDOW_BUTTONTYPE_PREV | WINDOW_BUTTONTYPE_NEXT;
windowtype = WINDOW_MESSAGETYPE_WIDEMESSAGEANDLINEINPUT;
windowno = NPC_ALLDOMAN_LIST_WND;
sprintf ( token2 , " 姓名 頭銜 樓層 等級 轉生\n");
for ( i=0+(showpage-1 )*15; i<showpage*15; i++) {
#ifdef _FIX_ALLDOMAN
if( i >= MAX_HERO_LIST || i<0 ) break;
if( Herolist[i].use == 0 ) continue;
sprintf( token , "%16s %13s %7d %7d %7d\n" ,
Herolist[i].strings[1], Herolist[i].strings[2],
Herolist[i].intdata[3], Herolist[i].intdata[0],
Herolist[i].intdata[1] );
strcat( token2, token);
#else
if( atoi ( Herolist[sort[MAX_HERO_LIST - 1 - i ][1]][6] ) == 0 ||
atoi ( Herolist[sort[MAX_HERO_LIST - 1 - i ][1]][3] ) == 0 )
continue ;
sprintf( token , "%16s %13s %7d %7d %7d\n" ,
Herolist[sort[MAX_HERO_LIST - 1 - i ][1]][1] ,
Herolist[sort[MAX_HERO_LIST - 1 - i ][1]][2] ,
atoi ( Herolist[sort[MAX_HERO_LIST - 1 - i ][1]][6] ),
atoi ( Herolist[sort[MAX_HERO_LIST - 1 - i ][1]][3] ),
atoi ( Herolist[sort[MAX_HERO_LIST - 1 - i ][1]][4] )
);
strcat ( token2 , token ) ;
if ( i + 1 == countnum )
break;
#endif
}
lssproto_WN_send( fd, windowtype, buttontype, windowno,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),token2);
break;
}
}
static int loadherolist = 0;
BOOL NPC_AlldomanInit( int meindex )
{
//andy_log
//print( "\n\nNPC_AlldomanInit( %d)\n\n", meindex);
if( loadherolist == 0){
loadherolist = 1;
saacproto_UpdataStele_send ( acfd , "FirstLoad", "LoadHerolist" , "華義" , 0 , 0 , 0 , 999 ) ;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -