sm-plugins/_FileNetMessages/scripting/filenetmessages.sp
neon a50a22b3b8 WIP: filenetmessages
leftovers from zuff :(
2019-10-14 22:06:58 +02:00

150 lines
4.2 KiB
SourcePawn

#include <sourcemod>
#include <filenetmessages>
//----------------------------------------------------------------------------------------------------
public void OnPluginStart()
{
RegConsoleCmd("sm_request", Command_Request);
RegConsoleCmd("sm_create", Command_Create);
}
//----------------------------------------------------------------------------------------------------
public Action Command_Request(int client, int argc)
{
FNM_RequestFile(client, "data/unloze/keychain.dat");
return Plugin_Handled;
}
//----------------------------------------------------------------------------------------------------
// Purpose: We requested the file, client had it and we recieved it.
//----------------------------------------------------------------------------------------------------
public void FNM_OnFileReceived(int client, const char[] filename, int transferid)
{
char sUserHash[32];
ReadUserHashFile(client, sUserHash, sizeof(sUserHash));
PrintToChatAll("Returned hash for %N: %s", client, sUserHash);
}
//----------------------------------------------------------------------------------------------------
// Purpose: We requested the file, client didnt have it.
//----------------------------------------------------------------------------------------------------
public void FNM_OnFileDenied(int client, const char[] filename, int transferid)
{
PrintToChatAll("Returned hash for %N: %s", client, "DEUS VULT");
}
//----------------------------------------------------------------------------------------------------
public Action Command_Create(int client, int argc)
{
char sUserHash[32];
for(int i; i < 30; i++)
{
switch(GetRandomInt(1, 3))
{
// Numbers
case(1): sUserHash[i] = view_as<char>(GetRandomInt(48, 57));
//Capitals
case(2): sUserHash[i] = view_as<char>(GetRandomInt(65, 90));
//Letters
case(3): sUserHash[i] = view_as<char>(GetRandomInt(97, 122));
}
}
PrintToChatAll("Creating user hash for %N: %s", client, sUserHash);
SendUserHashFile(client, sUserHash);
return Plugin_Handled;
}
//----------------------------------------------------------------------------------------------------
public void SendUserHashFile(client, const char[] sHash)
{
if(FileExists("data/unloze/keychain.dat"))
{
LogError("%L hash file exists, stopping to prevent conflicts!", client);
return;
}
File fFile;
if((fFile = OpenFile("data/unloze/keychain.dat", "w")) != null)
{
fFile.WriteString(sHash, false);
fFile.Close();
}
else
{
LogError("%L failed to create hash file.", client);
return;
}
if(FNM_SendFile(client, "data/unloze/keychain.dat") == 0)
{
LogError("%L failed to send hash file.", client);
return;
}
if(!DeleteFile("data/unloze/keychain.dat"))
{
LogError("%L failed to delete hash file.", client);
return;
}
}
//----------------------------------------------------------------------------------------------------
public void ReadUserHashFile(client, char[] sHash, int hashLength)
{
if(!FileExists("download/data/unloze/keychain.dat"))
{
LogError("%L hash file does not exists, unable to read!", client);
return;
}
File fFile;
if((fFile = OpenFile("download/data/unloze/keychain.dat", "r")) != null)
{
fFile.ReadString(sHash, hashLength);
fFile.Close();
}
else
{
LogError("%L failed to read hash file.", client);
return;
}
if(!DeleteFile("download/data/unloze/keychain.dat"))
{
LogError("%L failed to delete hash file.", client);
return;
}
}
//----------------------------------------------------------------------------------------------------
// Purpose: Have yet to figure out when this fires.
//----------------------------------------------------------------------------------------------------
public void FNM_OnFileSent(int client, const char[] filename, int transferid)
{
PrintToServer("FNM_OnFileSent: %N -> %s", client, filename);
}
//----------------------------------------------------------------------------------------------------
// Purpose: Client requested a file, so far only seems to fire for user_custom data files.
//----------------------------------------------------------------------------------------------------
public Action FNM_OnFileRequested(int client, const char[] filename, int transferid)
{
PrintToServer("FNM_OnFileRequested: %N -> %s", client, filename);
}