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

📄 trade.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 3 页
字号:
		if ((pet6 != -1) && (CHAR_getInt(pet6, CHAR_LV)			 - CHAR_getInt(meindex, CHAR_LV) > 5)			 && (CHAR_getInt(meindex,CHAR_TRANSMIGRATION) <= 0))		 		return -13;	}	if( CHAR_getWorkInt( toindex, CHAR_PickAllPet) != TRUE )	{		if ((pet3 != -1) && (CHAR_getInt(pet3, CHAR_LV)			 - CHAR_getInt(toindex, CHAR_LV) > 5)			 && (CHAR_getInt(toindex,CHAR_TRANSMIGRATION) <= 0))		 		return -14;	}	if ((pet6 != -1) && (CHAR_getInt(pet6, CHAR_PETFAMILY) == 1))		 	return -15;	if ((pet3 != -1) && (CHAR_getInt(pet3, CHAR_PETFAMILY) == 1))		 	return -15;	TRADE_ChangeItem(meindex, toindex, a, d, item1, item4,		itemindex1, itemindex4);	TRADE_ChangeItem(meindex, toindex, b, e, item2, item5,		itemindex2, itemindex5);	TRADE_ChangeItem(meindex, toindex, c, f, pet3, pet6,		itemindex3, itemindex6);	// 写入 trade.log	{		char petname1[256], petname2[256];		int pet1lv, pet2lv;		int logitem1 = 0, logitem2 = 0, logitem4 = 0, logitem5 = 0;		if ((strcmp(a, "I") == 0) && (item1 != -1))	logitem1 = ITEM_getInt(item1, ITEM_ID);		if ((strcmp(b, "I") == 0) && (item2 != -1))	logitem2 = ITEM_getInt(item2, ITEM_ID);		if ((strcmp(a, "G") == 0) && (item1 == -1))	logitem1 = itemindex1;		if ((strcmp(b, "G") == 0) && (item2 == -1))	logitem2 = itemindex2;		if ((strcmp(c, "P") == 0) && (pet3 == -1))		{			sprintf(petname1, "NONE");			pet1lv = 0;		}		else		{			sprintf(petname1, "%s", CHAR_getChar(pet3, CHAR_NAME));			pet1lv = CHAR_getInt(pet3, CHAR_LV);		}		if ((strcmp(f, "P") == 0) && (pet6 == -1))		{			sprintf(petname2, "NONE");			pet2lv = 0;		}		else		{			sprintf(petname2, "%s", CHAR_getChar(pet6, CHAR_NAME));			pet2lv = CHAR_getInt(pet6, CHAR_LV);		}		if ((strcmp(d, "I") == 0) && (item4 != -1))	logitem4 = ITEM_getInt(item4, ITEM_ID);		if ((strcmp(e, "I") == 0) && (item5 != -1))	logitem5 = ITEM_getInt(item5, ITEM_ID);		if ((strcmp(d, "G") == 0) && (item4 == -1))	logitem4 = itemindex4;		if ((strcmp(e, "G") == 0) && (item5 == -1))	logitem5 = itemindex5;	        sprintf(buf, "%s\t%s\t(%s[%d,%s],%s[%d,%s],%s[%s,%d,%s]) <-> %s\t%s\t(%s[%d,%s],%s[%d,%s],%s[%s,%d,%s])",                        CHAR_getChar(meindex, CHAR_CDKEY), mycharaname,                        a, logitem1, ITEM_getChar( item1, ITEM_UNIQUECODE), b, logitem2, ITEM_getChar( item2, ITEM_UNIQUECODE),						c, petname1, pet1lv, CHAR_getChar( pet3, CHAR_UNIQUECODE),                        CHAR_getChar(toindex, CHAR_CDKEY), tocharaname,                        d, logitem4, ITEM_getChar( item4, ITEM_UNIQUECODE), e, logitem5, ITEM_getChar( item5, ITEM_UNIQUECODE), 						f, petname2, pet2lv, CHAR_getChar( pet6, CHAR_UNIQUECODE));		LogTrade(buf);	}	        return 1;   }	return 2;}BOOL TRADE_ChangeItem(int meindex, int toindex, char *a, char *b,	int item1, int item2, int itemindex1, int itemindex2){   int gold1 = 0, gold2 = 0, eptitem = -1;   if (CHAR_CHECKINDEX(meindex) == FALSE)	return FALSE;   if (CHAR_CHECKINDEX(toindex) == FALSE)	return FALSE;   // 道具 <-> 道具   if ((strcmp(a, "I") == 0) && (strcmp(b, "I") == 0))   {   	// 无 <-> 道具   	if ((itemindex1 == -1) && (itemindex2 > 0))   	{   	   if (ITEM_CHECKINDEX(item2) == FALSE)	return FALSE;   	   eptitem = CHAR_findEmptyItemBox(meindex);   	   if (eptitem < 0)	return FALSE;   	   CHAR_setItemIndex(meindex, eptitem, item2);   	   ITEM_setWorkInt(item2, ITEM_WORKCHARAINDEX, meindex);   	   ITEM_setWorkInt(item2, ITEM_WORKOBJINDEX, -1);   	   CHAR_setItemIndex(toindex, itemindex2, -1);   	}   	// 道具 <-> 无   	else if ((itemindex1 > 0) && (itemindex2 == -1))   	{   	   if (ITEM_CHECKINDEX(item1) == FALSE)	return FALSE;   	   eptitem = CHAR_findEmptyItemBox(toindex);   	   if (eptitem < 0)	return FALSE;   	   CHAR_setItemIndex(toindex, eptitem, item1);   	   ITEM_setWorkInt(item1, ITEM_WORKCHARAINDEX, toindex);   	   ITEM_setWorkInt(item1, ITEM_WORKOBJINDEX, -1);   	   CHAR_setItemIndex(meindex, itemindex1, -1);   	}   	// 道具 <-> 道具   	else if (itemindex1 > 0 && itemindex2 > 0)   	{   	   if (ITEM_CHECKINDEX(item1) == FALSE)	return FALSE;   	   if (ITEM_CHECKINDEX(item2) == FALSE)	return FALSE;   	   ITEM_setWorkInt(item1, ITEM_WORKCHARAINDEX, toindex);   	   ITEM_setWorkInt(item1, ITEM_WORKOBJINDEX, -1);   	   ITEM_setWorkInt(item2, ITEM_WORKCHARAINDEX, meindex);   	   ITEM_setWorkInt(item2, ITEM_WORKOBJINDEX, -1);   	   CHAR_setItemIndex(toindex, itemindex2, item1);   	   CHAR_setItemIndex(meindex, itemindex1, item2);   	}   }   // 道具 <-> 金钱   else if ((strcmp(a, "I") == 0) && (strcmp(b, "G") == 0))   {   	if (itemindex1 > 0)   	{      	   if (ITEM_CHECKINDEX(item1) == FALSE)	return FALSE;      	   eptitem = CHAR_findEmptyItemBox(toindex);      	   if (eptitem < 0)	return FALSE;      	   ITEM_setWorkInt(item1, ITEM_WORKCHARAINDEX, toindex);      	   ITEM_setWorkInt(item1, ITEM_WORKOBJINDEX, -1);      	   CHAR_setItemIndex(toindex, eptitem, item1);      	   CHAR_setItemIndex(meindex, itemindex1, -1);   	}	if (itemindex2 < 0)	itemindex2 = 0;   	gold1 = CHAR_getInt(meindex, CHAR_GOLD);   	gold1 += itemindex2;   	CHAR_setInt(meindex, CHAR_GOLD, gold1);   	gold2 = CHAR_getInt(toindex, CHAR_GOLD);   	gold2 -= itemindex2;   	CHAR_setInt(toindex, CHAR_GOLD, gold2);   }   // 金钱 <-> 道具   else if ((strcmp(a, "G") == 0) && (strcmp(b, "I") == 0))   {   	if (itemindex2 > 0)   	{      	   if (ITEM_CHECKINDEX(item2) == FALSE)	return FALSE;      	   eptitem = CHAR_findEmptyItemBox(meindex);      	   if (eptitem < 0)	return FALSE;      	   ITEM_setWorkInt(item2, ITEM_WORKCHARAINDEX, meindex);      	   ITEM_setWorkInt(item2, ITEM_WORKOBJINDEX, -1);      	   CHAR_setItemIndex(meindex, eptitem, item2);      	   CHAR_setItemIndex(toindex, itemindex2, -1);   	}   	if (itemindex1 < 0)	itemindex1 = 0;   	gold1 = CHAR_getInt(meindex, CHAR_GOLD);   	gold1 -= itemindex1;   	CHAR_setInt(meindex, CHAR_GOLD, gold1);   	gold2 = CHAR_getInt(toindex, CHAR_GOLD);   	gold2 += itemindex1;   	CHAR_setInt(toindex, CHAR_GOLD, gold2);   }   // 金钱 <-> 金钱   else if ((strcmp(a, "G") == 0) && (strcmp(b, "G") == 0))   {   	if (itemindex1 < 0)	itemindex1 = 0;   	if (itemindex2 < 0)	itemindex2 = 0;   	gold1 = CHAR_getInt(toindex, CHAR_GOLD);   	gold1 = gold1 + itemindex1 - itemindex2;   	CHAR_setInt(toindex, CHAR_GOLD, gold1);   	gold2 = CHAR_getInt(meindex, CHAR_GOLD);   	gold2 = gold2 + itemindex2 - itemindex1;   	CHAR_setInt(meindex, CHAR_GOLD, gold2);   }   // 宠物 <-> 宠物   else if ((strcmp(a, "P") == 0) && (strcmp(b, "P") == 0))   {	char category[8];   	if ((item1 != -1) && (CHAR_CHECKINDEX(item1) == FALSE))	return FALSE;   	if ((item2 != -1) && (CHAR_CHECKINDEX(item2) == FALSE))	return FALSE;   	if ((itemindex1 != -1) && (itemindex1 == CHAR_getInt(meindex, CHAR_DEFAULTPET)))   	{   		int fd;   		CHAR_setInt(meindex, CHAR_DEFAULTPET, -1);   		fd = getfdFromCharaIndex(meindex);		if (fd != -1){			CHAR_setWorkInt( meindex, CHAR_WORK_PET0_STAT+itemindex1-1, 0);	   		lssproto_KS_send(fd, itemindex1, 0);		}   	}   	if ((itemindex2 != -1)&& (itemindex2 == CHAR_getInt(toindex, CHAR_DEFAULTPET)))   	{   		int tofd;   		CHAR_setInt(toindex, CHAR_DEFAULTPET, -1);   		tofd = getfdFromCharaIndex(toindex);		if (tofd != -1){			CHAR_setWorkInt( toindex, CHAR_WORK_PET0_STAT+itemindex1-1, 0);				   		lssproto_KS_send(tofd, itemindex2, 0);		}   	}	if (item1 != -1)		CHAR_setWorkInt(item1, CHAR_WORKPLAYERINDEX, toindex);	if (item2 != -1)		CHAR_setWorkInt(item2, CHAR_WORKPLAYERINDEX, meindex);	if (itemindex1 == -1)		itemindex1 = CHAR_getCharPetElement( meindex);	if (itemindex2 == -1)		itemindex2 = CHAR_getCharPetElement( toindex);	CHAR_setCharPet(meindex, itemindex1, item2);	CHAR_setCharPet(toindex, itemindex2, item1);	if ((itemindex1 != -1) && (item1 != -1))	{			CHAR_setChar(item1, CHAR_OWNERCDKEY,				CHAR_getChar(toindex, CHAR_CDKEY));			CHAR_setChar(item1, CHAR_OWNERCHARANAME,				CHAR_getChar(toindex, CHAR_NAME));		CHAR_complianceParameter(item1);		CHAR_setInt(item1, CHAR_PUTPETTIME, 0);	}	if ((itemindex2 != -1) && (item2 != -1))	{		CHAR_setChar(item2, CHAR_OWNERCDKEY,			CHAR_getChar(meindex, CHAR_CDKEY));		CHAR_setChar(item2, CHAR_OWNERCHARANAME,			CHAR_getChar(meindex, CHAR_NAME));		CHAR_complianceParameter(item2);		CHAR_setInt(item2, CHAR_PUTPETTIME, 0);	}	snprintf(category, sizeof(category), "K%d", itemindex1);	CHAR_sendStatusString(meindex, category);	snprintf(category, sizeof(category), "W%d", itemindex1);	CHAR_sendStatusString(meindex, category);	snprintf(category, sizeof(category), "K%d", itemindex2);	CHAR_sendStatusString(toindex, category);	snprintf(category, sizeof(category), "W%d", itemindex2);	CHAR_sendStatusString(toindex, category);   }   return	TRUE;}BOOL TRADE_HandleItem( int meindex, int showindex, char *message, char *outmess){	char token[256];	int item, itemindex;	int fd = getfdFromCharaIndex( meindex );	if( CONNECT_get_confirm( fd) == TRUE ) return FALSE;	if( CHAR_getWorkInt( meindex, CHAR_WORKTRADEMODE) != CHAR_TRADE_TRADING		|| CHAR_getWorkInt( meindex, CHAR_WORKTRADEMODE) == CHAR_TRADE_LOCK )		return FALSE;	if( getStringFromIndexWithDelim( message, "|", 6, token, sizeof( token)) == FALSE) return FALSE;	item = atoi( token);	if( item < CHAR_STARTITEMARRAY  || item > CHAR_MAXITEMHAVE ){		return FALSE;	}	itemindex = CHAR_getItemIndex(meindex, item);	if( !ITEM_CHECKINDEX( itemindex))	return FALSE;	{		char itemname[256], tmpbuf[256], tmpbuf1[256];		int crushe;		strcpy( itemname, ITEM_getChar(itemindex, ITEM_SECRETNAME));//ITEM_NAME		crushe	= ITEM_getItemDamageCrusheED( itemindex);		sprintf( token, "不会损坏");		if( crushe >= 0 ) snprintf( token, sizeof(token), "%d%%", crushe );		sprintf( outmess, "%d|%s|%s|%d|%s",	   					ITEM_getInt( itemindex, ITEM_BASEIMAGENUMBER),						makeEscapeString( ITEM_getChar( itemindex, ITEM_NAME), tmpbuf1, sizeof(tmpbuf1)),						ITEM_getChar(itemindex,ITEM_EFFECTSTRING), item, token						);	}	return TRUE;}BOOL TRADE_HandleGold( int meindex, int showindex, char *message, char *outmess){	int gold, tmpgold;	char token[256];	int fd = getfdFromCharaIndex( meindex );	if(CONNECT_get_confirm( fd)==TRUE)return FALSE;	if (CHAR_getWorkInt(meindex, CHAR_WORKTRADEMODE) != CHAR_TRADE_TRADING		|| CHAR_getWorkInt(meindex, CHAR_WORKTRADEMODE) == CHAR_TRADE_LOCK)		return FALSE;	tmpgold = CHAR_getInt(meindex, CHAR_GOLD);	if (getStringFromIndexWithDelim(message, "|", 6, token, sizeof(token)) == FALSE) return FALSE;	if( (gold = atoi(token)) < 0 ) return FALSE;	if( gold > tmpgold )return FALSE;	sprintf( outmess, "%d", gold);	return TRUE;}BOOL TRADE_HandlePet( int meindex, int showindex, char *message, char *outmess){	int havepetindex, petindex;	char token[256], buf[256];	int fd = getfdFromCharaIndex( meindex );	if(CONNECT_get_confirm( fd)==TRUE)return FALSE;	if (CHAR_getWorkInt(meindex, CHAR_WORKTRADEMODE) != CHAR_TRADE_TRADING		|| CHAR_getWorkInt(meindex, CHAR_WORKTRADEMODE) == CHAR_TRADE_LOCK)		return FALSE;	if (getStringFromIndexWithDelim(message, "|", 6, token, sizeof(token)) == FALSE) return FALSE;	if( (havepetindex = atoi(token)) < 0 ) return FALSE;	petindex = CHAR_getCharPet(meindex, havepetindex);	if( !CHAR_CHECKINDEX(petindex))	return FALSE;	sprintf( token, "%d|%s|%d|%d|%d|%d|%d|%d",			CHAR_getInt( petindex, CHAR_BASEIMAGENUMBER),			makeEscapeString( CHAR_getUseName(petindex), buf, sizeof(buf)),			CHAR_getInt( petindex, CHAR_LV),			CHAR_getWorkInt( petindex, CHAR_WORKATTACKPOWER),			CHAR_getWorkInt( petindex, CHAR_WORKDEFENCEPOWER),			CHAR_getWorkInt( petindex, CHAR_WORKQUICK),			havepetindex, 			CHAR_getInt( petindex , CHAR_TRANSMIGRATION));	sprintf( outmess , "%s|%d", token , CHAR_getWorkInt(petindex , CHAR_WORKMAXHP) );	return TRUE;}

⌨️ 快捷键说明

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