Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Zombie Plague 4.3

pole siłowe wyłaczenie na nemezisie

zombie plague 4.3

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 ZIGI89

    Życzliwy

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:30
  • GG:
  • Steam:steam
  • Lokalizacja:Łodygowice
Offline

Napisano 12.10.2015 18:03

wie ktos  jak wyłaczyc  pole siłowe  dodatkowy item na nemezisie


  • +
  • -
  • 0
<img src="http://steamprofile....1:25467514.png" alt="Tekst alternatywny" />

#2 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 12.10.2015 18:06

Może jakieś info?

 

Jaki Zombie Mod? Która Wersja?

 

Bo kurde kryształowa kula mi szfankuje bo gorączke mam, a wrózbita Maciej aktualnie ma popołudniowa drzemkę :)


  • +
  • -
  • 0

#3 ZIGI89

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:30
  • GG:
  • Steam:steam
  • Lokalizacja:Łodygowice
Offline

Napisano 14.10.2015 15:54

a to bardzo przepraszam moj bład 

myslałem ze jak dodam  prefix Zombie Plague 4.3  to bedzie wszystko jasne

 

ale jak widac nie dla wszystkich 

wiec juz to poprawiam panie Moderatorze

 

 

witam posiadam  serwer counter-strike w wersji  1 .6

mam na nim zainstalowany mod  zombi w wersji 4.3

i chciałem  zapytac jak wyłaczyc dodatkowy item / mozliwosc kupienia  pola siłowego  w trybie gry  Nemezis

 

juz prosciej nie umiem tego panu wytłumaczyc


  • +
  • -
  • 0
<img src="http://steamprofile....1:25467514.png" alt="Tekst alternatywny" />

#4 xXxBoy4GirlxXx

    Zombie Plague Advance 1.6.2!

  • Użytkownik

Reputacja: 58
Pomocny

  • Postów:258
  • GG:
  • Steam:steam
  • Imię:Krzysztof
  • Lokalizacja:Olsztyn
Offline

Napisano 29.10.2015 07:11

Trzeba zablokować możliwość kupna go podczas tej rundy. Daj sma, może ktoś coś wymyśli.
  • +
  • -
  • 0
<p>Szukasz pluginów do zombie modahttp://amxx.pl/topic...spis-extra-itemKupię Klucz steam lub konto CS: Source, pw/gg 36374005

#5 ZIGI89

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:30
  • GG:
  • Steam:steam
  • Lokalizacja:Łodygowice
Offline

Napisano 13.11.2015 23:20

#include <amxmodx>
#include <engine>
#include <zombieplague>
#include <hamsandwich>
#include <fun>
#include <fakemeta_util>

#define PLUGIN "[ZP] Extra Item: Force Field Grenade"
#define VERSION "v2.3"
#define AUTHOR "lucas_7_94" // Thanks To Users in credits too!.

#define CAMPO_ROUND_NAME "Force Shield (Complete Round)"
#define CAMPO_TIME_NAME "Pole silowe (15s)"
#define ValidTouch(%1) ( is_user_alive(%1) && zp_get_user_zombie(%1) )

/*=============================[Plugin Customization]=============================*/
#define CAMPO_TASK
//#define CAMPO_ROUND

#define RANDOM_COLOR
//#define ONE_COLOR

new const NADE_TYPE_CAMPO = 6545

#if defined ONE_COLOR
new Float:CampoColors[ 3 ] = { 255.0 , 0.0 ,   0.0  }
#endif

new TrailColor[ 3 ] = { 000, 255, 255 }
new Float:Maxs[ 3 ] = { 100.0 , 100.0 , 100.0 }
new Float:Mins[ 3 ] = { -100.0, -100.0, -100.0 }

new const model_grenade[] = "models/zombie_plague/v_auragren.mdl"
new const model[] = "models/zombie_plague/aura8.mdl"
new const w_model[] = "models/zombie_plague/w_aura.mdl"
new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
new const entclas[] = "campo_grenade_forze"

new cvar_flaregrenades, g_trailSpr, g_SayText, g_itemID

new gBomb
const Float:Push = 15.0

const item_cost = 15
/*=============================[End Customization]=============================*/

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
    
    RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
    
    cvar_flaregrenades = get_cvar_pointer("zp_flare_grenades")
    
    register_forward(FM_SetModel, "fw_SetModel")
    
    RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "shield_deploy", 1)
    
    register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
    
    register_forward(FM_Touch, "fw_touch")
    
    g_SayText = get_user_msgid("SayText")
    
    register_cvar("zp_shield_creator", "lucas_7_94", FCVAR_SERVER|FCVAR_PROTECTED)
    
    #if defined CAMPO_ROUND
    g_itemID = zp_register_extra_item ( CAMPO_ROUND_NAME , item_cost * 2 , ZP_TEAM_HUMAN , 0)
    #else
    g_itemID = zp_register_extra_item ( CAMPO_TIME_NAME , item_cost , ZP_TEAM_HUMAN , 0)
    #endif        
}

public event_round_start() {
    
    #if defined CAMPO_ROUND
    remove_entity_name(entclas)
    #endif
    
    gBomb = 0
}

public plugin_precache() {
    
    g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
    engfunc(EngFunc_PrecacheModel, model_grenade)
    engfunc(EngFunc_PrecacheModel, model)
    engfunc(EngFunc_PrecacheModel, w_model)
}

public client_disconnect(id)
    gBomb &= ~( 1 << ( id % 32 ) )

public zp_extra_item_selected(player, itemid) {
    
    if(itemid == g_itemID)
    {
        if( gBomb & ( 1 << ( player % 32 ) ) )
            Color(player, "!g[Shield]!y You already have a force field")
        else
        {
            gBomb |= ( 1 << ( player % 32 ) )
            
            if( !user_has_weapon( player, CSW_SMOKEGRENADE ) )
                give_item(player,"weapon_smokegrenade")
            
            
            #if defined CAMPO_ROUND
            Color(player, "!g[Pole silowe]!y Kupiles pole silowe! Trwa ono cala runde.")
            #else
            Color(player, "!g[Pole silowe]!y Kupiles pole silowe! Dziala ono przez 15s!")
            #endif
        }
        
        
    }
    
}
public fw_PlayerKilled(victim, attacker, shouldgib)
{
    if( ( 1 <= attacker <= 32 ) && ( gBomb & ( 1 << ( victim % 32 ) ) ) )
        gBomb &= ~( 1 << ( victim % 32 ) )
}

public fw_ThinkGrenade(entity) {   
    
    if(!pev_valid(entity)) return HAM_IGNORED
    
    static Float:dmgtime   
    pev(entity, pev_dmgtime, dmgtime)
    
    if (dmgtime > get_gametime())
        return HAM_IGNORED   
    
    if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_CAMPO)
        crear_ent(entity)
    
    return HAM_SUPERCEDE
}


public fw_SetModel(entity, const model[]) {    
    
    static Float:dmgtime
    pev(entity, pev_dmgtime, dmgtime)
    
    if (dmgtime == 0.0)
        return FMRES_IGNORED;
    
    if (equal(model[7], "w_sm", 4))
    {        
        new owner = pev(entity, pev_owner)        
        
        if( is_user_alive(owner) && !zp_get_user_zombie(owner) && ( gBomb & ( 1 << ( owner % 32 ) ) ) )
        {
            set_pcvar_num(cvar_flaregrenades,0)            
            
            fm_set_rendering(entity, kRenderFxGlowShell, 000, 255, 255, kRenderNormal, 16)
            
            message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
            write_byte(TE_BEAMFOLLOW) // TE id
            write_short(entity) // entity
            write_short(g_trailSpr) // sprite
            write_byte(10) // life
            write_byte(10) // width
            write_byte(TrailColor[ 0 ]) // r
            write_byte(TrailColor[ 1 ]) // g
            write_byte(TrailColor[ 2 ]) // b
            write_byte(500) // brightness
            message_end()
            
            set_pev(entity, pev_flTimeStepSound, NADE_TYPE_CAMPO)
            
            set_task(6.0, "DeleteEntityGrenade" ,entity)
            gBomb &= ~( 1 << ( owner % 32 ) )
            entity_set_model(entity, w_model)
            return FMRES_SUPERCEDE
        }
    }
    return FMRES_IGNORED
    
}

public DeleteEntityGrenade(entity)
    if( is_valid_ent( entity ) )
        remove_entity(entity)

public crear_ent(id) {
        
    set_pcvar_num(cvar_flaregrenades,1)
    
    // Create entitity
    new iEntity = create_entity("info_target")
    
    if(!is_valid_ent(iEntity))
        return PLUGIN_HANDLED
    
    new Float: Origin[3]
    entity_get_vector(id, EV_VEC_origin, Origin)
    
    entity_set_string(iEntity, EV_SZ_classname, entclas)
    
    entity_set_vector(iEntity,EV_VEC_origin, Origin)
    entity_set_model(iEntity,model)
    entity_set_int(iEntity, EV_INT_solid, SOLID_TRIGGER)
    entity_set_size(iEntity, Mins, Maxs )
    entity_set_int(iEntity, EV_INT_renderfx, kRenderFxGlowShell)
    entity_set_int(iEntity, EV_INT_rendermode, kRenderTransAlpha)
    entity_set_float(iEntity, EV_FL_renderamt, 50.0)
    
    #if defined RANDOM_COLOR
    if(is_valid_ent(iEntity))
    {
        new Float:vColor[3]
        
        for(new i; i < 3; i++)
            vColor[i] = random_float(0.0, 255.0)
        
        entity_set_vector(iEntity, EV_VEC_rendercolor, vColor)
    }
    #endif
    
    #if defined ONE_COLOR
    entity_set_vector(iEntity, EV_VEC_rendercolor, CampoColors)
    #endif
    
    #if defined CAMPO_TASK
    set_task(15.0, "DeleteEntity", iEntity)
    #endif
    
    
    return PLUGIN_CONTINUE;
}

public zp_user_infected_post(infected, infector)
    if ( gBomb & ( 1 << ( infected % 32 ) ) )
        gBomb &= ~( 1 << ( infected % 32 ) )

public fw_touch(ent, touched)
{
    if ( !pev_valid(ent) ) return FMRES_IGNORED;
    static entclass[32];
    pev(ent, pev_model, entclass, 31);
    
    if ( strcmp( entclass, model ) == 0 )
    {    
        if( ValidTouch(touched) )
        {
            static Float:pos_ptr[3], Float:pos_ptd[3]
            
            pev(ent, pev_origin, pos_ptr)
            pev(touched, pev_origin, pos_ptd)
            
            for(new i = 0; i < 3; i++)
            {
                pos_ptd[i] -= pos_ptr[i]
                pos_ptd[i] *= Push
            }
            set_pev(touched, pev_velocity, pos_ptd)
            set_pev(touched, pev_impulse, pos_ptd)
        }
    }
    return FMRES_HANDLED
}


public DeleteEntity( entity )  // Thanks xPaw For The Code =D
    if( is_valid_ent( entity ) )
    remove_entity( entity );

stock Color(const id, const input[], any:...)
{
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all(msg, 190, "!g", "^4")
    replace_all(msg, 190, "!y", "^1")
    replace_all(msg, 190, "!t", "^3")
    
    message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
    write_byte(id)
    write_string(msg)
    message_end()
}

public shield_deploy( shield_ent )
{
    if( pev_valid( shield_ent ) != 2 )
        return HAM_IGNORED;
    
    static const mPlayer = 41
    
    new id = get_pdata_cbase( shield_ent, mPlayer, 4 );
    
    if( ( gBomb & ( 1 << ( id % 32 ) ) ) && !zp_get_user_zombie( id ) )
        set_pev( id, pev_viewmodel2, model_grenade );
    
    return HAM_IGNORED;
}

MAM JESZCZE PYTANIE   czy da sie dopisac cos do pluginu

aby  nieuaktywnił sie inny plugin  gdy ten jest aktywny

 

 

dokładnie chodzi mi o plugin który daje    25 ap za zabicie namka surwa assasina  snipera

i chciał bym aby na modzie  sniper vs  assasin był wyłaczony, mod  jest to dodatkowy plugin

 

 

sma  dodatkowe 25 ap

#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <zombie_plague_advance>

#define AMMO_REWARD 25
#define LASERMINE_REWARD 6
#define is_valid_player(%1) (1 <= %1 <= 32)

// Get server's max players | Create custom chat print
new g_maxplayers, g_msgSayText //g_damageCount[33];

public plugin_init()
{
	register_plugin("[ZP] Sub Rewards", "1.4", "93()|29!/< ")
	register_dictionary("zp_rewards.txt")
	
	RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1)  
	RegisterHam(Ham_TakeDamage, "func_breakable", "fw_BreakableAttacked"); 
	//RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage"); 
	g_maxplayers = get_maxplayers()
	g_msgSayText = get_user_msgid("SayText")
}

/* public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damagebits){
	if (zp_get_user_nemesis(victim) && !zp_is_lnj_round())
		if (is_valid_player(attacker))
			g_damageCount[attacker] += floatround(damage);
	return HAM_IGNORED;
}

public zp_round_ended(winteam){
	if (zp_is_nemesis_round()){
		static aname[32];
		new mostDmgId = 1;
		for (new id = 2; id < 33; id++)
			if (g_damageCount[id] >  mostDmgId)
				mostDmgId = id;
		get_user_name(mostDmgId, aname, 31)	
		zp_set_user_ammo_packs(mostDmgId, zp_get_user_ammo_packs(mostDmgId) + AMMO_REWARD);
		zp_colored_print(0, "^x04[ZP]^x01 %L", LANG_PLAYER, "REWARDS_HKN", aname, AMMO_REWARD)
	}
} */

// Ham Player Killed Forward
public fw_PlayerKilled_Post(victim, attacker, shouldgib)
{	
	
	// Get deathmatch mode status and whether the player killed himself
	static selfkill
	selfkill = (victim == attacker || !is_user_connected(attacker)) ? true : false
	
	// Killed by a non-player entity or self killed or plague/armageddon round
	if (selfkill || zp_is_plague_round() || zp_is_lnj_round() || zp_get_user_assassin(attacker) || zp_get_user_hunter(attacker) || zp_get_user_nemesis(attacker)) return;
	
	// Get attacker and victim's name
	static aname[32];
	get_user_name(attacker, aname, 31)
	
	// A Zombie was killed
	if (zp_get_user_zombie(victim))
	{
		// Victim was Nemesis. What?! He's a Zombie too, you know?
		if (zp_get_user_nemesis(victim))
		{
			// Human makes the kill, award him
			zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + AMMO_REWARD)
			zp_colored_print(0, "^x04[ZP]^x01 %L", LANG_PLAYER, "REWARDS_HKN", aname, AMMO_REWARD)
		}
		else if (zp_get_user_assassin(victim))
		{
			// Human makes the kill, award him
			zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + AMMO_REWARD)
			zp_colored_print(0, "^x04[ZP]^x01 %L", LANG_PLAYER, "REWARDS_HKA", aname, AMMO_REWARD)
		}
	}	
	// Survivor or Human
	else
	{
		// Killed player was Survivor
		if (zp_get_user_survivor(victim))
		{
			// So let's give him something... Paulie want a cracker?
			zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + AMMO_REWARD)
			zp_colored_print(0, "^x04[ZP]^x01 %L", LANG_PLAYER, "REWARDS_ZKS", aname, AMMO_REWARD)
		}
		else if (zp_get_user_sniper(victim))
		{
			// So let's give him something... Paulie want a cracker?
			zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + AMMO_REWARD)
			zp_colored_print(0, "^x04[ZP]^x01 %L", LANG_PLAYER, "REWARDS_ZKSN", aname, AMMO_REWARD)
		}
		else if (zp_get_user_hunter(victim))
		{
			// So let's give him something... Paulie want a cracker?
			zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + AMMO_REWARD)
			zp_colored_print(0, "^x04[ZP]^x01 %L", LANG_PLAYER, "REWARDS_ZKH", aname, AMMO_REWARD)
		}
	}
}

public fw_BreakableAttacked(entity, weapon, killer, Float: dmg){
	new sz_classname[32]
	entity_get_string( entity , EV_SZ_classname , sz_classname , 31 )
	
	if( !equali(sz_classname,"lasermine") )
		return HAM_IGNORED;
		
	new health = pev(entity,pev_health) - floatround(dmg); 
	if (zp_get_user_zombie(killer)){
		if (health <= 0){
			zp_set_user_ammo_packs(killer, zp_get_user_ammo_packs(killer)+LASERMINE_REWARD);
		}
		return HAM_IGNORED;
	}	
	
	//Block Damage
	return HAM_SUPERCEDE;
}

// Colored chat print. Thanks to MeRcyLeZZ
zp_colored_print(target, const message[], any:...)
{
	static buffer[512], i, argscount
	argscount = numargs()
	
	// Send to everyone
	if (!target)
	{
		static player
		for (player = 1; player <= g_maxplayers; player++)
		{
			// Not connected
			if (!is_user_connected(player))
				continue;
			
			// Remember changed arguments
			static changed[5], changedcount // [5] = max LANG_PLAYER occurencies
			changedcount = 0
			
			// Replace LANG_PLAYER with player id
			for (i = 2; i < argscount; i++)
			{
				if (getarg(i) == LANG_PLAYER)
				{
					setarg(i, 0, player)
					changed[changedcount] = i
					changedcount++
				}
			}
			
			// Format message for player
			vformat(buffer, charsmax(buffer), message, 3)
			
			// Send it
			message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
			write_byte(player)
			write_string(buffer)
			message_end()
			
			// Replace back player id's with LANG_PLAYER
			for (i = 0; i < changedcount; i++)
				setarg(changed[i], 0, LANG_PLAYER)
		}
	}
	// Send to specific target
	else
	{
		// Not connected
		if (!is_user_connected(target))
			return;
		
		// Format message for player
		vformat(buffer, charsmax(buffer), message, 3)
		
		// Send it
		message_begin(MSG_ONE, g_msgSayText, _, target)
		write_byte(target)
		write_string(buffer)
		message_end()
	}
}

// Stock from AmxMisc
stock get_configsdir(name[], len)
	return get_localinfo("amxx_configsdir", name, len);
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/

sma   sniper vs assasin

/***************************************************************************\
		   ========================================
		    * || [ZPA] Example Game Mode v1.6 || *
		   ========================================

	-------------------
	 *||DESCRIPTION||*
	-------------------

	This is an example game mode in which there are half Assassins
	and half Snipers. You can use this plugin as a guide on how to
	make custom game modes for Zombie Plague Advance.

	-------------
	 *||CVARS||*
	-------------

	- zp_avsm_minplayers 2
		- Minimum players required for this game mode to be
		  activated

	- zp_avsm_sniper_hp 1.5
		- Snipers HP multiplier
	
	- zp_avsm_assassin_hp 1.0
		- Assassins HP multiplier

	- zp_avsm_inf_ratio 0.5
		- Infection ratio of this game mode i.e how many players
		  will turn into assassins [Total players * infection ratio]
	
\***************************************************************************/

#include < amxmodx >
#include < fun >
#include < zombie_plague_advance >

/************************************************************\
|                  Customizations Section                    |
|         You can edit here according to your liking         |
\************************************************************/

// This is the chance value according to which this game mode will be called
// The higher the value the lesser the chance of calling this game mode
new const g_chance = 15

// This is the access flag required to start the game mode
// through the admin menu. Look in users.ini for more details
new const g_access_flag[] = "a"

// This is the sound which is played when the game mode is triggered
// Add as many as you want [Randomly chosen if more than one]
new const g_play_sounds[][] =
{
	"zombie_plague/nemesis1.wav" ,
	"zombie_plague/survivor1.wav"
}

// Comment the following line to disable ambience sounds
// Just add two slashes ( // )
#define AMBIENCE_SOUNDS

#if defined AMBIENCE_SOUNDS
// Ambience Sounds (only .wav and .mp3 formats supported)
// Add as many as you want [Randomly chosen if more than one]
new const g_sound_ambience[][] =
{ 
	"zombie_plague/ambience.wav"
}

// Duration in seconds of each sound
new const Float:g_sound_ambience_duration[] = { 58.0 , 56.0 }
#endif

/************************************************************\
|                  Customizations Ends Here..!!              |
|         You can edit the cvars in the plugin init          |
\************************************************************/

// Variables
new g_gameid, g_maxplayers, cvar_minplayers, cvar_ratio, cvar_sniperhp, cvar_assahp, g_msg_sync

// Ambience sounds task
#define TASK_AMB 3256

public plugin_init( )
{
	// Plugin registeration.
	register_plugin( "[ZP] Assassin vs Snipers Mode","1.0", "@bdul!" )
	
	// Register some cvars
	// Edit these according to your liking
	cvar_minplayers = register_cvar("zp_avsm_minplayers", "2")
	cvar_sniperhp =	  register_cvar("zp_avsm_sniper_hp", "1.5")
	cvar_assahp =	  register_cvar("zp_avsm_assassin_hp", "1.0")
	cvar_ratio = 	  register_cvar("zp_avsm_inf_ratio", "0.5")
	
	// Get maxplayers
	g_maxplayers = get_maxplayers( )
	
	// Hud stuff
	g_msg_sync = CreateHudSyncObj()
}

// Game modes MUST be registered in plugin precache ONLY
public plugin_precache( )
{
	// Read the access flag
	new access_flag = read_flags( g_access_flag )
	new i
	
	// Precache the play sounds
	for (i = 0; i < sizeof g_play_sounds; i++)
		precache_sound( g_play_sounds[i] )
	
	// Precache the ambience sounds
	#if defined AMBIENCE_SOUNDS
	new sound[100]
	for (i = 0; i < sizeof g_sound_ambience; i++)
	{
		if (equal(g_sound_ambience[i][strlen(g_sound_ambience[i])-4], ".mp3"))
		{
			formatex(sound, sizeof sound - 1, "sound/%s", g_sound_ambience[i])
			precache_generic( sound )
		}
		else
		{
			precache_sound( g_sound_ambience[i] )
		}
	}
	#endif
	
	// Register our game mode
	g_gameid = zp_register_game_mode( "Assassin vs Snipers Mode", access_flag, g_chance, 0, ZP_DM_BALANCE )
}

// Player spawn post
public zp_player_spawn_post( id )
{
	// Check for current mode
	if( zp_get_current_mode() == g_gameid )
	{
		// Check if the player is a zombie
		if( zp_get_user_zombie( id ))
		{
			// Make him an assassin instead
			zp_make_user_assassin( id )
			
			// Set his health
			set_user_health( id, floatround(get_user_health(id) * get_pcvar_float(cvar_assahp)) )
		}
		else
		{
			// Make him a sniper
			zp_make_user_sniper( id )
			
			// Set his health
			set_user_health( id, floatround(get_user_health(id) * get_pcvar_float(cvar_sniperhp)) )
		}
	}
}

public zp_round_started_pre( game )
{
	// Check if it is our game mode
	if( game == g_gameid )
	{
		// Check for min players
		if( fn_get_alive_players() < get_pcvar_num(cvar_minplayers) )
		{
			/**
			 * Note:
			 * This very necessary, you should return ZP_PLUGIN_HANDLED if
			 * some conditions required by your game mode are not met
			 * This will inform the main plugin that you have rejected
			 * the offer and so the main plugin will allow other game modes
			 * to be given a chance
			 */
			return ZP_PLUGIN_HANDLED
		}
		// Start our new mode
		start_avs_mode( )
	}
	// Make the compiler happy =)
	return PLUGIN_CONTINUE
}

public zp_round_started( game, id )
{
	// Check if it is our game mode
	if( game == g_gameid )
	{
		// Show HUD notice
		set_hudmessage(221, 156, 21, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
		ShowSyncHudMsg(0, g_msg_sync, "Assassins vs Snipers Mode !!!")
		
		// Play the starting sound
		client_cmd(0, "spk ^"%s^"", g_play_sounds[ random_num(0, sizeof g_play_sounds -1) ] )
		
		// Remove ambience task affects
		remove_task( TASK_AMB )
		
		// Set task to start ambience sounds
		#if defined AMBIENCE_SOUNDS
		set_task( 2.0, "start_ambience_sounds", TASK_AMB )
		#endif
	}
}

public zp_game_mode_selected( gameid, id )
{
	// Check if our game mode was called
	if( gameid == g_gameid )
		start_avs_mode( )
	
	// Make the compiler happy again =)
	return PLUGIN_CONTINUE
}

// This function contains the whole code behind this game mode
start_avs_mode( )
{
	// Create and initialize some important vars
	static i_assassins, i_max_assassins, id, i_alive
	i_alive = fn_get_alive_players()
	id = 0
	
	// Get the no of players we have to turn into assassins
	i_max_assassins = floatround( ( i_alive * get_pcvar_float( cvar_ratio ) ), floatround_ceil )
	i_assassins = 0
	
	// Randomly turn players into Assassins
	while (i_assassins < i_max_assassins)
	{
		// Keep looping through all players
		if ( (++id) > g_maxplayers) id = 1
		
		// Dead
		if ( !is_user_alive(id) )
			continue;
		
		// Random chance
		if (random_num(1, 5) == 1)
		{
			// Make user assassin
			zp_make_user_assassin(id)
			
			// Set his health
			set_user_health( id, floatround(get_user_health(id) * get_pcvar_float(cvar_assahp)) )
			
			// Increase counter
			i_assassins++
		}
	}
	
	// Turn the remaining players into snipers
	for (id = 1; id <= g_maxplayers; id++)
	{
		// Only those of them who are alive and are not assassins
		if ( !is_user_alive(id) || zp_get_user_assassin(id) )
			continue;
			
		// Turn into a sniper
		zp_make_user_sniper(id)
		
		// Set his health
		set_user_health( id, floatround(get_user_health(id) * get_pcvar_float(cvar_sniperhp)) )
	}
}

#if defined AMBIENCE_SOUNDS
public start_ambience_sounds( )
{
	// Variables
	static amb_sound[64], sound, Float:duration
	
	// Select our ambience sound
	sound = random_num( 0, sizeof g_sound_ambience - 1 )
	copy( amb_sound, sizeof amb_sound - 1 , g_sound_ambience[ sound ] )
	duration = g_sound_ambience_duration[ sound ]
	
	// Check whether it's a wav or mp3, then play it on clients
	if ( equal( amb_sound[ strlen( amb_sound ) - 4 ], ".mp3" ) )
		client_cmd( 0, "mp3 play ^"sound/%s^"", amb_sound )
	else
		client_cmd( 0, "spk ^"%s^"", sound )
	
	// Start the ambience sounds
	set_task( duration, "start_ambience_sounds", TASK_AMB )
}
public zp_round_ended( winteam )
{
	// Stop ambience sounds on round end
	remove_task( TASK_AMB )
}
#endif

// This function returns the no. of alive players
// Feel free to use this in your plugin when you 
// are making your own game modes.
fn_get_alive_players( )
{
	static i_alive, id
	i_alive = 0
	
	for ( id = 1; id <= g_maxplayers; id++ )
	{
		if( is_user_alive( id ) )
			i_alive++
	}
	return i_alive;
}


Użytkownik ZIGI89 edytował ten post 13.11.2015 23:22

  • +
  • -
  • 1
<img src="http://steamprofile....1:25467514.png" alt="Tekst alternatywny" />





Również z jednym lub większą ilością słów kluczowych: zombie plague 4.3

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych