Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSS[Req] How can I make the nemesis mode start in the last round? [ZP 5.0]


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
as the title says
How can I make nemesis mode only start on the last round automatically?
PHP Code:

/*================================================================================
    
    -------------------------------
    -*- [ZP] Game Mode: Nemesis -*-
    -------------------------------
    
    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 <amx_settings_api>
#include <cs_teams_api>
#include <zp50_gamemodes>
#include <zp50_class_nemesis>
#include <zp50_deathmatch>

// Settings file
new const ZP_SETTINGS_FILE[] = "zombieplague.ini"

// Default sounds
new const sound_nemesis[][] = { "zombie_plague/nemesis1.wav" "zombie_plague/nemesis2.wav" }

#define SOUND_MAX_LENGTH 64

new Array:g_sound_nemesis

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

new g_MaxPlayers
new g_HudSync
new g_TargetPlayer

new cvar_nemesis_chancecvar_nemesis_min_players
new cvar_nemesis_show_hudcvar_nemesis_sounds
new cvar_nemesis_allow_respawn

public plugin_precache()
{
    
// Register game mode at precache (plugin gets paused after this)
    
register_plugin("[ZP] Game Mode: Nemesis"ZP_VERSION_STRING"ZP Dev Team")
    
zp_gamemodes_register("Nemesis Mode")
    
set_task1.0"NPC"___"d" );
    
    
// Create the HUD Sync Objects
    
g_HudSync CreateHudSyncObj()
    
    
g_MaxPlayers get_maxplayers()
    
    
cvar_nemesis_chance register_cvar("zp_nemesis_chance""20")
    
cvar_nemesis_min_players register_cvar("zp_nemesis_min_players""0")
    
cvar_nemesis_show_hud register_cvar("zp_nemesis_show_hud""1")
    
cvar_nemesis_sounds register_cvar("zp_nemesis_sounds""1")
    
cvar_nemesis_allow_respawn register_cvar("zp_nemesis_allow_respawn""0")
    
    
// Initialize arrays
    
g_sound_nemesis ArrayCreate(SOUND_MAX_LENGTH1)
    
    
// Load from external file
    
amx_load_setting_string_arr(ZP_SETTINGS_FILE"Sounds""ROUND NEMESIS"g_sound_nemesis)
    
    
// If we couldn't load custom sounds from file, use and save default ones
    
new index
    
if (ArraySize(g_sound_nemesis) == 0)
    {
        for (
index 0index sizeof sound_nemesisindex++)
            
ArrayPushString(g_sound_nemesissound_nemesis[index])
        
        
// Save to external file
        
amx_save_setting_string_arr(ZP_SETTINGS_FILE"Sounds""ROUND NEMESIS"g_sound_nemesis)
    }
    
    
// Precache sounds
    
new sound[SOUND_MAX_LENGTH]
    for (
index 0index ArraySize(g_sound_nemesis); index++)
    {
        
ArrayGetString(g_sound_nemesisindexsoundcharsmax(sound))
        if (
equal(sound[strlen(sound)-4], ".mp3"))
        {
            
format(soundcharsmax(sound), "sound/%s"sound)
            
precache_generic(sound)
        }
        else
            
precache_sound(sound)
    }
}

// Deathmatch module's player respawn forward
public zp_fw_deathmatch_respawn_pre(id)
{
    
// Respawning allowed?
    
if (!get_pcvar_num(cvar_nemesis_allow_respawn))
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;
}

public 
zp_fw_core_spawn_post(id)
{
    
// Always respawn as human on nemesis rounds
    
zp_core_respawn_as_zombie(idfalse)
}

public 
zp_fw_gamemodes_choose_pre(game_mode_idskipchecks)
{
    if (!
skipchecks)
    {
        
// Random chance
        
if (random_num(1get_pcvar_num(cvar_nemesis_chance)) != 1)
            return 
PLUGIN_HANDLED;
        
        
// Min players
        
if (GetAliveCount() < get_pcvar_num(cvar_nemesis_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
}

public 
zp_fw_gamemodes_start()
{
    
// Turn player into nemesis
    
zp_class_nemesis_set(g_TargetPlayer)
    
    
// Remaining players should be humans (CTs)
    
new id
    
for (id 1id <= g_MaxPlayersid++)
    {
        
// Not alive
        
if (!is_user_alive(id))
            continue;
        
        
// This is our Nemesis
        
if (zp_class_nemesis_get(id))
            continue;
        
        
// Switch to CT
        
cs_set_player_team(idCS_TEAM_CT)
    }
    
    
// Play Nemesis sound
    
if (get_pcvar_num(cvar_nemesis_sounds))
    {
        new 
sound[SOUND_MAX_LENGTH]
        
ArrayGetString(g_sound_nemesisrandom_num(0ArraySize(g_sound_nemesis) - 1), soundcharsmax(sound))
        
PlaySoundToClients(sound)
    }
    
    if (
get_pcvar_num(cvar_nemesis_show_hud))
    {
        
// Show Nemesis HUD notice
        
new name[32]
        
get_user_name(g_TargetPlayernamecharsmax(name))
        
set_hudmessage(HUD_EVENT_RHUD_EVENT_GHUD_EVENT_BHUD_EVENT_XHUD_EVENT_Y10.05.01.01.0, -1)
        
ShowSyncHudMsg(0g_HudSync"%L"LANG_PLAYER"NOTICE_NEMESIS"name)
    }
}

// Plays a sound on clients
PlaySoundToClients(const sound[])
{
    if (
equal(sound[strlen(sound)-4], ".mp3"))
        
client_cmd(0"mp3 play ^"sound/%s^""sound)
    else
        
client_cmd(0"spk ^"%s^""sound)
}

// Get Alive Count -returns alive players number-
GetAliveCount()
{
    new 
iAliveid
    
    
for (id 1id <= g_MaxPlayersid++)
    {
        if (
is_user_alive(id))
            
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))
            
iAlive++
        
        if (
iAlive == target_index)
            return 
id;
    }
    
    return -
1;


I appreciate your help in advance :3

Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...