From 3b5f93bf6ec7f3d64aec4b67ea5f43697570ec40 Mon Sep 17 00:00:00 2001 From: Tk Date: Sun, 9 Jul 2023 00:36:00 +0200 Subject: [PATCH] New syntax --- demostf.smx | Bin 6637 -> 6893 bytes demostf.sp | 124 +++++++++++++++++++++++++--------------------------- 2 files changed, 60 insertions(+), 64 deletions(-) diff --git a/demostf.smx b/demostf.smx index 390b8f8906d37947c67731171fc016255c98cefc..dc86dbe19ef9d81b382c4b8576ff87f2b026dedc 100644 GIT binary patch delta 6730 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 delta 6472 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 diff --git a/demostf.sp b/demostf.sp index ddf1089..2685a8a 100644 --- a/demostf.sp +++ b/demostf.sp @@ -1,25 +1,25 @@ #pragma semicolon 1 -#include +#pragma newdecls required #include -public Plugin:myinfo = +public Plugin myinfo = { name = "demos.tf uploader", author = "Icewind", description = "Auto-upload match stv to demos.tf", version = "0.3.1", url = "https://demos.tf" -}; +} -new CURL_Default_opt[][2] = { - {_:CURLOPT_NOSIGNAL,1}, - {_:CURLOPT_NOPROGRESS,1}, - {_:CURLOPT_TIMEOUT,600}, - {_:CURLOPT_CONNECTTIMEOUT,600}, - {_:CURLOPT_USE_SSL,CURLUSESSL_TRY}, - {_:CURLOPT_SSL_VERIFYPEER,0}, - {_:CURLOPT_SSL_VERIFYHOST,0}, - {_:CURLOPT_VERBOSE,0} +int CURL_Default_opt[][2] = { + {view_as(CURLOPT_NOSIGNAL),1}, + {view_as(CURLOPT_NOPROGRESS),1}, + {view_as(CURLOPT_TIMEOUT),600}, + {view_as(CURLOPT_CONNECTTIMEOUT),600}, + {view_as(CURLOPT_USE_SSL),CURLUSESSL_TRY}, + {view_as(CURLOPT_SSL_VERIFYPEER),0}, + {view_as(CURLOPT_SSL_VERIFYHOST),0}, + {view_as(CURLOPT_VERBOSE),0} }; /** @@ -28,46 +28,47 @@ new CURL_Default_opt[][2] = { * @param buffer String to convert * @noreturn */ -public CStrToLower(String:buffer[]) { - new len = strlen(buffer); - for(new i = 0; i < len; i++) { +public void CStrToLower(char[] buffer) { + int len = strlen(buffer); + for(int i = 0; i < len; i++) { buffer[i] = CharToLower(buffer[i]); } } #define CURL_DEFAULT_OPT(%1) curl_easy_setopt_int_array(%1, CURL_Default_opt, sizeof(CURL_Default_opt)) -new String:g_sDemoName[256] = ""; -new String:g_sLastDemoName[256] = ""; +char g_sDemoName[256]; +char g_sLastDemoName[256]; -new Handle:g_hCvarAPIKey = INVALID_HANDLE; -new Handle:g_hCvarUrl = INVALID_HANDLE; -new Handle:output_file = INVALID_HANDLE; -new Handle:postForm = INVALID_HANDLE; -new Handle:g_hCvarRedTeamName = INVALID_HANDLE; -new Handle:g_hCvarBlueTeamName = INVALID_HANDLE; +ConVar g_hCvarAPIKey = null; +ConVar g_hCvarUrl = null; +ConVar g_hCvarRedTeamName = null; +ConVar g_hCvarBlueTeamName = null; -new Handle:g_hDemoUploaded = INVALID_HANDLE; +Handle output_file = null; +Handle postForm = null; -public OnPluginStart() +GlobalForward g_hDemoUploaded = null; + +public void OnPluginStart() { g_hCvarAPIKey = CreateConVar("sm_demostf_apikey", "", "API key for demos.tf", FCVAR_PROTECTED); g_hCvarUrl = CreateConVar("sm_demostf_url", "https://demos.tf", "demos.tf url", FCVAR_PROTECTED); g_hCvarRedTeamName = FindConVar("mp_tournament_redteamname"); g_hCvarBlueTeamName = FindConVar("mp_tournament_blueteamname"); - g_hDemoUploaded = CreateGlobalForward("DemoUploaded", ET_Ignore, Param_Cell, Param_String, Param_String); + g_hDemoUploaded = new GlobalForward("DemoUploaded", ET_Ignore, Param_Cell, Param_String, Param_String); RegServerCmd("tv_record", Command_StartRecord); RegServerCmd("tv_stoprecord", Command_StopRecord); } -public OnPluginEnd() +public void OnPluginEnd() { - CloseHandle(g_hDemoUploaded); + delete g_hDemoUploaded; } -public Action:Command_StartRecord(args) +Action Command_StartRecord(int args) { if (strlen(g_sDemoName) == 0) { GetCmdArgString(g_sDemoName, sizeof(g_sDemoName)); @@ -77,7 +78,7 @@ public Action:Command_StartRecord(args) return Plugin_Continue; } -public Action:Command_StopRecord(args) +Action Command_StopRecord(int args) { TrimString(g_sDemoName); if (strlen(g_sDemoName) != 0) { @@ -89,29 +90,28 @@ public Action:Command_StopRecord(args) return Plugin_Continue; } -public Action:StartDemoUpload(Handle:timer) +Action StartDemoUpload(Handle timer) { - decl String:fullPath[128]; + char fullPath[128]; Format(fullPath, sizeof(fullPath), "%s.dem", g_sLastDemoName); UploadDemo(fullPath); + + return Plugin_Continue; } -UploadDemo(const String:fullPath[]) +void UploadDemo(const char[] fullPath) { - decl String:APIKey[128]; - GetConVarString(g_hCvarAPIKey, APIKey, sizeof(APIKey)); - decl String:BaseUrl[64]; - GetConVarString(g_hCvarUrl, BaseUrl, sizeof(BaseUrl)); - new String:Map[64]; + char APIKey[128], BaseUrl[64], bluname[128], redname[128], Map[64]; + g_hCvarAPIKey.GetString(APIKey, sizeof(APIKey)); + g_hCvarUrl.GetString(BaseUrl, sizeof(BaseUrl)); + g_hCvarRedTeamName.GetString(redname, sizeof(redname)); + g_hCvarBlueTeamName.GetString(bluname, sizeof(bluname)); GetCurrentMap(Map, sizeof(Map)); - PrintToChatAll("[demos.tf]: Uploading demo %s", fullPath); - new Handle:curl = curl_easy_init(); - CURL_DEFAULT_OPT(curl); - decl String:bluname[128]; - decl String:redname[128]; - GetConVarString(g_hCvarRedTeamName, redname, sizeof(redname)); - GetConVarString(g_hCvarBlueTeamName, bluname, sizeof(bluname)); + PrintToChatAll("[demos.tf]: Uploading demo %s", fullPath); + + Handle curl = curl_easy_init(); + CURL_DEFAULT_OPT(curl); postForm = curl_httppost(); curl_formadd(postForm, CURLFORM_COPYNAME, "demo", CURLFORM_FILE, fullPath, CURLFORM_END); curl_formadd(postForm, CURLFORM_COPYNAME, "name", CURLFORM_COPYCONTENTS, fullPath, CURLFORM_END); @@ -119,49 +119,45 @@ UploadDemo(const String:fullPath[]) curl_formadd(postForm, CURLFORM_COPYNAME, "blu", CURLFORM_COPYCONTENTS, bluname, CURLFORM_END); curl_formadd(postForm, CURLFORM_COPYNAME, "key", CURLFORM_COPYCONTENTS, APIKey, CURLFORM_END); curl_easy_setopt_handle(curl, CURLOPT_HTTPPOST, postForm); - + output_file = curl_OpenFile("output_demo.json", "w"); curl_easy_setopt_handle(curl, CURLOPT_WRITEDATA, output_file); - decl String:fullUrl[128]; + char fullUrl[128]; Format(fullUrl, sizeof(fullUrl), "%s/upload", BaseUrl); curl_easy_setopt_string(curl, CURLOPT_URL, fullUrl); curl_easy_perform_thread(curl, onComplete); } -public onComplete(Handle:hndl, CURLcode:code) +void onComplete(Handle hndl, CURLcode code) { if(code != CURLE_OK) { - new String:error_buffer[256]; + char error_buffer[256]; curl_easy_strerror(code, error_buffer, sizeof(error_buffer)); - CloseHandle(output_file); - CloseHandle(hndl); + delete output_file; + delete hndl; PrintToChatAll("cURLCode error: %d", code); CallDemoUploaded(false, "", ""); } else { - CloseHandle(output_file); - CloseHandle(hndl); + delete output_file; + delete hndl; ShowResponse(); } - CloseHandle(postForm); + delete postForm; return; } -public ShowResponse() +void ShowResponse() { - new Handle:resultFile = OpenFile("output_demo.json", "r"); - new String:output[512]; - ReadFileString(resultFile, output, sizeof(output)); + File resultFile = OpenFile("output_demo.json", "r"); + char output[512]; + resultFile.ReadString(output, sizeof(output)); PrintToChatAll("[demos.tf]: %s", output); LogToGame("[demos.tf]: %s", output); - new String:demoid[16]; - new String:url[256]; - - char url_parts[4][16]; - + char demoid[16], url[256], url_parts[4][16]; strcopy(url, sizeof(url), output); if (StrContains(url, "STV available at: ") != -1) @@ -198,4 +194,4 @@ void CallDemoUploaded(bool success, const char[] demoid, const char[] url) { // Finish the call Call_Finish(); -} +} \ No newline at end of file