BOOL NPC_PAItemShop_BuyDo( int meindex, int toindex, char *npcarg, int select)
{
	int ret=-1, ti;
	int itemindex = NPC_PAItemShop_GetItem( select, &ret);
	int cost;
	char token[256];

	if( !ITEM_CHECKINDEX( itemindex) ){
		return FALSE;
	}

	cost=ITEM_getInt( itemindex, ITEM_COST);
	if( CHAR_DelGold( toindex, cost) == 0 ) return FALSE;

	//匯整資料
	saacproto_ACItemAuction_send( acfd, ITEM_getChar( itemindex, ITEM_NAME), "TEST嘿嘿嘿",
		ITEM_getInt( itemindex, ITEM_ID), ret,AUCTION_DEL);

	ti = CHAR_addItemSpecificItemIndex( toindex, itemindex);
	if( !CHAR_CHECKITEMINDEX( toindex, ti) ){
		ITEM_endExistItemsOne( itemindex);
		print ("\n ret error!!");
		return FALSE;
	}
	CHAR_sendItemDataOne( toindex, ti);
	sprintf( token,"拿到%s",ITEM_getChar( itemindex, ITEM_NAME));
	CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW);

	return TRUE;
}
Example #2
0
BOOL ChatRoom_Create ( int myindex , char *message )
{
	int i ; 

	if( ChatCheck_Free( myindex) == FALSE ) return FALSE;

	for ( i = 0 ; i < MAX_CHATROOM ; i ++ ) {
		if ( !ChatRoom[ i ].useFlag ) {
			ChatRoom[ i ].useFlag = TRUE ; 
			ChatRoom[ i ].Maker = myindex ; 
			ChatRoom[ i ].NowPeople = 1 ; 
			ChatRoom[ i ].MemberList[ 0 ] = myindex ; 
			sprintf ( ChatRoom[ i ].RoomName , "%s" , message ) ; 
			CHAR_setWorkInt ( myindex , CHAR_WORKCHATROOMTYPE , 1 ) ; 
			CHAR_setWorkInt ( myindex , CHAR_WORKCHATROOMNUM , i ) ; 
			ChatRoom_Refresh ( i ) ; 

			CHAR_DelGold( myindex, 200);
			CHAR_talkToCli ( myindex , -1 , "成立聊天室扣除200石币" , CHAR_COLORYELLOW ); 
			return TRUE; 
		}
	}
	CHAR_talkToCli ( myindex , -1 , "聊天室已满无法建立新的聊天频道!" , CHAR_COLORYELLOW ); 
	return FALSE; 
}
Example #3
0
/*-----------------------------------------
¥¯¥é¥¤¥¢¥ó¥È¤«¤éÊ֤äƤ­¤¿»þ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¡e
-------------------------------------------*/
void NPC_LuckyManWindowTalked( int meindex, int talkerindex, 
								int seqno, int select, char *data)
{
	char argstr1[NPC_UTIL_GETARGSTR_BUFSIZE];
	char *argstr;
	char buf[256];
	int money;
	int level;
	
	/*--ÀßÄê¥Õ¥¡¥¤¥ë¤ò  ¤ß  ¤ß--*/
	if((argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof(argstr1)))== NULL) {
		print("NPC_ExChange.c TypeCheck: GetArgStrErr\n");
		print("NPCName=%s\n", CHAR_getChar(meindex,CHAR_NAME));
		return;
	}

	switch( seqno){
		case CHAR_WINDOWTYPE_WINDOWPETSHOP_START:
			if(select == WINDOW_BUTTONTYPE_YES) {
				NPC_Util_GetStrFromStrWithDelim( argstr, "Stone", buf,sizeof(buf));
			
				if(strstr(buf,"LV") != NULL) {
					char buff2[32];
					level = CHAR_getInt( talkerindex, CHAR_LV);
					getStringFromIndexWithDelim( buf, "*", 2, buff2,sizeof( buff2));
					money = level * atoi( buff2);

					if(NPC_LuckyCostCheck(meindex,talkerindex,money) == FALSE) {
						NPC_Util_GetStrFromStrWithDelim( argstr,"NoMoney", buf, sizeof( buf));
						NPC_LuckyMan_selectWindow( meindex, talkerindex, 3, buf);
						return;
					}
				}else{
					money = atoi( buf);
					if(NPC_LuckyCostCheck(meindex,talkerindex ,money) == FALSE) {
						NPC_Util_GetStrFromStrWithDelim( argstr,"NoMoney", buf,sizeof( buf));
						NPC_LuckyMan_selectWindow( meindex, talkerindex, 3, buf);
						return;
					}
				}

				CHAR_DelGold( talkerindex, money );

				CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
				NPC_LuckyDisp( meindex, talkerindex);

			}else if(select == WINDOW_BUTTONTYPE_OK) {

			}
		break;
	}
}
BOOL NPC_DepotItem_InsertItem( int meindex, int talkerindex, int num)
{
	int emptyindex;
	int itemindex;
	int cost = CHAR_getWorkInt( meindex, NPC_WORK_COST);

	if( !CHAR_CheckDepotItem( talkerindex) ) return FALSE;
	if( (emptyindex=CHAR_findEmptyDepotItem( talkerindex) ) == -1 ) return FALSE;
	itemindex = CHAR_getItemIndex( talkerindex, num);
	if( !ITEM_CHECKINDEX( itemindex) )return FALSE;
#if 1 // 共同倉庫不可存的物品
	if( ITEM_getInt( itemindex, ITEM_DROPATLOGOUT) || // 登出後消失
			ITEM_getInt( itemindex, ITEM_VANISHATDROP) || // 丟棄後消失
			!ITEM_getInt( itemindex, ITEM_CANPETMAIL)) { // 不可寵郵寄
		print("\n 改封包!!非法存放道具:%s ", CHAR_getChar( talkerindex, CHAR_CDKEY) );
		return FALSE;
	}
#endif
	if( CHAR_DelGold( talkerindex, cost ) == 0 ) return FALSE;

	CHAR_setItemIndex( talkerindex, num, -1);
	CHAR_sendItemDataOne( talkerindex, num);
	CHAR_setDepotItemIndex( talkerindex, emptyindex, itemindex);

//	CHAR_DelGold( talkerindex, cost );
	CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);

	LogItem(
		CHAR_getChar( talkerindex, CHAR_NAME ),
		CHAR_getChar( talkerindex, CHAR_CDKEY ),
#ifdef _add_item_log_name
		itemindex,
#else
		ITEM_getInt( itemindex, ITEM_ID),
#endif
		"Depot(存放道具)",
		CHAR_getInt( talkerindex,CHAR_FLOOR),
		CHAR_getInt( talkerindex,CHAR_X ),
 		CHAR_getInt( talkerindex,CHAR_Y ),
		ITEM_getChar( itemindex, ITEM_UNIQUECODE),
		ITEM_getChar( itemindex, ITEM_NAME),
		ITEM_getInt( itemindex, ITEM_ID) );

	NPC_DepotItem_CheckRepeat( talkerindex);

	return TRUE;
}
static BOOL NPC_PoolItemShop_PoolItem( int meindex, int talkerindex, int num)
{
	int emptyindex;
	int itemindex;
	int cost = CHAR_getWorkInt( meindex, NPC_WORK_COST);

	emptyindex = CHAR_getCharPoolItemIndexElement( talkerindex);
	if( emptyindex == -1 ) {
		return FALSE;
	}
	                                                                                                  
	itemindex = CHAR_getItemIndex( talkerindex, num);
	if( !ITEM_CHECKINDEX( itemindex)) {
		fprint( "err");
		return FALSE;
	}
	CHAR_DelGold( talkerindex, cost );

	CHAR_setPoolItemIndex( talkerindex, emptyindex, itemindex);

	CHAR_setItemIndex( talkerindex, num, -1);
	CHAR_sendItemDataOne( talkerindex, num);

	CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
	LogItem(
		CHAR_getChar( talkerindex, CHAR_NAME ), /* 平乓仿   */
		CHAR_getChar( talkerindex, CHAR_CDKEY ),
#ifdef _add_item_log_name  // WON ADD 在item的log中增加item名稱
		itemindex,
#else
		ITEM_getInt( itemindex, ITEM_ID),  /* 失奶  丞  寞 */
#endif
		"pool(寄放道具)",
		CHAR_getInt( talkerindex,CHAR_FLOOR),
		CHAR_getInt( talkerindex,CHAR_X ),
 		CHAR_getInt( talkerindex,CHAR_Y ),
		ITEM_getChar( itemindex, ITEM_UNIQUECODE),
				ITEM_getChar( itemindex, ITEM_NAME),
				ITEM_getInt( itemindex, ITEM_ID)

	);
	return TRUE;
}
Example #6
0
/*
 *дк╢тд╬║я╜№
 */
BOOL NPC_EntryStoneDel(int talker,char *buf)
{
	int stone;
	int cost;
	char token[256];
	
	cost= atoi( buf);
	stone = CHAR_getInt( talker, CHAR_GOLD);
	
	if((stone-cost) < 0){
		CHAR_setInt( talker, CHAR_GOLD, 0);
	}else{
		CHAR_DelGold( talker, cost );
	}

	sprintf( token, "%d ецеXstoneбC", cost);
	CHAR_talkToCli( talker, -1, token, CHAR_COLORWHITE);

	CHAR_send_P_StatusString( talker, CHAR_P_STRING_GOLD);
	return TRUE;
}
Example #7
0
void NPC_WarpManWindowTalked( int meindex, int talkerindex, 
								int seqno, int select, char *data)
{
	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20];
	char buf[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20];
#ifdef _NEW_WARPMAN
	BOOL checkp=TRUE;
	char buf1[1024];
	int talkNo = 1;
	BOOL tenflg=FALSE;
#else
	int fl,x,y;
#endif
	char buff2[256];
	int fd = getfdFromCharaIndex( talkerindex );
	if( NPC_Util_CharDistance( talkerindex, meindex ) > 2)
		return;
	if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
		print("GetArgStrErr");
		return ;
	}
	if( CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT) < 1 )	{
		CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);
		return;
	}

#ifdef _NEW_WARPMAN
	if( seqno == NEW_WARPMAN )    {
		int eqnum=0;
		eqnum = CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT);
		sprintf(buf1,"%s", "NOFREE");
		if( eqnum >= 0 )	{
			sprintf(buf1,"TALKEVENT%d", eqnum);
		}
		CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0);
		while( getStringFromIndexWithDelim( npcarg,"OVER",talkNo,buf,sizeof( buf)) != FALSE){
			if( strstr(buf, buf1) != NULL)	{
				strcpy( npcarg , buf);
				tenflg = TRUE;
				break;
			}
			talkNo++;
		}
		if( tenflg == FALSE )	{
			CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);
			return;
		}
	}else {
#endif    
		if( select != WINDOW_BUTTONTYPE_YES )	{
			CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);
			return;
		}
		    if(NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE){
			    NPC_ERR_DiSP( meindex, talkerindex, 1);
			    return;
			}
#ifdef _NEW_WARPMAN	
	}
#else
	NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP", buf, sizeof( buf));
	GetRand_WarpPoint( buf, &fl, &x, &y );
#endif

#ifdef _NEW_WARPMAN	
  switch( seqno)	{
  case WARP_MAN:
	if( select != WINDOW_BUTTONTYPE_YES )
		return;
	    if( NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE ){
		    NPC_ERR_DiSP( meindex, talkerindex, 1);
		    return;
		}		
#else
	if( select != WINDOW_BUTTONTYPE_YES) return;
	    if( NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE)
		    return;
#endif

#ifdef _NEW_WARPMAN
  break;
  case NEW_WARPMAN:
		if( select != WINDOW_BUTTONTYPE_YES ){
			CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);
			if( NPC_Util_GetStrFromStrWithDelim( npcarg, "CancelMsg", buff2, sizeof( buff2) ) != NULL)	{
				CHAR_talkToCli( talkerindex, meindex, buff2, CHAR_COLORYELLOW);
			}
			return;
		}
	  checkp=TRUE;
	  if( NPC_Util_GetStrFromStrWithDelim( npcarg, "CHECKPARTY", buff2, sizeof( buff2) ) != NULL)	{
		  if( strstr( buff2, "FALSE") != NULL )	{
			checkp = FALSE;
		}
	  }
	  if( checkp==TRUE && NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE )	{
		      NPC_ERR_DiSP( meindex, talkerindex, 1);
		      CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);
		      return;
	  }		
  break;
  case NEW_WARPMAN_END:
	  return;
  break;
  }
#endif

	if( Action_RunDoEventAction( meindex, talkerindex, npcarg) == FALSE ){
		CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1);
		return;
	}

		CHAR_complianceParameter( talkerindex );
		CHAR_send_P_StatusString( talkerindex ,
						CHAR_P_STRING_ATK|CHAR_P_STRING_DEF|
						CHAR_P_STRING_CHARM|CHAR_P_STRING_QUICK|
						CHAR_P_STRING_WATER|CHAR_P_STRING_FIRE|
						CHAR_P_STRING_WIND|CHAR_P_STRING_EARTH
						);
		if( CHAR_getWorkInt( CONNECT_getCharaindex(fd), CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE){
	            return ;
		}
		if(CHAR_getWorkInt( talkerindex , CHAR_WORKSHOPRELEVANTTRD) <= 0){
				CHAR_setWorkInt( talkerindex, CHAR_WORKWARPCHECK, FALSE );
#ifdef _NEW_WARPMAN	
				NPC_WarpMsg( meindex, talkerindex, npcarg);
#else
				if( fl == 0 && x == 0 && y == 0 )		{
				}else	{
					CHAR_warpToSpecificPoint(talkerindex, fl, x,y);
				}
#endif
		}else	{
			if(CHAR_getInt(talkerindex,CHAR_GOLD) <
	                  CHAR_getWorkInt(talkerindex,CHAR_WORKSHOPRELEVANTTRD)){
				NPC_ERR_DiSP( meindex, talkerindex, 2);
				return ;
			}
			CHAR_DelGold( talkerindex, CHAR_getWorkInt(talkerindex,CHAR_WORKSHOPRELEVANTTRD ));

				CHAR_setWorkInt( talkerindex, CHAR_WORKWARPCHECK, FALSE );
#ifdef _NEW_WARPMAN	
				NPC_WarpMsg( meindex, talkerindex, npcarg);
#else
				if( fl == 0 && x == 0 && y == 0 )		{
				}else	{
                        CHAR_warpToSpecificPoint(talkerindex, fl, x,y);
				}
#endif

		}
#ifdef _NEW_WARPMAN
		NPC_NpcWarpMsg( meindex, talkerindex, npcarg);
#else
	}
Example #8
0
static void NPC_NewNpcMan_selectWindow( int meindex, int toindex, int num, int flg)
{
	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
	char token[256];

	int buttontype = 0, windowtype = 0, windowno = 0;
	int fd = getfdFromCharaIndex( toindex);

	windowtype = WINDOW_MESSAGETYPE_MESSAGE;

	if(NPC_Util_isFaceToFace( meindex ,toindex , 2) == FALSE) {
		if(NPC_Util_isFaceToChara( toindex, meindex, 1) == FALSE)
			return;
	}

	memset( npcarg, 0, sizeof( npcarg));
	if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){
		return;
	}

	memset( token, 0, sizeof( token));
	switch( num)	{
	case WINDOW_START:
		if( NPC_Util_GetStrFromStrWithDelim( npcarg, "START_MSG", token, sizeof( token) ) == NULL) {
			return;
		}
		buttontype = WINDOW_BUTTONTYPE_YESNO;
		windowno = NPC_PROGRAMEGINEER_DEFIND;
		break;
	case WINDOW_SELECT1:
		sprintf(token,"              ÇëÑ¡Ôñ"
			      "\n             ¡¶ÐÞÕý³èÎïÒì³£¡·"
				  "\n             ¡¶ÐÞÕý³èÎïͼºÅ¡·"
			      "\n              ¡¶¸ü»»ÁéÁ¦îø¡·"
#ifdef _PET_LOSTPET
				  "\n             ¡¶Áì»ØÒÅʧ³èÎï¡·"
#endif
//				  "\n            ¡¶»¹Ô­ÌúǹÈþ¶Ñµþ¡·"

				  );
		windowtype = WINDOW_MESSAGETYPE_SELECT;
		buttontype = WINDOW_BUTTONTYPE_CANCEL;
		windowno = NPC_PROGRAMEGINEER_SELECT2;
		break;
	case WINDOW_SELECT2:
		switch( flg){
		case 1://ÐÞÕý³èÎïÒì³£
			NPC_reCheckMyPetUnusual( meindex, toindex);
			CHAR_talkToCli( toindex, -1, "ÉíÉϳèÎï¼ì²éÍê±Ï!", CHAR_COLORYELLOW);
			return;
			break;
		case 2://ÐÞÕý³èÎïͼºÅ
			CHECK_PETBBI( toindex);
			return;
			break;
		case 3://¸ü»»ÁéÁ¦îø
			if( CHECK_ITEMEQUIT( toindex) == TRUE ){
				CHAR_talkToCli( toindex, -1, "¼ì²éÍê±Ï!", CHAR_COLORYELLOW);
			}
			return;
			break;

		case 4:
#ifdef _PET_LOSTPET
			if( NPC_reFindMyLostPet( meindex, toindex, token) == FALSE ){
				CHAR_talkToCli( toindex, -1, "²éÎÞ×ÊÁÏ£¡", CHAR_COLORYELLOW);
				return;
			}
			windowtype = WINDOW_MESSAGETYPE_SELECT;
			buttontype = WINDOW_BUTTONTYPE_CANCEL;
			windowno = NPC_PROGRAMEGINEER_SELECTLOSTPET;
#endif
			break;
		case 5: //»¹Ô­ÌúǹÈþ¶Ñµþ
//			NPC_reCheckItemPilenum( meindex, toindex);
			return;
			break;
		}
		break;
/*
	case WINDOW_SELECT3:
			{
				int petnum, petindex;
				petnum = atoi( data)-1;
				if( petnum >= CHAR_MAXPETHAVE || petnum < 0 ) return;
				petindex = CHAR_getCharPet( talker, petsel);
				if( !CHAR_CHECKINDEX(petindex) ) return;
				break;
			}
*/
	case WINDOW_SELECTLOSTPET:
#ifdef _PET_LOSTPET
		{
			int ret, i, ti, ltime, cost;
			Char ch;
			char msgbuf[256];
			char petstring1[2048];

			int havepetelement = CHAR_getCharPetElement( toindex);
			ti = flg;
			if( havepetelement < 0 ){
				CHAR_talkToCli( toindex, -1, "³èÎïÀ¸Î»ÒÑÂú£¡", CHAR_COLORYELLOW);
				return;
			}
			if( NPC_getLostPetString( meindex, toindex) == FALSE ) {
				CHAR_talkToCli( toindex, -1, "ÁìÈ¡³èÎïʧ°Ü£¡", CHAR_COLORYELLOW);
				return;
			}

			if( getStringFromIndexWithDelim( petstring[ti-1], "#", 2, petstring1, sizeof( petstring1)) == FALSE ){
				CHAR_talkToCli( toindex, -1, "ÁìÈ¡³èÎïʧ°Ü£¡", CHAR_COLORYELLOW);
				return;	
			}else{
				char buf1[256];
				if( getStringFromIndexWithDelim( petstring[ti-1], "|", 6, buf1, sizeof( buf1)) == FALSE ) return;
					ltime = atoi(buf1);
					ltime = time( NULL) - ltime;
					ltime = ltime/(60*60*24);
				if( getStringFromIndexWithDelim( petstring[ti-1], "|", 4, buf1, sizeof( buf1)) == FALSE ) return;
					cost = atoi( buf1);
#if 0	// ÐÞÕý±£Êͽð
				cost = cost + (ltime*100);
				cost = (cost>10000)?10000:cost;
#else
				cost = cost + (ltime*10000);
#endif
				if( CHAR_getInt( toindex, CHAR_GOLD) < cost ) {
					sprintf( buf1, "³èÎïÒѼķÅ%dÌ죬¹²Ðè%dʯ±Ò²Å¿ÉÁì»Ø¡£", ltime, cost);
					CHAR_talkToCli( toindex, meindex, buf1, CHAR_COLORYELLOW);
					return;	
				}
			}


			ret = CHAR_makePetFromStringToArg( petstring1, &ch, -2);
			strcpy( petstring[ti-1], "");
			if( ret ) {
				char buf1[256];
				int petindex = PET_initCharOneArray( &ch );
				if( !CHAR_CHECKINDEX( petindex) ){
					CHAR_talkToCli( toindex, -1, "ÁìÈ¡³èÎïʧ°Ü£¡", CHAR_COLORYELLOW);
					return;
				}
				print("ANDY petindex:%d[%s]\n", petindex, CHAR_getChar( petindex, CHAR_NAME) );

				CHAR_complianceParameter( petindex );
				CHAR_setInt( petindex, CHAR_HP, CHAR_getWorkInt( petindex, CHAR_WORKMAXHP));
				CHAR_setWorkInt( petindex, CHAR_WORKPLAYERINDEX, toindex);
				CHAR_setCharPet( toindex, havepetelement, petindex);
				CHAR_setChar( petindex, CHAR_OWNERCDKEY,
							CHAR_getChar( toindex, CHAR_CDKEY));
				CHAR_setChar( petindex, CHAR_OWNERCHARANAME,
							CHAR_getChar( toindex, CHAR_NAME));

				if( NPC_backupLostPetString( toindex) == FALSE ){
					print("ANDY err backup petstring !!\n");
					return;
				}
				
				sprintf( buf1, "LostPGet:%d", cost);
				LogPet(
					CHAR_getChar( toindex, CHAR_NAME ),
					CHAR_getChar( toindex, CHAR_CDKEY ),
					CHAR_getChar( petindex, CHAR_NAME),
					CHAR_getInt( petindex, CHAR_LV),
					buf1,
					CHAR_getInt( toindex,CHAR_FLOOR),
					CHAR_getInt( toindex,CHAR_X ),
					CHAR_getInt( toindex,CHAR_Y ),
					CHAR_getChar( petindex, CHAR_UNIQUECODE)   // shan 2001/12/14
				);
				sprintf( buf1, "ÁìÈ¡³èÎï%s¡£", CHAR_getUseName( petindex));
				CHAR_talkToCli( toindex, meindex, buf1, CHAR_COLORYELLOW);
				for( i = 0; i < CHAR_MAXPETHAVE; i++){
					int petindex = CHAR_getCharPet( toindex, i);
					if( !CHAR_CHECKINDEX( petindex) )
						continue;
					CHAR_complianceParameter( petindex );
					snprintf( msgbuf, sizeof( msgbuf ), "K%d", i );
					CHAR_sendStatusString( toindex, msgbuf );
					snprintf( msgbuf, sizeof( msgbuf ), "W%d", i );
					CHAR_sendStatusString( toindex, msgbuf );
				}
				CHAR_DelGold( toindex, cost);
			}else{
					CHAR_talkToCli( toindex, -1, "ÁìÈ¡³èÎïʧ°Ü£¡", CHAR_COLORYELLOW);
					return;
			}
			return;
 		}
#endif
		return;
		break;
	case WINDOW_DEFIND:
		{
			int i;
			int face = CHAR_getInt( toindex, CHAR_FACEIMAGENUMBER);
			if( NPC_Util_GetStrFromStrWithDelim( npcarg, "CHECK_MSG", token, sizeof( token) ) == NULL) {
				return;
			}
			for( i=0; i<48; i++){
				if( face >= checkPc[i][0] && face < checkPc[i][1] )
					break;
			}
			if( i >= 48 )return;
			CHAR_setWorkInt( toindex, CHAR_WORKNPCMETAMO, meindex);
			CHAR_setInt( toindex, CHAR_BASEIMAGENUMBER, checkPc[i][2]);
			CHAR_complianceParameter( toindex );
			CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX ));
			CHAR_send_P_StatusString( toindex , CHAR_P_STRING_BASEBASEIMAGENUMBER);

			buttontype = WINDOW_BUTTONTYPE_YESNO;
			windowno = NPC_PROGRAMEGINEER_END;
		}
		break;
	case WINDOW_END:
		{
			CHAR_setWorkInt( toindex, CHAR_WORKNPCMETAMO, -1);
			CHAR_setInt( toindex, CHAR_BASEBASEIMAGENUMBER,
				CHAR_getInt( toindex, CHAR_BASEIMAGENUMBER) );

			CHAR_complianceParameter( toindex );
			CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX ));
			CHAR_send_P_StatusString( toindex , CHAR_P_STRING_BASEBASEIMAGENUMBER);
			return;
		}
		break;
	}

	lssproto_WN_send( fd, windowtype, buttontype, windowno,
		CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token);
}
Example #9
0
/*-------------------------------------------
雲嗯  勻化月井民尼永弁
婁醒
meindex』』』      及奶件犯永弁旦
talker』』』』平乓仿弁正□及奶件犯永弁旦
---------------------------------------------*/
BOOL NPC_WindowMoneyCheck(int meindex,int talker,int mode)
{
	int cost=0;
	int level;
	
	level=CHAR_getWorkInt(meindex,CHAR_WORK_LEVEL);
	
	if(mode==1){
		if(level <= CHAR_getInt(talker,CHAR_LV)){
			/*---雲嗯毛喃曰請允---*/
			cost=NPC_WindowCostCheck(meindex,talker);
			/*--蜇箕反移澀爛---*/
			/*---雲嗯互簫曰月井升丹井及民尼永弁---*/
			if(CHAR_getInt(talker,CHAR_GOLD) < cost){
				return FALSE;
			
			}
			CHAR_DelGold( talker, cost);
		}
	}
	if(mode==2){
		if(level <= CHAR_getInt(talker,CHAR_LV)){
			/*---雲嗯毛喃曰請允---*/
			cost=NPC_WindowCostCheckMp(meindex,talker);
	
			/*--蜇箕反移澀爛---*/
			/*---雲嗯互簫曰月井升丹井及民尼永弁---*/
			if(CHAR_getInt(talker,CHAR_GOLD) < cost){
				return FALSE;
			}
			CHAR_DelGold( talker, cost);
		}
	}

	if(mode==3){
		if(level <= CHAR_getInt(talker,CHAR_LV)){

			/*--覲菁  及雲嗯及煌遙--*/
			if( CHAR_getInt(talker,CHAR_HP) <CHAR_getWorkInt( talker, CHAR_WORKMAXHP))
			{
				cost=NPC_WindowCostCheck(meindex,talker);
			}

			/*--竣  及雲嗯及煌遙--*/
			if( CHAR_getInt(talker,CHAR_MP) < CHAR_getWorkInt( talker, CHAR_WORKMAXMP))
			{
				cost=cost+NPC_WindowCostCheckMp(meindex,talker);
			}
		
			/*--移澀爛--*/
			if(CHAR_getInt(talker,CHAR_GOLD) < cost){
				return FALSE;
			}
		
			/*---雲嗯毛蛹日允---*/
			CHAR_DelGold( talker, cost);
		}
		
	}
	
	CHAR_send_P_StatusString(talker,CHAR_P_STRING_GOLD);

	return TRUE;

}
/*-------------------------------------------
¶³¶â  ¤Ã¤Æ¤ë¤«¥Á¥§¥Ã¥¯
°ú¿ô
meindex¡z¡z¡z      ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹
talker¡z¡z¡z¡z¥­¥ã¥é¥¯¥¿¡¼¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹
---------------------------------------------*/
BOOL NPC_WindowMoneyCheck(int meindex,int talker,int mode)
{
	int cost=0;
	int level;
	
	level=CHAR_getWorkInt(meindex,CHAR_WORK_LEVEL);
	
	if(mode==1){
		if(level <= CHAR_getInt(talker,CHAR_LV)){
			/*---¶³¶â¤ò³ä¤ê½Ð¤¹---*/
			cost=NPC_WindowCostCheck(meindex,talker);
			/*--¸½ºß¤Ï²¾ÀßÄê---*/
			/*---¶³¶â¤¬Â­¤ê¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯---*/
			if(CHAR_getInt(talker,CHAR_GOLD) < cost){
				return FALSE;
			
			}
			CHAR_DelGold( talker, cost);
		}
	}
	if(mode==2){
		if(level <= CHAR_getInt(talker,CHAR_LV)){
			/*---¶³¶â¤ò³ä¤ê½Ð¤¹---*/
			cost=NPC_WindowCostCheckMp(meindex,talker);
	
			/*--¸½ºß¤Ï²¾ÀßÄê---*/
			/*---¶³¶â¤¬Â­¤ê¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯---*/
			if(CHAR_getInt(talker,CHAR_GOLD) < cost){
				return FALSE;
			}
			CHAR_DelGold( talker, cost);
		}
	}

	if(mode==3){
		if(level <= CHAR_getInt(talker,CHAR_LV)){

			/*--ÂÑµ×  ¤Î¶³¶â¤Î·×»»--*/
			if( CHAR_getInt(talker,CHAR_HP) <CHAR_getWorkInt( talker, CHAR_WORKMAXHP))
			{
				cost=NPC_WindowCostCheck(meindex,talker);
			}

			/*--µ¤  ¤Î¶³¶â¤Î·×»»--*/
			if( CHAR_getInt(talker,CHAR_MP) < CHAR_getWorkInt( talker, CHAR_WORKMAXMP))
			{
				cost=cost+NPC_WindowCostCheckMp(meindex,talker);
			}
		
			/*--²¾ÀßÄê--*/
			if(CHAR_getInt(talker,CHAR_GOLD) < cost){
				return FALSE;
			}
		
			/*---¶³¶â¤ò¸º¤é¤¹---*/
			CHAR_DelGold( talker, cost);
		}
		
	}
	
	CHAR_send_P_StatusString(talker,CHAR_P_STRING_GOLD);

	return TRUE;

}
Example #11
0
void NPC_PetSkillShopWindowTalked( int meindex, int talkerindex, 
								int seqno, int select, char *data)
{
	int skill;
	int pet;
	int slot;
	int cost;
	int skillID=0;
	int petskillindex;
	char buf[64];
	char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
	char msg[512];
	int petindex;
	char msgbuf[128];
	int fd = getfdFromCharaIndex( talkerindex );
	double rate= 1.0;

	if( NPC_Util_CharDistance( talkerindex, meindex ) > 2) {
		return;
	}

	if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr))==NULL){
		print("GetArgStrErr");
		return;
	}
	makeStringFromEscaped( data);
	getStringFromIndexWithDelim(data,"|",1,buf,sizeof(buf));
	skill=atoi(buf);
	getStringFromIndexWithDelim(data,"|",2,buf,sizeof(buf));
	pet=atoi(buf);
	getStringFromIndexWithDelim(data,"|",3,buf,sizeof(buf));
	slot=atoi(buf);
	getStringFromIndexWithDelim(data,"|",4,buf,sizeof(buf));
	cost=atoi(buf);

	if( NPC_Util_GetStrFromStrWithDelim( argstr, "pet_skill", msg, sizeof( msg)) != NULL){
		getStringFromIndexWithDelim(msg,",",skill,buf,sizeof(buf));
		skillID=atoi(buf);
	}

	slot--;
	if( !CHAR_CHECKPETSKILLINDEX( slot)){
	 	CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
		return ; 
	}
	petindex = CHAR_getCharPet( talkerindex, pet-1);
    if( !CHAR_CHECKINDEX(petindex) ){
    	CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
    	return ;
	}
	if(skillID < 0) return ;

	if(petindex == -1){
		print("petskillshop.c:170 PetindexError");
		return;
	}

	if( CHAR_getWorkInt( CONNECT_getCharaindex(fd),
                         CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return ;
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "skill_rate", msg, sizeof( msg)) != NULL){
		rate = atof( msg);
	}

	petskillindex =  PETSKILL_getPetskillArray( skillID );
	if(petskillindex == -1){
		CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
		return ;
	}

	cost = PETSKILL_getInt( petskillindex, PETSKILL_COST );
	cost = cost * rate;

	if(CHAR_getInt(talkerindex,CHAR_GOLD) < cost){
		CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
		return;
	}
	CHAR_setPetSkill( petindex, slot, skillID);

	CHAR_DelGold( talkerindex, cost );

	snprintf( msgbuf, sizeof( msgbuf ), "W%d",pet-1);
	CHAR_sendStatusString( talkerindex, msgbuf );
	CHAR_sendStatusString( talkerindex, "P");
	NPC_PetSkillShop_selectWindow( meindex, talkerindex,0,-1);
}
Example #12
0
void NPC_RidermanWindowTalked( int meindex, int talkerindex,
                               int seqno, int select, char *data)

{


    int		button = -1;
    char	buf[512];

    if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return;

    if( !NPC_Riderman_readData( meindex, seqno - 100, FALSE) ) {
        print( "riderman:readdata error\n");
        return;
    }
    /* 瓷仄凶示正件毛譬屯月 */
    if( w.windowtype == WINDOW_MESSAGETYPE_SELECT ) {
        button = atoi( data)+5;
        if( button > 12 ) {
            print( "riderman:invalid button[%d]\n", button);
            return;
        }
    }
    else if( select & WINDOW_BUTTONTYPE_OK) button = 0;
    else if( select & WINDOW_BUTTONTYPE_CANCEL) button = 1;
    else if( select & WINDOW_BUTTONTYPE_YES) button = 2;
    else if( select & WINDOW_BUTTONTYPE_NO) button = 3;
    else if( select & WINDOW_BUTTONTYPE_PREV) button = 4;
    else if( select & WINDOW_BUTTONTYPE_NEXT) button = 5;
    else {
        print( "riderman:invalid button[%d]\n", select);
        return;
    }
    if( buttonproc[button].use == TRUE ) {
        int	fd;
        int	newwin = -1;

        fd = getfdFromCharaIndex( talkerindex);

        if( newwin == -1 ) {
            newwin = buttonproc[button].gotowin;
        }


        //print(" takegold:%d ", w.takegold );

        // Robin
        // 学习 Lv 40
        if( newwin == 6 )	{

            int charImg;
            // int i, petindex, bFind = 0;

            charImg = CHAR_getInt( talkerindex, CHAR_BASEBASEIMAGENUMBER);
            if( CHAR_getInt( talkerindex, CHAR_LEARNRIDE ) >= 40 )
            {
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( "\n\n你已经学会初级班了呀。\n不需要再学了。",
                                                    buf, sizeof(buf)));
                return;
            }

            if( CHAR_getInt( talkerindex, CHAR_GOLD ) < w.takegold )
            {
                char buf2[512];

                sprintf( buf2, "\n很抱歉喔!你的学费不足!\n学习骑乘宠物初级班需要%d石币。", w.takegold);
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( buf2, buf, sizeof(buf)));
                return;
            }
            CHAR_DelGold( talkerindex, w.takegold );

            CHAR_setInt( talkerindex, CHAR_LEARNRIDE, 40 );
            CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD );
            CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_LEARNRIDE );

            //sprintf( buf, "R|L|1" );
            //lssproto_FM_send( fd, buf );
            lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                              WINDOW_BUTTONTYPE_OK, -1, -1,
                              makeEscapeString(
                                  "\n\n恭喜你!你已经完成骑乘初级班了。\n可以骑乘 Lv40 以下的宠物,\n请小心骑乘喔!",
                                  buf, sizeof(buf)));

            // 家族收入
            {
                int fmindex, fmindexi, village, i;
                char fmname[256], token[256], buf2[64];

                sprintf( buf2, "%d", w.takegold/5 );
                for( i=0 ; i<FMPOINTNUM ; i++ ) {
                    getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 9, token, sizeof(token));
                    village = atoi(token);
                    if( village == CHAR_getInt( meindex, CHAR_FMINDEX ) ) {
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, token, sizeof(token));
                        fmindex = atoi(token);
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 6, token, sizeof(token));
                        strcpy(fmname, token);
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 8, token, sizeof(token));
                        fmindexi = atoi(token);
                        saacproto_ACFixFMData_send( acfd, fmname, fmindex, fmindexi,
                                                    FM_FIX_FMGOLD, buf2 , "",
                                                    CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX),
                                                    CONNECT_getFdid(fd) );

                        //print(" rider_fm:%s ", fmname);
                    }
                }
            }

            return;
        }

        // 学习 Lv 80
        if( newwin == 7 )	{

            int charImg;
            // int i, petindex, bFind = 0;


            charImg = CHAR_getInt( talkerindex, CHAR_BASEBASEIMAGENUMBER);
            if( CHAR_getInt( talkerindex, CHAR_LEARNRIDE ) >= 80 )
            {
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( "\n\n你已经学会中级班了呀。\n不需要再学了。",
                                                    buf, sizeof(buf)));
                return;
            }
            else if( CHAR_getInt( talkerindex, CHAR_LEARNRIDE ) < 40 )
            {
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( "\n\n你必须先学过初级班才能来中级班唷。",
                                                    buf, sizeof(buf)));
                return;
            }

            if( CHAR_getInt( talkerindex, CHAR_GOLD ) < w.takegold )
            {
                char buf2[512];

                sprintf( buf2, "\n很抱歉喔!你的学费不足!\n学习骑乘宠物中级班需要%d石币", w.takegold);
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( buf2, buf, sizeof(buf)));
                return;
            }
            CHAR_DelGold( talkerindex, w.takegold );

            CHAR_setInt( talkerindex, CHAR_LEARNRIDE, 80 );
            CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD );
            CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_LEARNRIDE );

            //sprintf( buf, "R|L|1" );
            //lssproto_FM_send( fd, buf );
            lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                              WINDOW_BUTTONTYPE_OK, -1, -1,
                              makeEscapeString( "\n\n恭喜你!你已经完成骑乘中级班了。\n可以骑乘 Lv80 以下的宠物,\n请小心骑乘喔!",
                                                buf, sizeof(buf)));

            // 家族收入
            {
                int fmindex, fmindexi, village, i;
                char fmname[256], token[256], buf2[64];

                sprintf( buf2, "%d", w.takegold/5 );
                for( i=0 ; i<FMPOINTNUM ; i++ ) {
                    getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 9, token, sizeof(token));
                    village = atoi(token);
                    if( village == CHAR_getInt( meindex, CHAR_FMINDEX ) ) {
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, token, sizeof(token));
                        fmindex = atoi(token);
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 6, token, sizeof(token));
                        strcpy(fmname, token);
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 8, token, sizeof(token));
                        fmindexi = atoi(token);
                        saacproto_ACFixFMData_send( acfd, fmname, fmindex, fmindexi,
                                                    FM_FIX_FMGOLD, buf2 , "",
                                                    CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX),
                                                    CONNECT_getFdid(fd) );

                        //print(" rider_fm:%s ", fmname);
                    }
                }
            }

            return;
        }

        // 学习 Lv 120
        if( newwin == 8 )	{

            int charImg;
            // int i, petindex, bFind = 0;


            charImg = CHAR_getInt( talkerindex, CHAR_BASEBASEIMAGENUMBER);
            if( CHAR_getInt( talkerindex, CHAR_LEARNRIDE ) >= 120 )
            {
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( "\n\n你已经学会高级班了呀。\n不需要再学了。",
                                                    buf, sizeof(buf)));
                return;
            }
            else if( CHAR_getInt( talkerindex, CHAR_LEARNRIDE ) < 80 )
            {
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( "\n\n你必须先学过中级班才能来高级班唷。",
                                                    buf, sizeof(buf)));
                return;
            }

            if( CHAR_getInt( talkerindex, CHAR_GOLD ) < w.takegold )
            {
                char buf2[512];

                sprintf( buf2, "\n很抱歉喔!你的学费不足!\n学习骑乘宠物高级班需要%d石币", w.takegold);
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( buf2, buf, sizeof(buf)));
                return;
            }
            CHAR_DelGold( talkerindex, w.takegold );

            CHAR_setInt( talkerindex, CHAR_LEARNRIDE, 120 );
            CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD );
            CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_LEARNRIDE );

            //sprintf( buf, "R|L|1" );
            //lssproto_FM_send( fd, buf );
            lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                              WINDOW_BUTTONTYPE_OK, -1, -1,
                              makeEscapeString( "\n\n恭喜你!你已经完成骑乘高级班了。\n可以骑乘 Lv120 以下的宠物,\n请小心骑乘喔!",
                                                buf, sizeof(buf)));

            // 家族收入
            {
                int fmindex, fmindexi, village, i;
                char fmname[256], token[256], buf2[64];

                sprintf( buf2, "%d", w.takegold/5 );
                for( i=0 ; i<FMPOINTNUM ; i++ ) {
                    getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 9, token, sizeof(token));
                    village = atoi(token);
                    if( village == CHAR_getInt( meindex, CHAR_FMINDEX ) ) {
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, token, sizeof(token));
                        fmindex = atoi(token);
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 6, token, sizeof(token));
                        strcpy(fmname, token);
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 8, token, sizeof(token));
                        fmindexi = atoi(token);
                        saacproto_ACFixFMData_send( acfd, fmname, fmindex, fmindexi,
                                                    FM_FIX_FMGOLD, buf2 , "",
                                                    CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX),
                                                    CONNECT_getFdid(fd) );

                        //print(" rider_fm:%s ", fmname);
                    }
                }
            }

            return;
        }

        // 学习  Lv All
        if( newwin == 9 )	{

            int charImg;
            // int petindex, i, bFind = 0;

            charImg = CHAR_getInt( talkerindex, CHAR_BASEBASEIMAGENUMBER);
            if( CHAR_getInt( talkerindex, CHAR_LEARNRIDE ) > 199 )
            {
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( "\n\n你已经学会特级班了呀。\n不需要再学了。",
                                                    buf, sizeof(buf)));
                return;
            }
            else if( CHAR_getInt( talkerindex, CHAR_LEARNRIDE ) < 120 )
            {
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( "\n\n你必须先学过高级班才能来特级班唷。",
                                                    buf, sizeof(buf)));
                return;
            }

            if( CHAR_getInt( talkerindex, CHAR_GOLD ) < w.takegold )
            {
                char buf2[512];

                sprintf( buf2, "\n很抱歉喔!你的学费不足!\n学习骑乘宠物特级班需要%d石币", w.takegold);
                lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                                  WINDOW_BUTTONTYPE_OK, -1, -1,
                                  makeEscapeString( buf2, buf, sizeof(buf)));
                return;
            }
            CHAR_DelGold( talkerindex, w.takegold );

            CHAR_setInt( talkerindex, CHAR_LEARNRIDE, 200 );
            CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD );
            CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_LEARNRIDE );

            //sprintf( buf, "R|L|1" );
            //lssproto_FM_send( fd, buf );
            lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
                              WINDOW_BUTTONTYPE_OK, -1, -1,
                              makeEscapeString( "\n\n恭喜你!你已经完成骑乘特级班了。\n可以骑乘所有等级的宠物,\n请小心骑乘喔!",
                                                buf, sizeof(buf)));

            // 家族收入
            {
                int fmindex, fmindexi, village, i;
                char fmname[256], token[256], buf2[64];

                sprintf( buf2, "%d", w.takegold/5 );
                for( i=0 ; i<FMPOINTNUM ; i++ ) {
                    getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 9, token, sizeof(token));
                    village = atoi(token);
                    if( village == CHAR_getInt( meindex, CHAR_FMINDEX ) ) {
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 5, token, sizeof(token));
                        fmindex = atoi(token);
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 6, token, sizeof(token));
                        strcpy(fmname, token);
                        getStringFromIndexWithDelim(fmpointlist.pointlistarray[i], "|", 8, token, sizeof(token));
                        fmindexi = atoi(token);
                        saacproto_ACFixFMData_send( acfd, fmname, fmindex, fmindexi,
                                                    FM_FIX_FMGOLD, buf2 , "",
                                                    CHAR_getWorkInt(meindex, CHAR_WORKFMCHARINDEX),
                                                    CONNECT_getFdid(fd) );

                        //print(" rider_fm:%s ", fmname);
                    }
                }
            }

            return;
        }

        // 说明 , 列表
        if( newwin == 5 )
        {

            lssproto_WN_send( fd, WINDOW_MESSAGETYPE_SHOWRIDEPET,
                              WINDOW_BUTTONTYPE_OK, -1, -1,
                              "" );
            return;

        }

        if( !NPC_Riderman_readData( meindex, newwin, FALSE) ) {
            print( "riderman:readdata error\n");
            return;
        }

        //fd = getfdFromCharaIndex( talkerindex);
        if( fd != -1 ) {
            lssproto_WN_send( fd, w.windowtype,
                              w.buttontype,
                              w.windowno+100,
                              CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
                              makeEscapeString( w.message, buf, sizeof(buf)));
        }



    }
}
Example #13
0
void 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Æï³ËÖеijèÎïÎÞ·¨¼Ä·Åร¡", buf, sizeof(buf)));
*/
					sprintf(token,"\n\nÆï³ËÖеijèÎïÎÞ·¨¼Ä·Åร¡");
        	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
	);

}	
Example #14
0
void NPC_DepotPet_Add( 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;
	//print("\n selectpet:%d ", selectpet);
	petindex = CHAR_getCharPet( talker, selectpet);
	if( !CHAR_CHECKINDEX( petindex) ) return;
	
    // Robin 0725
    if (CHAR_getInt( talker, CHAR_RIDEPET ) == selectpet )
    {
		sprintf(token,"\n\nÆï³ËÖеijèÎïÎÞ·¨´æÈë²Ö¿âร¡");
		return;
	}

	if( CHAR_getInt( petindex, CHAR_PETFAMILY) == 1 )
	{
		sprintf(token,"\n\n¼Ò×åÊØ»¤ÊÞÎÞ·¨´æÈë²Ö¿âร¡");
		return;
	}

#ifdef _CHECK_ENEMY_PET
	{
		int j;
		for( j=0;j<ENEMYTEMP_getEnemyNum();j++ ) {//ENEMY_getEnemyNum()
			if( CHAR_getInt( petindex, CHAR_PETID) == ENEMYTEMP_getInt( j, E_T_TEMPNO ) ) {//ENEMY_getInt( j, ENEMY_TEMPNO)
				if( ENEMYTEMP_getInt( j, E_T_PETFLG ) == 0 ){//ENEMY_getInt( j, ENEMY_PETFLG) 
				    sprintf(token,"\n\nÕâÊDz»ÄܳÖÓеijèÎïร¡");
					return;
				}
			}
		}
	}
#endif    
	// ÎëÎåë¼ëÔÊ£Ûó¡±å¼ëØÆ»¯ÃñÄáÓÀÛÍØÆ»¯ÖÐÔ¼°Æ¥£Ý³ð³ðÆ¥ÎëÖл¯ÖÐئÖм°·´Ôƾ®ØÆÖÐ
	emptyindex = CHAR_getCharDepotPetElement( 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_setDepotPetIndex( 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 );
	// ʸÓÀÐþë  ØêÐ×·òºë
	if( NPC_DepotPet_CheckRepeat( talker) == 0)  // ¼ì²é±àÂëÖظ´³è
	{
		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
		);
	}
	else
	{
		CHAR_talkToCli( talker, -1, "ÕâÊÇ·Ç·¨µÄ³èÎïà¸!!", CHAR_COLORYELLOW);
	}

}