#include <amxmodx>
#include <amxmisc>
new onoff,rgb2,density_cvar,r,g,b,g_density[4]
new bool:on
public plugin_init() {
register_plugin("Advanced Fog","0.7","Sh!nE*")
onoff = register_cvar("amx_fog_default","1")
rgb2 = register_cvar("amx_fog_color","116 137 147")
density_cvar = register_cvar("amx_fog_amount","3")
register_concmd("amx_fog","set_fog",ADMIN_MAP,"<be/ki> <r/g/b> <mennyiseg 1-9>")
}
public set_fog(id,level,cid)
{
if (!cmd_access(id,level,cid,4)) return PLUGIN_HANDLED
new args[3][16],rgb[3][4],numrgb[3],i,tempdens[4]
read_argv(1,args[0],15)
read_argv(2,args[1],15)
read_argv(3,args[2],15)
new density = str_to_num(args[2])
if((args[1][0]=='0' && !args[1][2]) || equali(args[1],"off")) {
new temp_rgb2[3][4],temp_rgb[16]
get_pcvar_string(rgb2,temp_rgb,15)
parse(temp_rgb,temp_rgb2[0],3,temp_rgb2[1],3,temp_rgb2[2],3)
for(i=0;i < 3;i++) numrgb[i] = str_to_num(temp_rgb2[i])
} else {
parse(args[1],rgb[0],3,rgb[1],3,rgb[2],3)
for(i=0;i < 3;i++) numrgb[i] = str_to_num(rgb[i])
}
if(numrgb[0] < 0 || numrgb[0] > 255 || numrgb[1] < 0 || numrgb[1] > 255 || numrgb[2] < 0 || numrgb[2] > 255) {
client_print(id,print_console,"FELHIVAS: RGB csak 0 es 255 kozotti szam lehet!");
for(i=0;i < 3;i++) numrgb[i] = 150
}
if(density == 0 || density > 9 || density < 1) {client_print(id,print_console,"FELHIVAS: A kodmennyisegi ertek 1 es 9 kozott lehet!");density = get_pcvar_num(density_cvar);}
switch(density) {
case 1:{tempdens[0]=3;tempdens[1]=58;tempdens[2]=111;tempdens[3]=18;}
case 2:{tempdens[0]=125;tempdens[1]=58;tempdens[2]=111;tempdens[3]=18;}
case 3:{tempdens[0]=27;tempdens[1]=59;tempdens[2]=66;tempdens[3]=96;}
case 4:{tempdens[0]=60;tempdens[1]=59;tempdens[2]=90;tempdens[3]=101;}
case 5:{tempdens[0]=68;tempdens[1]=59;tempdens[2]=90;tempdens[3]=101;}
case 6:{tempdens[0]=95;tempdens[1]=59;tempdens[2]=10;tempdens[3]=41;}
case 7:{tempdens[0]=125;tempdens[1]=59;tempdens[2]=111;tempdens[3]=18;}
case 8:{tempdens[0]=3;tempdens[1]=60;tempdens[2]=111;tempdens[3]=18;}
case 9:{tempdens[0]=19;tempdens[1]=60;tempdens[2]=68;tempdens[3]=116;}
}
g_density[0]=tempdens[0]
g_density[1]=tempdens[1]
g_density[2]=tempdens[2]
g_density[3]=tempdens[3]
r = numrgb[0]
g = numrgb[1]
b = numrgb[2]
if(equali(args[0],"on") || args[0][0]=='1') {
on = true
message_begin(MSG_ALL,get_user_msgid("Fog"),{0,0,0},0)
write_byte(numrgb[0]) // R
write_byte(numrgb[1]) // G
write_byte(numrgb[2]) // B
write_byte(tempdens[2]) // SD
write_byte(tempdens[3]) // ED
write_byte(tempdens[0]) // D1
write_byte(tempdens[1]) // D2
message_end()
}
else if(equali(args[0],"off") || args[0][0]=='0') {
on = false
message_begin(MSG_ALL,get_user_msgid("Fog"),{0,0,0},0)
write_byte(0) // R
write_byte(0) // G
write_byte(0) // B
write_byte(0) // SD
write_byte(0) // ED
write_byte(0) // D1
write_byte(0) // D2
message_end()
}
return PLUGIN_HANDLED
}
public client_putinserver(id) set_task(0.1,"set_fog2",id)
public set_fog2(id) {
if(on || get_pcvar_num(onoff)) {
new number[3],tempdens[4]
if(g_density[0] == 0 && !on) {
switch(get_pcvar_num(density_cvar)) {
case 1:{tempdens[0]=3;tempdens[1]=58;tempdens[2]=111;tempdens[3]=18;}
case 2:{tempdens[0]=125;tempdens[1]=58;tempdens[2]=111;tempdens[3]=18;}
case 3:{tempdens[0]=27;tempdens[1]=59;tempdens[2]=66;tempdens[3]=96;}
case 4:{tempdens[0]=60;tempdens[1]=59;tempdens[2]=90;tempdens[3]=101;}
case 5:{tempdens[0]=68;tempdens[1]=59;tempdens[2]=90;tempdens[3]=101;}
case 6:{tempdens[0]=95;tempdens[1]=59;tempdens[2]=10;tempdens[3]=41;}
case 7:{tempdens[0]=125;tempdens[1]=59;tempdens[2]=111;tempdens[3]=18;}
case 8:{tempdens[0]=3;tempdens[1]=60;tempdens[2]=111;tempdens[3]=18;}
case 9:{tempdens[0]=19;tempdens[1]=60;tempdens[2]=68;tempdens[3]=116;}
}
}
else {
tempdens[0] = g_density[0]
tempdens[1] = g_density[1]
tempdens[2] = g_density[2]
tempdens[3] = g_density[3]
}
if((r > 0 || g > 0 || b > 0) && on) {number[0] = r;number[1] = g;number[2] = b;}
else {
new string[16],string2[3][4],i
get_pcvar_string(rgb2,string,15)
parse(string,string2[0],3,string2[1],3,string2[2],3)
for(i=0;i < 3;i++) number[i] = str_to_num(string2[i])
message_begin(MSG_ONE,get_user_msgid("Fog"),{0,0,0},id)
write_byte(number[0]) // R
write_byte(number[1]) // G
write_byte(number[2]) // B
write_byte(tempdens[2]) // SD
write_byte(tempdens[3]) // ED
write_byte(tempdens[0]) // D1
write_byte(tempdens[1]) // D2
message_end()
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/