Modificare plugin transfer life

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
Laurentiu P.
Fost moderator
Fost moderator
Posts: 2549
Joined: 10 Jul 2013, 21:26
Detinator Steam: Da
Reputatie: Fost super moderator
Fond eXtream: 100
Has thanked: 26 times
Been thanked: 62 times
Contact:

29 May 2015, 10:15

Salut am pluginul de "Transfer Life" pentru modul dr si as dorii o mica modificare la el si anume cand ramane ultimul CT in viata si acela doreste sa-i transfere viata unui jucator sa nu se termine runda. In general runda se termina daca ultimul Ct transfera viata altui jucator.
Transfer Life SMA | Afiseaza codul
//#define USE_ZOMBIE_PLAGUE
#define USE_ANTI_ABUSE
#define USE_MENU_COMMAND
#define USE_EFFECT

#include < amxmodx >
#include < amxmisc >
#include < hamsandwich >
#include < fun >

#if defined USE_ZOMBIE_PLAGUE
#include < zombieplague >
#endif

#if defined USE_ANTI_ABUSE
#include < fakemeta >
new bool:g_anti_abuse[ 33 ]
#endif

#if !defined USE_ZOMBIE_PLAGUE
new g_msgscoreinfo
#endif

new cvar_health, cvar_bonus, cvar_teams

new g_sender, g_selected[ 33 ]

#if defined USE_EFFECT
new sprite_smoke, g_msgscreenfade
public plugin_precache()
{
	sprite_smoke = precache_model( "sprites/steam1.spr" )
}
#endif

public plugin_init() 
{
	register_plugin( "Transfer Life", "1.1+", "P.Of.Pw" )
	
	cvar_health = register_cvar( "tf_health_system", "0" )
	cvar_bonus = register_cvar( "tf_bonus", "10" )
	cvar_teams = register_cvar( "tf_teams", "3" ) // 1 = T only, 2 = CT only, 3 = both teams.
	
#if !defined USE_ZOMBIE_PLAGUE
	g_msgscoreinfo = get_user_msgid( "ScoreInfo" )
#endif
#if defined USE_EFFECT
	g_msgscreenfade = get_user_msgid( "ScreenFade" )
#endif	

	RegisterHam( Ham_Spawn, "player", "fwd_HamPlayerSpawnPost", 1 )
	
#if defined USE_ANTI_ABUSE	
	register_forward( FM_ClientKill, "fw_ClientSuicide" )
#endif
	
	register_clcmd( "say", "clcmdsay_transfer_life" )
	register_clcmd( "say_team", "clcmdsay_transfer_life" )
	
	register_clcmd( "life", "transfer_life" )

#if defined USE_MENU_COMMAND
	register_clcmd( "lifemenu", "transfer_life_menu" )
	register_clcmd( "say /lifemenu", "transfer_life_menu" )
	register_clcmd( "say_team /lifemenu", "transfer_life_menu" )
#endif
}

public client_disconnect( id )
{
#if defined USE_ANTI_ABUSE	
	g_anti_abuse[ id ] = false
#endif
	
	g_selected[ id ] = 0
}

public fwd_HamPlayerSpawnPost( id )
{
#if defined USE_ANTI_ABUSE	
	arrayset( g_anti_abuse, false, 32 )
#endif
	
	g_sender = 0
	g_selected[ id ] = 0
}

#if defined USE_ANTI_ABUSE
public fw_ClientSuicide( id ) //suicide
	g_anti_abuse[ id ] = true
#endif

public clcmdsay_transfer_life( id )
{
	static args[ 192 ], command[ 192 ]
	read_args( args, charsmax( args ) )
	
	if( !args[ 0 ] )
		return PLUGIN_CONTINUE
		
	remove_quotes( args[ 0 ] )
	
	if( equal( args, "/life", strlen( "/life" ) ) )
	{
		replace( args, charsmax( args ), "/", "" )
		formatex( command, charsmax( command ), "%s", args )
		client_cmd( id, command )
	}
	
	return PLUGIN_CONTINUE
}
	
public transfer_life( id )
{		
	if( !( get_pcvar_num( cvar_teams ) & get_user_team( id ) ) )
	{
		console_print( id, "[Transfer Life] NU poti folosi aceasta comanda!" )
		return PLUGIN_HANDLED
	}
	
	if( !is_user_alive( id ) )
	{
		console_print( id, "[Transfer Life] Trebuie sa fi in viata!" )
		return PLUGIN_HANDLED
	}

#if defined USE_ANTI_ABUSE	
	if( g_anti_abuse[ id ] )
	{
		console_print( id, "[Transfer Life] NU mai poti folosi comanda!" )
		return PLUGIN_HANDLED
	}
#endif
	
	new arg[ 32 ]
	read_argv( 1, arg, 31 )
	new target = cmd_target( id, arg, 0 )
	if( !target )
	{
		console_print( id, "[Transfer Life] Jucatorul NU se afla pe server!" )
		return PLUGIN_HANDLED
	}
	
	if( is_user_alive( target ) )
	{
		console_print( id, "[Transfer Life] Jucatorul este deja in viata!" )
		return PLUGIN_HANDLED
	}

#if defined USE_ANTI_ABUSE	
	if( g_anti_abuse[ target ] )
	{
		console_print( id, "[Transfer Life] NU poti folosi comanda pe acest jucator!" )
		return PLUGIN_HANDLED
	}
	
	g_anti_abuse[ id ] = true
#endif
	
	if( get_user_team( id ) != get_user_team( target ) )
	{
		console_print( id, "[Transfer Life] Jucatorul trebuie sa fie in aceeasi echipa cu tine!" )
		return PLUGIN_HANDLED
	}
		
	fn_show_menu_target( id, target )
	
	return PLUGIN_HANDLED
}

public fn_show_menu_target( id, target )
{
	new name[ 32 ], tname[ 32 ]
	get_user_name(id, name, sizeof name - 1 )
	get_user_name(target, tname, sizeof tname - 1 )
	
	new title[ 64 ]
	formatex( title, sizeof title - 1, "\r%s \ydoreste sa iti dea viata", name )
	
	new menu = menu_create( title, "menu_thandler", 0 )
	menu_additem( menu, "Accept", "1", 0, -1 )
	menu_additem( menu, "Nu, mersi", "2", 0, -1 )
	
	menu_setprop( menu, MPROP_EXIT, MEXIT_NEVER )
	menu_display( target, menu, 0 )
	
	client_print( 0, print_chat, "[Transfer Life] %s doreste sa ii dea viata lui %s.", name, tname )
	set_task( 3.0, "what_choose", target )
	
	g_sender = id
}

public menu_thandler( id, menu, item ) // id = target
{
	if( !is_user_connected( id ) )
		return PLUGIN_HANDLED
	
	new data[ 6 ], access, callback
	menu_item_getinfo( menu, item, access, data, sizeof data - 1, _, _, callback )
	
	new key = str_to_num( data )
	
	new name[ 32 ]
	get_user_name( id, name, sizeof name - 1 )
	
	switch( key )
	{
		case 1:
		{
			client_print( 0, print_chat, "[Transfer Life] %s a acceptat cererea!", name )
			g_selected[ id ] += 1
			
			fn_life_stuff( g_sender, id )
			menu_destroy( menu )
			return PLUGIN_HANDLED
		}
		case 2:
		{
			client_print(0, print_chat, "[Transfer Life] %s a refuzat cererea!", name )
			g_selected[ id ] = 0
			
			g_anti_abuse[ g_sender ] = false
			menu_destroy( menu )
			return PLUGIN_HANDLED
		}
	}
	
	return PLUGIN_HANDLED
}

public what_choose( id )
{
	if( g_selected[ id ] < 1 )
	{		
		//show_menu( id, 0, "^n", 1 )
		client_cmd( id, "slot2;slot1" )
	}
}

public fn_life_stuff( id, target )
{
	if( !is_user_connected( target ) || !is_user_connected( id ) )
		return;
		
	new tf_health_system = get_pcvar_num( cvar_health ), tf_bonus = get_pcvar_num( cvar_bonus ),
	origin[ 3 ], name[ 32 ], target_name[ 32 ], health
	
	if( tf_health_system == 1 )
	{
		health = get_user_health( id )
			
		if( health < 25 )
		{
			console_print( id, "[Transfer Life] Viata ta este prea mica!" )
			return;
		}
	}

#if !defined USE_ZOMBIE_PLAGUE
	strip_user_weapons( id )
#endif
	
	user_silentkill( id )
	
	ExecuteHamB( Ham_CS_RoundRespawn, target )
	
	if( tf_health_system == 1 )
		set_user_health( target, health )
		
	get_user_origin( id, origin, 0 )
	origin[ 2 ] += 20
	
	set_user_origin( target, origin )
	strip_user_weapons( target )
	give_item( target, "weapon_knife" )

#if defined USE_EFFECT	
	set_task( 0.5, "create_smoke", target )
	set_task( 0.8, "create_blast", target )
#endif
	
	get_user_name( id, name, 31 )
	get_user_name( target, target_name, 31 )
#if defined USE_ZOMBIE_PLAGUE
	zp_set_user_ammo_packs( id, zp_get_user_ammo_packs( id ) + tf_bonus )
	client_print( id, print_chat, "[Transfer Life] Ti-ai dat viata si ai primit %d Ammo Pack-uri bonus!", tf_bonus )
	client_print( 0, print_chat, "[Transfer Life] %s i-a dat viata lui %s si a primit %d Ammo Pack-uri bonus!", name, target_name, tf_bonus )
#else	
	set_user_frags( id, get_user_frags( id ) + tf_bonus )
	message_begin( MSG_ALL, g_msgscoreinfo )
	write_byte( id )
	write_short( get_user_frags( id ) )
	write_short( get_user_deaths( id ) )
	write_short( 0 )
	write_short( get_user_team( id ) )
	message_end()
	
	client_print( id, print_chat, "[Transfer Life] Ti-ai dat viata si ai primit %d Fraguri bonus!", tf_bonus )
	client_print( 0, print_chat, "[Transfer Life] %s i-a dat viata lui %s si a primit %d Fraguri bonus!", name, target_name, tf_bonus )
#endif
}

#if defined USE_MENU_COMMAND
public transfer_life_menu( id )
{	
	if( !( get_pcvar_num( cvar_teams ) & get_user_team( id ) ) )
	{
		console_print( id, "[Transfer Life] NU poti folosi aceasta comanda!" )
		return;
	}
	
	if( !is_user_alive( id ) )
	{
		console_print( id, "[Transfer Life] Meniul nu poate fi deschis!" )
		return;
	}
	
	new menu = menu_create( "\rTransfer Life Menu:", "menu_handler" )

	new players[ 32 ], pnum, tempid,
	name_players[ 32 ], tempid2[ 10 ]

	get_players(players, pnum)
	for( new i; i < pnum; i++ )
	{
		tempid = players[ i ]
		
		if( get_user_team( id ) != get_user_team( tempid ) )
			continue
		if( is_user_alive( tempid ) )
			continue
			
		get_user_name( tempid, name_players, 31 )
		num_to_str( tempid, tempid2, 9 )

		menu_additem( menu, name_players, tempid2, 0 )
	}

	menu_display( id, menu, 0 )
}

public menu_handler( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		menu_destroy( menu )
		return PLUGIN_HANDLED
	}

	new data[ 6 ], access, callback, name_target[ 32 ]
	menu_item_getinfo( menu, item, access, data, sizeof data - 1, _, _, callback )
	
	new tempid = str_to_num( data )

	get_user_name( tempid, name_target, 31 )
	client_cmd( id, "life %s", name_target )

	menu_destroy( menu )
	return PLUGIN_HANDLED
}
#endif

#if defined USE_EFFECT
public create_smoke( target )
{
	new target_origin[ 3 ]
	get_user_origin( target, target_origin, 0 )
	
	message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
	write_byte( TE_FIREFIELD )
	write_coord( target_origin[ 0 ] )
	write_coord( target_origin[ 1 ] )
	write_coord( target_origin[ 2 ] + 50 )
	write_short( 100 )
	write_short( sprite_smoke )
	write_byte( 100 )
	write_byte( TEFIRE_FLAG_ALPHA )
	write_byte( 30 ) // duration (in seconds) * 10) (will be randomized a bit)
	message_end()
				
	message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
	write_byte( TE_FIREFIELD )
	write_coord( target_origin[ 0 ] )
	write_coord( target_origin[ 1 ] )
	write_coord( target_origin[ 2 ] + 50 )
	write_short( 150 )
	write_short( sprite_smoke )
	write_byte( 10 )
	write_byte( TEFIRE_FLAG_ALPHA | TEFIRE_FLAG_SOMEFLOAT )
	write_byte( 30 ) // duration (in seconds) * 10) (will be randomized a bit)
	message_end()
}

public create_blast( target )
{
	message_begin( MSG_ONE_UNRELIABLE, g_msgscreenfade, { 0, 0, 0 }, target )
	write_short( ( 1<<12 ) * 4 )
	write_short( ( 1<<12 ) * 1 )
	write_short( 0x0001 )
	write_byte( 255 )
	write_byte( 255 )
	write_byte( 255 )
	write_byte( 155 )
	message_end()
}
#endif
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3081\\ f0\\ fs16 \n\\ par }
*/
no...
RoyalServer 2
User avatar
Laurentiu P.
Fost moderator
Fost moderator
Posts: 2549
Joined: 10 Jul 2013, 21:26
Detinator Steam: Da
Reputatie: Fost super moderator
Fond eXtream: 100
Has thanked: 26 times
Been thanked: 62 times
Contact:

31 May 2015, 07:52

Careva ?!
no...
Aneimar
Membru, skill 0
Membru, skill 0
Posts: 90
Joined: 07 Apr 2016, 00:16
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Has thanked: 1 time
Contact:

25 Sep 2017, 18:54

Am aceeasi problema si eu , dar nu cred ca se poate rezolva .
Eu tot astept sa raspunda cineva la acest topic .
*Or!g!naL*
Fost moderator
Fost moderator
Posts: 1367
Joined: 16 Feb 2014, 16:28
Detinator Steam: Nu
CS Status: N-avem!
Detinator server CS: Zm.Darkcs.ro
Reputatie: Fost moderator ajutator
Has thanked: 3 times
Been thanked: 1 time

26 Sep 2017, 13:34

nu prea inteleg.

Code: Select all

 anume cand ramane ultimul CT in viata si acela doreste sa-i transfere viata unui jucator sa nu se termine runda.
daca ramane ultimul, cui sa mai transfere deca restul sunt morti ?
Image
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 12 guests