Junior Member
Join Date: Feb 2007
Location: Nice, France
|
09-01-2008
, 18:13
Re: Hud msg from a .txt
|
#4
|
well,
i dont know a lot about sockets but here we go (there is probably some errors, but the principal is here)
PHP Code:
#pragma semicolon 1;
new const VERSION[] = "0.1.a" new const V_DATE[] = "01/09/2008";
/* ------------------------------------------------------------------------------------------------- ---------------------------------------- Socket Hud Message ------------------------------------- ------------------------------------------------------------------------------------------------- By PrEn1umz ------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------
Cvar: ---------- amxx_sockets_hud : 0/1 - display hud message or not
------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- */
#include <amxmodx> #include <sockets>
#define SCRIPT_NAME "/hud.txt" #define REMOTE_HOST "url.com" #define LOCAL_FILE "htmlread.txt"
new pCVAR_sockets_hud;
new g_SocketWeb; new g_SocketTimeOut; new g_SocketDir[128]; new bool:g_SocketWrite_Now; new bool:g_File_Open; new g_File_Handler; new g_Msg[256];
public plugin_init() { register_plugin("Socket Hud Message", VERSION, "PrEn1umz"); set_task(5.0, "Task_Connect_Web"); set_task(10.0, "Task_Display_Msg", 1000, "", 0, "ab"); get_configsdir(g_SocketDir, 127); format(g_SocketDir, 127, "%s/%s", g_SocketDir, LOCAL_FILE); pCVAR_sockets_hud = register_cvar("amxx_sockets_hud", "1"); }
public Task_Connect_Web() { new error = 0; new constring[512];
g_SocketWeb = socket_open(REMOTE_HOST, 80, SOCKET_TCP, error); if (g_SocketWeb > 0) { format(constring, 511, "GET %s HTTP/1.1^nHost: %s^n^n", SCRIPT_NAME, REMOTE_HOST); Write_Web(constring); Read_Web(); } else { switch (error) { case 1: server_print("Error creating socket"); case 2: server_print("Error resolving remote hostname"); case 3: server_print("Error connecting socket"); } } return PLUGIN_CONTINUE; }
public Read_Web() { new buffer[512]; if (socket_change(g_SocketWeb, 100)) { g_SocketTimeOut = 0; socket_recv(g_SocketWeb, buffer, 511); if (!g_SocketWrite_Now) { new search = strfind(buffer, "Your.url", 0, 0); if (search != -1) { copy(buffer, 511, buffer[search]); g_SocketWrite_Now = true; } } if (g_SocketWrite_Now) { if (!g_File_Open) { g_File_Handler = fopen(g_SocketDir, "w+"); g_File_Open = true; } if (g_File_Open) { fputs(g_File_Handler, buffer); } } } else { g_SocketTimeOut ++; } if (g_SocketTimeOut >= 5) { Disconnect_Web(); } else { set_task(0.1, "Read_Web"); } return PLUGIN_CONTINUE; }
public Write_Web(text[512]) { socket_send(g_SocketWeb, text, 511); }
public Disconnect_Web() { if (!g_SocketWrite_Now) { log_amx("Error getting HTTP data"); } if (g_File_Open) { fclose(g_File_Handler); } socket_close(g_SocketWeb); Get_HudMsg();
return PLUGIN_HANDLED; }
public Get_HudMsg() { if (file_exists(g_SocketDir) == 1) { new temp[64]; new file = fopen(g_SocketDir, "rt"); while (!feof(file)) { fgets(file, temp, 63); parse(temp, g_Msg, 255); } fclose(file); } else { format(g_Msg, 255, "Error while connecting server"); }
return PLUGIN_CONTINUE; }
public Task_Display_Msg(id) { if (get_pcvar_num(pCVAR_sockets_hud)) { set_hudmessage(255, 0, 0, -1.0, 0.8, 0, 2.0, 2.0, 0.2, 0.2, 1); show_hudmessage(index, g_Msg); } }
|
|