Beispiel #1
0
void saacproto_DBGetEntryRank_recv( int fd,
                                    char* table,
                                    char* key,
                                    int msgid,
                                    int msgid2)
{
    int rk,c;

    if( !is_game_server_login(fd) ){
        saacproto_DBGetEntryRank_send( fd, FAILED, 0,0,"","",msgid, msgid2 );
        return;
    }
    
    dbGetEntryRank( table, key , &rk, &c );
    if( rk <0 ){
        saacproto_DBGetEntryRank_send(
            fd, FAILED, -1, -1, table, key, msgid, msgid2 );
    } else {
        saacproto_DBGetEntryRank_send( fd, SUCCESSFUL,
                                       rk, c, table, key, 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;
	}
}