示例#1
0
/*------------------------------------------------------------
 * ϶�ý�ľ��  į����įëܰ�����£ۺֽ�ئ�Ȼ������գ�ܰ����ئ��
 * ¦��
 *  charaindex      int     ƽ�ҷ��̼������͵�
 *  titleindex      int     ��į�̼������͵�
 * ߯Ի��
 *  ܰ������index       
 *  ܰ����ئ������      FALSE(0)
 ------------------------------------------------------------*/
BOOL TITLE_addtitle( int charaindex, int titleindex )
{
	int i;
	int firstfindempty=-1;

	if( CHAR_CHECKINDEX(charaindex)  == FALSE )return FALSE;
	/*if( TITLE_CHECKTABLEINDEX(titleindex) == FALSE )return FALSE;*/
	if( TITLE_getTitleIndex( titleindex) == -1 ) return FALSE;

	for( i=0 ; i < CHAR_TITLEMAXHAVE ; i++ ){
		if( CHAR_getCharHaveTitle( charaindex,i ) == titleindex )
			/*  ��ƥ��  �Ȼ����¾���������ئ��  */
			return FALSE;
		if( firstfindempty == -1
			&& CHAR_getCharHaveTitle(charaindex,i) == -1 ){
			firstfindempty = i;
		}
	}
	return CHAR_setCharHaveTitle( charaindex,firstfindempty,titleindex );
}
示例#2
0
/*------------------------------------------------------------
 * �ͷ���ʧ������έ���±�į��  ٯ  ë����
 * ¦��
 *  title       Title*      ��ƽ��
 *  charaindex  int         �𼰱�įë  �Ȼ�����ƽ�ҷ¼��̼������͵�
 * ߯Ի��
 *  char*
 ------------------------------------------------------------*/
char* TITLE_makeTitleStatusString( int charaindex,int havetitleindex )
{
	int     attach;
	int     index;
	/*  ����  �߼��̼������͵����շ�����ë��������  */
	index = CHAR_getCharHaveTitle( charaindex,havetitleindex );

	attach = TITLE_getTitleIndex( index);
	if( attach == -1 ) {
		TITLE_statusStringBuffer[0] = '\0';
		return TITLE_statusStringBuffer;
	}
	switch( TITLE_table[attach].functype ){
	case TITLE_FUNCTYPENONE:
		snprintf( TITLE_statusStringBuffer,
				  sizeof(TITLE_statusStringBuffer ),"%s" ,
				  TITLE_table[attach].name );
		break;
	
	case TITLE_FUNCTYPEUSERFUNC:
	{
		char    string[256]={""};
		void    (*function)(int,char* buf,int buflen);
		function = TITLE_table[attach].definefunction;
		if( function )
			function( charaindex,string,sizeof(string) );

		strcpysafe( TITLE_statusStringBuffer,
					sizeof(TITLE_statusStringBuffer ),string );
	}
	break;
	default:
		TITLE_statusStringBuffer[0] = '\0';
		return TITLE_statusStringBuffer;
		break;
	}
	return TITLE_statusStringBuffer;
}
示例#3
0
/*------------------------------------------------------------
 * ϶�ý�ľ��  į����į��ؤ�����մ������£�ئ��������������ئ�У�
 *   ����ؤ��������  ���ʣ�
 * ¦��
 *  charaindex      int     ƽ�ҷ��̼������͵�
 *  titleindex      int     ��į�̼������͵�
 * ߯Ի��
 *  ��������            TRUE(1)
 *  ������ئ������      FALSE(0)
 ------------------------------------------------------------*/
BOOL TITLE_deltitle( int charaindex, int titleindex )
{
	int i;
	BOOL    del=FALSE;
	int     index;
	if( CHAR_CHECKINDEX(charaindex)  == FALSE )return FALSE;
	/*if( TITLE_CHECKTABLEINDEX(titleindex) == FALSE )return FALSE;*/
	index = TITLE_getTitleIndex( titleindex);
	if(  index == -1 ) return FALSE;

	for( i=0 ; i < CHAR_TITLEMAXHAVE ; i++ )
		if( CHAR_getCharHaveTitle( charaindex,i ) == titleindex ){
			/*  ���л����Ȼ�����֧��ئ���ɣ���ľ��ئ�Ʊ�����    */
			if( CHAR_getInt(charaindex, CHAR_INDEXOFEQTITLE) == i ){
				CHAR_setInt(charaindex, CHAR_INDEXOFEQTITLE, -1 );
			}
			/*    �Ȼ����¾�������  */
			CHAR_setCharHaveTitle( charaindex,i,-1);
			
			del = TRUE;
		}

	return del;
}
示例#4
0
void NPC_DoorLooked( int meindex , int lookedindex )
{
    int needkey;

    if( CHAR_getInt( meindex , CHAR_LV )){
        char token[32];
        char *p = CHAR_getWorkChar( meindex , CHAR_WORKDOORTITLE );
        int i,j,ok=FALSE;
        for(i = 0 ; ; i++ ){
            int r;
            r = getStringFromIndexWithDelim( p,":",2+i,token ,sizeof(token));
            if(r){
                int titleind = atoi( token );
                for(j=0;j<CHAR_TITLEMAXHAVE;j++){
                    if(CHAR_getCharHaveTitle( lookedindex , j ) == titleind ){
                        ok = TRUE;
                        break;
                    }
                    if( ok )break;
                }
            } else {
                break;
            }
            if( ok ) break;
        }
        if( ok ){
            NPC_DoorFlip( meindex , lookedindex );
        } else {
            char arg[512];
            char buf[512];
            NPC_Util_GetArgStr( meindex , arg,sizeof(arg));
            getStringFromIndexWithDelim( arg,"|" , 9 , buf,sizeof(buf));
            CHAR_talkToCli( lookedindex,-1,buf,CHAR_COLORWHITE);
        }
        return;
    }

    if( CHAR_getWorkInt( meindex, CHAR_WORKDOORORIGINALGRAPHIC)==
        ROPEGRAPHIC ){
        return;
    }
    if( CHAR_getInt( meindex , CHAR_DIR ) == -1 ){
        NPC_DoorFlip( meindex , lookedindex );
        return;
    }

    if( CHAR_getWorkInt( meindex , CHAR_WORKDOORSOONFLG ) == 0 &&
        NPC_Util_isBackContact( meindex , lookedindex ) == TRUE ){
        NPC_DoorFlip( meindex , lookedindex);
        return;
    }

    if( CHAR_getWorkInt( meindex, CHAR_WORKDOORPASSFLG)>=1 ){
        if( NPC_Door_isOpen( meindex ) ){
            NPC_DoorFlip( meindex , lookedindex );
            return;
        }
#define		NPC_DOOR_EXPIRE_MSG		"%s 的房间有效期限至 %d/%d %d:%d"
        else {
            if( CHAR_getWorkInt( meindex, CHAR_WORKDOOREXPIRETIME)
                != 0xffffffff ){
                struct tm tmwk;
                time_t	expire = CHAR_getWorkInt( meindex, CHAR_WORKDOOREXPIRETIME);
                char	msgbuf[128];

                NPC_ROOMINFO roominfo;
                /* 由旦午  躲渝蜃毛本永玄允月 */
                NPC_RoomAdminNew_ReadFile(
                        CHAR_getWorkChar( meindex, CHAR_WORKDOORNAME),
                        &roominfo);
                memcpy( &tmwk, localtime( &expire), sizeof( tmwk));
                snprintf( msgbuf, sizeof( msgbuf), NPC_DOOR_EXPIRE_MSG,
                          roominfo.charaname,
                          tmwk.tm_mon+1, tmwk.tm_mday,
                          tmwk.tm_hour, tmwk.tm_min);
                CHAR_talkToCli( lookedindex, meindex, msgbuf, CHAR_COLORWHITE);
            }
        }
#undef NPC_DOOR_EXPIRE_MSG
        return;
    }
    needkey = CHAR_getWorkInt( meindex , CHAR_WORKDOORKEYITEMID );
    if( needkey >= 0 ){
        if( NPC_Util_countHaveItem( lookedindex , needkey ) > 0 ){
            NPC_DoorFlip( meindex , lookedindex);
        } else {
            CHAR_talkToCli( lookedindex , -1 , NPC_DOOR_CANTOPENMSG , CHAR_COLORWHITE );
        }
    } else if( needkey == -1 ){
        NPC_DoorFlip(meindex , lookedindex );
    } else {
        CHAR_talkToCli( lookedindex , -1 , "这扇门似乎怎麽也打不开!" , CHAR_COLORWHITE);
    }
}