AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Antirusher 2.6 (https://forums.alliedmods.net/showthread.php?t=82149)

MHz 12-18-2008 05:05

Antirusher 2.6
 
Hello, i have a little problem whit this plugin.
I`m using antirusher 2.6, and I have the next problems whit this plugin:

1. I want to delete the sound (barney, die, etc. when you die or slapped)
2. I want to create more than 6 box-es (I can creat more than 6 but when i reach the laser line i don`t get nothing -slayed or died-)
3. How to make, the laser line to not "vibrate", because when is stopped and started i can jump the laser whitout to get anything.

Code:

#include <amxmodx>
#include <cstrike>
#include <fakemeta>

new Float:TEST_TIME=0.1
new Float:WARN_TIME=1.0
new Float:FLASH_TIME=0.8

#define MAX_ZONES 20
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 mUsuwaniestrefy // Menu
new mcbUsuwaniestrefy // Menu Callback
new mZapisacstrefy // Menu
new mcbZapisacstrefy // Menu Callback
new mAntirushControlMenu // Menu
new mcbAntirushControlMenu // Menu Callback
                //Uzylem generatora i takie malo eleganckie wyszlo

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_incresment=10
new zone_coords_num=0
new zone_coords[3][13] = { "Koordynat X", "Koordynat Y", "Koordynat Z"}
new editign=0
new edit_g_team[3]
new round_start=0
new lines

new gMsgScreenFade
new rasher[33]=0
new raszer[33]
new flashed[33]=0
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 slap
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"}
                   
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)
    register_cvar("amx_antirusher","1")           
    register_cvar("amx_antirusher_sound","1")       
    register_cvar("amx_antirusher_sound_mode","0")
    register_cvar("amx_antirusher_warn","1")
    register_cvar("amx_antirusher_slap","3")       
    register_cvar("amx_antirusher_time","60.0")       
    register_cvar("amx_antirusher_freq","0.1")
    register_cvar("amx_antirusher_action","7")
    register_cvar("amx_antirusher_cash","50")       
    register_cvar("amx_antirusher_cash_end","2")       
    register_cvar("amx_antirusher_immunity","0")   
    register_cvar("amx_antirusher_zasady","1")
    register_cvar("amx_antirusher_people","2")
   
    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")
   
    gMsgScreenFade = get_user_msgid("ScreenFade")
    map_cors_pre = map_cors_present(map_cors_origin,g_team)
    TEST_TIME=get_cvar_float("amx_antirusher_freq")
   
    register_menucmd(register_menuid("Antirush Menu"), 1023, "Antirush_menu")
    register_menucmd(register_menuid("Punishment Menu"), 1023, "Punishment_menu")
    register_menucmd(register_menuid("Antirush Zone Creator"), 1023, "Antirush_Zone_Creator")
    register_menucmd(register_menuid("Edit Zone"), 1023, "edit_zone2")
   
    mAntirushControlMenu = menu_create("Antirush Control Menu", "mh_AntirushControlMenu")
    mcbAntirushControlMenu = menu_makecallback("mcb_AntirushControlMenu")
    menu_additem(mAntirushControlMenu, "Antirush cvar control", "ma_AntirushControlMenu", ADMIN_CVAR, mcbAntirushControlMenu)
    menu_additem(mAntirushControlMenu, "Antirush Punishments", "ma_AntirushControlMenu", ADMIN_CVAR, mcbAntirushControlMenu)
    menu_additem(mAntirushControlMenu, "Antirush Zone Creator", "ma_AntirushControlMenu", ADMIN_RCON, mcbAntirushControlMenu)
   
    mZapisacstrefy = menu_create("Zapisac strefy", "mh_Zapisacstrefy")
    mcbZapisacstrefy = menu_makecallback("mcb_Zapisacstrefy")
    menu_additem(mZapisacstrefy, "TAK", "ma_Zapisacstrefy", ADMIN_ALL, mcbZapisacstrefy)
    menu_additem(mZapisacstrefy, "NIE", "ma_Zapisacstrefy", ADMIN_ALL, mcbZapisacstrefy)
   
    mUsuwaniestrefy = menu_create("Usuwanie strefy", "mh_Usuwaniestrefy")
    mcbUsuwaniestrefy = menu_makecallback("mcb_Usuwaniestrefy")
    menu_additem(mUsuwaniestrefy, "TAK", "ma_Usuwaniestrefy", ADMIN_ALL, mcbUsuwaniestrefy)
    menu_additem(mUsuwaniestrefy, "NIE", "ma_Usuwaniestrefy", ADMIN_ALL, mcbUsuwaniestrefy)
   
    register_forward(FM_PlayerPreThink,    "fwdPlayerPreThink");    // client_PreThink
   
    server_cmd("exec addons/amxmodx/configs/antirusher/cvars.cfg")
}

public plugin_precache() {
    spr_dot = precache_model("sprites/dot.spr") // potrzebne do robienia lini
}

///////////////////////////////////////////////////////////////////////
/////////                M_Antirusher  Events                /////////
////////////////////////////////////////////////////////////////////////
 
public client_connect(id){
    free_the_man(id)        //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) {
    free_the_man(id)        //tak na wszelki wypadek, ale mozna sobie odpuscic
    return PLUGIN_CONTINUE
}

public Event_StartRound(){
    round_start++               
    MIN_PLAYERS = get_cvar_num("amx_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_cvar_num("amx_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_cvar_num("amx_antirusher")) {
        slap = floatround(get_cvar_num("amx_antirusher_slap")*(10.0*TEST_TIME)) // slapy biora zawsze tyle samo hp w przedziale czasu
        remove_task(TASK_LOOP)
        remove_task(TASK_VIEW)
        g_time = get_gametime() + get_cvar_float("amx_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    //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            //nie ma pluku rush,cor wiec niech zapisze w pierwszej lini
    return 0
}


public info(id){
    new anti_zasady = get_cvar_num("amx_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(){                // tu sprawsza czy ma ci wyswietlic granice rashu
    if (get_gametime() > g_time){
        return
    }
    if (get_cvar_num("amx_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]))    // 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)
                    }
                }            // nigdy nie bedziesz widzial przednia i tylna lub lewa i prawa sciane rownoczesnie wiec jest else

            }
        }
    }
}

///////////////////////////////////////////////////////////////////////////
/////////                M_Antirusher Punishments                /////////
///////////////////////////////////////////////////////////////////////////

punishPlayer(id) {
               
    new action = 1
    action = get_cvar_num("amx_antirusher_action")   
    if ((get_cvar_num("amx_antirusher_immunity") == 1)&&(get_user_flags(id)&ADMIN_IMMUNITY)) {
        action = 0
    }
    switch (action) {
        case 0:{
        new name[32]
        get_user_name(id,name,31)
        server_cmd("amx_chat %L",LANG_SERVER,"AR_SRV_INFO", name)
        }
        case 1:    fm_fakedamage ( id, "rashing", slap*1.0,16384)
        case 2: user_silentkill(id)
        case 3: kickPlayer(id)
        case 4: banPlayer(id)
        case 5:{
            if(speed_limit[id]==0){
                speed_limit[id]=1
                fm_set_user_maxspeed(id,(fm_get_user_maxspeed(id)/2.0));
            }
        }
        case 6:{
            if(flashed[id]==0){
                flashed[id]=1
                set_task(FLASH_TIME,"Flash",TASK_FLASH+id)
            }
        }
        case 7:{
            new Float: velocity[3]
            new Float: DW //Długosc wektora
            pev(id,pev_velocity,velocity)
            DW=vector_length ( velocity )+0.0001
            velocity[0]=(velocity[0]/DW)*(-500.0)
            velocity[1]=(velocity[1]/DW)*(-500.0)
            if(velocity[2]<0) velocity[2]=velocity[2]*(-1.0)+15.0 //wyrzuca do gory
            set_pev(id,pev_velocity,velocity)   
        }
        case 8:{
            rasher[id]=1
        }
        case 9:{
            aim_on_me(id)
        }
        case 10:{
            ebay_time_to_pay(id)    // ogladalem filmik w flashu i to chyba przez to :p
        }
        default:{
            new name[32]
            get_user_name(id,name,31)
            server_cmd("amx_chat %L:p",LANG_SERVER,"AR_SRV_INFO", name)
        }
    }
    if (warn_control >(25/floatround(10.0*TEST_TIME))){    // 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[action])
        else client_cmd(0,"spk %s",actions[action])
        sounded[id]=1
        }       
    }
}

kickPlayer(id) {
    client_print(id, print_chat, "%L",LANG_PLAYER,"AR_RASH_KICK")
    client_print(id, print_chat, "%L",LANG_PLAYER,"AR_RASH_KICK")
    server_cmd("amx_kick #%d", id)
}

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 5 rush", id)
}

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 Flash(id) {
    id-=TASK_FLASH
    if(flashed[id]){
        set_task(FLASH_TIME,"Flash",TASK_FLASH+id)
   
        message_begin(MSG_ONE,gMsgScreenFade,{0,0,0},id)
        write_short( 1<<15 )
        write_short( 1<<10 )
        write_short( 1<<12 )
        new x,y,z
        x= random_num(0,255)
        write_byte( x )
        y= random_num(0,255)
        write_byte( y )
        z= random_num(0,255)
        write_byte( z )
        write_byte( 255 )
        message_end()
        emit_sound(id,CHAN_BODY, "weapons/flashbang-2.wav", 1.0, ATTN_NORM, 0, PITCH_HIGH)
    }
}

public fwdPlayerPreThink(id){   
    if (rasher[id]){
        new button = pev(id, pev_button)
        if ((button & IN_ATTACK2) || (button & IN_ATTACK)){
            user_silentkill(id)
        }
    }   
}

public aim_on_me(id){
    new radom, radom2
    radom = random_num(0,3)
    radom2 = random_num(1,6)
    new polecenie[64]
    switch (radom){
        case 0:{
            format(polecenie, 63, "+left;")
        }
        case 1:{
            format(polecenie, 63, "+right;")
        }
        case 2:{
            format(polecenie, 63, "+lookup;")
        }
        case 3:{
            format(polecenie, 63, "+lookdown;")
        }
    }
   
    for (new i=0; i < radom2; i++)
    {
        add(polecenie, 63, "wait;")
    }
   
    switch (radom) {
        case 0:{
            add(polecenie, 63, "-left;")
        }
        case 1:{
            add(polecenie, 63, "-right;")
        }
        case 2:{
            add(polecenie, 63, "-lookup;")
        }
        case 3:{
            add(polecenie, 63, "-lookdown;")
        }
    }
    client_cmd(id,"%s",polecenie)
}

ebay_time_to_pay(id){
    new cash=get_cvar_num("amx_antirusher_cash")*floatround(10.0*TEST_TIME)
    new cash2=get_cvar_num("amx_antirusher_cash_end")
    new money = cs_get_user_money(id)
    if (money-cash > 0)cs_set_user_money(id,money-cash)
    else switch(cash2){
        case 0:    cs_set_user_money(id,0)
        case 1:{
            fm_fakedamage ( id, "rashing", cash/25.0,16384)
        }
        case 2:{
            fm_fakedamage ( id, "rashing", cash/10.0,16384)
        }   
        case 3:{
            fm_fakedamage ( id, "rashing", cash/5.0,16384)
        }
        case 4:{
            fm_fakedamage ( id, "rashing", cash/2.0,16384)
        }
        case 5:{
            fm_fakedamage ( id, "rashing", cash/1.0,16384)
        }
    }
}

public free_the_man(id){
    sounded[id]=0
    rasher[id]=0
    flashed[id]=0
    raszer[id]=0
    if(speed_limit[id]==1){
        fm_set_user_maxspeed(id,(fm_get_user_maxspeed(id)*2.0))
        speed_limit[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 Menu's                /////////
///////////////////////////////////////////////////////////////////////

public amx_antirusher_menu(id){
    menu_display(id, mAntirushControlMenu, 0)
    return PLUGIN_HANDLED
}

public mh_AntirushControlMenu(id, menu, item) {
    switch(item)
    {
        case 0: {
            showmenu(id)
        }
        case 1: {
            showmenu2(id)
        }
        case 2: {
           
            map_editor=id
            edit_g_team=g_team
            transfer_zones()
            zones_edit=zones
            if(zones>0) zone_editing=1
            show_all_zones()
            remove_task(TASK_ZONE)
            set_task(0.2, "show_all_zones", TASK_ZONE, _, _, "b")
            showmenu3(id)
        }
    }           
}

public ma_AntirushControlMenu(id) {}            // bo z generatora amxx studio
public mcb_AntirushControlMenu(id, menu, item) {}    // i usuniecie nie daje dobrych efektow...

public transfer_zones(){
    for(new i=0;i<MAX_ZONES*6;i++){
    map_cors_edit[i]=map_cors_origin[i]
    }
}

public showmenu(id)
{
    new text[512]
    new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)
    new anti_on = get_cvar_num("amx_antirusher")                //1
    new anti_immu = get_cvar_num("amx_antirusher_immunity")            //2
    new Float: anti_time = get_cvar_float("amx_antirusher_time")        //3
    new anti_warn = get_cvar_num("amx_antirusher_warn")            //4
    new anti_sound = get_cvar_num("amx_antirusher_sound")            //5
    new anti_sound_mode = get_cvar_num("amx_antirusher_sound_mode")        //6
    new anti_zasady = get_cvar_num("amx_antirusher_zasady")            //7
    new people = get_cvar_num("amx_antirusher_people")            //8
    format(text, 511, "\yAntirush Menu - ^n\w1. amx_antirusher %i^n\w2. amx_antirusher_immunity %i^n\w3. amx_antirusher_time %.f^n\w4. amx_antirusher_warn  %i^n\w5. amx_antirusher_sound %i^n\w6. amx_antirusher_sound_mode %i^n\w7. amx_antirusher_zasady %i^n\w8. amx_antirusher_people %i^n^n\w9. %L",anti_on, anti_immu, anti_time, anti_warn, anti_sound, anti_sound_mode,anti_zasady,people,LANG_SERVER,"EXIT")
   
    show_menu(id, keys, text)
    return PLUGIN_HANDLED 
}


public Antirush_menu(id, key)
{
    switch(key)
    {
        case 0:{   
            new anti_on = get_cvar_num("amx_antirusher")
            if (anti_on==0) set_cvar_num("amx_antirusher",1)
            else set_cvar_num("amx_antirusher",0)
        }
        case 1:{   
            new anti_immu = get_cvar_num("amx_antirusher_immunity")
            if (anti_immu==0) set_cvar_num("amx_antirusher_immunity",1)
            else set_cvar_num("amx_antirusher_immunity",0)
        }
        case 2:{   
            new Float: anti_time = get_cvar_float("amx_antirusher_time")
            if (anti_time < (get_cvar_float("mp_roundtime")*60.0)) anti_time += 5.0
            else anti_time= 10.0
            set_cvar_float("amx_antirusher_time",anti_time)
        }
        case 3:{
            new anti_warn = get_cvar_num("amx_antirusher_warn")
            if (anti_warn==0) set_cvar_num("amx_antirusher_warn",1)
            else set_cvar_num("amx_antirusher_warn",0)
        }
        case 4:{
            new anti_sound = get_cvar_num("amx_antirusher_sound")
            if (anti_sound==0) set_cvar_num("amx_antirusher_sound",1)
            else set_cvar_num("amx_antirusher_sound",0)
        }
        case 5:{
            new anti_sound_mode = get_cvar_num("amx_antirusher_sound_mode")
            if (anti_sound_mode==0) set_cvar_num("amx_antirusher_sound_mode",1)
            else set_cvar_num("amx_antirusher_sound_mode",0)
        }
        case 6:{       
            new anti_zasady = get_cvar_num("amx_antirusher_zasady")
            if (anti_zasady==0) set_cvar_num("amx_antirusher_zasady",1)
            else set_cvar_num("amx_antirusher_zasady",0)
        }
        case 7:{       
            new people = get_cvar_num("amx_antirusher_people")
            if (people<16) set_cvar_num("amx_antirusher_people",people+1)
            else set_cvar_num("amx_antirusher_people",0)
        }       
        case 8:{
            menu_display(id, mAntirushControlMenu, 0)
            return PLUGIN_HANDLED
        }       
    }
    showmenu(id)
    return PLUGIN_HANDLED
}

public showmenu2(id)
{
    new keys
    new text[512]
    new anti_action = get_cvar_num("amx_antirusher_action")                   
    new anti_cash = get_cvar_num("amx_antirusher_cash")*10       
    new anti_cash_end = get_cvar_num("amx_antirusher_cash_end")               
    new Float: anti_freq = get_cvar_float("amx_antirusher_freq")
    new anti_slap = get_cvar_num("amx_antirusher_slap")*10
   
    switch(anti_action)
    {
        case 1:
        {
            format(text,511,"\yPunishment Menu - ^n\w1. amx_antirusher_action %i^n\w2. amx_antirusher_slap %i^n\w^n\w4. amx_antirusher_freq %.2f ^n\w ",anti_action,anti_slap,anti_freq)
            keys = (1<<0)|(1<<1)|(1<<3)|(1<<8)
        }
        case 10:
        {
            format(text,511,"\yPunishment Menu - ^n\w1. amx_antirusher_action %i^n\w2. amx_antirusher_cash %i^n\w3. amx_antirusher_cash_end %i^n\w4. amx_antirusher_freq %.2f^n\w ",anti_action, anti_cash, anti_cash_end,anti_freq)
            keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<8)
        }
        default:
        {
            format(text,511,"\yPunishment Menu - ^n\w1. amx_antirusher_action %i^n\w ^n\w ^n\w4. amx_antirusher_freq %.2f^n\w ",anti_action,anti_freq)
            keys = (1<<0)|(1<<3)|(1<<8)
        }
    }
    new text2[512]
    switch(anti_action)
    {
        case 0: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_WARN",LANG_SERVER,"EXIT")
        case 1: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_HP",LANG_SERVER,"EXIT")
        case 2: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_KILL",LANG_SERVER,"EXIT")
        case 3: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_KICK",LANG_SERVER,"EXIT")
        case 4: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_BAN",LANG_SERVER,"EXIT")
        case 5: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_SLOW",LANG_SERVER,"EXIT")
        case 6: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_BLIND",LANG_SERVER,"EXIT")
        case 7: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_FFILD",LANG_SERVER,"EXIT")
        case 8: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_OFIRE",LANG_SERVER,"EXIT")
        case 9: format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_BAIM",LANG_SERVER,"EXIT")
        case 10:format(text2,511, "^n\w %L ^n\w %L ^n\w9. %L",LANG_SERVER,"AR_ACTION_CASH",LANG_SERVER,"AR_ACTION_CASH2",LANG_SERVER,"EXIT")
        default:format(text2,511, "^n\w %L ^n\w ^n\w9. %L",LANG_SERVER,"AR_ACTION_NEW",LANG_SERVER,"EXIT")
    }
    add(text,511,text2)
    show_menu(id, keys, text)
    return PLUGIN_HANDLED 
}

public Punishment_menu(id, key)
{
    new anti_action = get_cvar_num("amx_antirusher_action")
    switch(key)
    {
        case 0:
        {   
            if(anti_action<10) anti_action +=1
            else anti_action=0
            set_cvar_num("amx_antirusher_action",anti_action)
        }
        case 1:
        {   
            if(anti_action==1)
            {
                new anti_slap = get_cvar_num("amx_antirusher_slap")
                if(anti_slap<10) anti_slap +=1
                else anti_slap=0
                set_cvar_num("amx_antirusher_slap",anti_slap)
            }
            else if(anti_action==10)
            {
                new anti_cash = get_cvar_num("amx_antirusher_cash")
                if(anti_cash<100) anti_cash +=10
                else if(anti_cash<500) anti_cash +=25
                else anti_cash=0
                set_cvar_num("amx_antirusher_cash",anti_cash)
            }
        }
        case 2:
        {   
            new anti_cash_end = get_cvar_num("amx_antirusher_cash_end")   
            if(anti_cash_end<5) anti_cash_end +=1
            else anti_cash_end=0
            set_cvar_num("amx_antirusher_cash_end",anti_cash_end)
        }
        case 3:
        {   
            new Float: anti_freq = get_cvar_float("amx_antirusher_freq")   
            if(anti_freq<1.0) anti_freq +=0.100001 // ta jedynka na koncu bo zamiast wyswietalc 0.90000 wyswietlalo 0.89999 wiec dalem zaokraglenie do 0.xx i to na koniec :f
            else if (anti_freq<8.0) anti_freq +=0.5
            else anti_freq=0.1
            set_cvar_float("amx_antirusher_freq",anti_freq)
        }       
        case 8:
        {
            menu_display(id, mAntirushControlMenu, 0)
            return PLUGIN_HANDLED
        }       
    }
    showmenu2(id)
    return PLUGIN_HANDLED
}

public showmenu3(id)
{
    editign=0
    new text[512]
    new keys
    if(zones_edit==0){
        keys = (1<<0)|(1<<4)|(1<<6)|(1<<7)|(1<<8)
        format(text, 511, "\yAntirush Zone Creator - ^n^n\w%L: \r%i^n\w1.%L: %s ^n^n ^n^n^n\y5. %L ^n\r7. %L^n\w8. %L ^n\w9. %L",LANG_SERVER,"AR_ZONE_NUM",zones_edit,LANG_SERVER,"AR_ZONE_TEAM",edit_g_team,LANG_SERVER,"AR_ZONE_NEW",LANG_SERVER,"AR_ZONE_DEL",LANG_SERVER,"AR_ZONE_SAVE",LANG_SERVER,"EXIT")
    }
    else if(zones_edit>0){
        keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<6)|(1<<7)|(1<<8)
        format(text, 511, "\yAntirush Zone Creator - ^n^n\w%L: \r%i^n\w1.%L: %s ^n^n\w2. %L \r%i^n      \w3. <- %L 4. -> %L^n^n\y5. %L ^n\r7. %L^n\w8. %L ^n\w9. %L",LANG_SERVER,"AR_ZONE_NUM",zones_edit,LANG_SERVER,"AR_ZONE_TEAM",edit_g_team,LANG_SERVER,"AR_ZONE_EDIT",zone_editing,LANG_SERVER,"BACK",LANG_SERVER,"MORE",LANG_SERVER,"AR_ZONE_NEW",LANG_SERVER,"AR_ZONE_DEL",LANG_SERVER,"AR_ZONE_SAVE",LANG_SERVER,"EXIT")
    }   
       
    show_menu(id, keys, text)
    return PLUGIN_HANDLED
}


public Antirush_Zone_Creator(id, key)
{
    if(map_editor!=id){
        showmenu(id)
        return PLUGIN_HANDLED
    }
       
    switch(key)
    {
        case 0:{
            if (equal(edit_g_team,"XX")) edit_g_team="CT"
            else if (equal(edit_g_team,"CT")) edit_g_team="T"
            else edit_g_team="XX"
        }
        case 1: {   
            zone_incresment=10
            edit_zone(id)
            return PLUGIN_HANDLED
        }
        case 2:{   
            if(zone_editing>1) zone_editing--
        }
        case 3:{   
            if(zone_editing<zones_edit) zone_editing++
        }
        case 4:{
            if(zones_edit<(MAX_ZONES)){
                create_zone(id)
                zone_editing=zones_edit
                zone_incresment=10
                edit_zone(id)
                return PLUGIN_HANDLED
            }
            else{
                client_print(id, print_chat,"%L",LANG_SERVER,"AR_ZONE_MAX")
            }
        }
        case 6:{
            if(zone_editing>0){
                menu_display(id, mUsuwaniestrefy, 0)
                return PLUGIN_HANDLED
            }
            else client_print(id, print_chat,"%L",LANG_SERVER,"AR_ZONE_ZERO")
        }

        case 7:{
            menu_display(id, mZapisacstrefy, 0)
            return PLUGIN_HANDLED
        }
        case 8:{
            amx_antirusher_menu(id)
            remove_task(TASK_ZONE)
            return PLUGIN_HANDLED
        }       
    }
    showmenu3(id)
    return PLUGIN_HANDLED
}

public create_zone(id){
    new origins[3]
    get_user_origin(id,origins,0)
    map_cors_edit[0+zones_edit*6]=origins[0]-32
    map_cors_edit[1+zones_edit*6]=origins[0]+32
    map_cors_edit[2+zones_edit*6]=origins[1]-32
    map_cors_edit[3+zones_edit*6]=origins[1]+32
    map_cors_edit[4+zones_edit*6]=origins[2]-32
    map_cors_edit[5+zones_edit*6]=origins[2]+32
    zones_edit++
}


public mh_Zapisacstrefy(id, menu, item) {
    if(item==0){
        remove_task(TASK_ZONE)
        amx_antirusher_menu(id)
        map_cors_origin=map_cors_edit
        zones=zones_edit
        g_team=edit_g_team
        if(zones>0) map_cors_pre=1
        else map_cors_pre=0
        write_to_file()
    }
    else if(item==1) showmenu3(id)
}

public ma_Zapisacstrefy(id) {}
public mcb_Zapisacstrefy(id, menu, item) {}


public mh_Usuwaniestrefy(id, menu, item) {
    if(item==0){
        amx_antirusher_menu(id)
        delete_zone(zone_editing)
        if((zone_editing-1)>=(zones_edit-1)) zone_editing = zones_edit-1
        zones_edit--
        showmenu3(id)
    }
    else if(item==1) showmenu3(id)
}

public ma_Usuwaniestrefy(id) {}
public mcb_Usuwaniestrefy(id, menu, item) {}

public delete_zone(zone_num){
    new x_num=zone_num-1
    while(x_num<(MAX_ZONES-1)){
        map_cors_edit[0+x_num*6]=map_cors_edit[6+x_num*6]
        map_cors_edit[1+x_num*6]=map_cors_edit[7+x_num*6]
        map_cors_edit[2+x_num*6]=map_cors_edit[8+x_num*6]
        map_cors_edit[3+x_num*6]=map_cors_edit[9+x_num*6]
        map_cors_edit[4+x_num*6]=map_cors_edit[10+x_num*6]
        map_cors_edit[5+x_num*6]=map_cors_edit[11+x_num*6]
        x_num++
    }
}

public edit_zone(id){
    editign=1
    new text[512]
    new keys= (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<6)|(1<<8)
    format(text, 511, "\yEdit Zone - ^n^n\w1. %L: %s ^n\r    2.<- %L  3.-> %L^n\y    4.<- %L  5.-> %L^n  ^n\w7. %L: %i ^n\w9. %L",LANG_SERVER,"AR_EDIT_COOR",zone_coords[zone_coords_num],LANG_SERVER,"BACK",LANG_SERVER,"MORE",LANG_SERVER,"BACK",LANG_SERVER,"MORE",LANG_SERVER,"AR_EDIT_CHANG",zone_incresment,LANG_SERVER,"EXIT")   
       
    show_menu(id, keys, text)
    return PLUGIN_HANDLED
}

public edit_zone2(id, key){   
    switch(key){
        case 0:{   
            if(zone_coords_num<2)zone_coords_num++
            else zone_coords_num=0
        }
        case 1:{   
            if((map_cors_edit[zone_coords_num*2+(zone_editing-1)*6]+zone_incresment)<(map_cors_edit[zone_coords_num*2+(zone_editing-1)*6+1]-32)) map_cors_edit[zone_coords_num*2+(zone_editing-1)*6]+=zone_incresment
        }
        case 2:{   
            if((map_cors_edit[zone_coords_num*2+(zone_editing-1)*6]-zone_incresment)>-8191) map_cors_edit[zone_coords_num*2+(zone_editing-1)*6]-=zone_incresment
        }
        case 3:{
            if((map_cors_edit[zone_coords_num*2+(zone_editing-1)*6+1]-zone_incresment)>(map_cors_edit[zone_coords_num*2+(zone_editing-1)*6]+32)) map_cors_edit[zone_coords_num*2+(zone_editing-1)*6+1]-=zone_incresment
        }
        case 4:{   
            if((map_cors_edit[zone_coords_num*2+(zone_editing-1)*6+1]+zone_incresment)<8191) map_cors_edit[zone_coords_num*2+(zone_editing-1)*6+1]+=zone_incresment
        }
        case 6:{
            if(zone_incresment<1000)zone_incresment*=10
            else zone_incresment=1
        }
        case 8:{
            showmenu3(id)
            return PLUGIN_HANDLED
        }       
    }
    edit_zone(id)
    return PLUGIN_HANDLED
}

//////////////////////////////////////////////////////////////////////////
/////////                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)
    }
}

///////////////////////////////////////////////////////////////////////////
/////////                M_Antirusher Save to file              /////////
///////////////////////////////////////////////////////////////////////////

public write_to_file(){
    new text[512],text2[64]
    new currentmap[32]
    get_mapname(currentmap,31)
    format(text,511,"%s %s ", g_team, currentmap)
    new x0[6],x1[6],y0[6],y1[6],z0[6],z1[6]
    for(new i=0;i<zones;i++){
        num_to_str(map_cors_origin[0+i*6],x0,5)
        num_to_str(map_cors_origin[1+i*6],x1,5)
        num_to_str(map_cors_origin[2+i*6],y0,5)
        num_to_str(map_cors_origin[3+i*6],y1,5)
        num_to_str(map_cors_origin[4+i*6],z0,5)
        num_to_str(map_cors_origin[5+i*6],z1,5)
        format(text2,63,"%s %s %s %s %s %s ",x0,x1,y0,y1,z0,z1)
        add(text,511,text2)
    }
   
    if(is_linux_server()){
        new zonefile[256]
        get_localinfo("amxx_configsdir",zonefile, 255);
        format(zonefile, 255, "%s/antirusher/rush.cor", zonefile)
        if((write_file ( zonefile, text, map_cors_file_line ))==0) log_amx("<<Blad przy nadpisywaniu rush.cor>>")       
    }
    else{   
        if((write_file ( "addons\amxmodx\configs\antirusher\rush.cor", text, map_cors_file_line ))==0) log_amx("<<Blad przy nadpisywaniu rush.cor>>")
    }
}


// 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
}

Sorry for my english, is very low, but please help me !

MHz 12-19-2008 10:35

Re: Antirusher 2.6
 
Nobody ? :|

SnoW 12-19-2008 10:56

Re: Antirusher 2.6
 
Read the rules, you are only allowed to bump after 2 weeks. You bumped like after one hour, that's still 1000 pages code and you don't even tell what the plugin does, Also the plugin isn't commented in english... If I would be you I wouldn't supose that I get help that fast!


All times are GMT -4. The time now is 09:09.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.