Raised This Month: $12 Target: $400
 3% 

Solved [ZP] HELP >> Server as the first zombie?


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Percib4l
Junior Member
Join Date: May 2021
Old 09-21-2021 , 12:53   [ZP] HELP >> Server as the first zombie?
Reply With Quote #1

The idea of this code is to choose to infect players depending on the number of players online, here everything works fine, the only problem is that from time to time it selects the server as the first zombie, it even starts a round without zombies already which selects the server as the first zombie.

Code
PHP Code:
/*================================================================================ 
     
    --------------------------------- 
    -*- [ZP] Game Mode: Infection -*- 
    --------------------------------- 
     
    This plugin is part of Zombie Plague Mod and is distributed under the 
    terms of the GNU General Public License. Check ZP_ReadMe.txt for details. 
     
================================================================================*/ 

#include <amxmodx> 
#include <fun> 
#include <fakemeta> 
#include <hamsandwich> 
#include <cs_teams_api> 
#include <cs_ham_bots_api> 
#include <zp50_gamemodes> 
#include <zp50_deathmatch> 

// HUD messages 
#define HUD_EVENT_X -1.0 
#define HUD_EVENT_Y 0.17 
#define HUD_EVENT_R 255 
#define HUD_EVENT_G 0 
#define HUD_EVENT_B 0 

new g_MaxPlayers 
new g_HudSync 
new g_TargetPlayerg_TargetPlayer2g_TargetPlayer3 

new cvar_infection_chancecvar_infection_min_players 
new cvar_infection_show_hud 
new cvar_infection_allow_respawncvar_respawn_after_last_human 
new cvar_zombie_first_hp_multiplier
new cvar_zombie_second_hpcvar_zombie_third_hp 

public plugin_precache() 

    
// Register game mode at precache (plugin gets paused after this) 
    
register_plugin("[ZP] Game Mode: Infection"ZP_VERSION_STRING"ZP Dev Team"
    new 
game_mode_id zp_gamemodes_register("Infection Mode"
    
zp_gamemodes_set_default(game_mode_id
     
    
// Create the HUD Sync Objects 
    
g_HudSync CreateHudSyncObj() 
     
    
g_MaxPlayers get_maxplayers() 
     
    
cvar_infection_chance register_cvar("zp_infection_chance""1"
    
cvar_infection_min_players register_cvar("zp_infection_min_players""0"
    
cvar_infection_show_hud register_cvar("zp_infection_show_hud""1"
    
cvar_infection_allow_respawn register_cvar("zp_infection_allow_respawn""1"
    
cvar_respawn_after_last_human register_cvar("zp_respawn_after_last_human""1"
    
cvar_zombie_first_hp_multiplier register_cvar("zp_zombie_first_hp_multiplier""2.0")
    
cvar_zombie_second_hp register_cvar("zp_zombie_second_hp""3.0"
    
cvar_zombie_third_hp register_cvar("zp_zombie_third_hp""2.0")


// Deathmatch module's player respawn forward 
public zp_fw_deathmatch_respawn_pre(id

    
// Respawning allowed? 
    
if (!get_pcvar_num(cvar_infection_allow_respawn)) 
        return 
PLUGIN_HANDLED
     
    
// Respawn if only the last human is left? 
    
if (!get_pcvar_num(cvar_respawn_after_last_human) && zp_core_get_human_count() == 1
        return 
PLUGIN_HANDLED
     
    return 
PLUGIN_CONTINUE


public 
zp_fw_gamemodes_choose_pre(game_mode_idskipchecks

    if (!
skipchecks
    { 
        
        
// Random chance 
        
if (random_num(1get_pcvar_num(cvar_infection_chance)) != 1
            return 
PLUGIN_HANDLED
         
        
// Min players 
        
if (GetAliveCountHuman() < get_pcvar_num(cvar_infection_min_players)) 
            return 
PLUGIN_HANDLED;
                 
    } 
     
    
// Game mode allowed 
    
return PLUGIN_CONTINUE


public 
zp_fw_gamemodes_choose_post(game_mode_idtarget_player)
{             
    
// Pick player randomly?
    
g_TargetPlayer = (target_player == RANDOM_TARGET_PLAYER) ? GetRandomAlive(random_num(1GetAliveCount())) : target_player
    g_TargetPlayer2 
= (target_player == RANDOM_TARGET_PLAYER) ? GetRandomAlive(random_num(1GetAliveCount())) : target_player   
    g_TargetPlayer3 
= (target_player == RANDOM_TARGET_PLAYER) ? GetRandomAlive(random_num(1GetAliveCount())) : target_player    


public 
zp_fw_gamemodes_start() 
{        
    
// Allow infection for this game mode 
    
zp_gamemodes_set_allow_infect()
    
    switch (
GetAliveCountHuman()) 
    { 
        case 
.. 10
        { 
             if(
is_user_alive(g_TargetPlayer))
             {     
                
zp_core_infect(g_TargetPlayerg_TargetPlayer
                
set_user_health(g_TargetPlayerfloatround(get_user_health(g_TargetPlayer) * get_pcvar_float(cvar_zombie_first_hp_multiplier)))      
             }
        }  
    
        case 
11 .. 20
        {     
             if(
is_user_alive(g_TargetPlayer2))
             {                 
                
zp_core_infect(g_TargetPlayer2g_TargetPlayer2
                
set_user_health(g_TargetPlayer2floatround(get_user_health(g_TargetPlayer2) * get_pcvar_float(cvar_zombie_second_hp)))      
             }

             if(
is_user_alive(g_TargetPlayer))
             {
                
zp_core_infect(g_TargetPlayerg_TargetPlayer)
                
set_user_health(g_TargetPlayerfloatround(get_user_health(g_TargetPlayer) * get_pcvar_float(cvar_zombie_first_hp_multiplier)))            
             }
        }
    
        case 
21 .. 32
        {     
             if(
is_user_alive(g_TargetPlayer3))
             {      
                
zp_core_infect(g_TargetPlayer3g_TargetPlayer3
                
set_user_health(g_TargetPlayer3floatround(get_user_health(g_TargetPlayer3) * get_pcvar_float(cvar_zombie_third_hp))) 
             }
       
             if(
is_user_alive(g_TargetPlayer2))
             {                 
                
zp_core_infect(g_TargetPlayer2g_TargetPlayer2
                
set_user_health(g_TargetPlayer2floatround(get_user_health(g_TargetPlayer2) * get_pcvar_float(cvar_zombie_second_hp)))      
             }

             if(
is_user_alive(g_TargetPlayer))
             {
                
zp_core_infect(g_TargetPlayerg_TargetPlayer)
                
set_user_health(g_TargetPlayerfloatround(get_user_health(g_TargetPlayer) * get_pcvar_float(cvar_zombie_first_hp_multiplier)))            
             }
        }           
    }
    
// Remaining players should be humans (CTs) 
    
new id 
    
for (id 1id <= g_MaxPlayersid++) 
    { 
        
// Not alive 
        
if (!is_user_alive(id)) 
            continue; 
         
        
// This is our first zombie 
        
if (zp_core_is_zombie(id)) 
            continue; 
         
        
// Switch to CT 
        
cs_set_player_team(idCS_TEAM_CT
    } 
     
    if (
get_pcvar_num(cvar_infection_show_hud)) 
    { 
        
// Show First Zombie HUD notice 
        
new name[32
        
get_user_name(g_TargetPlayernamecharsmax(name)) 
        
set_hudmessage(HUD_EVENT_RHUD_EVENT_GHUD_EVENT_BHUD_EVENT_XHUD_EVENT_Y00.05.01.01.0, -1
        
ShowSyncHudMsg(0g_HudSync"%L"LANG_PLAYER"NOTICE_FIRST"name
    } 


// Get Alive Count -returns alive players number- 
GetAliveCountHuman() 

    new 
iAliveid 
     
    
for (id 1id <= g_MaxPlayersid++) 
    { 
        if (
is_user_alive(id)) 
            
iAlive++ 
    } 
     
    return 
iAlive


// Get Alive Count -returns alive players number- 
GetAliveCount() 

    new 
iAliveid 
     
    
for (id 1id <= g_MaxPlayersid++) 
    { 
        if (
is_user_alive(id) && id != g_TargetPlayer && id != g_TargetPlayer2 && id != g_TargetPlayer3
            
iAlive++ 
    } 
     
    return 
iAlive


// Get Random Alive -returns index of alive player number target_index - 
GetRandomAlive(target_index

    new 
iAliveid 
     
    
for (id 1id <= g_MaxPlayersid++) 
    { 
        if (
is_user_alive(id) && id != g_TargetPlayer && id != g_TargetPlayer2 && id != g_TargetPlayer3
            
iAlive++ 
         
        if (
iAlive == target_index
            return 
id
    } 
     
    return -
1
}  

public 
zp_fw_gamemodes_end() 
{                 
    
g_TargetPlayer 0
    g_TargetPlayer2 
0
    g_TargetPlayer3 
0

Thank you very much in advance to anyone who helps me

Last edited by Percib4l; 09-21-2021 at 14:49.
Percib4l is offline
ZaX
Senior Member
Join Date: Jan 2015
Old 09-21-2021 , 13:55   Re: [ZP] HELP >> Server as the first zombie?
Reply With Quote #2

Replace GetRandomAlive

Code:
GetRandomAlive(target_index) {     new iAlive, id           for (id = 1; id <= g_MaxPlayers; id++)     {         if (is_user_alive(id) && !is_user_bot(id) && id != g_TargetPlayer && id != g_TargetPlayer2 && id != g_TargetPlayer3)             iAlive++                   if (iAlive == target_index)             return id;     }           return -1; }
ZaX is offline
Percib4l
Junior Member
Join Date: May 2021
Old 09-21-2021 , 14:49   Re: [ZP] HELP >> Server as the first zombie?
Reply With Quote #3

Work perfectly thanks bro
Percib4l is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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