Plugin /life si Retry/Slay ![rezolvat!]

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Post Reply
User avatar
essonid
Membru, skill +2
Membru, skill +2
Posts: 759
Joined: 20 Nov 2010, 16:57
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Membru Club eXtreamCS (o luna)
Location: London, United Kingdom
Has thanked: 29 times
Been thanked: 28 times

22 Dec 2010, 17:52

Salut,
As dori si eu un plugin /life sau /transfer si nume ( Transfer Life ) Cel facut de KronoS l-am luat dar nu merge :)
Si un plugin Retry/Slay
Multumesc
A city full of people and my favorite is that waitress..
RoyalServer 2
User avatar
essonid
Membru, skill +2
Membru, skill +2
Posts: 759
Joined: 20 Nov 2010, 16:57
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Membru Club eXtreamCS (o luna)
Location: London, United Kingdom
Has thanked: 29 times
Been thanked: 28 times

22 Dec 2010, 18:20

Mda va multumesc pentru ajutor \m/ :-j
A city full of people and my favorite is that waitress..
User avatar
S3ekEr^
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 3475
Joined: 06 Dec 2009, 12:47
Detinator Steam: Nu
Reputatie: Nume anterior: The Seeker , Reptyle
Fost Scripter
Fost super moderator
Utilizator neserios ( tepar )
Has thanked: 117 times
Been thanked: 329 times

22 Dec 2010, 18:23

-->
| Afiseaza codul
/*	Copyright © 2010, tuty

	Life Transfer is free software;
	you can redistribute it and/or modify it under the terms of the
	GNU General Public License as published by the Free Software Foundation.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with Life Transfer; if not, write to the
	Free Software Foundation, Inc., 59 Temple Place - Suite 330,
	Boston, MA 02111-1307, USA.
*/



/* --| Includem tot ce ne trebuie */

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


/* --| Fortam 'punct si virgula'  la fiecare sfarsit de linie */

#pragma semicolon 1

/* --| Definitii pentru plugin */

#define PLUGIN_VERSION	"5.0.2"
#define MAX_PLAYERS	32

/* --| Globale.. */

new gSayText;
new gMenuId;
new gFragToBonus;
new gInviter[  MAX_PLAYERS + 1 ];

/* --| Un mic bool-ean */

new bool:is_user_invited[  MAX_PLAYERS + 1 ];
new bool:has_already_invited[  MAX_PLAYERS + 1 ];

/* --| Stocam numerele pentru meniu.. in cazul asta 1 si 2 */

const KEYS = MENU_KEY_1 | MENU_KEY_2;

/* --| Definim sunetul nostru pentru a il putea folosi in mai multe locuri */

#define LIFE_TRANSFERED_SOUND	"fvox/vitalsigns_on.wav"

/* --| Si incepem ... */

public plugin_init()
{
	/* --| Inregistram pluginul sa apara in lista */

	register_plugin( "DR: Life Transfer", PLUGIN_VERSION, "tuty" );
	
	/* --| Un event cand ia playeru spawn */

	RegisterHam( Ham_Spawn, "player", "bacon_Spawn", 1 );

	/* --| Inregistram comenzile de say pentru a verifica comanda /transfer */

	register_clcmd( "say", "cmdSayTransfer" );
	register_clcmd( "say_team", "cmdSayTransfer" );

	/* --| Stocam cate ceva :D */

	gSayText = get_user_msgid( "SayText" );
	gMenuId = register_menuid( "Transfer" );

	/* --| Inregistram meniul */

	register_menucmd( gMenuId, KEYS, "transfer_menu" );
	
	/* --| Inregistram cvarul pentru fraguri */

	gFragToBonus = register_cvar( "lt_fragbonus", "3" );
}

/* --| Cand jucatorul se conecteaza pe server */

public client_connect( id )
{	
	/* --| Cand jucatorul se conecteaza nu are invitatie trimisa si nu este nici invitat */

	is_user_invited[ id ] = false;
	has_already_invited[ id ] = false;
}

/* --| Cand jucatorul iese de pe server */

public client_disconnect( id )
{
	/* --| Cand jucatorul se deconecteaza nu are invitatie trimisa si nu este nici invitat */

	is_user_invited[ id ] = false;
	has_already_invited[ id ] = false;
}

/* --| Dam precache la sunet.. */

public plugin_precache()
{
	precache_sound( LIFE_TRANSFERED_SOUND );
}

/* --| Acum aflam daca jucatorul a scris /transfer <nume> */

public cmdSayTransfer( id )
{
	new szSaid[ 300 ], szCommand[ 20 ];

	/* --| Citim ce scrie jucatoru, stergem ghilimelele */

	read_args( szSaid, charsmax( szSaid ) );

	remove_quotes( szSaid );
	
	/* --| Stergem spatiile de la inceput si sfarsit */

	trim( szSaid );
	
	/* --| Daca nu a scris nimic dam return */

	if( !strlen( szSaid ) )
	{
		return PLUGIN_CONTINUE;
	}
	
	/* --| Impartim comanda si stringu( ce a zis jucatoru ) */

	parse( szSaid, szCommand, charsmax( szCommand ), szSaid, charsmax( szSaid ) );
	
	if( equal( szCommand, "/transfer" ) )
	{
		/* --| Verificam daca jucatorul e mort, sa nu execute comanda */

		if( !is_user_alive( id ) )
		{
			color_print( id, "^4[ tutY.DR ]^1 You must be alive to use transfer command!" );
			return PLUGIN_HANDLED;
		}
		
		/* --| Daca jucatoru e in echipa teroristilor, dam return cu mesaj */

		if( cs_get_user_team( id ) == CS_TEAM_T )
		{
			color_print( id, "^4[ tutY.DR ]^1 Only ^3CT^1 can use transfer command!" );
			return PLUGIN_HANDLED;
		}

		/* --| Aflam <numele>, adica tinta de la comanda transfer */

		new iTarget = cmd_target( id, szSaid, 10 );
		
		/* --| Luam numele tintei */

		new Name[ 32 ];
		get_user_name( iTarget, Name, charsmax( Name ) );

		/* --| Daca nu e valida tinta, sau nu exista, dam return */

		if( !iTarget )
		{
			color_print( id, "^4[ tutY.DR ] ^1This user doesn't exist!" );
			return PLUGIN_HANDLED;
		}
	
		/* --| Daca tinta nu e in echipa cu cel care executa comanda, dam return */

		if( cs_get_user_team( id ) != cs_get_user_team( iTarget ) )
		{
			color_print( id, "^4[ tutY.DR ] ^3%s^1 is not from your team!", Name );
			return PLUGIN_HANDLED;
		}

		/* --| Verificam daca tinta este in viata, si dam return daca da */

		if( is_user_alive( iTarget ) )
		{
			color_print( id, "^4[ tutY.DR ] ^3%s ^1is already alive :) !", Name );
			return PLUGIN_HANDLED;
		}
	
		/* --| Verificam daca nu a fost trimisa deja o invitatie de transfer acelui jucator, daca da, dam return */

		if( is_user_invited[ iTarget ] == true )
		{
			color_print( id, "^4[ tutY.DR ] ^1A transfer invitation was already sent to ^3%s^1!", Name );
			return PLUGIN_HANDLED;
		}
		
		/* --| Verificam sa vedem daca jucatoru a transferat viata cuiva sa nu mai poata transfera pana tura viitoare */

		if( has_already_invited[ iTarget ] == true )
		{
			color_print( id, "^4[ tutY.DR ] ^1You already sent a invitation! Wait for next spawn!" );
			return PLUGIN_HANDLED;
		}

		/* --| Trimitem invitatia, si dam un mic print celui care a trimiso */

		send_invitation( id, iTarget );
		color_print( id, "^4[ tutY.DR ]^1 A transfer invitation was sent to ^3%s", Name );
	}
	
	/* --| Dam return continue pentru ca, daca jucatorul a scris corect /transfer <nume> sa apara in chat ce a scris */

	return PLUGIN_CONTINUE;
}

/* --| Acum meniul */

public transfer_menu( id, key )
{
	/* --| Aflam cine a cerut invitatia */

	new inviter = gInviter[ id ];

	/* --| Luam numele tintei, si celui care a facut invitatia */

	new Name[  MAX_PLAYERS ], Name2[  MAX_PLAYERS ];

	get_user_name( id, Name, charsmax( Name ) );
	get_user_name( inviter, Name2, charsmax( Name2 ) );
	
	new iFrags = get_pcvar_num( gFragToBonus );
	
	/* --| Acum impartim butoanele, 1 si 2 */

	switch( key )
	{
		/* --| Cazul 1, executam comenzile de transfer */

		case 0:
		{
			/* --| Dam respawn la tinta, si il ucidem pe cel care a facut invitatia, apoi ii setam echipa la CT, pentru a nu-l arata pe spec! */

			ExecuteHamB( Ham_CS_RoundRespawn, id );
			cs_set_user_team( id, CS_TEAM_CT );
			user_silentkill( inviter );
			
			/* --| Setam cateva fraguri bonus celui care a trimis invitatia */

			set_user_frags( inviter, get_user_frags( inviter ) + iFrags );

			/* --| Un mic delay cand setam originea tintei, in locul unde invitatorul a executat comanda */

			set_task( 0.2, "doOrigin", id );

			is_user_invited[ id ] = false;
			has_already_invited[ inviter ] = true;

			/* --| Puscam doua printuri in chat la cel care a facut invitatia, si la toti ca x si-a transferat viata lui y */

			color_print( inviter, "^4[ tutY.DR ]^1 Transfer invitation was accepted by ^3%s^1! You got^4 %d^1 frags for transfer!", Name, iFrags );
			color_print( 0, "^4[ tutY.DR ] ^3%s^1 transfered his life to ^4%s^1!", Name2, Name );

			/* --| Acum ca tinta e vie, sa emitem un sunet care se aude la oarece distanta */

			emit_sound( id, CHAN_VOICE, LIFE_TRANSFERED_SOUND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
		}

		/* --| Cazul 2, nu facem nimic, deoarece nu a acceptat transferul */

		case 1:
		{
			/* --| Dam un mic print celui care a facut invitatia, ca nu a acceptat */

			color_print( inviter, "^4[ tutY.DR ]^1 Transfer invitation was declined by ^3%s^1!", Name );

			is_user_invited[ id ] = false;
			has_already_invited[ inviter ] = false;
		}
	}
	
	is_user_invited[ id ] = false;
	has_already_invited[ inviter ] = false;
}
	
/* --| Acum setam originea tintei in locul unde a fost jucatorul care a executat comanda */

public doOrigin( id )
{
	/* --| Luam originea celui care a executat comanda, si o luam de la locul unde i se aflau picioarele adica 0 */

	new iOrigin[ 3 ];
	get_user_origin( gInviter[ id ], iOrigin, 0 );
	
	iOrigin[ 2 ] += 10;
	
	/* --| Setam originea tintei in locul celuilalt */

	set_user_origin( id, iOrigin );
	
	/* --| Aplicam un mic efect de teleport :D */

	message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin );
	write_byte( TE_TELEPORT );
	write_coord( iOrigin[ 0 ] );
	write_coord( iOrigin[ 1 ] );
	write_coord( iOrigin[ 2 ] );
	message_end();
}

/* --| Cand jucatorul a luat spawn, resetam transferurile */

public bacon_Spawn( id )
{
	if( is_user_alive( id ) )
	{
		has_already_invited[ id ] = false;
	}
}

/* --| Cateva stocuri, de trimis invitatia sa apara meniul si de color chat( culori in chat ) */
/* --| Trimitem invitatia */	

stock send_invitation( inviter, target )
{
	new szMenu[ 400 ], iLen;

	/* --| Aflam numele celui care a executat comanda */

	new Name[  MAX_PLAYERS ];
	get_user_name( inviter, Name, charsmax( Name ) );
	
	/* --| Titlul meniului */

	iLen = formatex( szMenu, charsmax( szMenu ), "\rDo you accept life transfer from \w%s\r?^n^n", Name );
	
	/* --| Acum adaugam optiunea 1 si 2 */

	iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \wYes, of course^n" );
	iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r2. \wNo, no way^n" );

	/* --| Afisam meniul tintei */

	show_menu( target, KEYS, szMenu, 3, "Transfer" );
	
	/* --| Tinta acum e egala cu cel care a facut invitatia */

	gInviter[ target ] = inviter;

	/* --| Setam ca este deja trimisa o invitatie acestui jucator */

	is_user_invited[ target ] = true;
	
	/* --| Dupa 3 secunde atunci cand dispare meniul, facem sa nu mai aiba invitatia daca nu raspunde... */

	set_task( 3.0, "removeInvite", target );
}

/* --| Resetam invitatiile */

public removeInvite( target )
{
	is_user_invited[ target ] = false;
}

/* --| Acum stocul de color chat( culori specifice in chat ) */

stock color_print( id, const message[], { Float, Sql, Result, _ }:... )
{
	new Buffer[ 300 ],Buffer2[ 300 ];
	new players[  MAX_PLAYERS ], index, num, i;
	
	formatex( Buffer2,charsmax( Buffer2 ), "%s", message );
	vformat( Buffer, charsmax( Buffer ), Buffer2, 3 );
	get_players( players, num, "c" );
	
	if( id )
	{
		if( !is_user_connected( id ) )
		{
			return;
		}
			
		message_begin( MSG_ONE_UNRELIABLE, gSayText, _, id );
		write_byte( id );
		write_string( Buffer );
		message_end();
	} 
	
	else
	{	
		for( i = 0; i < num;i++ )
		{
			index = players[ i ];

			if( !is_user_connected( index ) ) 
			{
				continue;
			}
				
			message_begin( MSG_ONE_UNRELIABLE, gSayText, _, index );
			write_byte( index );
			write_string( Buffer );
			message_end();
		}
	}
}

/* --| Cam atat, sfarsitul pluginului... A fost greu h? */
User avatar
essonid
Membru, skill +2
Membru, skill +2
Posts: 759
Joined: 20 Nov 2010, 16:57
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Membru Club eXtreamCS (o luna)
Location: London, United Kingdom
Has thanked: 29 times
Been thanked: 28 times

22 Dec 2010, 18:33

Multumesc s3ker !
Ti-am dat un MULTUMESC \m/
A city full of people and my favorite is that waitress..
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 17 guests