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

📄 npc_gamblemaster.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "version.h"#include <string.h>#include "char.h"#include "object.h"#include "char_base.h"#include "npcutil.h"#include "lssproto_serv.h"#include "handletime.h"#include "readmap.h"#include "log.h"#include "npc_eventaction.h"#ifdef _GAMBLE_ROULETTE#include "npc_gamblemaster.h"void defPlayerGold( int meindex, int flg);void NPC_GAMBLEMASTER_RESET( int meindex);void Codef_Gold( int meindex, int toindex, int stone, int flg, char *token);void NPC_GambleRoulette_selectWindow(int meindex,int toindex,int num,int select);enum{	ROULETTE_START=0,	ROULETTE_SELECT,	ROULETTE_LOOK,	ROULETTE_END,};enum{	roulette1 = 11,	roulette2, roulette3, roulette4, roulette5,	roulette6, roulette7, 	roulette8, roulette9, roulette10, roulette11, roulette12, roulette13, roulette14,	roulette15,	roulette16,	roulette17,	roulette18,	roulette19,	roulette20,		roulette21 = 41, roulette22, roulette23, roulette24, roulette25,	roulette26,		roulette27,	roulette28,	roulette29, roulette30, roulette31, roulette32,	roulette33,	roulette34,	roulette35,	roulette36,	roulette37,	roulette38,	roulette39,	roulette40,	roulette41 = 71, roulette42, roulette43, roulette44, roulette45,	roulette51 = 101, roulette52=102, roulette53=103,	roulette61 = 111, roulette62=112,};typedef struct tagGambleMaster{	int m_fx;	int m_fy;	int m_type;	//号码 	int m_RG;	//红绿1 2	int m_EO;	//单双1 2	int m_SI;	int m_IN;	char str_type[56];	int m_nums;}GambleEndType;GambleEndType EndTypedef[60]={{22, 8 , roulette1 , roulette41, roulette43, roulette51, roulette61, "号码红1", 0},{7 , 8 , roulette1 , roulette41, roulette43, roulette51, roulette61, "号码红1", 0},{22, 10, roulette3 , roulette41, roulette43, roulette51, roulette61, "号码红3", 0},{7 , 6 , roulette3 , roulette41, roulette43, roulette51, roulette61, "号码红3", 0},{20, 11, roulette5 , roulette41, roulette43, roulette51, roulette61, "号码红5", 0},{9 , 5 , roulette5 , roulette41, roulette43, roulette51, roulette61, "号码红5", 0},{19, 5 , roulette6 , roulette41, roulette44, roulette53, roulette61, "号码红6", 0},{10, 11, roulette6 , roulette41, roulette44, roulette53, roulette61, "号码红6", 0},{17, 5 , roulette8 , roulette41, roulette44, roulette53, roulette61, "号码红8", 0},{12, 11, roulette8 , roulette41, roulette44, roulette53, roulette61, "号码红8", 0},{16, 5 , roulette9 , roulette41, roulette43, roulette53, roulette61, "号码红9", 0},{13, 11, roulette9 , roulette41, roulette43, roulette53, roulette61, "号码红9", 0},{15, 5 , roulette10, roulette41, roulette44, roulette53, roulette61, "号码红10", 0},{14, 11, roulette10, roulette41, roulette44, roulette53, roulette61, "号码红10", 0},{12, 5 , roulette13, roulette41, roulette43, roulette52, roulette62, "号码红13", 0},{17, 11, roulette13, roulette41, roulette43, roulette52, roulette62, "号码红13", 0},{22, 6 , roulette17, roulette41, roulette43, roulette53, roulette62, "号码红17", 0},{7 , 10, roulette17, roulette41, roulette43, roulette53, roulette62, "号码红17", 0},{22, 5 , roulette18, roulette41, roulette44, roulette52, roulette62, "号码红18", 0},{7 , 11, roulette18, roulette41, roulette44, roulette52, roulette62, "号码红18", 0},{22, 9 , roulette22, roulette42, roulette44, roulette51, roulette61, "号码绿2", 0},{7 , 7 , roulette22, roulette42, roulette44, roulette51, roulette61, "号码绿2", 0},{21, 11, roulette24, roulette42, roulette44, roulette51, roulette61, "号码绿4", 0},{8 , 5 , roulette24, roulette42, roulette44, roulette51, roulette61, "号码绿4", 0},{18, 5 , roulette27, roulette42, roulette43, roulette53, roulette61, "号码绿7", 0},{11, 11, roulette27, roulette42, roulette43, roulette53, roulette61, "号码绿7", 0},{19, 11, roulette31, roulette42, roulette43, roulette51, roulette62, "号码绿11", 0},{10, 5 , roulette31, roulette42, roulette43, roulette51, roulette62, "号码绿11", 0},{18, 11, roulette32, roulette42, roulette44, roulette51, roulette62, "号码绿12", 0},{11, 5 , roulette32, roulette42, roulette44, roulette51, roulette62, "号码绿12", 0},{16, 11, roulette34, roulette42, roulette44, roulette52, roulette62, "号码绿14", 0},{14, 5 , roulette34, roulette42, roulette44, roulette52, roulette62, "号码绿14", 0},{15, 11, roulette35, roulette42, roulette43, roulette52, roulette62, "号码绿15", 0},{13, 5 , roulette35, roulette42, roulette43, roulette52, roulette62, "号码绿15", 0},{22, 7 , roulette36, roulette42, roulette44, roulette53, roulette62, "号码绿16", 0},{7 , 9 , roulette36, roulette42, roulette44, roulette53, roulette62, "号码绿16", 0},{21, 5 , roulette39, roulette42, roulette43, roulette52, roulette62, "号码绿19", 0},{8 , 11, roulette39, roulette42, roulette43, roulette52, roulette62, "号码绿19", 0},{20, 5 , roulette40, roulette42, roulette44, roulette52, roulette62, "号码绿20", 0},{9 , 11, roulette40, roulette42, roulette44, roulette52, roulette62, "号码绿20", 0},{22,11, roulette45, 0, 0, roulette52, 0, "号码00"},{ 7, 5, -1, -1, -1, -1, -1, "号码X", 0},{ -1, -1, -1, -1, -1, -1, -1, "无", 0},};enum {	/*	NPC_WORK_ROUTETOX = CHAR_NPCWORKINT1,	NPC_WORK_ROUTETOY = CHAR_NPCWORKINT2,	NPC_WORK_ROUTEPOINT = CHAR_NPCWORKINT3,*/	NPC_WORK_NPCAI = CHAR_NPCWORKINT3,	NPC_WORK_NPCACTION = CHAR_NPCWORKINT3,	NPC_WORK_MASTERSTONE = CHAR_NPCWORKINT4,	NPC_WORK_MODE = CHAR_NPCWORKINT5,	NPC_WORK_SYSTIME = CHAR_NPCWORKINT6,	NPC_WORK_GAMEFLG = CHAR_NPCWORKINT7,	NPC_WORK_GAMBLECODE = CHAR_NPCWORKINT8,	NPC_WORK_MASTERFLG = CHAR_NPCWORKINT9,	NPC_WORK_ENDPOINT = CHAR_NPCWORKINT10,};#define		ROULETTE_ERRTIME	500#define		ROULETTE_STANDBY1	40#define		ROULETTE_LOOPTIME	3000BOOL NPC_Gamble_MasterInit( int meindex ){	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE];	char	buf1[256];	if( NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)) == NULL )	{		print("\n not found argstr ");		return FALSE;	}	if( NPC_Util_GetStrFromStrWithDelim( argstr, "gamble_code",buf1, sizeof(buf1)) == NULL ) {		print("\n gamble_code error: not found !!");		return FALSE;	}	CHAR_setWorkInt( meindex, NPC_WORK_GAMBLECODE, atoi( buf1));	//游戏阶段	CHAR_setWorkInt( meindex, NPC_WORK_GAMEFLG, 0);	CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_GAMBLEMASTER );	// NPC_WORK_MODE 主持人状态 0: 等待 1:GAME START 2:GAME END	CHAR_setWorkInt( meindex, NPC_WORK_MODE, 0);	CHAR_setWorkInt( meindex, NPC_WORK_MASTERFLG, 30);	CHAR_setWorkInt( meindex, NPC_WORK_MASTERSTONE, 0);	CHAR_setWorkInt( meindex, NPC_WORK_NPCAI, 0);	//设定LOOP TIMER	CHAR_setInt( meindex, CHAR_LOOPINTERVAL, ROULETTE_LOOPTIME);	//用来记录时间点	CHAR_setWorkInt( meindex, NPC_WORK_SYSTIME, NowTime.tv_sec);    return TRUE;}void NPC_Gamble_MasterTalked( int meindex , int talkerindex , char *szMes , int color ){	char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];	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;	}	if( NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)) == NULL )	{		print("\n not found argstr ");		return;	}	// 0 选单 11 - 19 规则 21 - 29 积分	CHAR_setWorkInt(talkerindex , CHAR_WORKSHOPRELEVANT,0);	NPC_GambleRoulette_selectWindow( meindex, talkerindex, ROULETTE_START, -1 );}void NPC_GambleRoulette_selectWindow(int meindex,int toindex,int num,int select){	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];	char buf1[256],buf2[256];	char token[256];	int buttontype = 0, windowtype = 0, windowno = 0;	int fd = getfdFromCharaIndex( toindex);	int pagenum=0, i;	windowtype = WINDOW_MESSAGETYPE_MESSAGE;	if( NPC_Util_GetArgStr( meindex, npcarg, sizeof( npcarg)) == NULL )	{		print("\n not found npcarg ");		CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT,0);		return;	}	switch( num)	{	case ROULETTE_START:		i = 1;		strcpy( token, "\0");		sprintf( buf2,"%s%d", "gamble_msg0", i);		while( NPC_Util_GetStrFromStrWithDelim( npcarg, buf2, buf1, sizeof( buf1) ) != NULL )	{			if( strstr( buf1, "NULL" ) == NULL )	{				strcat( token , buf1);				strcat( token, "\n");			}else	{				strcat( token, "\n");			}			i++;			sprintf( buf2,"%s%d", "gamble_msg0", i);		}	  	windowtype=WINDOW_MESSAGETYPE_SELECT;	  	windowno = WINDOWTYPE_GAMBLEROULETTE_START; 		break;	break;	case ROULETTE_SELECT:		//页 select		pagenum = CHAR_getWorkInt( toindex , CHAR_WORKSHOPRELEVANT);		strcpy( token, "\0");		if( select >= 0 )	{			sprintf( buf2,"%s%2d", "page_num", select);			CHAR_setWorkInt( toindex , CHAR_WORKSHOPRELEVANT, select+1);		}else	{			sprintf( buf2,"%s%2d", "page_num", pagenum );			pagenum+=1;			CHAR_setWorkInt( toindex , CHAR_WORKSHOPRELEVANT, pagenum);		}				if( NPC_Util_GetStrFromStrWithDelim( npcarg, buf2, token, sizeof( token) ) == NULL )	{			print("\n error: not found token:%s", token);			CHAR_setWorkInt( toindex , CHAR_WORKSHOPRELEVANT,0);			return;		}		sprintf( buf2,"%s%2d", "page_num", CHAR_getWorkInt( toindex , CHAR_WORKSHOPRELEVANT));		if( NPC_Util_GetStrFromStrWithDelim( npcarg, buf2, buf1, sizeof( buf1) ) == NULL )	{			windowno = WINDOWTYPE_GAMBLEROULETTE_END;			buttontype = WINDOW_BUTTONTYPE_OK;		}else	{			windowno = WINDOWTYPE_GAMBLEROULETTE_SELECT;			buttontype = WINDOW_BUTTONTYPE_NEXT;		}	break;	case ROULETTE_LOOK:		{	//显示时补回积分			int G_num = CHAR_getInt( toindex, CHAR_GAMBLENUM );			if( CHAR_getWorkInt( toindex, CHAR_WORKSTAKEFLAG) != FALSE)	{				for( i=0; i<5; i++)	{					if( CHAR_getWorkInt( toindex, i+CHAR_WORKSTAKETYPE1) > 0 )						G_num++;				}			}			if( G_num < 0 ) G_num = 0;			sprintf( token,"你的游乐场积分为%d。", G_num );			windowno = WINDOWTYPE_GAMBLEROULETTE_END;			buttontype = WINDOW_BUTTONTYPE_OK;		}		break;	case ROULETTE_END:		if( NPC_Util_GetStrFromStrWithDelim( npcarg, "page_endmsg", token, sizeof( token) ) == NULL )	{			print("\n error: not found end_msg");			CHAR_setWorkInt( toindex , CHAR_WORKSHOPRELEVANT,0);			return;		}		windowno = WINDOWTYPE_GAMBLEROULETTE_END;		buttontype = WINDOW_BUTTONTYPE_OK;	break;	}	lssproto_WN_send( fd, windowtype, buttontype, windowno, 		CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token);}void NPC_Gamble_MasterWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data){	int pagenum=0;		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;	}    	switch( seqno )	{	case WINDOWTYPE_GAMBLEROULETTE_START:		pagenum = atoi( data);		if( pagenum == 4 )	{			NPC_GambleRoulette_selectWindow( meindex, talkerindex, ROULETTE_END, -1 );		}else	{			if( pagenum == 3 )	{	//ROULETTE_LOOK				NPC_GambleRoulette_selectWindow( meindex, talkerindex, ROULETTE_LOOK, -1 );			}else	{				pagenum = (pagenum*10)+1;				NPC_GambleRoulette_selectWindow( meindex, talkerindex, ROULETTE_SELECT, pagenum );			}		}	break;	case WINDOWTYPE_GAMBLEROULETTE_SELECT:			NPC_GambleRoulette_selectWindow( meindex, talkerindex, ROULETTE_SELECT, -1 );	break;	case WINDOWTYPE_GAMBLEROULETTE_END:			CHAR_setWorkInt(talkerindex , CHAR_WORKSHOPRELEVANT, 0);	break;	}

⌨️ 快捷键说明

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