Beispiel #1
0
void saacproto_DBGetEntryByCount_recv( int fd,
                                       char* table,
                                       int count_start,
                                       int num,
                                       int msgid ,
                                       int msgid2)
{
    char output[16384];
    int r;

    if( !is_game_server_login(fd) ){
        saacproto_DBGetEntryByCount_send(
            fd, FAILED,"",table,count_start,msgid, msgid2 );
        return;
    }
    
    r = dbGetEntryCountRange( table, count_start, num, output, sizeof(output));

    if( r < 0 ){
        saacproto_DBGetEntryByCount_send( fd, FAILED, "", table,
                                          count_start, msgid, msgid2 );
    } else {
        saacproto_DBGetEntryByCount_send( fd, SUCCESSFUL, output, table,
                                          count_start,  msgid, msgid2 );       
    }
}
void NPC_DuelrankingWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data)
{
	int fdid = getFdidFromCharaIndex( talkerindex);
	if( fdid == -1 ) return;

	if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return;
	switch( seqno){
	case CHAR_WINDOWTYPE_DUELRANKING_START:
		if( atoi( data) == 3 ) {
			saacproto_DBGetEntryByCount_send( acfd, 
											DB_DUELPOINT, 0, 
								NPC_DUELRANKING_WINDOWLINENUM, fdid, 
								CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX));
		}
		if( atoi( data) == 5 ) {
			char dbkey[256];
			CHAR_makeDBKey( talkerindex, dbkey, sizeof( dbkey));
			saacproto_DBGetEntryRank_send( acfd, DB_DUELPOINT, dbkey, fdid,
								CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX));
		}
		break;
	case CHAR_WINDOWTYPE_DUELRANKING_TOPRANKING:
		if( select == WINDOW_BUTTONTYPE_PREV || select == WINDOW_BUTTONTYPE_NEXT) {
			int	count = CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT);
			if( select == WINDOW_BUTTONTYPE_NEXT ) {
				count += NPC_DUELRANKING_WINDOWLINENUM;
			}else {
				count -= NPC_DUELRANKING_WINDOWLINENUM;
			}
	
			if( count < 0) count = 0;
			saacproto_DBGetEntryByCount_send( acfd, 
											DB_DUELPOINT, 
											count,
								NPC_DUELRANKING_WINDOWLINENUM, fdid,
								CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX));
		}else if( select == WINDOW_BUTTONTYPE_OK ) {
			if( strlen( data) != 0 ) {
				int count;
				count = atoi( data);
				if( count < 1 ) count = 1;
				saacproto_DBGetEntryByCount_send( acfd, 
												DB_DUELPOINT, 
												count-1,
									NPC_DUELRANKING_WINDOWLINENUM, fdid,
									CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX));
			}
		}
		break;
	}
}
void NPC_Duelranking_CallMyRanking( int count, int msgid, int msgid2)
{
	count -= 5;
	if( count < 0 ) count = 0;
	saacproto_DBGetEntryByCount_send( acfd,  DB_DUELPOINT, 
									count, NPC_DUELRANKING_WINDOWLINENUM, 
									msgid, msgid2 );
}