#include <signal.h>
#include <unistd.h>
#include <time.h>
+#include <string.h>
volatile sig_atomic_t sig_stop;
#include "gameserver.h"
-#include "highscores.c"
-#include "servermonitor_server.c"
#include "vg/vg_opt.h"
#include "network_common.h"
#include "gameserver_db.h"
basic->sound_effects = 0;
struct gameserver_client *c0 = &gameserver.clients[client_id];
- c0->instance = frame->instance_id;
+ c0->instance = frame->flags & NETMSG_PLAYERFRAME_INSTANCE_ID;
for( int i=0; i<vg_list_size(gameserver.clients); i++ ){
if( i == client_id )
vg_strnull( &q, buf, 512 );
vg_strcat( &q, "SELECT * FROM \"" );
vg_strcat( &q, table_name );
- vg_strcat( &q, "\" ORDER BY time DESC LIMIT 10;" );
+ vg_strcat( &q, "\" ORDER BY time ASC LIMIT 10;" );
if( !vg_strgood(&q) )
return k_request_status_out_of_memory;
continue;
vg_msg_frame( msg, "" );
- vg_msg_wkvu32( msg, "time", time );
- vg_msg_wkvu64( msg, "steamid", steamid );
+ vg_msg_wkvnum( msg, "time", k_vg_msg_u32, 1, &time );
+ vg_msg_wkvnum( msg, "steamid", k_vg_msg_u64, 1, &steamid );
char username[32];
if( db_getuserinfo( steamid, username, sizeof(username), NULL ) )
if( !strcmp( endpoint, "scoreboard" ) ){
const char *mod = vg_msg_getkvstr( &data, "mod" );
const char *route = vg_msg_getkvstr( &data, "route" );
- u32 week = vg_msg_getkvu32( &data, "week", 0 );
+ u32 week;
+ vg_msg_getkvintg( &data, "week", k_vg_msg_u32, &week, NULL );
if( week == NETWORK_LEADERBOARD_CURRENT_WEEK ){
gameserver_cat_table( &body, mod, route,
return;
}
- i32 centiseconds = vg_msg_getkvi32( &data, "time", -1 );
+ i32 centiseconds;
+ vg_msg_getkvintg( &data, "time", k_vg_msg_i32, ¢iseconds, NULL );
if( centiseconds < 5*100 ){
gameserver_request_respond( k_request_status_client_error,
res, NULL, msg );
db_writeusertime( alltime_table, client->steamid, centiseconds, 1 );
db_writeusertime( weekly_table, client->steamid, centiseconds, 1 );
-
gameserver_request_respond( k_request_status_ok, res, NULL, msg );
}
else{
return s / 0.01;
}
-static void test_runner( db_request *req ){
- vg_warn( "RUNNER\n" );
- char table[DB_TABLE_UID_MAX];
- if( db_get_highscore_table_name( "sr002-local-mp_mtzero",
- "Coastal Run", 0, table ) ){
- if( db_writeusertime( table, 76561198072130043, 232, 1 ) ){
- vg_success( "Written time\n" );
- i32 v = db_readusertime( table, 76561198072130043 );
- vg_success( "Returned time: %u\n", v );
- }
- }
-}
-
int main( int argc, char *argv[] ){
signal( SIGINT, inthandler );
signal( SIGQUIT, inthandler );
while( vg_argp( argc, argv ) ){
if( vg_long_opt( "noauth" ) )
gameserver.auth_mode = eServerModeNoAuthentication;
-
- /* TODO: Options to override, ammend, remove etc */
}
vg_set_mem_quota( 80*1024*1024 );
vg_alloc_quota();
-
db_init();
- db_request *req = db_alloc_request(0);
- if( req ){
- req->handler = test_runner;
- db_send_request(req);
- }
-
- monitor_start_server(); /* UNIX socket monitor */
/* steamworks init
* --------------------------------------------------------------- */
u64 server_ticks = 8000,
last_record_save = 8000,
- last_scoreboard_gen = 0,
- last_monitor_heartbeat = 0;
+ last_scoreboard_gen = 0;
while( !sig_stop ){
- monitor_event_loop();
steamworks_event_loop( hsteampipe );
poll_connections();
usleep(10000);
server_ticks ++;
- if( server_ticks >
- (last_monitor_heartbeat + seconds_to_server_ticks(10.0))){
- last_monitor_heartbeat = server_ticks;
- monitor_heartbeat();
- }
-
if( db_killed() )
break;
}