1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
/*
Inserts the player's time into the database.
*/
void DB_SaveTime(int client, int course, int mode, int style, float runTime, int teleportsUsed)
{
if (IsFakeClient(client))
{
return;
}
char query[1024];
int steamID = GetSteamAccountID(client);
int mapID = GOKZ_DB_GetCurrentMapID();
int runTimeMS = GOKZ_DB_TimeFloatToInt(runTime);
DataPack data = new DataPack();
data.WriteCell(GetClientUserId(client));
data.WriteCell(steamID);
data.WriteCell(mapID);
data.WriteCell(course);
data.WriteCell(mode);
data.WriteCell(style);
data.WriteCell(runTimeMS);
data.WriteCell(teleportsUsed);
Transaction txn = SQL_CreateTransaction();
// Save runTime to DB
FormatEx(query, sizeof(query), sql_times_insert, steamID, mode, style, runTimeMS, teleportsUsed, mapID, course);
txn.AddQuery(query);
SQL_ExecuteTransaction(gH_DB, txn, DB_TxnSuccess_SaveTime, DB_TxnFailure_Generic_DataPack, data, DBPrio_Normal);
}
public void DB_TxnSuccess_SaveTime(Handle db, DataPack data, int numQueries, Handle[] results, any[] queryData)
{
data.Reset();
int client = GetClientOfUserId(data.ReadCell());
int steamID = data.ReadCell();
int mapID = data.ReadCell();
int course = data.ReadCell();
int mode = data.ReadCell();
int style = data.ReadCell();
int runTimeMS = data.ReadCell();
int teleportsUsed = data.ReadCell();
delete data;
if (!IsValidClient(client))
{
return;
}
Call_OnTimeInserted(client, steamID, mapID, course, mode, style, runTimeMS, teleportsUsed);
}
public void DB_DeleteTime(int client, int timeID)
{
DataPack data = new DataPack();
data.WriteCell(client == 0 ? -1 : GetClientUserId(client)); // -1 if called from server console
data.WriteCell(timeID);
char query[1024];
FormatEx(query, sizeof(query), sql_times_delete, timeID);
Transaction txn = SQL_CreateTransaction();
txn.AddQuery(query);
SQL_ExecuteTransaction(gH_DB, txn, DB_TxnSuccess_TimeDeleted, DB_TxnFailure_Generic_DataPack, data, DBPrio_Low);
}
public void DB_TxnSuccess_TimeDeleted(Handle db, DataPack data, int numQueries, Handle[] results, any[] queryData)
{
data.Reset();
int client = GetClientOfUserId(data.ReadCell());
int timeID = data.ReadCell();
delete data;
GOKZ_PrintToChatAndLog(client, true, "%t", "Time Deleted",
timeID);
}
|