⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 callfromac.c

📁 石器时代6.0源代码 2008.08.27最新版 完全可编译开服!
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>#include "version.h"#include "common.h"#include "saacproto_cli.h"#include "lssproto_serv.h"#include "net.h"#include "char.h"#include "object.h"#include "readmap.h"#include "msignal.h"#include "map_deal.h"#include "npc_duelranking.h"#include "npc_warpman.h"#include "handletime.h"#include "npc_scheduleman.h"#include "configfile.h"#include "npc_eventaction.h"// CoolFish: Family 2001/5/24#include "family.h"#include "log.h"#include "buf.h"#ifdef _ALLDOMAN // (不可开) Syu ADD 排行榜NPC#include "npc_alldoman.h"#endiftime_t initTime =0;extern BOOL bNewServer;extern int i_shutdown_time;//ttomvoid saacproto_ACGmsvDownRequest_recv( int fd, int min){	char	buff[32];    int     i;    int     playernum = CHAR_getPlayerMaxNum();		snprintf( buff, sizeof( buff),"%s公告。",getGameserverID());    for( i = 0 ; i < playernum ; i++) {        if( CHAR_getCharUse(i) != FALSE ) {			CHAR_talkToCli( i, -1, buff, CHAR_COLORYELLOW);		}	}	SERVSTATE_setLimittime(min);	SERVSTATE_setShutdown( NowTime.tv_sec );	SERVSTATE_setDsptime( 0 );	}//检查是否有和ac连接,以及载入家族void saacproto_ACServerLogin_recv (int fd, char* result,char* data){    if( strcmp( result , SUCCESSFUL ) != 0 ){        print( "与AC服务器连接失败!退出运行...[%s][%s]\n",              result,data );        shutdownProgram( );        exit(1);    }    print("与AC服务器连接成功!\n");	time(&initTime);/*		print("服务器类型:");    if( bNewServer )    	print("新服务器! \n");    else    	print("旧服务器! \n");*/#ifdef _SERVER_NUMS		print(" 正常服务器!\n");#endif#ifdef _VIP_ALL		print( "服务端版本: <%s %s>\n" , SERVER_VERSION, "会员版");#else#ifdef _PUB_ALL		print( "服务端版本: <%s %s>\n" , SERVER_VERSION, "普通版");#else		print( "服务端版本: <%s %s>\n" , SERVER_VERSION, "原始版");#endif#endif		print( "服务端编译完成时间: %s %s by 龙zoro工作室\n" , __DATE__ , __TIME__ );		print( "主页:http://www.longzoro.com\n" );		print( "论坛:http://bbs.longzoro.com\n" );		    // Robin 0530    //saacproto_ACShowFMList_send( acfd );    print("初始化家族...");    FAMILY_Init();    print("完成\n");}void saacproto_ACCharList_recv(int fd, char* result, char* data,int retfd){    int clifd = getfdFromFdid(retfd);    if( CONNECT_checkfd(clifd) == FALSE )			return;		lssproto_CharList_send( clifd, result , data );    CONNECT_setState( clifd, NOTLOGIN );}void saacproto_ACCharLoad_recv(int fd , char* result,char* data,int retfd,int saveindex){    int clifd = getfdFromFdid(retfd);    if( CONNECT_checkfd( clifd ) == FALSE )return;    if(( strcmp( result , SUCCESSFUL ) == 0 )&&(data[0])) {			CHAR_login( clifd,data,saveindex );    }else{		char cdkey[64];#ifndef _FIX_MESSAGE             // WON ADD 修改WORKER封包内容        		data = "";		#endif		CONNECT_getCdkey( clifd, cdkey , sizeof( cdkey ));		print(" (%s)ACCharLoad错误:%s ", cdkey, data);        lssproto_CharLogin_send( clifd, result ,data );        CONNECT_setState( clifd, NOTLOGIN );    }} void saacproto_ACCharSave_recv(int fd ,char* result, char* data,int retfd){    int clifd = getfdFromFdid(retfd) ,  fdid;    char cdkey[CDKEYLEN], passwd[PASSWDLEN], charname[CHARNAMELEN];    if( CONNECT_checkfd( clifd )== FALSE ) return;    CONNECT_getCdkey( clifd, cdkey, sizeof( cdkey ));    CONNECT_getPasswd( clifd, passwd, sizeof( passwd));    CONNECT_getCharname( clifd, charname, sizeof( charname ));    fdid = CONNECT_getFdid( clifd );    switch( CONNECT_getState( clifd ) ){    case WHILECREATE:        /* 公木毛弁仿奶失件玄卞中丹( 公及引引 )*/        if( strcmp(result,FAILED) ==0 ) data ="";        lssproto_CreateNewChar_send( clifd , result , data);        CONNECT_setState( clifd, NOTLOGIN );        break;    case WHILELOGOUTSAVE:        if( strcmp( result , SUCCESSFUL ) == 0 )            lssproto_CharLogout_send( clifd, result , "success" );        else            /* 巨仿□支午仄扎屯月   */            lssproto_CharLogout_send( clifd, result , "Cannot save" );        CONNECT_setState( clifd, NOTLOGIN );        CONNECT_setCharaindex( clifd, -1 );        break;    case WHILELOSTCHARSAVE:        saacproto_ACCharDelete_send( acfd, cdkey,passwd,charname,"",fdid );        CONNECT_setState( clifd, WHILELOSTCHARDELETE );        CONNECT_setCharaindex( clifd, -1 );        break;    case WHILECLOSEALLSOCKETSSAVE:        CONNECT_setState( clifd, NOTLOGIN );        // Arminius debug        // CONNECT_endOne_debug(clifd);        CONNECT_setUse( clifd , FALSE);                SERVSTATE_decrementCloseallsocketnum();        if( SERVSTATE_getCloseallsocketnum() == 0 ) {		    SERVSTATE_SetAcceptMore( -1 );            print( "所有人物存档\n" );            print("\n 关闭服务器时间 =%d",i_shutdown_time);//ttom            if(i_shutdown_time==1){		    system( "正常关闭" );			sigshutdown( 0 );	    }			}    default:        break;    }}void saacproto_ACCharDelete_recv(int fd,char* result,char* data,int retfd){    int clifd = getfdFromFdid(retfd);    if( CONNECT_checkfd( clifd ) == FALSE )return;    switch( CONNECT_getState(clifd) ){    case WHILELOSTCHARDELETE:        /*  窒手仄卅中  */        CONNECT_setState(clifd, NOTLOGIN );        CONNECT_setCharaindex( clifd, -1 );        break;    case WHILECHARDELETE:        /*  公及引引霜月  */        if( strcmp(result,FAILED) == 0)data="";        lssproto_CharDelete_send( clifd, result , data );        CONNECT_setState( clifd,  NOTLOGIN );        CONNECT_setCharaindex( clifd, -1 );        break;    default:        break;    }}/* */void saacproto_ACLock_recv(int fd , char* result, char* data ,int retfd){    int clifd = getfdFromFdid(retfd);    char cdkey[CDKEYLEN];    int cindex = getCharindexFromFdid(retfd);    if( CONNECT_checkfd(clifd) == FALSE) return;    // Arminius 7.25 GM unlock test    if (strncmp(data, "USRLOCKED", 9)==0) {      char buf[4096];      sprintf(buf, "%s", &data[10]);      CHAR_talkToCli(cindex, -1, buf, CHAR_COLORYELLOW);      return;    } else if (strncmp(data, "USRUNLOCKED", 11)==0) {      CHAR_talkToCli(cindex, -1, "User not locked.", CHAR_COLORYELLOW);      return;    } else if (strncmp(data, "GMUNLOCKSUCCESS", 15)==0) {      CHAR_talkToCli(cindex, -1, "User unlock success", CHAR_COLORYELLOW);      return;    } else if (strncmp(data, "GMUNLOCKFAIL", 12)==0) {      CHAR_talkToCli(cindex, -1, "User unlock failed", CHAR_COLORYELLOW);      return;    } else if (strncmp(data, "GMUNLOCKALL", 11)==0) {      CHAR_talkToCli(cindex, -1, "Server unlocked", CHAR_COLORYELLOW);      return;    }    CONNECT_getCdkey( clifd, cdkey , sizeof( cdkey ));        switch( CONNECT_getState( clifd ) ){    case WHILECANNOTLOGIN:        if( strcmp( result , SUCCESSFUL ) == 0 ){            CONNECT_setState( clifd, NOTLOGIN );        }else{            /*             * 丢永本□斥毛苇月             */            char    mesg[128];            snprintf( mesg ,sizeof( mesg ), "%s hasn't been locked" ,cdkey);            if( strcmp( data , mesg ) == 0 ){                /*                 */                CONNECT_setState( clifd, NOTLOGIN );            }else{                /*                 * 疯蘸夫永弁荸轮仄方丹午允月                 */                saacproto_ACLock_send(fd, cdkey ,                                      UNLOCK, CONNECT_getFdid( clifd) );            }        }        break;    default:        break;    }}void saacproto_ACUCheck_recv( int fd , char *cd ){    int conind;    int flag = 0;    conind = getfdFromCdkeyWithLogin( cd );    flag = ( conind >= 0 ) ? 1 : 0;    saacproto_ACUCheck_send( fd , cd , flag );}/* --------------------------------------------- * --------------------------------------------*/void saacproto_DBUpdateEntryInt_recv( int fd,char* result,									char* table,char* key,int msgid,int msgid2 ){	if( strcmp( result, NET_STRING_FAILED) == 0 ) {		print( "failed: DBUpdateEntryInt\n");		return;	}}/* --------------------------------------------- * --------------------------------------------*/void saacproto_DBUpdateEntryString_recv( int fd,char* result,									char* table,char* key,int msgid,int msgid2 ){	if( strcmp( result, NET_STRING_FAILED) == 0 ) {			print( "failed: DBUpdateEntryString\n");		return;	}}/* --------------------------------------------- * --------------------------------------------*/void saacproto_DBGetEntryRank_recv( int fd,char* result,int rank,int count,									char* table,char* key,int msgid,int msgid2 ){	if( strcmp( result, NET_STRING_FAILED) == 0 ) {		print( "failed: DBGetEntryRank\n");		return;	}	if( strcmp( table, DB_DUELPOINT) == 0 ) {	    if( CHAR_getInt( OBJECT_getIndex( msgid2), CHAR_WHICHTYPE)	== CHAR_TYPEDUELRANKING){			NPC_Duelranking_CallMyRanking( count, msgid, msgid2);		}else {			NPC_GetDuelRank( rank, msgid, msgid2);		}	}}void saacproto_DBDeleteEntryInt_recv( int fd,char* result,									char* table,char* key,int msgid,int msgid2 ){	if( strcmp( result, NET_STRING_FAILED) == 0 ) {		print( "failed: DBDeleteEntryInt\n");		return;	}}/* --------------------------------------------- * --------------------------------------------*/void saacproto_DBDeleteEntryString_recv( int fd,char* result,									char* table,char* key,int msgid,int msgid2 ){	if( strcmp( result, NET_STRING_FAILED) == 0 ) {		print( "failed: DBDeleteEntryString\n");		return;	}}/* --------------------------------------------- * --------------------------------------------*/void saacproto_DBGetEntryInt_recv( int fd,char* result,int value,									char* table,char* key,int msgid,int msgid2 ){	if( strcmp( result, NET_STRING_FAILED) == 0 ) {		print( "failed: DBGetEntryInt\n");		return;	}}/* --------------------------------------------- * --------------------------------------------*/void saacproto_DBGetEntryString_recv( int fd,char* result,char *value,									char* table,char* key,int msgid,int msgid2 ){	char	cdkey[32];	char	charaname[32];	if( strcmp( table, DB_ADDRESSBOOK) == 0 ){		int mode = 1;		if( strcmp( result, NET_STRING_FAILED) == 0 ) {			mode = 0;		}		makeStringFromEscaped( key);		if( !getStringFromIndexWithDelim( key, "_", 1, cdkey, sizeof( cdkey)) ){			return;		}		if( !getStringFromIndexWithDelim( key, "_", 2, charaname, sizeof( charaname)) ){			return;		}		ADDRESSBOOK_DispatchMessage( cdkey, charaname, value, mode);	}else {		if( strcmp( result, NET_STRING_FAILED) == 0 ) {			print( "failed: DBGetEntryString\n");			return;		}	}}void saacproto_DBGetEntryByRank_recv( int fd,char* result,char* list,										char* table,int msgid,int msgid2 ){	if( strcmp( result, NET_STRING_FAILED) == 0 ) {		print( "failed: DBGetEntryByRank\n");		return;	}}/* --------------------------------------------- * --------------------------------------------*/void saacproto_DBGetEntryByCount_recv( int fd,char* result,char* list,										char* table,int count_start,int msgid,int msgid2 ){	if( strcmp( result, NET_STRING_FAILED) == 0 ) {		print( "failed: DBGetEntryByCount\n");		return;	}	if( strcmp( table, DB_DUELPOINT) == 0 ) {		NPC_Duelranking_PrintRanking( list, count_start, msgid, msgid2);	}}#ifdef _ALLDOMAN // (不可开) Syu ADD 排行榜NPCvoid saacproto_UpdataStele_recv( int fd , char *token){	NPC_AlldomanWriteStele( token ); }void saacproto_S_UpdataStele_recv( int i , char *ocdkey , char *oname , char *ncdkey , 			  char *nname , char *title	, int level , int trns , int floor ) {	print("\nSyu log 收到Single=> %s , %s , %s , %s ",ocdkey , oname , ncdkey , nname);	NPC_Alldoman_S_WriteStele( ocdkey , oname , ncdkey , nname , title	, level , trns , floor ) ;}#endif/* --------------------------------------------- * 皮夫□玉平乓旦玄丢永本□斥熬仃午曰 * --------------------------------------------*/void saacproto_Broadcast_recv( int fd,char* id,char* charname,char *message ){	if( strstr( message, "online") == 0 ||		strstr( message, "offline") == 0 || 		strstr( message, "param") == 0  ||		strstr( message, "chardelete") == 0 ){		char buff[512];		char escapebuf[1024];		snprintf( buff, sizeof( buff),"%s_%s", id, charname );		makeEscapeString( buff, escapebuf, sizeof(escapebuf));		saacproto_DBGetEntryString_send( acfd, DB_ADDRESSBOOK, escapebuf, 0,0);	}}void saacproto_Message_recv( int fd,char* id_from,char* charname_from,							char* id_to,char* charname_to,							char* message,int option,int mesgid ){	BOOL	ret;	ret = ADDRESSBOOK_sendMessage_FromOther( id_from, charname_from, 										id_to, charname_to,										message, option										);	if( ret == TRUE) {		saacproto_MessageAck_send( acfd, id_to, charname_to, 							  		"successful",mesgid);	}}/* --------------------------------------------- *	CoolFish: Family 2001/5/9 * --------------------------------------------*/void saacproto_ACAddFM_recv(int fd, char *result, int fmindex, int charfdid,	int index){	int ret;	int clifd = getfdFromFdid(charfdid);//	print("ACAddFM_0\n");	if (CONNECT_checkfd(clifd) == FALSE)	return;	if (strcmp(result, SUCCESSFUL) == 0)	ret = 1;	else	ret = 0;//	print("ACAddFM_1 clifd:%d ret:%d fmindex:%d index:%d\n",//		clifd, ret, fmindex, index);	ACAddFM(clifd, ret, fmindex, index);}void saacproto_ACJoinFM_recv(int fd, char *result, int recv, int charfdid){	int ret;	int clifd = getfdFromFdid(charfdid);	if (CONNECT_checkfd(clifd) == FALSE)	return;	if (strcmp(result, SUCCESSFUL) == 0)	ret = 1;	else	ret = 0;	ACJoinFM(clifd, ret, recv);}void saacproto_ACLeaveFM_recv(int fd, char *result, int resultflag, int charfdid){	int ret;	int clifd = getfdFromFdid(charfdid);	if (CONNECT_checkfd(clifd) == FALSE)	return;	if (strcmp(result, SUCCESSFUL) == 0)	ret = 1;	else	ret = 0;	ACLeaveFM(clifd, ret, resultflag);		print(" ACLeaveFM_%d ", ret );}void saacproto_ACChangeFM_recv(int fd, char *result, int charfdid){}void saacproto_ACDelFM_recv(int fd, char *result, int charfdid){	int ret;	int clifd = getfdFromFdid(charfdid);	if (CONNECT_checkfd(clifd) == FALSE)	return;	if (strcmp(result, SUCCESSFUL) == 0)	ret = 1;	else	ret = 0;		ACDelFM(clifd, ret);		print(" ACDelFM_%d ", ret);}void saacproto_ACShowFMList_recv(int fd, char *result, int fmnum, char *data)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -