Skip to content

Commit

Permalink
Save run/zone name as a value instead of the section name
Browse files Browse the repository at this point in the history
  • Loading branch information
TotallyMehis committed Jul 4, 2020
1 parent 6b36579 commit 309e819
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 45 deletions.
33 changes: 24 additions & 9 deletions addons/sourcemod/scripting/influx_core.sp
Expand Up @@ -3082,11 +3082,17 @@ stock bool LoadRunFromKv( KeyValues kv )
LogError( INF_CON_PRE..."Found duplicate run id %i!", runid );
return false;
}

if ( !kv.GetSectionName( szRun, sizeof( szRun ) ) )


kv.GetString( "name", szRun, sizeof( szRun ), "" );
if ( szRun[0] == 0 )
{
LogError( INF_CON_PRE..."Couldn't read run name!" );
return false;
// Fallback to section name.
if ( !kv.GetSectionName( szRun, sizeof( szRun ) ) )
{
LogError( INF_CON_PRE..."Couldn't read run name from kv!" );
return false;
}
}


Expand All @@ -3109,6 +3115,8 @@ stock bool LoadRunFromKv( KeyValues kv )

stock void BuildRunKvs( ArrayList kvs )
{
char szRun[MAX_RUN_NAME];
char szKeyValueName[64];
decl data[RUN_SIZE];
float vec[3];

Expand All @@ -3117,11 +3125,14 @@ stock void BuildRunKvs( ArrayList kvs )
{
g_hRuns.GetArray( i, data );


KeyValues kv = new KeyValues( view_as<char>( data[RUN_NAME] ) );

int runid = data[RUN_ID];

FormatEx( szKeyValueName, sizeof( szKeyValueName ), "run%i", runid );
KeyValues kv = new KeyValues( szKeyValueName );


kv.SetNum( "id", data[RUN_ID] );
kv.SetNum( "id", runid );


kv.SetNum( "resflags", data[RUN_RESFLAGS] );
Expand All @@ -3148,17 +3159,21 @@ stock void BuildRunKvs( ArrayList kvs )
{
LogError( INF_CON_PRE..."Run of id %i had invalid teleport yaw. No yaw will be saved.", data[RUN_ID] );
}

strcopy( szRun, sizeof( szRun ), view_as<char>( data[RUN_NAME] ) );
kv.SetString( "name", szRun );


// Ask other plugins if they want to save some data.
Call_StartForward( g_hForward_OnRunSave );
Call_PushCell( data[RUN_ID] );
Call_PushCell( runid );
Call_PushCell( view_as<int>( kv ) );
Call_Finish();


decl arr[2];
arr[0] = view_as<int>( kv );
arr[1] = data[RUN_ID];
arr[1] = runid;

kvs.PushArray( arr );
}
Expand Down
86 changes: 50 additions & 36 deletions addons/sourcemod/scripting/influx_zones.sp
Expand Up @@ -1160,8 +1160,9 @@ stock bool LoadZoneFromKv( KeyValues kv )
ZoneType_t zonetype;
int zoneid;

decl String:szType[32];
char szType[32];
bool bInvalidZoneType;
char szZoneName[MAX_ZONE_NAME];


kv.GetString( "type", szType, sizeof( szType ), "" );
Expand Down Expand Up @@ -1211,7 +1212,17 @@ stock bool LoadZoneFromKv( KeyValues kv )
}


kv.GetSectionName( view_as<char>( data[ZONE_NAME] ), MAX_ZONE_NAME );
kv.GetString( "name", szZoneName, sizeof( szZoneName ), "" );
if ( szZoneName[0] == 0 )
{
// Fallback to section name.
if ( !kv.GetSectionName( szZoneName, sizeof( szZoneName ) ) )
{
LogError( INF_CON_PRE..."Couldn't find zone name! (id: %i)", zoneid );
}
}

strcopy( view_as<char>( data[RUN_NAME] ), MAX_ZONE_NAME, szZoneName );


// Ask other plugins what to load.
Expand Down Expand Up @@ -1316,37 +1327,61 @@ stock int SaveZones( bool bForceType = false, bool bUseDb = false )

stock void BuildZoneKvs( ArrayList kvs )
{
decl String:szBuffer[256];
char szBuffer[256];
char szKeyValueName[64];

decl data[ZONE_SIZE];
int zoneid;
ZoneType_t zonetype;
int itype;


for ( int i = 0; i < g_hZones.Length; i++ )
{
g_hZones.GetArray( i, data, sizeof( data ) );

// Forward slashes need to be removed since they create a subkey. WHY?!?!?!
ReplaceString( view_as<char>( data[ZONE_NAME] ), MAX_ZONE_NAME, "/", "" );

KeyValues kv = new KeyValues( view_as<char>( data[ZONE_NAME] ) );



zoneid = data[ZONE_ID];
int zoneid = data[ZONE_ID];
if ( zoneid < 1 ) continue;


zonetype = view_as<ZoneType_t>( data[ZONE_TYPE] );
ZoneType_t zonetype = view_as<ZoneType_t>( data[ZONE_TYPE] );

itype = FindZoneType( zonetype );
int itype = FindZoneType( zonetype );
if ( itype == -1 )
{
continue;
}



FormatEx( szKeyValueName, sizeof( szKeyValueName ), "Zone%i", zoneid );
KeyValues kv = new KeyValues( szKeyValueName );


kv.SetNum( "id", zoneid );


GetZoneTypeShortNameByIndex( itype, szBuffer, sizeof( szBuffer ) );
kv.SetString( "type", szBuffer );


FormatEx( szBuffer, sizeof( szBuffer ), "%.1f %.1f %.1f",
data[ZONE_MINS],
data[ZONE_MINS + 1],
data[ZONE_MINS + 2] );
kv.SetString( "mins", szBuffer );

FormatEx( szBuffer, sizeof( szBuffer ), "%.1f %.1f %.1f",
data[ZONE_MAXS],
data[ZONE_MAXS + 1],
data[ZONE_MAXS + 2] );
kv.SetString( "maxs", szBuffer );


strcopy( szBuffer, sizeof( szBuffer ), view_as<char>( data[ZONE_NAME] ) );
kv.SetString( "name", szBuffer );





// Ask other plugins what to save.
Action res;
Expand Down Expand Up @@ -1377,27 +1412,6 @@ stock void BuildZoneKvs( ArrayList kvs )
Call_Finish();



kv.SetNum( "id", zoneid );


GetZoneTypeShortNameByIndex( itype, szBuffer, sizeof( szBuffer ) );
kv.SetString( "type", szBuffer );


FormatEx( szBuffer, sizeof( szBuffer ), "%.1f %.1f %.1f",
data[ZONE_MINS],
data[ZONE_MINS + 1],
data[ZONE_MINS + 2] );
kv.SetString( "mins", szBuffer );

FormatEx( szBuffer, sizeof( szBuffer ), "%.1f %.1f %.1f",
data[ZONE_MAXS],
data[ZONE_MAXS + 1],
data[ZONE_MAXS + 2] );
kv.SetString( "maxs", szBuffer );


decl arr[2];
arr[0] = view_as<int>( kv );
arr[1] = zoneid;
Expand Down

0 comments on commit 309e819

Please sign in to comment.