ok...I have done all of that but i still don't understand why my cvars aren't recognized in the plugin
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
new Float:TEST_TIME=1.0
new Float:WARN_TIME=1.0
#define MAX_ZONES 8
new MIN_PLAYERS=2 /*Dobre do testowania w mniej osob
lub gdy chcesz by koniec rashu byl
przy wiekszej liczbbie osob*/
#define TASK_ZONE 600743
#define TASK_LOOP 500743
#define TASK_VIEW 400743
#define TASK_INFO 300743
#define TASK_FLASH 200743
new map_cors_edit[MAX_ZONES*6]
new zones_edit
new zone_editing=0
new map_editor
new map_cors_file_line=127
new zone_coords_num=0
new editign=0
new round_start=0
new lines
new rasher[33]=0
new raszer[33]
new sounded[33]=0
new speed_limit[33]=0
new Float:g_time
new g_team[3]
new g_origin[3]
new map_cors_pre=2
new map_cors_origin[MAX_ZONES*6]
new warn_control = 0 // miczu
new zones = 0
new zone_color_aktiv[3] = { 0, 0, 255 }
new zone_color_red[3] = { 255, 0, 0 }
new zone_color_yellow[3] = { 255, 255, 0 }
new spr_dot
//new actions[11][32] = { "barney/donthurtem.wav","nihilanth/nil_now_die.wav","hgrunt/c2a3_hg_laugh.wav","hgrunt/silence!.wav","hgrunt/silence!.wav","barney/whatsgoingon.wav","barney/rightway.wav","barney/nosir.wav","barney/openfire.wav","barney/stophere.wav","hgrunt/c2a2_hg_chat5a.wav"}
new g_punish[32][3]
new g_twin=0
new g_ctwin=0
new g_num=0
new cvar_antirusher
new cvar_antirusher_warn
new cvar_antirusher_time
new cvar_antirusher_freq
new cvar_antirusher_immunity
new cvar_antirusher_people
new cvar_antirusher_zasady
public plugin_init()
{
register_plugin("M_AntiRusher","2.6","Miczu")
log_amx(" <<Uruchomiono M_Antirusher 2.6>>")
register_dictionary("M_antirusher.txt")
register_dictionary("common.txt")
register_clcmd("say /rules","info")
register_clcmd("say /zasadymapy","info")
register_clcmd("amx_antirusher_menu","amx_antirusher_menu")
register_cvar("xPaw", "AR 2.6",FCVAR_SERVER)
cvar_antirusher=register_cvar("amx_antirusher","0",FCVAR_SERVER)
cvar_antirusher_warn=register_cvar("amx_antirusher_warn","1",FCVAR_SERVER)
cvar_antirusher_time=register_cvar("amx_antirusher_time","60.0",FCVAR_SERVER)
cvar_antirusher_freq=register_cvar("amx_antirusher_freq","1.0",FCVAR_SERVER)
cvar_antirusher_immunity=register_cvar("amx_antirusher_immunity","0",FCVAR_SERVER)
cvar_antirusher_people=register_cvar("amx_antirusher_people","0",FCVAR_SERVER)
cvar_antirusher_zasady=register_cvar("amx_antirusher_zasady","1",FCVAR_SERVER)
register_event("HLTV","Event_StartRound","a","1=0","2=0")
register_event("RoundTime","event_roundtime","bc")
register_event("SendAudio", "bomb_planted", "a", "2&%!MRAD_BOMBPL")
register_event("DeathMsg","DeathMsg","ade")
register_event("CurWeapon","CurWeapon","be")
map_cors_pre = map_cors_present(map_cors_origin,g_team)
TEST_TIME=get_pcvar_float(cvar_antirusher_freq)
register_forward(FM_PlayerPreThink, "fwdPlayerPreThink"); // client_PreThink
register_logevent("Team_Win", 6, "0=Team")
set_pcvar_num(cvar_antirusher,0)
server_cmd("exec addons/amxmodx/configs/antirusher/cvars.cfg")
}
public plugin_precache() {
spr_dot = precache_model("sprites/dot.spr") // potrzebne do robienia lini
}
public Team_Win()
{
set_pcvar_num(cvar_antirusher,0)
static szTeam[10]
read_logargv(1, szTeam, 9)
if(szTeam[0] == 'T')
{
g_twin+=1
}
else
{
g_ctwin+=1
}
if(g_ctwin-g_twin>=10)
{
set_pcvar_num(cvar_antirusher,1)
server_cmd("amx_say CT STATI LA X , T PLANT IT...NO RUSH ALLOWED")
}
}
///////////////////////////////////////////////////////////////////////
///////// M_Antirusher Events /////////
////////////////////////////////////////////////////////////////////////
public client_connect(id){
g_punish[g_num][0]=id
g_punish[g_num][1]=0
g_punish[g_num][2]=get_timeleft()
g_num+=1
free_the_man(id) //1.nie chcemy by ktos kto sie polaczy byl karany
} //kiedy osoba co opuszczajac serwer miala kare
//czyli gdy stary i nowy gracz beda mieli te same id
public client_disconnect(id) {
new i,ok=0
for(i=0;i<g_num&&(!ok);i++)
if(g_punish[i][0]==id) ok=1
new j=i
for(i=j;i<g_num-1;i++)
g_punish[i][0]=g_punish[i+1][0]
g_num-=1
free_the_man(id) //2.tak na wszelki wypadek, ale mozna sobie odpuscic
return PLUGIN_CONTINUE
}
public Event_StartRound(){
round_start++
MIN_PLAYERS = get_pcvar_num(cvar_antirusher_people) // zmiana people dziala na starcie rundy
}
public client_putinserver(id){ //tu informacja o rashu
new arg[1] //Zoptymalizowane uzycie set_task
arg[0]=id //Deklaracja 1 kumurki pamieci zamiast 4 i bez zmian z str-> num i na odwrot
if (map_cors_pre && get_pcvar_num(cvar_antirusher))
set_task(45.0,"informclient",TASK_INFO+id,arg,1)
}
public bomb_planted() { //podlozono bombe
remove_task(TASK_LOOP) //przerywa sprawdzanie rashu
remove_task(TASK_VIEW) //przerywa wyswietlanie granic dla userow
free_the_world() //mozna rashowac
}
public event_roundtime() {
if (round_start<1) return PLUGIN_CONTINUE //takie zabezpieczenie by nie sprawdzalo po czasie rashu
if (map_cors_pre && get_pcvar_num(cvar_antirusher)) {
remove_task(TASK_LOOP)
remove_task(TASK_VIEW)
g_time = get_gametime() + get_pcvar_float(cvar_antirusher_time)
set_task(2*TEST_TIME, "checkOrigin",TASK_LOOP)
set_task(2*WARN_TIME, "rash_warn",TASK_VIEW)
}
return PLUGIN_CONTINUE
} //
public DeathMsg(){
new vid = read_data(2) //id trupa
free_the_man(vid) //uwalnia trupa by zaczol runde z czystym kontem
}
//////////////////////////////////////////////////////////////////////
///////// M_Antirusher Things /////////
//////////////////////////////////////////////////////////////////////
map_cors_present(maporigin[MAX_ZONES*6],team[3]) {
new zonefile[256],zonefile2[256]
get_localinfo("amxx_configsdir",zonefile, 255);
if(is_linux_server()){
format(zonefile2, 255, "%s/antirusher", zonefile)
if(!(dir_exists(zonefile2))) mkdir (zonefile2)
format(zonefile2, 255, "%s/antirusher/rush.cor", zonefile)
}
else{
format(zonefile2, 255, "%s\antirusher", zonefile)
if(!(dir_exists(zonefile2))) mkdir (zonefile2)
format(zonefile2, 255, "%s\antirusher\rush.cor", zonefile)
}
if (file_exists(zonefile2)){
new readdata[512]
new currentmap[32]
get_mapname(currentmap,31)
new map[32], len
new x11[16],x12[16],y11[16],y12[16],z11[16],z12[16]
new x21[16],x22[16],y21[16],y22[16],z21[16],z22[16]
new x31[16],x32[16],y31[16],y32[16],z31[16],z32[16]
new x41[16],x42[16],y41[16],y42[16],z41[16],z42[16]
new x51[16],x52[16],y51[16],y52[16],z51[16],z52[16]
new x61[16],x62[16],y61[16],y62[16],z61[16],z62[16]
new x71[16],x72[16],y71[16],y72[16],z71[16],z72[16]
new x81[16],x82[16],y81[16],y82[16],z81[16],z82[16]
for(new i=0; i < 128 && read_file(zonefile2,i,readdata,511,len); i++) {
x11="";x12="";y11="";y12="";z11="";z12=""
x21="";x22="";y21="";y22="";z21="";z22=""
x31="";x32="";y31="";y32="";z31="";z32=""
x41="";x42="";y41="";y42="";z41="";z42=""
x51="";x52="";y51="";y52="";z51="";z52=""
x61="";x62="";y61="";y62="";z61="";z62=""
parse(readdata,team,2,map,31,x11,15,x12,15,y11,15,y12,15,z11,15,z12,15,
x21,15,x22,15,y21,15,y22,15,z21,15,z22,15,
x31,15,x32,15,y31,15,y32,15,z31,15,z32,15,
x41,15,x42,15,y41,15,y42,15,z41,15,z42,15,
x51,15,x52,15,y51,15,y52,15,z51,15,z52,15,
x61,15,x62,15,y61,15,y62,15,z61,15,z62,15,
x71,15,x72,15,y71,15,y72,15,z71,15,z72,15,
x81,15,x82,15,y81,15,y82,15,z81,15,z82,15)
lines=i
if(equal(map,currentmap)) {
maporigin[0] = str_to_num(x11)
maporigin[1] = str_to_num(x12)
maporigin[2] = str_to_num(y11)
maporigin[3] = str_to_num(y12)
maporigin[4] = str_to_num(z11)
maporigin[5] = str_to_num(z12)
maporigin[6] = str_to_num(x21)
maporigin[7] = str_to_num(x22)
maporigin[8] = str_to_num(y21)
maporigin[9] = str_to_num(y22)
maporigin[10] = str_to_num(z21)
maporigin[11] = str_to_num(z22)
maporigin[12] = str_to_num(x31)
maporigin[13] = str_to_num(x32)
maporigin[14] = str_to_num(y31)
maporigin[15] = str_to_num(y32)
maporigin[16] = str_to_num(z31)
maporigin[17] = str_to_num(z32)
maporigin[18] = str_to_num(x41)
maporigin[19] = str_to_num(x42)
maporigin[20] = str_to_num(y41)
maporigin[21] = str_to_num(y42)
maporigin[22] = str_to_num(z41)
maporigin[23] = str_to_num(z42)
maporigin[24] = str_to_num(x51)
maporigin[25] = str_to_num(x52)
maporigin[26] = str_to_num(y51)
maporigin[27] = str_to_num(y52)
maporigin[28] = str_to_num(z51)
maporigin[29] = str_to_num(z52)
maporigin[30] = str_to_num(x61)
maporigin[31] = str_to_num(x62)
maporigin[32] = str_to_num(y61)
maporigin[33] = str_to_num(y62)
maporigin[34] = str_to_num(z61)
maporigin[35] = str_to_num(z62)
maporigin[36] = str_to_num(x71)
maporigin[37] = str_to_num(x72)
maporigin[38] = str_to_num(y71)
maporigin[39] = str_to_num(y72)
maporigin[40] = str_to_num(z71)
maporigin[41] = str_to_num(z72)
maporigin[42] = str_to_num(x81)
maporigin[43] = str_to_num(x82)
maporigin[44] = str_to_num(y81)
maporigin[45] = str_to_num(y82)
maporigin[46] = str_to_num(z81)
maporigin[47] = str_to_num(z82)
map_cors_file_line=i
for(new j=0;j<MAX_ZONES;j++){
i=j*6
if(((maporigin[1+i]-maporigin[0+i])>0)&&((maporigin[3+i]-maporigin[2+i])>0)&&((maporigin[5+i]-maporigin[4+i])>0))
zones++
}
return 1
}
if((len<15) && (map_cors_file_line>i)) map_cors_file_line=i
}
log_amx("%L",LANG_SERVER,"AR_NO_ZONE")
if(lines+2<map_cors_file_line) map_cors_file_line=lines+2 //5. zapobiega zapisywaniu na 127 pozycji gdy nie ma wolnych lini na koncu :)
return 0
}
else log_amx("%L",LANG_SERVER,"AR_NO_FILE")
g_team="XX"
map_cors_file_line=0 //6. nie ma pluku rush,cor wiec niech zapisze w pierwszej lini
return 0
}
public info(id){
new anti_zasady = get_pcvar_num(cvar_antirusher_zasady)
if(anti_zasady==1){
new map[4]
get_mapname(map,3) // rozpoznawanie typu mapy na podstawie pierwszych 3 liter :p
if (equal(map,"cs_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_CS_MAP")
else if (equal(map,"de_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_DE_MAP")
else if (equal(map,"fy_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_FY_MAP")
else if (equal(map,"aim")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_AIM_MAP")
else if (equal(map,"awp")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_AWP_MAP")
else if (equal(map,"kz_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_KZ_MAP")
else if (equal(map,"fun")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_FUN_MAP")
else if (equal(map,"sur")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_SURF_MAP")
else if (equal(map,"sj_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_SJ_MAP")
else if (equal(map,"ka_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_KA_MAP")
else if (equal(map,"he_")) client_print(id,print_chat, "%L",LANG_PLAYER,"AR_HE_MAP")
}
}
public informclient(arg[1]){
// arg[0] to id ^^
if(is_user_connected(arg[0])) { // spradza czy gracz nadal jest na serwie
client_print(arg[0],print_chat,"%L",LANG_PLAYER,"AR_INFO_WARN")
client_print(arg[0],print_chat,"%L",LANG_PLAYER,"AR_INFO_CLIENT",get_cvar_float("amx_antirusher_time"))
}
}
public checkOrigin() { // tu sprawdza czy rashujesz
if (round_start<1) return
if (get_gametime() > g_time)
{
free_the_world()
return
}
new players[32], num,tt_num,ct_num
get_players(players,num)
for(new i=0;i<num;i++)
{
if(is_user_alive(players[i]))
{
if(cs_get_user_team(players[i])==CS_TEAM_T) tt_num++
else if(cs_get_user_team(players[i])==CS_TEAM_CT) ct_num++
}
}
if (tt_num<MIN_PLAYERS)
{
free_the_world()
return
}
if (ct_num<MIN_PLAYERS)
{
free_the_world()
return
}
get_players(players,num)
set_task(TEST_TIME, "checkOrigin", TASK_LOOP)
for(new i = 0; i < num; i++)
{
if(is_user_alive(players[i]))
{
if((equal(g_team,"T")&&(cs_get_user_team(players[i])==CS_TEAM_T))||(equal(g_team,"CT")&&(cs_get_user_team(players[i])==CS_TEAM_CT))||equal(g_team,"XX"))
{
get_user_origin(players[i],g_origin)
if ((map_cors_origin[0] < g_origin[0] < map_cors_origin[1]) && (map_cors_origin[2] < g_origin[1] < map_cors_origin[3]) && (map_cors_origin[4] < g_origin[2] < map_cors_origin[5]) ||
(map_cors_origin[6] < g_origin[0] < map_cors_origin[7]) && (map_cors_origin[8] < g_origin[1] < map_cors_origin[9]) && (map_cors_origin[10] < g_origin[2] < map_cors_origin[11]) ||
(map_cors_origin[12] < g_origin[0] < map_cors_origin[13]) && (map_cors_origin[14] < g_origin[1] < map_cors_origin[15]) && (map_cors_origin[16] < g_origin[2] < map_cors_origin[17]) ||
(map_cors_origin[18] < g_origin[0] < map_cors_origin[19]) && (map_cors_origin[20] < g_origin[1] < map_cors_origin[21]) && (map_cors_origin[22] < g_origin[2] < map_cors_origin[23]) ||
(map_cors_origin[24] < g_origin[0] < map_cors_origin[25]) && (map_cors_origin[26] < g_origin[1] < map_cors_origin[27]) && (map_cors_origin[28] < g_origin[2] < map_cors_origin[29]) ||
(map_cors_origin[30] < g_origin[0] < map_cors_origin[31]) && (map_cors_origin[32] < g_origin[1] < map_cors_origin[33]) && (map_cors_origin[34] < g_origin[2] < map_cors_origin[35])){
punishPlayer(players[i])
raszer[players[i]]=1
}
else{
free_the_man(players[i])
}
}
}
}
}
public rash_warn(){ //7. tu sprawsza czy ma ci wyswietlic granice rashu
if (get_gametime() > g_time){
return
}
if (get_pcvar_num(cvar_antirusher_warn)==0) return
new players[32], num, tt_num, ct_num
get_players(players,num)
for(new i=0;i<num;i++)
{
if(is_user_alive(players[i]))
{
if(cs_get_user_team(players[i])==CS_TEAM_T) tt_num++
else if(cs_get_user_team(players[i])==CS_TEAM_CT) ct_num++
}
}
if (equal(g_team,"CT")){
if (tt_num<MIN_PLAYERS) return
if (ct_num<MIN_PLAYERS) return
}
set_task(WARN_TIME, "rash_warn",TASK_VIEW)
new orrigins[3]
for(new j=0;j<num;j++){
if(raszer[players[j]]<1 && is_user_alive(players[j])) //8. jak juz raszuje to mozna graczowi odpuscic :)
{
if((equal(g_team,"T")&&(cs_get_user_team(players[j])==CS_TEAM_T))||(equal(g_team,"CT")&&(cs_get_user_team(players[j])==CS_TEAM_CT))||equal(g_team,"XX"))
{
get_user_origin(players[j],orrigins)
for(new i=0;i<MAX_ZONES;i++){
if((map_cors_origin[0+i*6]-450 < orrigins[0] < map_cors_origin[0+i*6]) && (map_cors_origin[2+i*6]-100 < orrigins[1] < map_cors_origin[3+i*6]+100) && (map_cors_origin[4+i*6] < orrigins[2] < map_cors_origin[5+i*6])){
zone_warn(players[j],i,0,orrigins)
}
else if((map_cors_origin[1+i*6] < orrigins[0] < map_cors_origin[1+i*6]+450) && (map_cors_origin[2+i*6]-100 < orrigins[1] < map_cors_origin[3+i*6]+100) && (map_cors_origin[4+i*6] < orrigins[2] < map_cors_origin[5+i*6])){
zone_warn(players[j],i,1,orrigins)
}
if((map_cors_origin[0+i*6]-100 < orrigins[0] < map_cors_origin[0+i*6+1]+100) && (map_cors_origin[2+i*6]-450 < orrigins[1] < map_cors_origin[2+i*6]) && (map_cors_origin[4+i*6] < orrigins[2] < map_cors_origin[5+i*6])){
zone_warn(players[j],i,2,orrigins)
}
else if((map_cors_origin[0+i*6]-100 < orrigins[0] < map_cors_origin[0+i*6+1]+100) && (map_cors_origin[3+i*6] < orrigins[1] < map_cors_origin[3+i*6]+450) && (map_cors_origin[4+i*6] < orrigins[2] < map_cors_origin[5+i*6])){
zone_warn(players[j],i,3,orrigins)
}
} //9. nigdy nie bedziesz widzial przednia i tylna lub lewa i prawa sciane rownoczesnie wiec jest else
}
}
}
}
///////////////////////////////////////////////////////////////////////////
///////// M_Antirusher Punishments /////////
///////////////////////////////////////////////////////////////////////////
punishPlayer(id) {
new i,ok=0
for(i=0;i<g_num&&(!ok);i++)
{
if(g_punish[i][0]==id)
{
ok=1
g_punish[i][1]+=1
}
}
if ((get_pcvar_num(cvar_antirusher_immunity) == 1)&&(get_user_flags(id)&ADMIN_IMMUNITY)) {
g_punish[i][1]=0
}
server_cmd("amx_say g_num=%d i=%d ok=%d",g_num,i,ok)
new timp=get_timeleft()
if((g_punish[i][2]-timp) > 5 )
{
switch(g_punish[i][0])
{
case 0:
{
new name[32]
get_user_name(id,name,31)
server_cmd("amx_chat %L",LANG_SERVER,"AR_SRV_INFO", name)
server_cmd("amx_slap #%d %d",name,5)
}
case 1:
{
server_cmd("amx_slap #%d %d",id,40)
}
case 2: server_cmd("amx_slay2 #%d 1",id)
case 3: banPlayer(id)
default:{
new name[32]
get_user_name(id,name,31)
server_cmd("amx_chat %L:p",LANG_SERVER,"AR_SRV_INFO", name)
//server_cmd("amx_chat g_punish[%d]=%d timp=%d",i,g_punish[i][0],timp)
}
}
}
g_punish[i][2]=timp
if (warn_control >(25/floatround(10.0*TEST_TIME))){ //11. jak dlugo siedzisz w granicy to ci pisze w czacie :p
client_print(id, print_chat, "%L",LANG_PLAYER,"AR_RASH_WARN")
warn_control=0;}
warn_control+=1
/*if(get_cvar_num("amx_antirusher_sound")){
if(sounded[id]==0){
new sound_mode = get_cvar_num("amx_antirusher_sound_mode")
if(sound_mode==0) client_cmd(id,"spk %s",actions[g_punish[i][1]])
else client_cmd(0,"spk %s",actions[g_punish[i][1]])
sounded[id]=1
}
}*/
}
banPlayer(id) {
client_print(id, print_chat, "%L",LANG_PLAYER,"AR_RASH_BAN")
client_print(id, print_chat, "%L",LANG_PLAYER,"AR_RASH_BAN")
server_cmd("amx_ban #%d %d rush", id,1440)
}
public CurWeapon(id){
if(speed_limit[id]==1) fm_set_user_maxspeed(id,(fm_get_user_maxspeed(id)/2.0)); // zmiana broni cie przyspieszy? nie ^^
}
public fwdPlayerPreThink(id){
if (rasher[id]){
new button = pev(id, pev_button)
if ((button & IN_ATTACK2) || (button & IN_ATTACK)){
user_silentkill(id)
}
}
}
public free_the_man(id){
sounded[id]=0
raszer[id]=0
}
public free_the_world(){
if(round_start<1) return
round_start=0
new players[32],num
get_players(players,num,"a")
//for(new i;i<num;i++){
//free_the_man(players[i])
//message_begin(MSG_ONE, get_user_msgid("SayText"), {0,0,0}, players[i])
//write_byte(players[i])
//write_string("^x04 *** RASH - OFF ***")
//message_end()
//}
client_print(0,print_chat,"%L",LANG_PLAYER,"AR_FREE_WORLD")
}
//////////////////////////////////////////////////////////////////////////
///////// M_Antirusher Draw Lines /////////
//////////////////////////////////////////////////////////////////////////
public FX_Line(start[3], stop[3], color[3], brightness, id) {
message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id)
write_byte( TE_BEAMPOINTS )
write_coord(start[0])
write_coord(start[1])
write_coord(start[2])
write_coord(stop[0])
write_coord(stop[1])
write_coord(stop[2])
write_short( spr_dot )
write_byte( 1 ) // framestart
write_byte( 1 ) // framerate
write_byte( 4 ) // life in 0.1's
write_byte( 5 ) // width
write_byte( 0 ) // noise
write_byte( color[0] ) // r, g, b
write_byte( color[1] ) // r, g, b
write_byte( color[2] ) // r, g, b
write_byte( brightness ) // brightness
write_byte( 0 ) // speed
message_end()
}
public DrawLine(x1, y1, z1, x2, y2, z2, color[3],id) {
new start[3]
new stop[3]
start[0] = ( x1 )
start[1] = ( y1 )
start[2] = ( z1 )
stop[0] = ( x2 )
stop[1] = ( y2 )
stop[2] = ( z2 )
FX_Line(start, stop, color, 200, id)
}
public ar_zone(zone_num,id){
new start[3],stop[3]
new xyz=0
if(zone_editing==zone_num) xyz=1
zone_num=(zone_num-1)*6
start[0]= map_cors_edit[0+zone_num]
start[1]= map_cors_edit[2+zone_num]
start[2]= map_cors_edit[4+zone_num]
stop[0]= map_cors_edit[1+zone_num]
stop[1]= map_cors_edit[3+zone_num]
stop[2]= map_cors_edit[5+zone_num]
ShowZoneBox(start, stop, id,xyz)
}
public ShowZoneBox(mins[3], maxs[3], id,xyz) {
DrawLine(maxs[0], maxs[1], maxs[2], mins[0], maxs[1], maxs[2], zone_color_aktiv, id)
DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], mins[1], maxs[2], zone_color_aktiv, id)
DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], maxs[1], mins[2], zone_color_aktiv, id)
DrawLine(mins[0], mins[1], mins[2], maxs[0], mins[1], mins[2], zone_color_aktiv, id)
DrawLine(mins[0], mins[1], mins[2], mins[0], maxs[1], mins[2], zone_color_aktiv, id)
DrawLine(mins[0], mins[1], mins[2], mins[0], mins[1], maxs[2], zone_color_aktiv, id)
DrawLine(mins[0], maxs[1], maxs[2], mins[0], maxs[1], mins[2], zone_color_aktiv, id)
DrawLine(mins[0], maxs[1], mins[2], maxs[0], maxs[1], mins[2], zone_color_aktiv, id)
DrawLine(maxs[0], maxs[1], mins[2], maxs[0], mins[1], mins[2], zone_color_aktiv, id)
DrawLine(maxs[0], mins[1], mins[2], maxs[0], mins[1], maxs[2], zone_color_aktiv, id)
DrawLine(maxs[0], mins[1], maxs[2], mins[0], mins[1], maxs[2], zone_color_aktiv, id)
DrawLine(mins[0], mins[1], maxs[2], mins[0], maxs[1], maxs[2], zone_color_aktiv, id)
if((xyz==1)&&(editign==1)){
if(zone_coords_num==0){
DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], mins[1], mins[2], zone_color_yellow, id)
DrawLine(maxs[0], maxs[1], mins[2], maxs[0], mins[1], maxs[2], zone_color_yellow, id)
DrawLine(mins[0], maxs[1], maxs[2], mins[0], mins[1], mins[2], zone_color_red, id)
DrawLine(mins[0], maxs[1], mins[2], mins[0], mins[1], maxs[2], zone_color_red, id)
}
else if( zone_coords_num==1){
DrawLine(mins[0], mins[1], mins[2], maxs[0], mins[1], maxs[2], zone_color_red, id)
DrawLine(maxs[0], mins[1], mins[2], mins[0], mins[1], maxs[2], zone_color_red, id)
DrawLine(mins[0], maxs[1], mins[2], maxs[0], maxs[1], maxs[2], zone_color_yellow, id)
DrawLine(maxs[0], maxs[1], mins[2], mins[0], maxs[1], maxs[2], zone_color_yellow, id)
}
else{
DrawLine(maxs[0], maxs[1], maxs[2], mins[0], mins[1], maxs[2], zone_color_yellow, id)
DrawLine(maxs[0], mins[1], maxs[2], mins[0], maxs[1], maxs[2], zone_color_yellow, id)
DrawLine(maxs[0], maxs[1], mins[2], mins[0], mins[1], mins[2], zone_color_red, id)
DrawLine(maxs[0], mins[1], mins[2], mins[0], maxs[1], mins[2], zone_color_red, id)
}
}
}
public show_all_zones(){
new num=1
while(num<=zones_edit){
ar_zone(num,map_editor)
num++
}
if(zone_editing>0){
new origins[3], origins2[3]
get_user_origin(map_editor,origins)
new Float: range_line
new Float: range_origins[6]
for(new i=0;i<6;i++) range_origins[i] = (map_cors_edit[i+6*(zone_editing-1)])*1.0
range_line= floatsqroot(((range_origins[1]-range_origins[0])/2.0-origins[0])*((range_origins[1]-range_origins[0])/2.0-origins[0])+((range_origins[3]-range_origins[2])/2.0-origins[1])*((range_origins[3]-range_origins[2])/2.0-origins[1])+((range_origins[5]-range_origins[4])/2.0-origins[2])*((range_origins[5]-range_origins[4])/2.0-origins[2]))
if(range_line>20000) for(new i=0;i<3;i++){
origins2[i]=((map_cors_edit[i*2+6*(zone_editing-1)] + map_cors_edit[i*2+1+6*(zone_editing-1)])/2)/6
}
else if(range_line>15000) for(new i=0;i<3;i++){
origins2[i]=((map_cors_edit[i*2+6*(zone_editing-1)] + map_cors_edit[i*2+1+6*(zone_editing-1)])/2)/5
}
else if(range_line>10000) for(new i=0;i<3;i++){
origins2[i]=((map_cors_edit[i*2+6*(zone_editing-1)] + map_cors_edit[i*2+1+6*(zone_editing-1)])/2)/3
}
else for(new i=0;i<3;i++){
origins2[i]=((map_cors_edit[i*2+6*(zone_editing-1)] + map_cors_edit[i*2+1+6*(zone_editing-1)])/2)
}
FX_Line(origins, origins2, zone_color_red,200,map_editor)
}
}
public zone_warn(id,zone,direction,origins[3]){
new start[3],stop[3]
start[2]=origins[2]-110
stop[2]=origins[2]-110
switch(direction){
case 0:{
start[0]=map_cors_origin[zone*6]+5
stop[0]=map_cors_origin[zone*6]+5
start[1]=map_cors_origin[zone*6+2]
stop[1]=map_cors_origin[zone*6+3]
}
case 1:{
start[0]=map_cors_origin[zone*6+1]-5
stop[0]=map_cors_origin[zone*6+1]-5
start[1]=map_cors_origin[zone*6+2]
stop[1]=map_cors_origin[zone*6+3]
}
case 2:{
start[0]=map_cors_origin[zone*6+0]
stop[0]=map_cors_origin[zone*6+1]
start[1]=map_cors_origin[zone*6+2]+5
stop[1]=map_cors_origin[zone*6+2]+5
}
case 3:{
start[0]=map_cors_origin[zone*6+0]
stop[0]=map_cors_origin[zone*6+1]
start[1]=map_cors_origin[zone*6+3]-5
stop[1]=map_cors_origin[zone*6+3]-5
}
}
for(new i=0;i<9;i++){
start[2]+=30
stop[2]+=30
FX_Line(start, stop, zone_color_red, 60, id)
}
}
// Stocks, ported by xPaw
stock fm_create_entity(const classname[])
return engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classname))
stock fm_fake_touch(toucher, touched)
return dllfunc(DLLFunc_Touch, toucher, touched)
stock fm_remove_entity(index)
return engfunc(EngFunc_RemoveEntity, index)
stock fm_DispatchSpawn(entity)
return dllfunc(DLLFunc_Spawn, entity)
stock fm_set_kvd(entity, const key[], const value[], const classname[] = "") {
if (classname[0])
set_kvd(0, KV_ClassName, classname)
else {
new class[32]
pev(entity, pev_classname, class, sizeof class - 1)
set_kvd(0, KV_ClassName, class)
}
set_kvd(0, KV_KeyName, key)
set_kvd(0, KV_Value, value)
set_kvd(0, KV_fHandled, 0)
return dllfunc(DLLFunc_KeyValue, entity, 0)
}
stock fm_fakedamage(victim, const classname[], Float:takedmgdamage, damagetype) {
new class[] = "trigger_hurt"
new entity = fm_create_entity(class)
if (!entity)
return 0
new value[16]
float_to_str(takedmgdamage * 2, value, sizeof value - 1)
fm_set_kvd(entity, "dmg", value, class)
num_to_str(damagetype, value, sizeof value - 1)
fm_set_kvd(entity, "damagetype", value, class)
fm_set_kvd(entity, "origin", "8192 8192 8192", class)
fm_DispatchSpawn(entity)
set_pev(entity, pev_classname, classname)
fm_fake_touch(entity, victim)
fm_remove_entity(entity)
return 1
}
stock fm_set_user_maxspeed(index, Float:speed = -1.0) {
engfunc(EngFunc_SetClientMaxspeed, index, speed)
set_pev(index, pev_maxspeed, speed)
return 1
}
stock Float:fm_get_user_maxspeed(index) {
new Float:speed
pev(index, pev_maxspeed, speed)
return speed
}