Member
Join Date: Jul 2017
Location: Ecuador
|
11-28-2017
, 00:31
Re: game_text l4d2 help
|
#26
|
Quote:
Originally Posted by Emilio3
i dont know to do for my speaker plugin read the vscripts
if you give me small help im gratefull
spanish: aceleracion no se como hacerlo pero me printa en el centro del server y me gustaria ke me printara a la derecha abajo. ayudame si tu sabes como conseguirlo, y gracias amigo por resolver el statico logo
PHP Code:
#include <sourcemod>
forward OnClientSpeaking(client);
public Extension:__ext_voice =
{
name = "VoiceHook",
file = "VoiceHook.ext",
autoload = 1,
required = 1,
}
bool ClientSpeaking[MAXPLAYERS+1];
int iCount;
char SpeakingPlayers[128];
public void OnPluginStart()
{
CreateTimer(0.7, UpdateSpeaking, _, TIMER_REPEAT);
}
public OnClientSpeaking(client)
{
ClientSpeaking[client] = true;
}
public Action UpdateSpeaking(Handle timer)
{
iCount = 0;
SpeakingPlayers[0] = '\0';
for (int i = 1; i <= MaxClients; i++)
{
if (ClientSpeaking[i])
{
if (!IsClientInGame(i)) continue;
Format(SpeakingPlayers, sizeof(SpeakingPlayers), "%s\n%N", SpeakingPlayers, i);
iCount++;
}
ClientSpeaking[i] = false;
}
if (iCount > 0)
{
for (int i = 1; i <= MaxClients; i++)
{
PrintCenterText(i, "Players Speaking:%s", SpeakingPlayers);
}
}
}
|
I had the idea of doing it this way, but I have not tried it so I do not know if it will work. It is already warned.
VScript by default: "speakerhud.nut"
Code:
HUDTable <-
{
Fields =
{
speak =
{
slot = HUD_MID_BOX,
dataval = "",
flags = HUD_FLAG_ALIGN_LEFT| HUD_FLAG_NOBG,
name = "speak"
}
}
}
HUDSetLayout(HUDTable)
HUDPlace(HUD_MID_BOX, 0.8 , 0.5 , 0.2 , 0.1)
//g_RoundState
The plugin should create it by default, but since I have not tried xdd.
PHP Code:
#include <sourcemod>
forward OnClientSpeaking(client);
public Extension:__ext_voice =
{
name = "VoiceHook",
file = "VoiceHook.ext",
autoload = 1,
required = 1,
}
ConVar cvar_speakerlist_type;
int iSpeakListType;
bool ClientSpeaking[MAXPLAYERS+1];
int iCount;
char SpeakingPlayers[128];
char sPath_VscriptHUD[PLATFORM_MAX_PATH];
public void OnPluginStart()
{
cvar_speakerlist_type = CreateConVar("l4d2_speakerlist_type", "0", "Speaker list type (0: Center text, 1: Hud Layout) [DEFAULT: 0]", PLUGIN_FCVAR, true, 0.0, true, 1.0);
RegAdminCmd("sm_runvscript", Command_RunVscript, ADMFLAG_ROOT);
HookConVarChange(cvar_speakerlist_type, Cvar_Changed);
char sPath[PLATFORM_MAX_PATH];
strcopy(sPath, sizeof(sPath), "scripts/vscripts");
if(DirExists(sPath) == false)
{
CreateDirectory(sPath, 511);
}
Format(sPath_VscriptHUD, sizeof(sPath_VscriptHUD), "scripts/vscripts/speakerhud.nut")
if(FileExists(sPath_VscriptHUD) == false || FileSize(sPath_VscriptHUD) == 0)
{
SaveVscriptHUD();
}
CreateTimer(0.7, UpdateSpeaking, _, TIMER_REPEAT);
}
public OnClientSpeaking(client)
{
ClientSpeaking[client] = true;
}
public void OnConfigsExecuted()
{
GetCvars();
}
public void Cvar_Changed(ConVar convar, const char[] oldValue, const char[] newValue)
{
GetCvars();
}
void GetCvars()
{
iSpeakListType = GetConVarInt(cvar_speakerlist_type);
}
public Action Command_RunVscript(int client, int args)
{
if(args < 1)
{
return Plugin_Handled
}
char vscriptFile[40];
GetCmdArg(1, vscriptFile, sizeof(vscriptFile));
int entity = CreateEntityByName("logic_script");
if( entity != -1 )
{
DispatchKeyValue(entity, "vscripts", vscriptFile);
DispatchSpawn(entity);
SetVariantString("OnUser1 !self:RunScriptCode::0:-1");
AcceptEntityInput(entity, "AddOutput");
SetVariantString("OnUser1 !self:Kill::1:-1");
AcceptEntityInput(entity, "AddOutput");
AcceptEntityInput(entity, "FireUser1");
}
return Plugin_Handled;
}
public Action UpdateSpeaking(Handle timer)
{
iCount = 0;
SpeakingPlayers[0] = '\0';
for (int i = 1; i <= MaxClients; i++)
{
if (ClientSpeaking[i])
{
if (!IsClientInGame(i)) continue;
if(iSpeakListType)
{
Format(SpeakingPlayers, sizeof(SpeakingPlayers), "%s\n> %N", SpeakingPlayers, i);
}
else
{
Format(SpeakingPlayers, sizeof(SpeakingPlayers), "%s\n%N", SpeakingPlayers, i);
}
iCount++;
}
ClientSpeaking[i] = false;
}
if (iCount > 0)
{
if(iSpeakListType)
{
UpdateDatavalHUD("Players Speaking:%s", SpeakingPlayers);
ServerCommand("sm_runvscript speakerhud");
//ServerCommand("script_execute speakerhud.nut"); //Try this if the previous command does not work
}
else
{
for (int i = 1; i <= MaxClients; i++)
{
PrintCenterText(i, "Players Speaking:%s", SpeakingPlayers);
}
}
}
else
{
if(iSpeakListType)
{
ResetHUD();
ServerCommand("sm_runvscript speakerhud");
//ServerCommand("script_execute speakerhud.nut"); //Try this if the previous command does not work
}
}
}
void UpdateDatavalHUD(const char[] format, any ...)
{
char buffer[200];
VFormat(buffer, sizeof(buffer), format, 2);
SaveVscriptHUD(buffer);
}
void ResetHUD()
{
SaveVscriptHUD();
}
void SaveVscriptHUD(const char[] dataval = "")
{
Handle hFile = OpenFile(sPath_VscriptHUD, "w");
if(hFile)
{
WriteFileLine(hFile, "HUDTable <-");
WriteFileLine(hFile, "{");
WriteFileLine(hFile, " Fields = ");
WriteFileLine(hFile, " {");
WriteFileLine(hFile, " speak = ");
WriteFileLine(hFile, " {");
WriteFileLine(hFile, " slot = HUD_MID_BOX,");
if(!StrEqual(dataval, ""))
{
WriteFileLine(hFile, " dataval = \"%s\",", dataval);
}
WriteFileLine(hFile, " flags = HUD_FLAG_ALIGN_LEFT| HUD_FLAG_NOBG,");
WriteFileLine(hFile, " name = \"speak\"");
WriteFileLine(hFile, " }");
WriteFileLine(hFile, " }");
WriteFileLine(hFile, "}");
WriteFileLine(hFile, "HUDSetLayout(HUDTable)");
WriteFileLine(hFile, "HUDPlace(HUD_MID_BOX, 0.8 , 0.5 , 0.2 , 0.1)");
//WriteFileLine(hFile, "g_RoundState");
CloseHandle(hFile);
}
}
I upload the beta plugin that I have made.
__________________
by Ⓐ Aceleración Ⓐ
To succeed in your goals, use your true potential
|
|