Guest User

Zombie Espace Mod

a guest
Jul 26th, 2012
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 75.97 KB | None | 0 0
  1.     /* amx_zombiebot */
  2.      
  3.     /* Plugin by uPd4t3d Data */
  4.     /* Use this plugin with my map "as_resident_evil" and Counter-Strike Condition Zero */
  5.     /* This plugin is designed for as-maps only */
  6.      
  7.     #include <amxmisc>
  8.     #include <amxmodx>  
  9.     #include <cstrike>
  10.     #include <engine>
  11.     #include <fakemeta>
  12.     #include <fun>
  13.      
  14.     #define NO_TEAM 0
  15.     #define TERRORIST 1
  16.     #define COUNTERTERRORIST 2
  17.     #define SPECTATOR 3
  18.      
  19.     #define VERSION "0.93 [2010-04-12]"
  20.      
  21.     /* Use this plugin only with this map(s)... */
  22.      
  23.     new team                                /* speichert welches Team */
  24.     new bot                         /* speichert ob es ein Bot ist */
  25.     new dog                         /* Wie viele Hunde */
  26.     new name[32]                            /* speichert den Namen eines Spielers */
  27.     new zombies=0                           /* zählt die Anzahl der Zombies */
  28.     new t_count=0                           /* zählt Ts ohne Bots */
  29.     new ct_count=0                  /* zählt CTs ohne Bots */
  30.     new player_count=1                      /* Zeiger auf Player der geprüft werden soll */
  31.     new ct_model_count=1                    /* Zeiger auf das Model eines CT */
  32.     new end_round_flag=1                    /* Flag, ob Rundenende ist */
  33.     new first_mdl[33]                       /* Flag, ob das erste Mal ein Model gesetzt wird */
  34.     new need_change[33]                     /* speichert, ob das Model gewechselt werden muß */
  35.     new mapname[32]                 /* speichert den Namen der Map */
  36.     new Float:spawn_delay=3.0               /* Verzögerung beim spawnen */
  37.     new is_vip=0                            /* Variable um zu kucken, ob ein VIP lebt */
  38.     new is_bot_vip=0                        /* falls ein Bot sich verlaufen hat */
  39.     new is_bot_dog[33]                      /* Der Bot ist ein Hund */
  40.     new vip_safe=-1                 /* wenn der VIP es geschafft hat */
  41.     new vip_safetyzone[33]          /* befindet sich der Spieler in der Safety-Zone */
  42.     new can_spawn[33]                       /* speichert ob Spieler spawnen darf! */
  43.     new config=0                            /* speichert ob der Server konfiguriert wurde */
  44.     new ct_level[33]                        /* Level CT */
  45.     new ct_kill_count[33]           /* zählt die Kills eines CTs im Level */
  46.     new t_level[33]                 /* Level T */
  47.     new t_death_count[33]           /* zählt die Tode eines Ts im Level */
  48.     new drop[33]                            /* Info, ob T Waffe weggeschmissen hat */
  49.     new spec[33]                            /* Info, wie lange ein Spieler Spectator ist */
  50.     new steam_count=0                       /* Zeiger auf die nächste zu vergebene Position in der Steam-Liste */
  51.     new steam_adr[40][20]           /* Liste mit SteamIDs der Spieler */
  52.     new steam_level[40]                     /* Level des Spielers zur SteamID */
  53.     new steam_pos[33]                       /* Slot des Spielers, zeigt auf die Pos. der Steam-Liste */
  54.     new msg_screen_fade
  55.      
  56.     public plugin_init() {
  57.             register_plugin("amx_zombiebot",VERSION,"uPd4t3d Data")
  58.             register_cvar("amx_zombiebot_version",VERSION,FCVAR_SERVER)
  59.             set_cvar_string("amx_zombiebot_version",VERSION)
  60.             register_cvar("amx_zombiebot","12")                                                     /* Anzahl der Bots im T-Team */
  61.             register_cvar("amx_zombiebot_debug","0")                                                        /* Debug- Infos */
  62.             config=0                                                                                        /* Server ist noch nicht konfiguriert */
  63.             msg_screen_fade=get_user_msgid("ScreenFade")
  64.             get_mapname(mapname,31)
  65.                                              /* ..nur bei Zombiemap */
  66.                     register_concmd("amx_zombiebot_level","set_level",ADMIN_VOTE,"- add level for an admin")
  67.                     register_concmd("amx_zombiebot_weapon","admin_weapon",ADMIN_VOTE,"- give admin weapons")
  68.                     register_logevent("start_round",2,"0=World triggered","1=Round_Start")  /* ..wenn die Runde anfängt */
  69.                     register_logevent("end_round",2,"0=World triggered","1=Round_End")              /* ..wenn die Runde zu Ende ist */
  70.                     register_event("CurWeapon","cur_weapon","be","1=1")                             /* ..wenn jemand eine Waffe wählt */
  71.                     register_event("ResetHUD","event_hud_reset","be")                               /* Aufruf je Spieler am Rundenstart */
  72.                     register_clcmd("jointeam","join_team")                                          /* ..wenn jemand einem Team beitritt */
  73.                     register_forward(FM_ClientUserInfoChanged,"fw_info")                            /* Weiterleitung Info Changed */
  74.                     register_forward(FM_Touch,"fw_touch")                                           /* wenn ein Spieler etwas berührt */
  75.                     register_forward(FM_PlayerPostThink,"change_models")                            /* Models ändern */
  76.                     register_forward(FM_SetClientKeyValue,"fw_SetClientKeyValue" )                  /* Verhindern, dass die Engine Models zurück setzt */
  77.                     register_forward(FM_EmitSound,"fw_emitsound")                                   /* Töne abändern */
  78.                     server_cmd("bot_quota 5")                                                               /* Alle CZ-Bots vom Server schmeißen */
  79.                     set_task(10.0,"server_config")
  80.            
  81.     }
  82.      
  83.     public set_level(id,level,cid){
  84.             if (!cmd_access(id,level,cid,1)){
  85.                     return PLUGIN_HANDLED
  86.             }
  87.             if (get_user_team(id) == COUNTERTERRORIST) {
  88.                     if (ct_level[id] < 9) {
  89.                             ct_level[id]++
  90.                             client_cmd(id,"spk items/suitchargeok1")
  91.                     }
  92.             }
  93.             if (get_user_team(id) == TERRORIST) {
  94.                     if (t_level[id] < 9) {
  95.                             t_level[id]++
  96.                             client_cmd(id,"spk items/suitchargeok1")
  97.                     }
  98.             }
  99.             return PLUGIN_HANDLED
  100.     }
  101.      
  102.     public admin_weapon(id,level,cid){
  103.             if (!cmd_access(id,level,cid,1)){
  104.                     return PLUGIN_HANDLED
  105.             }
  106.             if (is_user_alive(id) && is_user_connected(id)) {
  107.                     give_item(id,"weapon_m4a1")
  108.                     cs_set_user_bpammo(id,CSW_M4A1,250)
  109.                     give_item(id,"weapon_ak47")
  110.                     cs_set_user_bpammo(id,CSW_AK47,250)
  111.                     give_item(id,"weapon_deagle")
  112.                     cs_set_user_bpammo(id,CSW_DEAGLE,250)
  113.                     client_cmd(id,"spk items/suitchargeok1")
  114.             }
  115.             return PLUGIN_HANDLED
  116.     }
  117.      
  118.     public server_config() {
  119.             server_cmd("bot_difficulty 3")
  120.             server_cmd("bot_allow_grenades 0")
  121.             server_cmd("bot_allow_machine_guns 0")
  122.             server_cmd("bot_allow_pistols 0")
  123.             server_cmd("bot_allow_rifles 0")
  124.             server_cmd("bot_allow_rogues 0")
  125.             server_cmd("bot_allow_shield 0")
  126.             server_cmd("bot_allow_shotguns 0")
  127.             server_cmd("bot_allow_snipers 0")
  128.             server_cmd("bot_allow_sub_machine_guns 0")
  129.             server_cmd("bot_chatter off")
  130.             server_cmd("bot_join_team t")
  131.             server_cmd("bot_walk 0")
  132.             server_cmd("bot_zombie 0")
  133.             server_cmd("bot_stop 0")
  134.             server_cmd("bot_quota 5")
  135.             set_cvar_num("mp_forcecamera",0)
  136.             set_cvar_num("mp_forcechasecam",0)
  137.             set_cvar_num("mp_limitteams",1)
  138.             set_cvar_num("mp_autoteambalance",0)
  139.             set_cvar_num("mp_flashlight",0)
  140.             set_cvar_num("mp_freezetime",1)
  141.             set_cvar_num("allow_spectators",1)
  142.             set_cvar_num("decalfrequency",300)
  143.             set_cvar_float("mp_roundtime",3.5)
  144.             set_cvar_num("sv_allowdownload",0)
  145.             set_cvar_num("sv_timeout",20)
  146.             set_cvar_num("sv_maxspeed",400)
  147.             set_cvar_num("sv_restartround",1)
  148.             config=1                                                                                        /* Server wurde konfiguriert */
  149.             set_task(3.0,"check_death")                                                                     /* Prüfung aktivieren */
  150.     }
  151.      
  152.     public plugin_precache() {
  153.             get_mapname(mapname,31)
  154.                                                     /* Precaches vermeiden, wenn keine Zombiemap */
  155.                     precache_model("models/player/zombiebot_1/zombiebot_1.mdl")
  156.                     precache_model("models/player/zombiebot_2/zombiebot_2.mdl")
  157.                     precache_model("models/player/zombiebot_3/zombiebot_3.mdl")
  158.                     precache_model("models/player/zombiebot_4/zombiebot_4.mdl")
  159.                     precache_model("models/player/zombiebot_5/zombiebot_5.mdl")
  160.                     precache_model("models/player/zombiebot_6/zombiebot_6.mdl")
  161.                     precache_model("models/player/zombiebot_7/zombiebot_7.mdl")
  162.                     precache_model("models/player/zombiebot_8/zombiebot_8.mdl")
  163.                     precache_model("models/player/zombiebot_9/zombiebot_9.mdl")
  164.                     precache_model("models/player/zombiebot_ct1/zombiebot_ct1.mdl")
  165.                     precache_model("models/player/zombiebot_ct2/zombiebot_ct2.mdl")
  166.                     precache_model("models/player/zombiebot_ct3/zombiebot_ct3.mdl")
  167.                     precache_model("models/player/zombiebot_ct4/zombiebot_ct4.mdl")
  168.                     precache_model("models/player/zombiebot_ct5/zombiebot_ct5.mdl")
  169.                     precache_model("models/player/zombiebot_ct6/zombiebot_ct6.mdl")
  170.                     precache_model("models/player/zombiebot_ct7/zombiebot_ct7.mdl")
  171.                     precache_model("models/player/zombiebot_ct8/zombiebot_ct8.mdl")
  172.                     precache_model("models/player/zombiebot_ct9/zombiebot_ct9.mdl")
  173.                     precache_model("models/player/zombiebot_ct10/zombiebot_ct10.mdl")
  174.                     precache_model("models/player/zombiebot_ct11/zombiebot_ct11.mdl")
  175.                     precache_model("models/player/zombiebot_ct12/zombiebot_ct12.mdl")
  176.                     precache_model("models/player/zombiebot_dog/zombiebot_dog.mdl")
  177.                     precache_model("models/player/zombiebot_vip/zombiebot_vip.mdl")
  178.                     precache_model("models/v_knife_zombie.mdl")
  179.                     precache_model("models/v_elite_zombiebot.mdl")
  180.                     precache_model("models/v_knife_zombiebot.mdl")
  181.                     precache_model("models/v_m249_zombiebot.mdl")
  182.                     precache_model("models/v_m3_zombiebot.mdl")
  183.                     precache_model("models/v_m4a1_zombiebot.mdl")
  184.                     precache_model("models/v_mp5_zombiebot.mdl")
  185.                     precache_model("models/v_tmp_zombiebot.mdl")
  186.                     precache_model("models/v_sg552_zombiebot.mdl")
  187.                     precache_model("models/v_usp_zombiebot.mdl")
  188.                     precache_sound("weapons/hammerback.wav")
  189.                     precache_sound("weapons/leftmagin.wav")
  190.                     precache_sound("weapons/leftmagout.wav")
  191.                     precache_sound("weapons/m249_boltpull.wav")
  192.                     precache_sound("weapons/m4a1_boltpull.wav")
  193.                     precache_sound("weapons/magbash.wav")
  194.                     precache_sound("weapons/ready.wav")
  195.                     precache_sound("weapons/rightmagin.wav")
  196.                     precache_sound("weapons/rightmagout.wav")
  197.                     precache_sound("weapons/sliderelease.wav")
  198.                     precache_sound("zombiebot/attention.wav")                                               /* - 15 Sek nach dem Betreten des Servers */
  199.                     precache_sound("zombiebot/final_level.wav")                                     /* - sofort beim Erreichen des Final Level */
  200.                     precache_sound("zombiebot/level_up.wav")
  201.                     precache_sound("zombiebot/one_level_down.wav")
  202.                     precache_sound("zombiebot/safetyzone.wav")                                      /* - ca 2-5 Sek. nach dem Spawn gegenüber dem VIP */
  203.                     precache_sound("zombiebot/two_level_up.wav")                                    /* - kurze Zeit nach dem Kill des VIP oder sofort beim Spawn für CTs wenn der VIP durchgebracht wurde */
  204.                     precache_sound("zombiebot/vip_assassinated.wav")                                        /* - kurze Zeit nach nach dem der VIP getötet würde, für alle */
  205.                     precache_sound("zombiebot/vip_escaped.wav")                                     /* - kurze Zeitnach dem der VIP gerettet wurde, für alle */
  206.                     precache_sound("zombiebot/you_lose_two_levels.wav")                             /* - kurze Zeit nach dem Tod eines CT, wenn er Level 9 hatte */
  207.                     precache_sound("zombiebot/zombie_attack1.wav")
  208.                     precache_sound("zombiebot/zombie_attack2.wav")
  209.                     precache_sound("zombiebot/zombie_die.wav")
  210.                     precache_sound("zombiebot/zombiedog_attack.wav")
  211.                     precache_sound("zombiebot/zombiedog_growl.wav")
  212.                     precache_sound("zombiebot/zombiedog_die.wav")
  213.            
  214.     }
  215.      
  216.     public client_putinserver(id) {
  217.             get_mapname(mapname,31)
  218.          
  219.                     new i,adminlogfilename[256]
  220.                     set_task(15.0,"send_client_cmd",id)
  221.                     need_change[id]=1                                                                       /* Player braucht ein Model */
  222.                     first_mdl[id]=0
  223.                     ct_level[id]=1
  224.                     ct_kill_count[id]=0
  225.                     t_level[id]=1
  226.                     t_death_count[id]=0
  227.                     spec[id]=10
  228.                     if (is_user_bot(id) == 0) {
  229.                             new steam[20]
  230.                             get_user_authid(id,steam,19)
  231.                             for (i=0; i<40; i++) {
  232.                                     if(contain(steam_adr[i],steam) != -1) {
  233.                                             steam_pos[id]=i
  234.                                             ct_level[id]=steam_level[i]
  235.                                             t_level[id]=steam_level[i]
  236.                                             get_time("L%Y%m%d.log",adminlogfilename,255)
  237.                                             log_to_file(adminlogfilename,"[amx_zombiebot] %s - Level: %d",steam_adr[i],steam_level[i])
  238.                                             return
  239.                                     }
  240.                             }
  241.                             steam_adr[steam_count]=steam
  242.                             steam_pos[id]=steam_count
  243.                             steam_level[steam_count]=1
  244.                             steam_count++
  245.                             if (steam_count > 39) {
  246.                                     steam_count=0
  247.                             }
  248.                     }
  249.                     else {
  250.                             t_level[id]=random_num(3,9)
  251.                     }
  252.            
  253.     }
  254.      
  255.     public send_client_cmd(id) {
  256.             if (is_user_bot(id) == 0) {
  257.                     client_cmd(id,"cl_dlmax 80")                                                    /* Soll das svc_bad Problem verbessern */
  258.                     client_cmd(id,"cl_minmodels 0")                                                 /* damit alle die neuen Models sehen */
  259.                     client_print(id,print_chat,"[ArenaCity] Udvozollek a szerveren! Jo jatekot!",VERSION)
  260.                     client_cmd(id,"spk zombiebot/attention")
  261.             }
  262.     }
  263.      
  264.     public client_damage(attacker,victim,damage,wpnindex,hitplace,TA) {
  265.             if (config) {
  266.                     if (attacker != victim && TA == 0) {
  267.                             set_task(0.1,"fade",victim)
  268.                     }
  269.             }
  270.     }
  271.      
  272.     public fade(id) {
  273.             if (get_user_team(id) == COUNTERTERRORIST) {
  274.                     message_begin(MSG_ONE,msg_screen_fade,{0,0,0},id)
  275.                     write_short(8000)                       /* Duration */
  276.                     write_short(1000)                       /* Hold time */
  277.                     write_short(0)                  /* Fade type */
  278.                     write_byte(100)                 /* Red */
  279.                     write_byte(0)                           /* Green */
  280.                     write_byte(0)                           /* Blue */
  281.                     write_byte(248)                 /* Alpha */
  282.                     message_end()
  283.             }
  284.     }
  285.      
  286.     public client_death(killer,id,wpnindex,hitplace,tk) {
  287.             new is_final
  288.             if (config) {
  289.                     if (tk != 1 && killer != id) {                                                  /* Kein Teamkill oder Suicid */
  290.                             if (get_user_team(killer) == COUNTERTERRORIST) {                                /* Killer ist CT, einen Level hinzu bei 2 Kills */
  291.                                     if (cs_get_user_vip(killer) == 0 && is_bot_dog[id] == 0) {      /* VIP soll nicht belohnt werden, kein Level für Hund! */
  292.                                             ct_kill_count[killer]++
  293.                                             if (ct_kill_count[killer] > 1) {
  294.                                                     ct_kill_count[killer]=0
  295.                                                     if (ct_level[killer] < 9) {
  296.                                                             ct_level[killer]++
  297.                                                             if (is_user_bot(killer) == 0) {
  298.                                                                     steam_level[steam_pos[killer]]=ct_level[killer] /* Level in Abhängikkeit der SteamID speichern */
  299.                                                                     set_hudmessage(255,255,255,-1.0,0.60,2,0.05,2.0,0.01,2.0,-1)
  300.                                                                     if (ct_level[killer] == 9) {
  301.                                                                             show_hudmessage(killer,"Maximum Fegyver Szint")
  302.                                                                             set_task(2.0,"final_level_delay",killer)
  303.                                                                     }
  304.                                                                     else {
  305.                                                                             show_hudmessage(killer,"Fegyver Szint %d",ct_level[killer])
  306.                                                                             set_task(2.0,"level_up_delay",killer)
  307.                                                                     }
  308.                                                                     client_cmd(killer,"spk items/suitchargeok1")
  309.                                                             }
  310.                                                     }
  311.                                             }
  312.                                     }
  313.                             }
  314.                             if (get_user_team(killer) == TERRORIST) {                                       /* Killer ist T, einen Level sofort hinzu */
  315.                                     if (t_level[killer] < 9) {
  316.                                             t_level[killer]++
  317.                                             is_final=0
  318.                                             if (t_level[killer] == 9) {
  319.                                                     set_task(10.0,"final_level_delay",killer)
  320.                                                     is_final=1
  321.                                             }
  322.                                             if (cs_get_user_vip(id) == 1 && t_level[killer] < 9) {
  323.                                                     t_level[killer]++
  324.                                                     if (is_user_bot(killer) == 0) {
  325.                                                             set_task(6.0,"two_level_delay",killer)
  326.                                                     }
  327.                                             }
  328.                                             else {
  329.                                                     if (is_final == 0) {
  330.                                                             set_task(2.0,"level_up_delay",killer)
  331.                                                     }
  332.                                             }
  333.                                     }
  334.                                     t_death_count[killer]=0
  335.                                     if (is_bot_dog[killer] == 0) {
  336.                                             new hp=t_level[killer]
  337.                                             hp=hp*50
  338.                                             hp+=549
  339.                                             set_user_health(killer,hp)                                      /* HP nach Level auffrischen */
  340.                                     }
  341.                                     if (is_user_bot(killer) == 0) {
  342.                                             steam_level[steam_pos[killer]]=t_level[killer]          /* Level in Abhängikkeit der SteamID speichern */
  343.                                             set_hudmessage(255,255,255,-1.0,0.60,2,0.05,2.0,0.01,2.0,-1)
  344.                                             if (t_level[killer] == 9) {
  345.                                                     show_hudmessage(killer,"Maximum Zombi Szint")
  346.                                             }
  347.                                             else {
  348.                                                     show_hudmessage(killer,"Zombi Szint %d",t_level[killer])
  349.                                             }
  350.                                             client_cmd(killer,"spk items/suitchargeok1")
  351.                                     }
  352.                             }
  353.                             if (get_user_team(id) == TERRORIST) {                                   /* Opfer ist T, einen Level weg bei 3 Tode */
  354.                                     if (is_bot_dog[id] == 0) {
  355.                                             t_death_count[id]++
  356.                                             if (t_death_count[id] > 2) {
  357.                                                     t_death_count[id]=0
  358.                                                     if (t_level[id] > 1) {
  359.                                                             t_level[id]--
  360.                                                             if (is_user_bot(id) == 0) {
  361.                                                                     steam_level[steam_pos[id]]=t_level[id]  /* Level in Abhängikkeit der SteamID speichern */
  362.                                                                     set_hudmessage(255,255,255,-1.0,0.60,2,0.05,2.0,0.01,2.0,-1)
  363.                                                                     show_hudmessage(id,"Zombi Szint %d",t_level[id])
  364.                                                                     client_cmd(id,"spk fvox/boop")
  365.                                                                     set_task(2.0,"one_level_down_delay",id)
  366.                                                             }
  367.                                                     }
  368.                                             }
  369.                                     }
  370.                             }
  371.                             if(get_user_team(id) == COUNTERTERRORIST) {                             /* Opfer ist CT, einen Level sofort weg, außer es ist der VIP */
  372.                                     if (cs_get_user_vip(id) == 0) {
  373.                                             if (ct_level[id] > (3.5 + (t_count/2) )) {              /* CTs bleiben die Level 1-3 + (Human Zombies / 2) */
  374.                                                     if (ct_level[id] == 9) {
  375.                                                             ct_level[id]--
  376.                                                             set_task(2.0,"lose_delay",id)  
  377.                                                     }
  378.                                                     else {
  379.                                                             set_task(2.0,"one_level_down_delay",id)
  380.                                                     }
  381.                                                     ct_level[id]--
  382.                                                     if (is_user_bot(id) == 0) {
  383.                                                             steam_level[steam_pos[id]]=ct_level[id] /* Level in Abhängikkeit der SteamID speichern */
  384.                                                             set_hudmessage(255,255,255,-1.0,0.60,2,0.05,2.0,0.01,2.0,-1)
  385.                                                             show_hudmessage(id,"Fegyver Szint %d",ct_level[id])
  386.                                                             client_cmd(id,"spk fvox/boop")
  387.                                                     }
  388.                                             }
  389.                                     }
  390.                                     else {
  391.                                             set_task(2.0,"vip_assassinated_delay")
  392.                                     }
  393.                             }
  394.                     }
  395.             }
  396.     }
  397.      
  398.     public lose_delay(id) {
  399.             client_cmd(id,"spk zombiebot/you_lose_two_levels")
  400.     }
  401.      
  402.     public vip_assassinated_delay() {
  403.             client_cmd(0,"spk zombiebot/vip_assassinated")
  404.     }
  405.      
  406.     public two_level_delay(id) {
  407.             steam_level[steam_pos[id]]=t_level[id]                                                  /* Level in Abhängikkeit der SteamID speichern */
  408.             set_hudmessage(255,255,255,-1.0,0.65,2,0.05,2.0,0.01,2.0,-1)
  409.             show_hudmessage(id,"Megmenettetek a VIP-et! +2 szint")
  410.             client_cmd(id,"spk zombiebot/two_level_up")
  411.     }
  412.      
  413.     public vip_escaped_delay() {
  414.             client_cmd(0,"spk zombiebot/vip_escaped")
  415.     }
  416.      
  417.     public final_level_delay(id) {
  418.             client_cmd(id,"spk zombiebot/final_level")
  419.     }
  420.      
  421.     public level_up_delay(id) {
  422.             client_cmd(id,"spk zombiebot/level_up")
  423.     }
  424.      
  425.     public one_level_down_delay(id) {
  426.             client_cmd(id,"spk zombiebot/one_level_down")
  427.     }
  428.      
  429.     public event_hud_reset(id) {
  430.             cs_set_user_money(id,0)                                                                 /* kein Geld jede Runde */
  431.             spawn_delay=float(id)
  432.             spawn_delay=spawn_delay/20.0
  433.             spawn_delay+=1.5
  434.             set_task(spawn_delay,"event_player_spawn",id)                                           /* Spawn muß verzögert sein */
  435.             if (vip_safe == 1) {
  436.                     if (get_user_team(id) == COUNTERTERRORIST) {
  437.                             if (ct_level[id] < 7) {                                                 /* die Letzten Level muss man sich schon verdienen */
  438.                                     ct_level[id]++
  439.                                     if (is_user_bot(id) == 0) {
  440.                                             set_task(0.5,"vip_bonus",id)
  441.                                     }
  442.                             }
  443.                     }
  444.             }
  445.     }
  446.      
  447.     public vip_bonus(id) {
  448.             steam_level[steam_pos[id]]=ct_level[id]                                                 /* Level in Abhängikkeit der SteamID speichern */
  449.             set_hudmessage(255,255,255,-1.0,0.65,2,0.05,2.0,0.01,2.0,-1)
  450.             show_hudmessage(id,"A VIP kimenekult! +1 szint!")
  451.             client_cmd(id,"spk items/suitchargeok1")
  452.     }
  453.      
  454.     public event_player_spawn(id) {
  455.             if (is_user_alive(id)) {
  456.                     if (get_user_team(id) == TERRORIST) {
  457.                             drop[id]=0
  458.                             set_user_footsteps(id,1)                                                        /* Schritte nicht hörbar */
  459.                             set_user_gravity(id,0.5)                                                        /* Gravity niedriger*/
  460.                             client_cmd(0,"spk roach/rch_walk")
  461.                             if (is_user_bot(id) == 0) {
  462.                                     is_bot_dog[id]=0
  463.                                     cs_set_user_armor(id,100,CS_ARMOR_VESTHELM)                     /* Helm und Weste */
  464.                                     new hp=t_level[id]
  465.                                     hp=hp*50
  466.                                     hp+=549
  467.                                     set_user_health(id,hp)                                          /* mehr HP geben */
  468.                                     set_hudmessage(255,255,255,-1.0,0.60,2,0.05,2.0,0.01,2.0,-1)
  469.                                     if (t_level[id] == 9) {
  470.                                             show_hudmessage(id,"Maximum Zombi Szint - %d HP",hp)
  471.                                     }
  472.                                     else {
  473.                                             show_hudmessage(id,"Zombi Szint %d - %d HP",t_level[id],hp)
  474.                                     }
  475.                             }
  476.                             else {
  477.                                     if (dog > 0) {
  478.                                             set_user_health(id,100)                                 /* Hunde HPs */
  479.                                             dog--
  480.                                             set_pev(id,pev_maxspeed,400.0)
  481.                                             set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,""))
  482.                                             is_bot_dog[id]=1
  483.                                     }
  484.                                     else {
  485.                                             cs_set_user_armor(id,100,CS_ARMOR_VESTHELM)             /* Helm und Weste */
  486.                                             new hp=t_level[id]
  487.                                             hp=hp*50
  488.                                             hp+=549
  489.                                             set_user_health(id,hp)                                  /* mehr HP geben */
  490.                                             set_pev(id,pev_maxspeed,280.0)
  491.                                             is_bot_dog[id]=0
  492.                                     }
  493.                             }
  494.                     }
  495.                     else {
  496.                             if (get_user_team(id) == COUNTERTERRORIST) {
  497.                                     is_bot_dog[id]=0
  498.                                     vip_safetyzone[id]=0
  499.                                     set_user_footsteps(id,0)                                                /* Schritte hörbar */
  500.                                     set_user_gravity(id,1.0)                                                /* Gravity normal */
  501.                                     switch(ct_level[id]) {                                          /* auch dem VIP mehr Muni geben */
  502.                                             case 1: cs_set_user_bpammo(id,CSW_USP,150)
  503.                                             case 2: cs_set_user_bpammo(id,CSW_USP,200)
  504.                                             case 3: cs_set_user_bpammo(id,CSW_USP,250)
  505.                                             case 4: cs_set_user_bpammo(id,CSW_USP,250)
  506.                                             case 5: cs_set_user_bpammo(id,CSW_USP,250)
  507.                                             case 6: cs_set_user_bpammo(id,CSW_USP,250)
  508.                                             case 7: cs_set_user_bpammo(id,CSW_USP,250)
  509.                                             case 8: cs_set_user_bpammo(id,CSW_USP,250)
  510.                                             case 9: cs_set_user_bpammo(id,CSW_USP,250)
  511.                                     }
  512.                                     set_user_health(id,100)                                         /* HP setzen */
  513.                                     set_hudmessage(255,255,255,-1.0,0.60,2,0.05,2.0,0.01,2.0,-1)
  514.                                     if (ct_level[id] == 9) {
  515.                                             show_hudmessage(id,"Maximum Fegyver Szint")
  516.                                     }
  517.                                     else {
  518.                                             show_hudmessage(id,"Fegyver Szint %d",ct_level[id])
  519.                                     }
  520.                                     if (cs_get_user_vip(id) == 0) {                                 /* wenn kein VIP, dann Waffen geben */
  521.                                             cs_set_user_armor(id,100,CS_ARMOR_VESTHELM)             /* Helm und Weste */
  522.                                             set_pev(id,pev_maxspeed,220.0)
  523.                                             if (is_user_bot(id) == 0) {
  524.                                                     set_task(0.2,"give_elite",id)
  525.                                             }
  526.                                     }
  527.                                     else {
  528.                                             set_pev(id,pev_maxspeed,220.0)
  529.                                             if (vip_safe == 0) {
  530.                                                     client_cmd(id,"spk zombiebot/safetyzone")               /* Dem VIP sagen, er soll in die Safety Zone */
  531.                                             }
  532.                                     }
  533.                             }
  534.                     }
  535.                     need_change[id]=1                                                                       /* Da der Player gerade gespawnt ist, braucht er evtl. ein neues Model */
  536.             }
  537.     }
  538.      
  539.     public give_elite(id) {
  540.             if (is_user_alive(id) && is_user_connected(id)) {
  541.                     switch(ct_level[id]) {
  542.                             case 1: {
  543.                                     give_item(id,"weapon_elite")
  544.                                     cs_set_user_bpammo(id,CSW_ELITE,150)                            /* 9mm */
  545.                             }
  546.                             case 2: {
  547.                                     give_item(id,"weapon_elite")
  548.                                     cs_set_user_bpammo(id,CSW_ELITE,200)                            /* 9mm */
  549.                             }
  550.                             case 3: {
  551.                                     give_item(id,"weapon_elite")
  552.                                     cs_set_user_bpammo(id,CSW_ELITE,250)                            /* 9mm */
  553.                             }
  554.                             case 4: {
  555.                                     give_item(id,"weapon_elite")
  556.                                     cs_set_user_bpammo(id,CSW_ELITE,250)                            /* 9mm */
  557.                             }
  558.                             case 5: {
  559.                                     give_item(id,"weapon_elite")
  560.                                     cs_set_user_bpammo(id,CSW_ELITE,250)                            /* 9mm */
  561.                             }
  562.                             case 6: {
  563.                                     give_item(id,"weapon_elite")
  564.                                     cs_set_user_bpammo(id,CSW_ELITE,250)                            /* 9mm */
  565.                             }
  566.                             case 7: {
  567.                                     give_item(id,"weapon_elite")
  568.                                     cs_set_user_bpammo(id,CSW_ELITE,250)                            /* 9mm */
  569.                             }
  570.                             case 8: give_item(id,"weapon_hegrenade")
  571.                             case 9: give_item(id,"weapon_hegrenade")
  572.                     }
  573.                     if (ct_level[id] > 1) {
  574.                             set_task(0.5,"give_tmp",id)
  575.                     }
  576.             }
  577.     }
  578.      
  579.     public give_tmp(id) {
  580.             if (is_user_alive(id) && is_user_connected(id)) {
  581.                     switch(ct_level[id]) {
  582.                             case 2: give_item(id,"weapon_tmp")                                              /* 9mm */
  583.                             case 3: give_item(id,"weapon_tmp")                                              /* 9mm */
  584.                             case 4: give_item(id,"weapon_tmp")                                              /* 9mm */
  585.                             case 5: give_item(id,"weapon_tmp")                                              /* 9mm */
  586.                             case 6: give_item(id,"weapon_tmp")                                              /* 9mm */
  587.                             case 7: give_item(id,"weapon_tmp")                                              /* 9mm */
  588.                     }
  589.                     if (ct_level[id] > 2) {
  590.                             set_task(0.5,"give_mp5",id)
  591.                     }
  592.             }
  593.     }
  594.      
  595.     public give_mp5(id) {
  596.             if (is_user_alive(id) && is_user_connected(id)) {
  597.                     switch(ct_level[id]) {
  598.                             case 3: give_item(id,"weapon_mp5navy")                                  /* 9mm */
  599.                             case 4: give_item(id,"weapon_mp5navy")                                  /* 9mm */
  600.                             case 5: give_item(id,"weapon_mp5navy")                                  /* 9mm */
  601.                             case 6: give_item(id,"weapon_mp5navy")                                  /* 9mm */
  602.                             case 7: give_item(id,"weapon_mp5navy")                                  /* 9mm */
  603.                     }
  604.                     if (ct_level[id] > 3) {
  605.                             set_task(0.5,"give_m4a1",id)
  606.                     }
  607.             }
  608.     }
  609.      
  610.     public give_m4a1(id) {
  611.             if (is_user_alive(id) && is_user_connected(id)) {
  612.                     give_item(id,"weapon_m4a1")                                                             /* 556nato */
  613.                     switch(ct_level[id]) {
  614.                             case 4: cs_set_user_bpammo(id,CSW_M4A1,150)                             /* 556nato */
  615.                             case 5: cs_set_user_bpammo(id,CSW_M4A1,200)                             /* 556nato */
  616.                             case 6: cs_set_user_bpammo(id,CSW_M4A1,250)                             /* 556nato */
  617.                             case 7: cs_set_user_bpammo(id,CSW_M4A1,250)                             /* 556nato */
  618.                             case 8: cs_set_user_bpammo(id,CSW_M4A1,250)                             /* 556nato */
  619.                             case 9: cs_set_user_bpammo(id,CSW_M4A1,250)                             /* 556nato */
  620.                     }
  621.                     if (ct_level[id] > 4) {
  622.                             set_task(0.5,"give_m3",id)
  623.                     }
  624.             }
  625.     }
  626.      
  627.     public give_m3(id) {
  628.             if (is_user_alive(id) && is_user_connected(id)) {
  629.                     give_item(id,"weapon_m3")
  630.                     switch(ct_level[id]) {
  631.                             case 5: cs_set_user_bpammo(id,CSW_M3,30)                                        /* 12gauge */
  632.                             case 6: cs_set_user_bpammo(id,CSW_M3,60)                                        /* 12gauge */
  633.                             case 7: cs_set_user_bpammo(id,CSW_M3,90)                                        /* 12gauge */
  634.                             case 8: cs_set_user_bpammo(id,CSW_M3,90)                                        /* 12gauge */
  635.                             case 9: cs_set_user_bpammo(id,CSW_M3,90)                                        /* 12gauge */
  636.                     }
  637.                     if (ct_level[id] > 5) {
  638.                             set_task(0.5,"give_sg552",id)
  639.                     }
  640.             }
  641.     }
  642.      
  643.     public give_sg552(id) {
  644.             if (is_user_alive(id) && is_user_connected(id)) {
  645.                     give_item(id,"weapon_sg552")                                                    /* 556nato */
  646.                     if (ct_level[id] > 8) {
  647.                             set_task(0.5,"give_m249",id)
  648.                     }
  649.             }
  650.     }
  651.      
  652.     public give_m249(id) {
  653.             if (is_user_alive(id) && is_user_connected(id)) {
  654.                     give_item(id,"weapon_m249")
  655.                     cs_set_user_bpammo(id,CSW_M249,150)
  656.             }
  657.     }
  658.      
  659.     public fw_touch(touched,toucher) {
  660.             if (!pev_valid(touched) || !is_user_connected(toucher)) {
  661.                     return FMRES_IGNORED
  662.             }
  663.             static classname[10]
  664.             pev(touched,pev_classname,classname,9)
  665.             if (classname[5] == 'v' && classname[6] == 'i') {
  666.                     vip_safetyzone[toucher]=1
  667.             }
  668.             if (classname[8] != 'x' && !(classname[0] == 'w' && classname[1] == 'e' && classname[2] == 'a') && !(classname[0] == 'a' && classname[1] == 'r' && classname[2] == 'm')) {
  669.                     return FMRES_IGNORED
  670.             }
  671.             static model[24]
  672.             pev(touched,pev_model,model,23)
  673.             if (get_user_team(toucher) == COUNTERTERRORIST) {
  674.                     if (model[9] == 'u') {                                                          /* usp */
  675.                             return FMRES_IGNORED
  676.                     }
  677.                     if (model[9] == 'e') {                                                          /* elite */
  678.                             return FMRES_IGNORED
  679.                     }
  680.                     if (model[9] == 't' && ct_level[toucher] > 1) {                                 /* tmp */
  681.                             return FMRES_IGNORED
  682.                     }
  683.                     if (model[10] == 'p' && ct_level[toucher] > 2) {                                        /* mp5 */
  684.                             return FMRES_IGNORED
  685.                     }
  686.                     if (model[10] == '4' && ct_level[toucher] > 3) {                                        /* m4a1 */
  687.                             return FMRES_IGNORED
  688.                     }
  689.                     if (model[10] == '3' && ct_level[toucher] > 4) {                                        /* m3 */
  690.                             return FMRES_IGNORED
  691.                     }
  692.                     if (model[9] == 's' && ct_level[toucher] > 5) {                                 /* sg552 */
  693.                             return FMRES_IGNORED
  694.                     }
  695.                     if (model[10] == '2' && ct_level[toucher] > 8) {                                        /* m249 */
  696.                             return FMRES_IGNORED
  697.                     }
  698.                     if (model[9] == 'h' && ct_level[toucher] > 7) {                                 /* he */
  699.                             return FMRES_IGNORED
  700.                     }
  701.             }
  702.             return FMRES_SUPERCEDE
  703.     }
  704.      
  705.     public fw_info(id,buffer) {
  706.             if (config && end_round_flag == 0) {
  707.                     return FMRES_SUPERCEDE
  708.             }
  709.             return FMRES_IGNORED
  710.     }
  711.      
  712.     public fw_SetClientKeyValue(id,const infobuffer[],const key[]) {
  713.             if (equal(key,"model")) {
  714.                     if (first_mdl[id] == 1) {
  715.                             return FMRES_SUPERCEDE
  716.                     }
  717.                     else {
  718.                             first_mdl[id]=1
  719.                     }
  720.             }
  721.             return FMRES_IGNORED
  722.     }
  723.      
  724.     public fw_emitsound(id,channel,sound[]) {
  725.             if (is_user_connected(id)) {
  726.                     if (get_user_team(id) == TERRORIST) {
  727.                             if (contain(sound,"player/die") != -1 || contain(sound,"player/death") != -1) {
  728.                                     if (is_bot_dog[id] == 1) {
  729.                                             emit_sound(id,CHAN_AUTO,"zombiebot/zombiedog_die.wav",1.0,ATTN_NORM,0,PITCH_NORM)
  730.                                             if (get_cvar_num("amx_zombiebot_debug") == 1) {         /* DEBUG-INFO */
  731.                                                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: Emit sound zombiedog_die.wav")
  732.                                             }
  733.                                             return FMRES_SUPERCEDE
  734.                                     }
  735.                                     else {
  736.                                             emit_sound(id,CHAN_AUTO,"zombiebot/zombie_die.wav",1.0,ATTN_NORM,0,PITCH_NORM)
  737.                                             if (get_cvar_num("amx_zombiebot_debug") == 1) {         /* DEBUG-INFO */
  738.                                                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: Emit sound zombie_die.wav")
  739.                                             }
  740.                                             return FMRES_SUPERCEDE
  741.                                     }
  742.                             }
  743.                             if (contain(sound,"weapons/knife_hit") != -1 || contain(sound,"weapons/knife_stab") != -1) {
  744.                                     if (is_bot_dog[id] == 1) {
  745.                                             new attack_snd=random_num(0,1)
  746.                                             switch(attack_snd) {
  747.                                                     case 0: emit_sound(id,CHAN_AUTO,"zombiebot/zombiedog_attack.wav",1.0,ATTN_NORM,0,PITCH_NORM)
  748.                                                     case 1: emit_sound(id,CHAN_AUTO,"zombiebot/zombiedog_growl.wav",1.0,ATTN_NORM,0,PITCH_NORM)
  749.                                             }
  750.                                             return FMRES_SUPERCEDE
  751.                                     }
  752.                                     else {
  753.                                             new attack_snd=random_num(0,1)
  754.                                             switch(attack_snd) {
  755.                                                     case 0: emit_sound(id,CHAN_AUTO,"zombiebot/zombie_attack1.wav",1.0,ATTN_NORM,0,PITCH_NORM)
  756.                                                     case 1: emit_sound(id,CHAN_AUTO,"zombiebot/zombie_attack2.wav",1.0,ATTN_NORM,0,PITCH_NORM)
  757.                                             }
  758.                                             return FMRES_SUPERCEDE
  759.                                     }
  760.                             }
  761.                     }
  762.             }
  763.             return FMRES_IGNORED
  764.     }
  765.      
  766.     public change_models(id) {
  767.             if (is_user_alive(id)) {
  768.                     if (need_change[id] == 1 && end_round_flag == 0) {
  769.                             need_change[id]=0                                                               /* Aenderungsanforderung ausschalten */
  770.                             client_cmd(id,"cl_minmodels 0")                                         /* damit alle die neuen Models sehen */
  771.                             new mdl_name[16]
  772.                             new cur_mdl[16]
  773.                             new bot_name[20]
  774.                             if (get_user_team(id) == TERRORIST) {                                   /* Model Zombie und Zombiehund*/
  775.                                     new info=engfunc(EngFunc_GetInfoKeyBuffer,id)
  776.                                     if (is_user_bot(id) == 1) {
  777.                                             if (is_bot_dog[id] == 1) {
  778.                                                     format(bot_name,19,"Zombi[%d] Kutya",id)
  779.                                                     info=engfunc(EngFunc_GetInfoKeyBuffer,id)
  780.                                                     engfunc(EngFunc_SetClientKeyValue,id,info,"name",bot_name)
  781.                                                     engfunc(EngFunc_InfoKeyValue,engfunc(EngFunc_GetInfoKeyBuffer,id),"model",cur_mdl,15)
  782.                                                     if (!equal(cur_mdl,"zombiebot_dog")) {
  783.                                                             engfunc(EngFunc_SetClientKeyValue,id,info,"model","zombiebot_dog")      /* Model ändern */
  784.                                                             if (get_cvar_num("amx_zombiebot_debug") == 1) {                         /* DEBUG-INFO */
  785.                                                                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: Change model zombiedog for bot ID: %d",id)
  786.                                                             }
  787.                                                     }
  788.                                             }
  789.                                             else {
  790.                                                     format(bot_name,19,"Zombi[%d] Szint %d",id,t_level[id])
  791.                                                     info=engfunc(EngFunc_GetInfoKeyBuffer,id)
  792.                                                     engfunc(EngFunc_SetClientKeyValue,id,info,"name",bot_name)
  793.                                                     format(mdl_name,15,"zombiebot_%d",t_level[id])
  794.                                                     engfunc(EngFunc_InfoKeyValue,engfunc(EngFunc_GetInfoKeyBuffer,id),"model",cur_mdl,15)
  795.                                                     if (!equal(cur_mdl,mdl_name)) {
  796.                                                             engfunc(EngFunc_SetClientKeyValue,id,info,"model",mdl_name)
  797.                                                             if (get_cvar_num("amx_zombiebot_debug") == 1) { /* DEBUG-INFO */
  798.                                                                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: Change model zombie for bot ID: %d",id)
  799.                                                             }
  800.                                                     }
  801.                                             }
  802.                                     }
  803.                                     else {
  804.                                             format(mdl_name,15,"zombiebot_%d",t_level[id])
  805.                                             engfunc(EngFunc_InfoKeyValue,engfunc(EngFunc_GetInfoKeyBuffer,id),"model",cur_mdl,15)
  806.                                             if (!equal(cur_mdl,mdl_name)) {
  807.                                                     engfunc(EngFunc_SetClientKeyValue,id,info,"model",mdl_name)
  808.                                                     if (get_cvar_num("amx_zombiebot_debug") == 1) { /* DEBUG-INFO */
  809.                                                             client_print(0,print_chat,"[amx_zombiebot] DEBUG: Change model zombie for player ID: %d",id)
  810.                                                     }
  811.                                             }
  812.                                     }
  813.                                     set_pev(id,pev_weaponmodel,engfunc(EngFunc_AllocString,""))     /* Das Messer am Zombie wegnehmen */
  814.                             }
  815.                             else {
  816.                                     if (get_user_team(id) == COUNTERTERRORIST) {                    /* Model VIP */
  817.                                             if (cs_get_user_vip(id) == 1) {
  818.                                                     new info=engfunc(EngFunc_GetInfoKeyBuffer,id)
  819.                                                     engfunc(EngFunc_InfoKeyValue,engfunc(EngFunc_GetInfoKeyBuffer,id),"model",cur_mdl,15)
  820.                                                     if (!equal(cur_mdl,"zombiebot_vip")) {
  821.                                                             engfunc(EngFunc_SetClientKeyValue,id,info,"model","zombiebot_vip")
  822.                                                             if (get_cvar_num("amx_zombiebot_debug") == 1) {         /* DEBUG-INFO */
  823.                                                                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: Change model V.I.P. for player ID: %d",id)
  824.                                                             }
  825.                                                     }
  826.                                                     if (is_user_bot(id) == 1) {
  827.                                                             info=engfunc(EngFunc_GetInfoKeyBuffer,id)
  828.                                                             engfunc(EngFunc_SetClientKeyValue,id,info,"name","V.I.P. is a stupid BOT!!!")
  829.                                                             set_hudmessage(255,0,0,-1.0,0.45,2,0.05,30.0,0.01,2.0,-1)
  830.                                                             show_hudmessage(0,"V.I.P. is a stupid BOT - Zombiknak nincs ujraeledes - CT-knek meg kell olni az osszes Zombit!")
  831.                                                     }
  832.                                             }
  833.                                             else {                                                          /* Model Counter Zombie */
  834.                                                     new info=engfunc(EngFunc_GetInfoKeyBuffer,id)
  835.                                                     engfunc(EngFunc_InfoKeyValue,engfunc(EngFunc_GetInfoKeyBuffer,id),"model",cur_mdl,15)
  836.                                                     if (contain(cur_mdl,"zombiebot_ct") == -1) {
  837.                                                             format(mdl_name,15,"zombiebot_ct%d",ct_model_count)
  838.                                                             engfunc(EngFunc_SetClientKeyValue,id,info,"model",mdl_name)
  839.                                                             ct_model_count++
  840.                                                             if (ct_model_count == 13) {
  841.                                                                     ct_model_count=1
  842.                                                             }
  843.                                                             if (get_cvar_num("amx_zombiebot_debug") == 1) {         /* DEBUG-INFO */
  844.                                                                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: Change model counter-zombie for player ID: %d",id)
  845.                                                             }
  846.                                                     }
  847.                                             }
  848.                                     }
  849.                             }
  850.                     }
  851.             }
  852.             return FMRES_IGNORED
  853.     }
  854.      
  855.     public join_team(id) {
  856.             if (config) {
  857.                     if (get_user_team(id) == TERRORIST) {
  858.                             can_spawn[id]=0                                                         /* frisch gejointer Spieler bekommt kein Respawn */
  859.                     }
  860.             }
  861.     }
  862.      
  863.     public check_death() {
  864.             new hp
  865.             if (config) {                                                                                   /* erst nach Servereinstellungen */
  866.                     if (end_round_flag == 0) {                                                              /* nicht wärend Rundenende */
  867.                             is_vip++
  868.                             if (is_user_connected(player_count)) {
  869.                                     if (get_user_team(player_count) == TERRORIST) {
  870.                                             if (is_user_alive(player_count) == 0) {
  871.                                                     if (is_vip < 33 && can_spawn[player_count] == 1) {      /* wenn es keinen VIP gibt, dann kein Respawn */
  872.                                                             set_task(1.0,"spawn_player",player_count)
  873.                                                     }
  874.                                             }
  875.                                             else {
  876.                                                     if (is_bot_dog[player_count] == 0) {
  877.                                                             hp=t_level[player_count]
  878.                                                             hp=hp*50
  879.                                                             hp+=549
  880.                                                             new tmp_hp=get_user_health(player_count)
  881.                                                             if (tmp_hp < hp) {
  882.                                                                     tmp_hp+=125
  883.                                                                     if (tmp_hp > hp) {
  884.                                                                             tmp_hp=hp
  885.                                                                     }
  886.                                                                     set_user_health(player_count,tmp_hp)    /* langsames Regenerieren des Ts */
  887.                                                                     if (is_user_bot(player_count) == 0) {
  888.                                                                             client_cmd(player_count,"spk items/medshot4")
  889.                                                                     }
  890.                                                             }
  891.                                                             if (is_user_bot(player_count) == 0) {
  892.                                                                     set_hudmessage(255,255,255,-1.0,0.55,2,0.05,2.0,0.01,2.0,-1)
  893.                                                                     show_hudmessage(player_count,"Eleted: %d HP",tmp_hp)
  894.                                                             }
  895.                                                     }
  896.                                             }
  897.                                     }
  898.                                     else {
  899.                                             if (get_user_team(player_count) == COUNTERTERRORIST && is_user_alive(player_count) == 1 && cs_get_user_vip(player_count)) {
  900.                                                     if (is_user_bot(player_count)) {
  901.                                                             is_vip=33                                       /* es gibt keinen reellen Spieler als VIP */
  902.                                                     }
  903.                                                     else {
  904.                                                             is_vip=0                                        /* es gibt einen VIP */
  905.                                                     }
  906.                                             }
  907.                                     }
  908.                             }
  909.                             player_count++
  910.                             if (player_count > 32) {
  911.                                     player_count=1
  912.                             }
  913.                             set_task(0.3,"check_death")                                                     /* nächste Prüfung in ... Sekunden */
  914.                     }
  915.                     else {
  916.                             set_task(10.0,"check_death")                                            /* nächste Prüfung in 10 Sekunden, da gerade Rundenende war */
  917.                     }
  918.             }
  919.     }
  920.      
  921.     public spawn_player(id) {
  922.             if (is_user_connected(id)) {
  923.                     if (get_user_team(id) == TERRORIST) {
  924.                             entity_set_int(id,EV_INT_deadflag,3)
  925.                             call_think(id)
  926.                             entity_set_int(id,EV_INT_iuser1,0)
  927.                             spawn(id)                                                                       /* toten Terror wiederbeleben */
  928.                             if (get_cvar_num("amx_zombiebot_debug") == 1) {                         /* DEBUG-INFO */
  929.                                     get_user_name(id,name,31)
  930.                                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: ^"%s^" is now alive!",name)
  931.                             }
  932.                             if (is_bot_dog[id] == 0) {
  933.                                     new hp=t_level[id]
  934.                                     hp=hp*50
  935.                                     hp+=549
  936.                                     set_user_health(id,hp)                                          /* dem Auferweckten mehr HP geben */
  937.                                     if (is_user_bot(id) == 0) {                                             /* Auferstehung signalisieren */
  938.                                             client_cmd(id,"spk buttons/blip2")
  939.                                             set_hudmessage(255,255,255,-1.0,0.55,2,0.05,2.0,0.01,2.0,-1)
  940.                                             show_hudmessage(id,"Eleted: %d HP",hp)
  941.                                     }
  942.                             }
  943.                     }
  944.             }
  945.     }
  946.      
  947.     public end_round() {
  948.             new i
  949.             if (config) {
  950.                     end_round_flag=1                                                                        /* merken, Runde ist zu ende */
  951.                     if (get_cvar_num("amx_zombiebot_debug") == 1) {                                 /* DEBUG-INFO */
  952.                             client_print(0,print_chat,"[amx_zombiebot] DEBUG: *** ROUND END ***")
  953.                     }
  954.                     zombies=0                                                                               /* Zombies in Summe */
  955.                     t_count=0                                                                               /* ...davon reale Spieler */
  956.                     ct_count=0                                                                              /* CTs in Summe */
  957.                     for (i=1; i<33; i++) {                                                          /* Loop Statistik erstellen */
  958.                             if (is_user_connected(i)) {
  959.                                     if (get_user_team(i) == NO_TEAM || get_user_team(i) == SPECTATOR) {
  960.                                             spec[i]--
  961.                                             if (spec[i] == 0) {
  962.                                                     client_cmd(i,"disconnect")                              /* Spieler vom Server schmeißen, wenn zu lange im Spec */
  963.                                             }
  964.                                             client_print(i,print_chat,"[ArenaCity] Valasz csapatot!")
  965.                                     }
  966.                                     can_spawn[i]=1
  967.                                     team=get_user_team(i)
  968.                                     bot=is_user_bot(i)
  969.                                     if (team == TERRORIST) {
  970.                                             if (bot == 0) {
  971.                                                     t_count++
  972.                                                     zombies++
  973.                                             }
  974.                                             else {
  975.                                                     zombies++
  976.                                             }
  977.                                     }
  978.                                     else {
  979.                                             if (team == COUNTERTERRORIST && bot == 0) {
  980.                                                     if (cs_get_user_vip(i) == 1) {
  981.                                                             if (vip_safetyzone[i] == 1) {
  982.                                                                     vip_safe=1
  983.                                                                     client_print(0,print_chat,"[amx_zombiebot] VIP escaped!")
  984.                                                                     set_task(2.0,"vip_escaped_delay")
  985.                                                                     if (ct_level[i] < 9) {
  986.                                                                             ct_level[i]++                   /* Der VIP hat es geschafft */
  987.                                                                             client_cmd(i,"spk items/suitchargeok1")
  988.                                                                     }
  989.                                                             }
  990.                                                     }
  991.                                                     ct_count++
  992.                                             }
  993.                                             else {                                                          /* verlaufenen Bot zu T schieben */
  994.                                                     if (team == COUNTERTERRORIST && bot == 1) {
  995.                                                             if (cs_get_user_vip(i) == 0) {
  996.                                                                     cs_set_user_team(i,CS_TEAM_T,CS_T_TERROR)      
  997.                                                             }
  998.                                                             else {
  999.                                                                     is_bot_vip=1                            /* wir haben einen Bot als VIP */
  1000.                                                             }
  1001.                                                     }
  1002.                                             }
  1003.                                     }
  1004.                             }
  1005.                     }
  1006.                     if (ct_count >= get_cvar_num("amx_zombiebot")) {
  1007.                             set_cvar_num("mp_limitteams",1)
  1008.                     }
  1009.                     else {
  1010.                             if (zombies > ct_count) {
  1011.                                     set_cvar_num("mp_limitteams",0)
  1012.                             }
  1013.                     }
  1014.                     for (i=1; i<33; i++) {
  1015.                             new shift=0
  1016.                             if (ct_count > zombies && ct_count > get_cvar_num("amx_zombiebot")) {   /* schiebe CTs die zu viel sind rüber, Auto-Balance erst ab x CTs */
  1017.                                     if (is_user_connected(player_count)) {
  1018.                                             if (get_user_team(player_count) == COUNTERTERRORIST && cs_get_user_vip(player_count) == 0 && is_user_alive(player_count) == 0 && is_user_admin(player_count) == 0) {
  1019.                                                     client_print(0,print_chat,"[ArenaCity] Csapatelosztas: Tul sok a CT!")
  1020.                                                     client_print(player_count,print_chat,"[ArenaCity] Csapatelosztas: Mostmar Zombi vagy!")
  1021.                                                     cs_set_user_team(player_count,CS_TEAM_T,CS_T_TERROR)
  1022.                                                     shift=1
  1023.                                                     ct_count--
  1024.                                                     t_count++
  1025.                                                     zombies++
  1026.                                                     t_level[player_count]=ct_level[player_count]
  1027.                                                     if (ct_level[player_count] > 1) {
  1028.                                                             ct_level[player_count]--
  1029.                                                     }
  1030.                                                     t_death_count[player_count]=0
  1031.                                                     ct_kill_count[player_count]=0
  1032.                                             }
  1033.                                     }
  1034.                             }
  1035.                             else {
  1036.                                     if (ct_count < t_count && ct_count > get_cvar_num("amx_zombiebot") && shift == 0) { /* schiebe Ts die zu viel sind rüber */
  1037.                                             if (is_user_connected(player_count)) {
  1038.                                                     if (get_user_team(player_count) == TERRORIST && is_user_bot(player_count) == 0 && is_user_alive(player_count) == 0 && is_user_admin(player_count) == 0) {
  1039.                                                             client_print(0,print_chat,"[ArenaCity] Csapatelosztas: Tul sok a Zombi!")
  1040.                                                             client_print(player_count,print_chat,"[ArenaCity] Csapatelosztas: Mostmar CT vagy!")
  1041.                                                             can_spawn[player_count]=0                       /* Der CT soll natürlich nicht mehr spawnen */
  1042.                                                             cs_set_user_team(player_count,CS_TEAM_CT,CS_CT_URBAN)
  1043.                                                             ct_count++
  1044.                                                             t_count--
  1045.                                                             zombies--
  1046.                                                             ct_level[player_count]=t_level[player_count]
  1047.                                                             if (t_level[player_count] > 1) {
  1048.                                                                     t_level[player_count]--
  1049.                                                             }
  1050.                                                             t_death_count[player_count]=0
  1051.                                                             ct_kill_count[player_count]=0
  1052.                                                     }
  1053.                                             }
  1054.                                     }
  1055.                                     else {
  1056.                                             i=33
  1057.                                     }
  1058.                             }
  1059.                             player_count++
  1060.                             if (player_count > 32) {
  1061.                                     player_count=1
  1062.                             }
  1063.                     }
  1064.                     if (get_cvar_num("amx_zombiebot_debug") == 1) {                                 /* DEBUG-INFO */
  1065.                             client_print(0,print_chat,"[amx_zombiebot] DEBUG: Server var. amx_zombiebot (max. amount of bot players) is set to %d",get_cvar_num("amx_zombiebot"))
  1066.                             client_print(0,print_chat,"[amx_zombiebot] DEBUG: Calculation at round end: Zombies amount: %d (Human: %d) - Counter-Zombies: %d",zombies,t_count,ct_count)
  1067.                     }
  1068.                     new bonus_bots=0
  1069.                     if (ct_count <9) {
  1070.                             bonus_bots++
  1071.                     }
  1072.                     if (ct_count <7) {
  1073.                             bonus_bots++
  1074.                     }
  1075.                     if (ct_count <5) {
  1076.                             bonus_bots++
  1077.                     }
  1078.                     if (ct_count <3) {
  1079.                             bonus_bots++
  1080.                     }
  1081.                     bot=ct_count+bonus_bots
  1082.                     if (get_cvar_num("amx_zombiebot_debug") == 1) {                                 /* DEBUG-INFO */
  1083.                             client_print(0,print_chat,"[amx_zombiebot] DEBUG: Counter-Zombis (%d) + %d = amount of new bot players (%d)",ct_count,bonus_bots,bot)
  1084.                     }
  1085.                     if (bot > get_cvar_num("amx_zombiebot")) {
  1086.                             bot=get_cvar_num("amx_zombiebot")
  1087.                             if (get_cvar_num("amx_zombiebot_debug") == 1) {                         /* DEBUG-INFO */
  1088.                                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: Cut amount of new bot players to Server var. amx_zombiebot (%d)",bot)
  1089.                             }
  1090.                     }
  1091.                     bot=bot-t_count
  1092.                     if (get_cvar_num("amx_zombiebot_debug") == 1) {                                 /* DEBUG-INFO */
  1093.                             client_print(0,print_chat,"[amx_zombiebot] DEBUG: Subtract real zombie players (%d) from bots = %d",t_count,bot)
  1094.                     }
  1095.                     if (bot < 0) {
  1096.                             bot=0
  1097.                             if (get_cvar_num("amx_zombiebot_debug") == 1) {                         /* DEBUG-INFO */
  1098.                                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: There are too many real zombie players, set bots to 0")
  1099.                             }
  1100.                     }
  1101.                     dog=zombies-ct_count
  1102.                     dog=dog+(t_count*2)
  1103.                     if (dog < 3) {
  1104.                             dog=3
  1105.                     }
  1106.                     if (get_cvar_num("amx_zombiebot_debug") == 1) {                                 /* DEBUG-INFO */
  1107.                             client_print(0,print_chat,"[amx_zombiebot] DEBUG: Make %d bots to zombie dogs",dog)
  1108.                     }
  1109.                     if (is_bot_vip == 0) {                                                          /* BOTS neu organisieren */
  1110.                             set_cvar_num("mp_freezetime",1)
  1111.                             server_cmd("bot_quota %d",bot)
  1112.                     }
  1113.                     else {
  1114.                             set_cvar_num("mp_freezetime",5)
  1115.                             is_bot_vip=0
  1116.                             server_cmd("bot_quota 0")
  1117.                             if (get_cvar_num("amx_zombiebot_debug") == 1) {                         /* DEBUG-INFO */
  1118.                                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: Set bot_quota 0, because the V.I.P. is a bot")
  1119.                             }
  1120.                             set_task(3.0,"add_bot_t",bot)
  1121.                     }
  1122.                     set_task(20.0,"server_info")
  1123.             }
  1124.     }
  1125.      
  1126.     public add_bot_t(bot) {
  1127.             server_cmd("bot_quota %d",bot)
  1128.             if (get_cvar_num("amx_zombiebot_debug") == 1) {                                         /* DEBUG-INFO */
  1129.                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: Add new bots to server without V.I.P. as bot")
  1130.             }
  1131.     }
  1132.      
  1133.     public server_info() {
  1134.             client_print(0,print_chat,"[ArenaCity] Csapatban rohangaljatok, mert a Zombik nagyon erosek!")
  1135.     }
  1136.      
  1137.     public start_round() {
  1138.             if (get_cvar_num("amx_zombiebot_debug") == 1) {                                         /* DEBUG-INFO */
  1139.                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: *** ROUND START ***")
  1140.                     client_print(0,print_chat,"[amx_zombiebot] DEBUG: Server var. amx_zombiebot_debug is set to 1")
  1141.             }
  1142.             if (config) {
  1143.                     set_task(0.2,"set_end_round_flag")
  1144.                     is_vip=0
  1145.             }
  1146.     }
  1147.      
  1148.     public set_end_round_flag() {
  1149.             vip_safe=0                                                                                      /* Merker zurücksetzen */
  1150.             end_round_flag=0                                                                                /* merken, Runde fängt an */
  1151.     }
  1152.      
  1153.     public cur_weapon(id) {
  1154.             new clip,ammo
  1155.             new vteam=get_user_team(id)
  1156.             if(vteam == TERRORIST) {
  1157.                     if (drop[id] == 0) {
  1158.                             drop[id]=1
  1159.                             client_cmd(id,"weapon_glock18")
  1160.                             client_cmd(id,"drop")
  1161.                     }
  1162.                     client_cmd(id,"weapon_knife")
  1163.                     set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,"models/v_knife_zombie.mdl"))
  1164.             }
  1165.             else {
  1166.                     if(vteam == COUNTERTERRORIST) {
  1167.                             new weapon=get_user_weapon(id,clip,ammo)
  1168.                             switch(weapon) {
  1169.                                     case CSW_ELITE: set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,"models/v_elite_zombiebot.mdl"))
  1170.                                     case CSW_KNIFE: set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,"models/v_knife_zombiebot.mdl"))
  1171.                                     case CSW_M249:  set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,"models/v_m249_zombiebot.mdl"))
  1172.                                     case CSW_M3:            set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,"models/v_m3_zombiebot.mdl"))
  1173.                                     case CSW_M4A1:  set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,"models/v_m4a1_zombiebot.mdl"))
  1174.                                     case CSW_MP5NAVY:       set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,"models/v_mp5_zombiebot.mdl"))
  1175.                                     case CSW_TMP:           set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,"models/v_tmp_zombiebot.mdl"))
  1176.                                     case CSW_SG552: set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,"models/v_sg552_zombiebot.mdl"))
  1177.                                     case CSW_USP:           set_pev(id,pev_viewmodel,engfunc(EngFunc_AllocString,"models/v_usp_zombiebot.mdl"))
  1178.                             }
  1179.                     }
  1180.             }
  1181.             return PLUGIN_HANDLED
  1182.     }
Advertisement
Add Comment
Please, Sign In to add comment