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

📄 npc_petshop.c.bak

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 BAK
📖 第 1 页 / 共 2 页
字号:
	sprintf(token,"\n是[%s]没错吧?""%s"					"\n\n    买卖价格         %d STONE\n"					,petname,buf,cost);			}void NPC_PetDate2(int meindex,int talker,int select,char *token){		int petindex;	char *petname;	CHAR_setWorkInt(talker,CHAR_WORKSHOPRELEVANT,select);	petindex = CHAR_getCharPet( talker, select-1);	if( !CHAR_CHECKINDEX(petindex) ) return;	petname = CHAR_getUseName( petindex);	sprintf(token,"\n寄放[%s]"					"\n\n    寄放价格            %d stone\n"					,petname, NPC_GETPOOLCOST( talker)					);	}void NPC_PetDate3(int meindex,int talker,int select,char *token){	int poolindex;	int petindex;	char *petname;	poolindex = CHAR_getWorkInt( talker, CHAR_WORKSHOPRELEVANT) * 5 + select - 1;	CHAR_setWorkInt(talker,CHAR_WORKSHOPRELEVANT,poolindex );	petindex = CHAR_getCharPoolPet( talker, poolindex);	if( !CHAR_CHECKINDEX(petindex) ) return;	petname = CHAR_getUseName( petindex);	sprintf(token,"\n领回[%s]", petname);	}int NPC_GetCost(int meindex,int talker,int petindex){	int cost;	int levelcost;	int level;	int getlevel;	int graNo;	int rare;	int charm=50;	int petai;	int i=1;	double rate=1.0;	int intrate;	char buf[1024];	char buff2[128];	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20];			if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){		print("GetArgStrErr");		return FALSE;	}			getlevel=CHAR_getInt(petindex,CHAR_PETGETLV);	level=CHAR_getInt(petindex,CHAR_LV);	graNo=CHAR_getInt(petindex,CHAR_BASEBASEIMAGENUMBER);	rare=CHAR_getInt(petindex,CHAR_RARE);	if(getlevel==0)	getlevel=1	;		/*--袄蟾毛菲户月--*/	levelcost=(level*level)*10;	getlevel=(getlevel*getlevel)*10;// Syu ADD 修改卖转生宠金钱会变负的bug#ifdef _PET_2TRANS	if( CHAR_getInt(petindex , CHAR_TRANSMIGRATION)>0)#else	if( CHAR_getInt(petindex , CHAR_TRANSMIGRATION)==1)#endif		getlevel=10;	if(rare==0){ rare=1;	}else if(rare==1){ rare=5;	}else if(rare==2){ rare=8;}	cost = ((levelcost-getlevel)+(level*PETCOST))*rare;	intrate = CHAR_getWorkInt( meindex , CHAR_WORK_NOMALRATE);	rate=(double) intrate / 1000;		NPC_Util_GetStrFromStrWithDelim( npcarg, "special_pet", buf, sizeof( buf));	i=1;	/*--旦矢扑乓伙伊□玄匹煌遥今木月矢永玄毛喃曰请允  矢永玄及隙烂反  飓  寞)--*/	while( getStringFromIndexWithDelim(buf,",",i,buff2,sizeof(buff2)) !=FALSE )	{		if(strstr( buff2, "-")==NULL){			if(graNo == atoi(buff2)){				intrate=CHAR_getWorkInt( meindex , CHAR_WORK_SPECIALRATE);				rate=(double) intrate / 1000;				break; 			}		}else{			/*--失奶  丞互  15-25  及溥匹嗉濠日木化中月桦宁--*/			int start;			int end;			int tmp;			int graflg=0;			char	token2[128];				/*-"-"匹嗉濠日木凶铵户及醒袄午  及醒袄毛潸  --*/			getStringFromIndexWithDelim( buff2, "-", 1, token2, sizeof(token2));			start = atoi( token2);			getStringFromIndexWithDelim( buff2, "-", 2 ,token2, sizeof(token2));			end = atoi( token2);			/*--  寞互菅卞卅匀化中凶日}  木赘尹月**/			if(start > end){				tmp=start;				start=end;				end=tmp;			}			end++;			/*--"-"匹嗉濠日木凶坌及失奶  丞树  毛  月--*/			if(start <= graNo && graNo < end){				intrate=CHAR_getWorkInt( meindex , CHAR_WORK_SPECIALRATE);				rate=(double) intrate / 1000;				graflg=1;				break; 			}						if(graflg ==1) break;		}		i++;	}	/*--矢永玄及镝擦蘸毛      ---*/	petai=CHAR_getWorkInt(petindex,CHAR_WORKFIXAI);	/*--    毛必永玄--*/	charm = CHAR_getWorkInt(talker,CHAR_WORKFIXCHARM);	/*--      ≈镝擦蘸  / ㄡ  */	charm = charm + petai;	if(charm < 20){		charm = 20;	}	charm = charm / 2;	cost = (int)cost*rate;	rate=(double)charm/100;	/*--    镝擦喘仃--*/	cost = cost * rate;	/*--云嗯毛筏盛--*/   	CHAR_setWorkInt(talker,CHAR_WORKSHOPRELEVANTSEC,cost);	return cost;}#if 1void NPC_PetDel(int meindex, int talker,int select,char* token){	int petindex;	int petsel;	char szPet[128];	int cost;	int defpet;	int fd = getfdFromCharaIndex( talker );	NPC_MaxGoldOver( meindex, talker, NPC_PETSHOP_MSG_THANKS, token);	petsel=(CHAR_getWorkInt(talker,CHAR_WORKSHOPRELEVANT)-1);	petindex = CHAR_getCharPet( talker, petsel);	    if( !CHAR_CHECKINDEX(petindex) ) return;        // CoolFish: Family 2001/6/14	if (CHAR_getInt(petindex, CHAR_PETFAMILY) == 1){	/*		char buf[1024];		lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE,			WINDOW_BUTTONTYPE_OK,			-1, -1,		makeEscapeString("\n\n很抱歉~守护兽无法贩卖喔!\n请自己好好照顾!", buf, sizeof(buf)));*/		sprintf(token,"\n\n很抱歉~守护兽无法贩卖喔!\n请自己好好照顾!");		return;	}        // Robin 0725        if (CHAR_getInt( talker, CHAR_RIDEPET ) == petsel ){	/*        	char buf[1024];        	lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE,        		WINDOW_BUTTONTYPE_OK,        		-1, -1,        		makeEscapeString("\n\n骑乘中的宠物无法贩卖喔!", buf, sizeof(buf)));*/					sprintf(token,"\n\n骑乘中的宠物无法贩卖喔!");        	return;        }	if( CHAR_getWorkInt( CONNECT_getCharaindex(fd),                         CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return ;	defpet=CHAR_getInt(talker,CHAR_DEFAULTPET);	if(defpet==petsel){		CHAR_setInt(talker,CHAR_DEFAULTPET,-1);		lssproto_KS_send( fd, -1, TRUE);	}   	CHAR_setCharPet( talker, petsel, -1);	LogPet(		CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿   */		CHAR_getChar( talker, CHAR_CDKEY ),		CHAR_getChar( petindex, CHAR_NAME),		CHAR_getInt( petindex, CHAR_LV),		"sell(卖宠)",		CHAR_getInt( talker,CHAR_FLOOR),		CHAR_getInt( talker,CHAR_X ),		CHAR_getInt( talker,CHAR_Y ),		CHAR_getChar( petindex, CHAR_UNIQUECODE)   // shan 2001/12/14	);	CHAR_endCharOneArray( petindex );			snprintf( szPet, sizeof( szPet ), "K%d", petsel);	CHAR_sendStatusString( talker, szPet );	cost=NPC_GetCost(meindex,talker,petindex);	CHAR_AddGold( talker, cost);}#endifvoid NPC_PetDel2( int meindex, int talker, int select, char *token){	int petindex;	int selectpet;	int emptyindex;	char szPet[128];	int fd = getfdFromCharaIndex( talker );	if( fd == -1 ) {		fprint( "err\n");		return;	}	// 矢永玄犯□正  凳[矢永玄      仃  木  	selectpet = CHAR_getWorkInt( talker, CHAR_WORKSHOPRELEVANT) -1;	petindex = CHAR_getCharPet( talker, selectpet);	if( !CHAR_CHECKINDEX( petindex) ) return;        // Robin 0725        if (CHAR_getInt( talker, CHAR_RIDEPET ) == selectpet )        {/*        	char buf[1024];        	lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE,        		WINDOW_BUTTONTYPE_OK,        		-1, -1,        		makeEscapeString("\n\n骑乘中的宠物无法寄放喔!", buf, sizeof(buf)));*/					sprintf(token,"\n\n骑乘中的宠物无法寄放喔!");        	return;        }        	// 坞五毛茧允[蟆卞茧仄化民尼永弁仄化中月及匹]仇仇匹坞中化中卅中及反云井仄中	emptyindex = CHAR_getCharPoolPetElement( talker);	if( emptyindex == -1 ) {		fprint( "err\n");		return;	}	// 爵  赏  迕矢永玄卅日]公木及瓒  毛壅允[	if( CHAR_getInt( talker, CHAR_DEFAULTPET) == selectpet) {		CHAR_setInt( talker, CHAR_DEFAULTPET, -1);		lssproto_KS_send( fd, -1, TRUE);	}	//   仃  木  卞]矢永玄及奶件犯永弁旦毛戊疋□	CHAR_setCharPoolPet( talker, emptyindex, petindex);	// 矢永玄  井日壅允	CHAR_setCharPet( talker, selectpet, -1);	// 丢永本□斥潸  	NPC_MaxGoldOver( meindex, talker, NPC_PETSHOP_MSG_POOLTHANKS, token);	// 云嗯蛹日允	CHAR_DelGold( talker, NPC_GETPOOLCOST( talker) );	// 云嗯犯□正霜月	CHAR_send_P_StatusString(talker,CHAR_P_STRING_GOLD);	snprintf( szPet, sizeof( szPet ), "K%d", selectpet);	// 蕙仄中矢永玄旦  □正旦霜曰勾仃月	CHAR_sendStatusString( talker, szPet );	// 矢永玄毛  仃凶夫弘	LogPet(		CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿   */		CHAR_getChar( talker, CHAR_CDKEY ),		CHAR_getChar( petindex, CHAR_NAME),		CHAR_getInt( petindex, CHAR_LV),		"pool(寄放宠物店)",		CHAR_getInt( talker,CHAR_FLOOR),		CHAR_getInt( talker,CHAR_X ),		CHAR_getInt( talker,CHAR_Y ),        CHAR_getChar( petindex, CHAR_UNIQUECODE)   // shan 2001/12/14	);}	void NPC_PetDel3( int meindex, int talker, int select, char *token){	int petindex;	int selectpet;	int emptyindex;	char szPet[128];	int workindex[CHAR_MAXPOOLPETHAVE];	int i;	int cnt;	selectpet = CHAR_getWorkInt( talker, CHAR_WORKSHOPRELEVANT) ;	petindex = CHAR_getCharPoolPet( talker, selectpet);		if( !CHAR_CHECKINDEX( petindex) ) return;	emptyindex = CHAR_getCharPetElement( talker);	if( emptyindex == -1 ) {		fprint( "err\n");		return;	}	// 如果是守护兽改为普通兽	if( CHAR_getInt( petindex, CHAR_PETFAMILY) == 1 		&& CHAR_getInt( talker, CHAR_FMLEADERFLAG) != 3 ) {		CHAR_setInt( petindex, CHAR_PETFAMILY, 0);		CHAR_talkToCli( talker, -1, "守护兽改为普通兽", CHAR_COLORYELLOW);	}#ifdef _JZ_CF_DELPETITEM
	int ID1,ID2;	int j;
	ID1=CHAR_getInt( petindex, CHAR_PETID);
	for( j=0;j<5;j++ ) {
		ID2 = getDelPet(j);
		if(ID2 == 0)break;
		if( ID1 == ID2){
			CHAR_setDepotPetIndex( talker, i, -1);//清除不能当宠物的角色
			LogPet( CHAR_getChar( talker, CHAR_NAME ),
							CHAR_getChar( talker, CHAR_CDKEY ),
							CHAR_getChar( petindex, CHAR_NAME),
							CHAR_getInt( petindex, CHAR_LV),
							"petshop(清除CF设置的宠物)",
							CHAR_getInt( talker,CHAR_FLOOR),
							CHAR_getInt( talker,CHAR_X ),
							CHAR_getInt( talker,CHAR_Y ),
							CHAR_getChar( petindex, CHAR_UNIQUECODE)
						);
			CHAR_talkToCli(talker,-1,"系统清除你仓库里的宠物",CHAR_COLORWHITE);
			goto petshopOut;
		}
	}
#endif	CHAR_setCharPet( talker, emptyindex, petindex);	CHAR_setCharPoolPet( talker, selectpet, -1);	NPC_MaxGoldOver( meindex, talker, NPC_PETSHOP_MSG_POOLTHANKS, token);	snprintf( szPet, sizeof( szPet ), "K%d", emptyindex);	CHAR_sendStatusString( talker, szPet );	snprintf( szPet, sizeof( szPet), "W%d",emptyindex);	CHAR_sendStatusString( talker, szPet );	for( i = 0; i < CHAR_MAXPOOLPETHAVE; i ++ ) {		workindex[i] = -1;	}	cnt = 0;	for( i = 0; i < CHAR_MAXPOOLPETHAVE; i ++ ) {		int petindex = CHAR_getCharPoolPet( talker, i);		if( CHAR_CHECKINDEX( petindex) ) {			workindex[cnt++] = petindex;		}	}	for( i = 0; i < CHAR_MAXPOOLPETHAVE; i ++ ) {		CHAR_setCharPoolPet( talker, i, workindex[i]);	}	LogPet(		CHAR_getChar( talker, CHAR_NAME ),		CHAR_getChar( talker, CHAR_CDKEY ),		CHAR_getChar( petindex, CHAR_NAME),		CHAR_getInt( petindex, CHAR_LV),		"draw(领取宠物店)",		CHAR_getInt( talker,CHAR_FLOOR),		CHAR_getInt( talker,CHAR_X ),		CHAR_getInt( talker,CHAR_Y ),		CHAR_getChar( petindex, CHAR_UNIQUECODE)   // shan 2001/12/14	);	}	petshopOut:void NPC_getDrawPet( int meindex, int toindex, char *token, int *buttontype, int select){	// ㄠ矢□斥丐凶曰及垫醒	#define		LINENUM		5	char buf[1024];	int i;	int startnum, endnum;	int petindex = -1;	// 蜇箕及矢□斥	int page = CHAR_getWorkInt( toindex, CHAR_WORKSHOPRELEVANT);	int limit;	//andy_reEdit 2003/09/18	limit = (CHAR_getInt(toindex,CHAR_TRANSMIGRATION)*2)+5;	endnum = (page + select+1)*LINENUM ;	startnum = endnum - LINENUM;	*buttontype = WINDOW_BUTTONTYPE_CANCEL;	// 羹矢□斥譬帮[	if( endnum >= limit ) {		endnum = limit;		if( page +select!= 0 ) *buttontype |= WINDOW_BUTTONTYPE_PREV;	}	else if( endnum <= LINENUM ) {		endnum = LINENUM;		*buttontype |= WINDOW_BUTTONTYPE_NEXT;	}	else {		*buttontype |= WINDOW_BUTTONTYPE_PREV | WINDOW_BUTTONTYPE_NEXT;	}	CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, page +select);		strcpy( token, "2\n    请选择宠物    \n\n");	for( i =  startnum; i < endnum; i ++ ) {		petindex = CHAR_getCharPoolPet( toindex, i);		if( CHAR_CHECKINDEX( petindex) ) {			snprintf( buf, sizeof( buf), "LV.%3d MaxHP %3d %s\n", 					CHAR_getInt( petindex, CHAR_LV),					CHAR_getWorkInt( petindex, CHAR_WORKMAXHP),					CHAR_getUseName( petindex)					);		}		else {			strcpy( buf, "\n");		}		strcat( token, buf);	}	// 戚及域蜊毛譬屯化]  井匀凶日戚尺示正件毛潸月	if( i != limit ) {		petindex = CHAR_getCharPoolPet( toindex, i);		if( !CHAR_CHECKINDEX( petindex)) {			*buttontype &= ~WINDOW_BUTTONTYPE_NEXT;		}	}}/* *云嗯互左□田□公及职中欠中欠 */void	NPC_MaxGoldOver(int meindex,int toindex,int select,char *token){	char buf[1024];	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20];	NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg));		if( select < 0 || select >= arraysizeof( shopmsg)) return;		if( NPC_Util_GetStrFromStrWithDelim( npcarg, shopmsg[select].option, buf, sizeof( buf))	== NULL ) 	{		strcpy( buf, shopmsg[select].defaultmsg);	}	snprintf(token,sizeof(buf),"\n\n%s",buf);}

⌨️ 快捷键说明

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