24/09/2021, 11:44 PM
Código PHP:
#include <amxmodx>
#include <colorchat>
new Array:Text, Array:TextFormat
new gHud
new cvarMensajes, cvarTiempo, cvarChance, cvarLeer
new const szDir[] = "addons\amxmodx\configs\mensajes.txt"
public plugin_init()
{
register_plugin("Random Message", "1.0", "Gonza.-*")
Text = ArrayCreate(555, 1)
TextFormat = ArrayCreate(1, 1)
set_task(0.5, "read")
set_task(1.0, "mensaje")
cvarMensajes = register_cvar("amx_msg_activado", "1")
cvarTiempo = register_cvar("amx_msg_tiempo", "30.0")
cvarChance = register_cvar("amx_msg_chance", "3")
cvarLeer = register_cvar("amx_msg_leer", "0")
gHud = CreateHudSyncObj()
}
public read(Show)
{
if (Show)
{
ArrayClear(Text)
ArrayClear(TextFormat)
set_task(0.5, "mensaje", 0)
}
static f, say; say = 0
if (file_exists(szDir))
{
f = fopen(szDir, "rt")
while (!feof(f))
{
new Line[555]
fgets(f, Line, charsmax(Line))
if (strlen(Line) < 2 || Line[0] == ';' || (Line[0] == '/' && Line[1] == '/') || (Line[0] == '[' && Line[1] == 'H'))
continue
if (Line[0] == '[' && Line[1] == 'C')
{
say = 1
continue
}
ArrayPushString(Text, Line)
ArrayPushCell(TextFormat, say)
}
if (f) fclose(f)
}
}
public mensaje(Leer)
{
if (get_pcvar_num(cvarMensajes) && get_pcvar_num(cvarLeer) && Leer)
{
read(1)
return
}
set_task(get_pcvar_float(cvarTiempo), "mensaje", 50)
if (random_num(1, get_pcvar_num(cvarChance)) == get_pcvar_num(cvarMensajes))
{
static iRandom, szText[555]
iRandom = random_num(0, ArraySize(Text) - 1)
ArrayGetArray(Text, iRandom, szText)
if (!strlen(szText)) return
if (ArrayGetCell(TextFormat, iRandom)) // Say
{
static szColor[10]
if (parse(szText, szColor, charsmax(szColor), szText, charsmax(szText)) != 2)
{
log_to_file("ChatError.log", "Mensaje mal formulado (CHAT)")
return
}
replace_all(szText, charsmax(szText), "!v", "^x04")
replace_all(szText, charsmax(szText), "!c", "^x03")
replace_all(szText, charsmax(szText), "!n", "^x01")
ColorChat(0, equali(szColor, "RED") ? RED : equali(szColor, "BLUE") ? BLUE : equali(szColor, "GREY") ? GREY : NORMAL, szText)
}
else // Hud
{
static Float:PosX, Float:PosY, Red, Green, Blue, szPos[3], szColor[3], szDureza[3], szTiempo[5], szFx[3]
if (parse(szText, szPos, charsmax(szPos), szColor, charsmax(szColor), szDureza, charsmax(szDureza),
szTiempo, charsmax(szTiempo), szFx, charsmax(szFx), szText, charsmax(szText)) != 6)
{
log_to_file("ChatError.log", "Mensaje mal formulado (HUD)")
return
}
switch (str_to_num(szPos))
{
case 0: // Medio
{
PosX = -1.0
PosY = -1.0
}
case 1: // Medio (Arriba)
{
PosX = -1.0
PosY = 0.05
}
case 2: // Medio (Abajo)
{
PosX = -1.0
PosY = 0.90
}
case 3: // Medio (Derecha)
{
PosX = 0.90
PosY = -1.0
}
case 4: // Medio (Izquierda)
{
PosX = 0.05
PosY = -1.0
}
case 5: // Esquina superior (Derecha)
{
PosX = 0.90
PosY = 0.05
}
case 6: // Esquina superior (Izquierda)
{
PosX = 0.05
PosY = 0.05
}
case 7: // Esquina inferior (Derecha)
{
PosX = 0.90
PosY = 0.90
}
case 8: // Esquina inferior (Izquierda)
{
PosX = 0.05
PosY = 0.90
}
}
switch (str_to_num(szColor))
{
case 0: // Blanco
{
Red = 255
Green = 255
Blue = 255
}
case 1: // Rojo
{
Red = 255
Green = 0
Blue = 0
}
case 2: // Verde
{
Red = 0
Green = 255
Blue = 0
}
case 3: // Azul
{
Red = 0
Green = 0
Blue = 255
}
case 4: // Amarillo
{
Red = 255
Green = 255
Blue = 0
}
case 5: // Violeta
{
Red = 255
Green = 0
Blue = 255
}
case 6: // Celeste
{
Red = 0
Green = 255
Blue = 255
}
}
if (!str_to_num(szDureza)) // Medio transparente
{
Red = max(0, Red - 155)
Green = max(0, Green - 155)
Blue = max(0, Blue - 155)
}
set_hudmessage(Red, Green, Blue, PosX, PosY, str_to_num(szFx), _, str_to_float(szTiempo), 1.0, 1.0, -1)
ShowSyncHudMsg(0, gHud, szText)
}
}
}
Este sma es de este thread: https://amxmodx-es.com/showthread.php?tid=957
Necesito saber si es posible incorporar un sonido cada vez que estos mensajes aparezcan y de qué manera se pueden agregar a este sma.