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

📄 npc_gamblebank.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
					windowno,					CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),					token);}void NPC_GambleBankWindowTalked ( int meindex, int talkerindex, int seqno, int select, char *data){	int stone_gold = 0;	int flg=1;	int work_type=-1;	int type;	type = atoi( data);	if( !CHAR_CHECKINDEX( talkerindex) || !CHAR_CHECKINDEX( meindex) )		return;	work_type = CHAR_getWorkInt( meindex, NPC_WORK_WORKTYPE );	if( work_type < 1 || work_type > 4 )	{		return;	}	if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) {    		return;	}#ifdef _GAMBLEBANK_U_NOLOCK#else	{		char buf1[256];		if( CHAR_getWorkInt( meindex , NPC_WORK_INDEX) != talkerindex )	{			strcpy( buf1,"我正忙着呢!");			CHAR_talkToCli( talkerindex, meindex, buf1,  CHAR_COLORYELLOW);			CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);			return;		}	}#endif	if(NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) {		if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return;	}    	if( NPC_Util_CharDistance( talkerindex, meindex ) > 2) {		return;	}	CHAR_setWorkInt( meindex, NPC_WORK_CURRENTTIME, NowTime.tv_sec);	switch( seqno) {	  case NPC_GambleBank_START:		  if( select == WINDOW_BUTTONTYPE_YES )	{			NPC_GambleBank_selectWindow( meindex, talkerindex, GAMBLE_SELET, flg);		  }else	{			  NPC_GambleBank_selectWindow( meindex, talkerindex, GAMBLE_END, flg);		  }	  	break;	  case NPC_GambleBank_SELECT:		  if( type == 1 )	{	//银行			CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 2);			NPC_GambleBank_selectWindow( meindex, talkerindex, GAMBLE_MAN_BANK, flg);		  }else if( type == 2 )	{	//换物			CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0);			NPC_GambleBank_selectWindow( meindex, talkerindex, GAMBLE_MAN_CHANG1, flg);		  }else	{			  NPC_GambleBank_selectWindow( meindex, talkerindex, GAMBLE_END, flg);		  }	  break;	  case NPC_GambleBank_BANK:	//2			if( CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT) != 2 )	//错误程序				return;			if( work_type != 2 && work_type != 4 )	{				CHAR_setWorkInt( meindex , NPC_WORK_INDEX, -1);				return;			}			if( select == 4 && atoi( data) != 0 )	{				stone_gold = atoi( data);				flg = NPC_GambleBank_DoGold( meindex, talkerindex, stone_gold, select);				//flg = 1 正常 flg = 2 钱不够 flg <= 0 错误				if( flg == 1 )	{					CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);					CHAR_setWorkInt( meindex , NPC_WORK_INDEX, -1);					return;				}			}			NPC_GambleBank_selectWindow( meindex, talkerindex, GAMBLE_END, flg);		break;	  case NPC_GambleBank_CHANG1:	//换物		  {			  int page,ItemID;			  int count;			  type -=1;			  page = CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT)*LIST_PAGE;			  if( work_type != 3 && work_type != 4 )	{					CHAR_setWorkInt( meindex , NPC_WORK_INDEX, -1);					return;			  }			  if( page < 0 )	//错误对话程序				  return;			  if( (page+type) < 0 || (page+type) >= arraysizeof( GB_ITEMS) )	{				NPC_GambleBank_selectWindow( meindex, talkerindex, GAMBLE_END, flg);			  }else	if( !strcmp( GB_ITEMS[page+type].name,"NEXT") ){				  CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT,						CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT) + 1);				  NPC_GambleBank_selectWindow( meindex, talkerindex, GAMBLE_MAN_CHANG1, flg);			  }else	if( !strcmp( GB_ITEMS[page+type].name,"END") ){					CHAR_setWorkInt( meindex , NPC_WORK_INDEX, -1);					CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);					return;			  }else	{				  if( type < 7 && type >= 0 )	{						  if( GB_ITEMS[page+type].name == NULL ||							  !strcmp( GB_ITEMS[page+type].name, "\0") )	{						  }else	{							  ItemID = GB_ITEMS[page+type].ItemId;	//ID							  count = GB_ITEMS[page+type].Gnum;	//积分							  NPC_GambleBank_AddItem( meindex, talkerindex, ItemID, count);						  }						  CHAR_setWorkInt( meindex , NPC_WORK_INDEX, -1);				  }				  CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);			  }		  }		break;	  case NPC_GambleBank_END:		  CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);		break;	}}int NPC_GambleBank_DoGold( int meindex, int toindex, int Gold, int flg){	//flg = 1 正常 flg = 2 钱不够 flg <= 0 错误 3 = 个人存款将满 4 = 个人银行将满 5 = 单次最高金额	char buf1[256];	int player_gold = CHAR_getInt( toindex, CHAR_GOLD );	int stone_def = 0; //手续费//	int def = GAMBLEBANK_DEF;	//不作无意义的存取款	if( flg != 4 )		return 0;	if( Gold == 0 )	{		return 0;	}		if( Gold < 0 )	{	//取款		Gold *=-1;		//stone_def = (Gold * def) /100;		stone_def = 300;		if( Gold > GAMBLEBANK_GETMAX )	{			return 5;		}else if( Gold < GAMBLEBANK_GETMIN )	{			return 6;		}		if( ( player_gold + Gold ) > CHAR_getMaxHaveGold(toindex) )	{			return 3;	//取款後将超过个人金额		}else	if( (Gold + stone_def)> CHAR_getInt( toindex, CHAR_PERSONAGOLD ) )	{	//银行存款不够			return 2;		}				CHAR_setInt( toindex, CHAR_PERSONAGOLD, (CHAR_getInt( toindex, CHAR_PERSONAGOLD )-(Gold+stone_def)));		CHAR_AddGold( toindex, Gold);		sprintf( buf1,"取款:%d ,手续费:%d,银行剩余:%d 。", Gold, stone_def, CHAR_getInt( toindex, CHAR_PERSONAGOLD ));		CHAR_talkToCli( toindex, meindex, buf1,  CHAR_COLORYELLOW);		LogBankStone(    CHAR_getChar( toindex, CHAR_NAME ), CHAR_getChar( toindex, CHAR_CDKEY ),					toindex, Gold, 					"GB_Bank_Get(银行取款)", 					CHAR_getInt( toindex, CHAR_FLOOR),		            CHAR_getInt( toindex, CHAR_X ), CHAR_getInt( toindex, CHAR_Y ) ,					CHAR_getInt( toindex, CHAR_GOLD ),					CHAR_getInt( toindex, CHAR_PERSONAGOLD )					);		return 1;	}else if( Gold > 0 )	{	//存款		if( Gold > player_gold )	{			return 2;		}else if( (Gold + CHAR_getInt( toindex, CHAR_PERSONAGOLD ) ) > CHAR_MAXPERSONAGOLD )  {			return 4;		}		CHAR_DelGold( toindex, Gold );		CHAR_setInt( toindex, CHAR_PERSONAGOLD, (CHAR_getInt( toindex, CHAR_PERSONAGOLD ) + Gold ) );		sprintf( buf1,"存款:%d ,银行剩余:%d 。", Gold, CHAR_getInt( toindex, CHAR_PERSONAGOLD ));		CHAR_talkToCli( toindex, meindex, buf1,  CHAR_COLORYELLOW);		LogBankStone(    CHAR_getChar( toindex, CHAR_NAME ), CHAR_getChar( toindex, CHAR_CDKEY ),					toindex, Gold, 					"GB_Bank_save(银行存款)", 					CHAR_getInt( toindex, CHAR_FLOOR),		            CHAR_getInt( toindex, CHAR_X ), CHAR_getInt( toindex, CHAR_Y ),					CHAR_getInt( toindex, CHAR_GOLD ),					CHAR_getInt( toindex, CHAR_PERSONAGOLD )					);		return 1;	}	return 0;}BOOL NPC_GambleBank_AddItem( int meindex, int toindex, int itemId, int count){	int i=-1,itemindex=-1;	int ret=-1;	char token[256]; 	strcpy( token,"\0");	if( count < 0 || itemId < 0 )		return FALSE;	if( CHAR_getInt( toindex, CHAR_GAMBLENUM) < count )	{		sprintf( token,"游乐场积分不足!");		CHAR_talkToCli( toindex, -1,token,CHAR_COLORWHITE);		return FALSE;	}	for( i = 0 ; i < CHAR_MAXITEMHAVE ; i++ ){		itemindex=CHAR_getItemIndex( toindex , i );		if( itemindex == -1 )	{			break;		}	}	if( i == CHAR_MAXITEMHAVE )	{		snprintf( token,sizeof( token), "物品栏空间不足!!");		CHAR_talkToCli( toindex, -1, token,  CHAR_COLORWHITE);		return FALSE;	}	itemindex = ITEM_makeItemAndRegist( itemId);	if(itemindex == -1)		return FALSE;	ret = CHAR_addItemSpecificItemIndex( toindex, itemindex);	if( ret < 0 || ret >= CHAR_MAXITEMHAVE ) {		ITEM_endExistItemsOne( itemindex);		return FALSE;	}		LogItem(				CHAR_getChar( toindex, CHAR_NAME ),				CHAR_getChar( toindex, CHAR_CDKEY ),#ifdef _add_item_log_name  // WON ADD 在item的log中增加item名称				itemindex,#else				ITEM_getInt( itemindex, ITEM_ID ),#endif				"G_BANK(游乐场积分兑换道具)",				CHAR_getInt( toindex,CHAR_FLOOR),				CHAR_getInt( toindex,CHAR_X ),				CHAR_getInt( toindex,CHAR_Y ),				ITEM_getChar( itemindex, ITEM_UNIQUECODE),				ITEM_getChar( itemindex, ITEM_NAME),				ITEM_getInt( itemindex, ITEM_ID)		);	sprintf( token,"拿到%s",ITEM_getChar( itemindex, ITEM_NAME));	CHAR_talkToCli( toindex, -1,token,CHAR_COLORWHITE);	CHAR_sendItemDataOne( toindex, ret);	CHAR_setInt( toindex, CHAR_GAMBLENUM, CHAR_getInt( toindex, CHAR_GAMBLENUM) - count);	sprintf( token,"游乐场积分剩余: %d", CHAR_getInt( toindex, CHAR_GAMBLENUM));	CHAR_talkToCli( toindex, -1,token,CHAR_COLORWHITE);	return TRUE;}#endif

⌨️ 快捷键说明

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