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
 

danieloskY - zdjęcie

danieloskY

Rejestracja: 28.10.2015
Aktualnie: Nieaktywny
Poza forum Ostatnio: 24.04.2016 19:23
-----

#649044 Muzyka podczas wchodzenia na serwer (STARA WERSJA)

Napisane przez Split w 10.07.2014 22:05

Witam, jak wiadomo loading sound nie działał poprawnie z roundsoundem więc daje wam działający plugin ale inną wersję. Starą, którą sam ją pisałem, wiem że mało roboty ale jeżeli ktoś chce mieć roundsoundy + loading to proszę owy plugin :)

 
 
#include <amxmodx>
#include <amxmisc>
 
#define PLUGIN "Muzyka podczas wchodzenia na serwer"
#define VERSION "1.0.0 beta"
#define AUTHOR "eSkill"
 
new const sound[] = "sound/misc/eSkill.mp3"
 
public plugin_init() 
register_plugin(PLUGIN, VERSION, AUTHOR)
 
public client_connect(id)
client_cmd(id,"mp3 play %s",sound)
 
 
public plugin_precache()
precache_generic(sound)
 
gdzie eSkill.mp3 zmieniacie na swój plik :)
 
Pozdrawiam i życzę miłego korzystania :) :) :)
 

  • +
  • -
  • 4


#720258 [KOSZ] Znów ja ^^

Napisane przez Sniper Elite w 10.02.2016 16:40

 

Przeczytaj regulamin przed napisaniem tematu.

 

 

Twoj temat zostanie zamkniety.

W moderatora sie bawisz? Chyba fora pomyliłeś.

 

Może i się bawi, ale prawdę napisał.

Co do widoczności, możesz ustawić aby na mapie były całkowite ciemności, wartość "a" dla cvaru na początku zombieplague.cfg (nie pamiętam dokładnie który), a później dać każdemu ocałałemu i zombie noktowizor oraz zmienić ich kolory (dla humana w rgb będzie 255,255,255 - odpowiada za biały kolor), a na sam koniec zmieniać maksymalną odległość na jaką działa noktowizor (też regulowane cvarem). Nie będzie to idealny sposób, ale tylko taki przychodzi mi do głowy.


  • +
  • -
  • 1


#719453 Pomoc. Itemki na koniec ;p

Napisane przez Napad w 31.01.2016 15:41

Daj sma .............. przeciez ci nie wyczaruje ze to bedzie na dole , trzeba w kodzie zmienic .Jesli to jest odzielny plugin to daj sma


  • +
  • -
  • 1


#714208 Potrzebuję pomocy

Napisane przez xXxBoy4GirlxXx w 05.11.2015 07:16

Tutaj coś pisali
https://forums.allie...ad.php?t=268848
  • +
  • -
  • 1


#714634 pole siłowe wyłaczenie na nemezisie

Napisane przez ZIGI89 w 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;
}


  • +
  • -
  • 1


#714798 Potrzebuję pomocy. Ap za rozwalenie lm dla zm

Napisane przez ZIGI89 w 17.11.2015 18:48

znalazłęs juz

 

Mozeto sie nada

zp_sub_rewards.amxx


  • +
  • -
  • 1


#714128 Napisanie pluginu na zm 4.3

Napisane przez oeN. w 03.11.2015 11:06

Podaj sma pluginu od laserów.


  • +
  • -
  • 1