[rezolvat] Modificare plugin..

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
duduftw
Utilizator neserios
Utilizator neserios
Posts: 1936
Joined: 19 Dec 2012, 20:30
Detinator Steam: Da
CS Status: sdd
SteamID: duduftw
Reputatie: Utilizator neserios
Location: Constanta
Has thanked: 97 times
Been thanked: 57 times

20 Oct 2013, 08:54

| Afiseaza codul
/*
*   Plugin facut la cerere , Forum : cereri-cs/idei-pluginuri-t24614-900.html
*    Plugin: Life-Shop
*    Versiunea: 1.0
*    Author: ExoTiQ
*
*    Multumesc lui Bos93 pentru o metoda noua.
*    Functia cu Anti-Change Nick am folosit de la spuf.
*    Am folosit alt Stock de culori pentru ca vechi facea probleme.
*/

#include < amxmodx >
#include < fakemeta >
#include < hamsandwich >
#include < nvault >



#define PLUGIN_NAME      "Life-Shop"
#define PLUGIN_VERSION   "1.0"
#define PLUGIN_AUTHOR   "ExoTiQ"

#define MAXPLAYERS             32
#define MAX_STATS_SAVED         64

#if cellbits ==                   32 
#define OFFSET_CSMONEY       115 
#else 
#define OFFSET_CSMONEY       140 
#endif 

#define OFFSET_LINUX             5

#define LIFE_COST               8000
#define LIFE_SELL               5000
#define LIFE_LIMIT               50

new g_Life[ MAXPLAYERS + 1 ]
new gName[ MAXPLAYERS ]
new vKey[ MAX_STATS_SAVED ]
new vData[ MAX_STATS_SAVED ]

new gVault

public plugin_init ( )
{
   register_plugin ( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR )
   
   register_event( "DeathMsg", "EV_DeathMsg", "a" )
   register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");
   register_clcmd("say /vieti", "Life_Shop")
   register_clcmd("say /life", "Life_Shop")
}

public client_connect( id )
   load_client_Life( id )

public client_disconnect( id )
   save_client_Life( id )

   
public EV_DeathMsg() {
   new iVictim = read_data( 2 );
   new iTeam = get_user_team( iVictim );
   new iKiller = read_data( 1 );
   
   if( iKiller != iVictim && get_user_team(iKiller) != iTeam ) {
      Life_Shop( iVictim )
   }
   
}
public Life_Shop( id ) 
{
   new szText[ 1024 char ];
   
   formatex( szText, charsmax( szText ), "\yAveti\w: \r%d\y $^nAveti\w: \r%d\y vieti" ,fm_cs_get_user_money(id) , g_Life[id] );
   
   new menu = menu_create( szText, "Life_handler" );
   
   formatex( szText, charsmax( szText ), "Cumpara 1 viata \y-  \w%d\y $" ,LIFE_COST);
   menu_additem( menu, szText, "1", 0 );
   
   
   formatex( szText, charsmax( szText ), "Vinde 1 viata \y+ \w%d\y $" ,LIFE_SELL);
   menu_additem( menu, szText, "2", 0 );
   
   formatex( szText, charsmax( szText ), "Foloseste \y- \r1\w Viata" );
   menu_additem( menu, szText, "3", 0 );
   
   menu_setprop(menu, MPROP_EXITNAME, "Iesire")
   
   menu_display(id, menu, 0)
}

public Life_handler (id , menu , item ) {
   
   if (item == MENU_EXIT)
   {
      menu_destroy(menu)
      return PLUGIN_HANDLED
   }
   
   new s_Data[6], s_Name[64], i_Access, i_Callback
   
   menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
   
   new i_Key = str_to_num(s_Data)
   
   
   new bani = fm_cs_get_user_money(id)
   
   switch(i_Key)
   {
      case 1:
      {
         if (bani < LIFE_COST)
         {
            Color_Print(id,  "!g[Life-Menu] !yNu ai destui bani pentru a cumpara !gviata." )            
            return PLUGIN_HANDLED
         }
         
         if ( g_Life[id] >= LIFE_LIMIT )
         {
            Color_Print(id,  "!g[Life-Menu] !yAi ajuns la limita !gmaxima." )
            return PLUGIN_HANDLED
         }
         
         Color_Print(id,  "!g[Life-Menu] !yAi cumparat !g1 Viata")
         
         g_Life[id] += 1
         
         fm_cs_set_user_money(id, bani - LIFE_COST)
         Life_Shop( id ) 
      }
      case 2:
      {
         if ( g_Life[id] == 0 )
         {
            Color_Print(id,  "!g[Life-Menu] !yNu ai nici o !gviata.")
            return PLUGIN_HANDLED
         }
         
         Color_Print(id,  "!g[Life-Menu] !yAi vandut !g1 Viata.")
         
         g_Life[id] -= 1
         
         fm_cs_set_user_money(id, bani + LIFE_SELL)
         Life_Shop( id ) 
      }
      case 3:
      {
         if ( is_user_alive( id ) )
         {
            Color_Print(id,  "!g[Life-Menu] !yTrebuie sa fii !gmort !y, pentru a folosit viata.")
            return PLUGIN_HANDLED
         }
         
         if ( g_Life[id] == 0 )
         {
            Color_Print(id,  "!g[Life-Menu] !yNu ai nici o !gviata.")
            return PLUGIN_HANDLED
         }
         
         g_Life[id] -= 1
         
         Color_Print(id,  "!g[Life-Menu] !yAi folosit !g1 viata si ai primit !grespawn.")
         
         ExecuteHam(Ham_CS_RoundRespawn, id)
      }
   }
   menu_destroy(menu)
   return PLUGIN_HANDLED
}
stock save_client_Life( index )
{
   gVault = nvault_open( "Life_Save" )
   
   if( gVault == INVALID_HANDLE )
   {
      set_fail_state( "[Life-Shop] nValut ERROR: =-> Invalid-Handle" )
   }
   
   get_user_name( index, gName, charsmax( gName ) )
   //get_user_name(index,gName,32);
   
   formatex( vKey, charsmax( vKey ), "%sLife",gName )
   formatex( vData, charsmax( vData ), "%d", g_Life[ index ] )
   nvault_set( gVault, vKey, vData )
   nvault_close( gVault )
}

stock load_client_Life( index )
{
   gVault = nvault_open( "Life_Save" )
   
   if( gVault == INVALID_HANDLE )
   {
      set_fail_state( "[Life-Shop] nValut ERROR: =-> Invalid-Handle" )
   }
   
   get_user_name( index, gName, charsmax( gName ) )
   //get_user_name(index,gName,32);
   
   formatex( vKey, charsmax( vKey ), "%sLife",gName )
   g_Life[ index ] = nvault_get( gVault, vKey )
   nvault_close( gVault )
}

 public fwClientUserInfoChanged(id, buffer) {
   if (!is_user_connected(id)) {
      return FMRES_IGNORED;
   }
   static val[32];
   static name[32];
   get_user_name(id, name, 31);
   engfunc(EngFunc_InfoKeyValue, buffer, "name", val, sizeof val- 1);
   if (equal(val, name)) {
      return FMRES_IGNORED;
   }
   engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name);
   Color_Print(id,  "!g[Life-Menu] !teamNU este permisa schimbarea nick-ului pe server !")
   console_print(id,"NU este permisa schimbarea nick-ului pe server !");
   return PLUGIN_HANDLED;
}


stock fm_cs_set_user_money(id, money, flash = 1) 
{ 
   set_pdata_int(id, OFFSET_CSMONEY, money, OFFSET_LINUX)
   
   message_begin(MSG_ONE, get_user_msgid("Money"), {0,0,0}, id)
   write_long(money)
   write_byte(flash)
   message_end()
}

stock fm_cs_get_user_money(id) 
   return get_pdata_int(id, OFFSET_CSMONEY, OFFSET_LINUX)


stock Color_Print(const id, const input[], any:...)
{
   new count = 1, players[32]
   static msg[191]
   vformat(msg, 190, input, 3)
   
   replace_all(msg, 190, "!g", "^4") // Green Color
   replace_all(msg, 190, "!y", "^1") // Default Color
   replace_all(msg, 190, "!team", "^3") // Team Color
   
   if (id) players[0] = id; else get_players(players, count, "ch")
        {    
   for (new i = 0; i < count; i++)
   {
      if (is_user_connected(players))
      {
         message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players)
         write_byte(players);
         write_string(msg);
         message_end();
      }
   }
}
}


As dori si eu acest plugin life sa-l faceti pe credite..

Sa cumperi o viata 100 credite
Sa vinzi o viata 50 credite.


Pluginu de credite daca aveti nevoie..
| Afiseaza codul
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < fakemeta >
#include < nvault >
#include < CC_ColorChat >

#pragma semicolon 1


#define PLUGIN "Furien Credits System"
#define VERSION "0.4.4"

#define	ONE_DAY_IN_SECONDS	86400

new const g_szTag[ ] = "[Furien Credits]";

new const g_szGiveCreditsFlag[ ] = "a";

new g_szName[ 33 ][ 32 ];
new g_iUserCredits[ 33 ];

new g_iCvarPruneDays;
new g_iCvarEntry;
new iVault;

public plugin_init( )
{
	register_plugin( PLUGIN, VERSION, "Askhanar" );
	register_cvar( "fcs_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY ); 

	g_iCvarPruneDays = register_cvar( "fcs_prunedays", "15" );
	g_iCvarEntry = register_cvar( "fcs_entry_credits", "300" );
	
	register_clcmd( "say", "ClCmdSay" );
	register_clcmd( "say_team", "ClCmdSay" );
	
	register_clcmd( "say /depozit", "ClCmdSayDepozit" );
	register_clcmd( "say /deposit", "ClCmdSayDepozit" );
	register_clcmd( "say_team /depozit", "ClCmdSayDepozit" );
	register_clcmd( "say_team /deposit", "ClCmdSayDepozit" );
	
	register_clcmd( "say /retrage", "ClCmdSayRetrage" );
	register_clcmd( "say /withdraw", "ClCmdSayRetrage" );
	register_clcmd( "say_team /retrage", "ClCmdSayRetrage" );
	register_clcmd( "say_team /withdraw", "ClCmdSayRetrage" );
	
	register_clcmd( "fcs_credite", "ClCmdCredits" );
	register_clcmd( "fcs_credits", "ClCmdCredits" );
	
	register_clcmd( "amx_give_credits", "ClCmdGiveCredits" );
	register_clcmd( "amx_take_credits", "ClCmdTakeCredits" );
	
	register_forward( FM_ClientUserInfoChanged, "Fwd_ClientUserInfoChanged" );
	
	iVault  =  nvault_open(  "FurienCreditsSystem"  );
	
	if(  iVault  ==  INVALID_HANDLE  )
	{
		set_fail_state(  "nValut returned invalid handle!"  );
	}

}

public plugin_natives()
{
	
	register_library( "fcs" );
	register_native( "fcs_get_user_credits", "_fcs_get_user_credits" );
	register_native( "fcs_set_user_credits", "_fcs_set_user_credits" );
	
}

public _fcs_get_user_credits( iPlugin, iParams )
{
	return g_iUserCredits[  get_param( 1 )  ];
}

public _fcs_set_user_credits(  iPlugin, iParams  )
{
	new id = get_param( 1 );
	g_iUserCredits[ id ] = max( 0, get_param( 2 ) );
	SaveCredits( id );
	return g_iUserCredits[ id ];
}

public client_authorized( id )
{
	if( is_user_bot( id ) )
		return 0;
	
	get_user_name( id, g_szName[ id ], sizeof ( g_szName[] ) -1 );
	LoadCredits( id );
	
	return 0;
	
}

public client_disconnect( id )
{
	if( is_user_bot( id ) )
		return 0;
		
	SaveCredits( id );
	
	return 0;
	
}

public ClCmdSay( id )
{
	static szArgs[192];
	read_args( szArgs, sizeof ( szArgs ) -1 );
	
	if( !szArgs[ 0 ] )
		return 0;
	
	new szCommand[ 15 ];
	remove_quotes( szArgs );
	
	if( equal( szArgs, "/credite", strlen( "/credite" ) )
		|| equal( szArgs, "/credits", strlen( "/credits" ) ) )
	{
		replace( szArgs, sizeof ( szArgs ) -1, "/", "" );
		formatex( szCommand, sizeof ( szCommand ) -1, "fcs_%s", szArgs );
		client_cmd( id, szCommand );
		return 1;
	}
	
	return 0;
}

public ClCmdCredits( id )
{
	if( !is_user_connected( id ) )
		return 1;
		
	new szArg[ 32 ];
    	read_argv( 1, szArg, sizeof ( szArg ) -1 );

	if( equal( szArg, "" ) ) 
	{
		
		ColorChat( id, RED, "^x04%s^x01 Ai^x03 %i^x01 credite.", g_szTag, g_iUserCredits[ id ] );
		return 1;
	}
	
    	new iPlayer = cmd_target( id, szArg, 8 );
    	if( !iPlayer || !is_user_connected( iPlayer ) )
	{
		ColorChat( id, RED,"^x04%s^x01 Jucatorul specificat nu a fost gasit!", g_szTag, szArg );
		return 1;
	}

	new szName[ 32 ];
	get_user_name( iPlayer, szName, sizeof ( szName ) -1 );
	ColorChat( id, RED,"^x04%s^x01 Jucatorul^x03 %s^x01 are^x03 %i^x01 credit%s", g_szTag, szName, g_iUserCredits[ iPlayer ], g_iUserCredits[ iPlayer ] == 1 ? "." : "e." );
	
	return 1;
	
}

public ClCmdSayDepozit( id)
{
	
	if( !is_user_connected( id ) )
		return 1;
		
	new iTeam = get_user_team( id );
	
	if( 1 <= iTeam <= 2 )
	{
		new iMoney = cs_get_user_money( id );
		if( iMoney >= 16000 )
		{
			
			ColorChat( id, RED, "^x04%s^x01 Ai depozitat^x03 16000$^x01 si ai primit^x03 1^x01 credit.", g_szTag );
			cs_set_user_money( id, 0 );
			g_iUserCredits[ id ] += 1;
			
			SaveCredits( id );
			return 1;
		}
		else
		{
			ColorChat( id, RED, "^x04%s^x01 Iti trebuie^x03 16000$^x01 pentru a putea depozita.", g_szTag );
			return 1;
		}
	}
	
	return 1;

}

public ClCmdSayRetrage( id)
{
	
	new iTeam = get_user_team( id );
	
	if( 1 <= iTeam <= 2 )
	{
		
		if( g_iUserCredits[ id ] > 0 )
		{
			new iMoney = cs_get_user_money( id );
			
			ColorChat( id, RED, "^x04%s^x01 Ai retras^x03 1^x01 credit si, ai primi^x03 16000$^x01.", g_szTag );
			cs_set_user_money( id, iMoney + 16000 );
			
			g_iUserCredits[ id ] -=1;
			SaveCredits( id );
			
			if( ( iMoney + 16000 ) > 16000 )
			{
				ColorChat( id, RED, "^x04%s^x03 ATENTIE^x01, ai^x03 %i$^x01 !", g_szTag, iMoney + 16000 );
				ColorChat( id, RED, "^x04%s^x01 La spawn, vei pierde tot ce depaseste suma de^x03 16000$^x01.", g_szTag );
				return 1;
			}
		}
		else
		{
			ColorChat(id, RED, "^x04%s^x03 NU^x01 ai ce sa retragi, ai^x03 0^x01 credite.", g_szTag );
			return 1;
		}
		
	}
	
	return 1;

}

public ClCmdGiveCredits( id )
{
	
	if( !( get_user_flags( id ) & read_flags( g_szGiveCreditsFlag ) ) )
	{
		client_cmd( id, "echo NU ai acces la aceasta comanda!" );
		return 1;
	}
	
	new szFirstArg[ 32 ], szSecondArg[ 10 ];
	
	read_argv( 1, szFirstArg, sizeof ( szFirstArg ) -1 );
	read_argv( 2, szSecondArg, sizeof ( szSecondArg ) -1 );
	
	if( equal( szFirstArg, "" ) || equal( szSecondArg, "" ) )
	{
		client_cmd( id, "echo amx_give_credits < nume/ @ALL/ @T/ @CT > < credite >" );
		return 1;
	}
	
	new iPlayers[ 32 ];
	new iPlayersNum;
	
	new iCredits = str_to_num( szSecondArg );
	if( iCredits <= 0 )
	{
		client_cmd( id, "echo Valoare creditelor trebuie sa fie mai mare decat 0!" );
		return 1;
	}
	
	if( szFirstArg[ 0 ] == '@' )
	{
		
		switch ( szFirstArg[ 1 ] )
		{
			case 'A':
			{
				if( equal( szFirstArg, "@ALL" ) )
				{
					
					get_players( iPlayers, iPlayersNum, "ch" );
					for( new i = 0; i < iPlayersNum ; i++ )
						g_iUserCredits[ iPlayers[ i ] ] += iCredits;
						
					new szName[ 32 ];
					get_user_name( id, szName, sizeof ( szName ) -1 );
					ColorChat( 0, RED, "^x04^%s^x01 Adminul^x03 %s^x01 le-a dat^x03 %i^x01 credite tuturor jucatorilor!", g_szTag, szName, iCredits );
					return 1;
				}
			}
			
			case 'T':
			{
				if( equal( szFirstArg, "@T" ) )
				{
					
					get_players( iPlayers, iPlayersNum, "ceh", "TERRORIST" );
					if( iPlayersNum == 0 )
					{
						client_cmd( id, "echo NU se afla niciun jucator in aceasta echipa!" );
						return 1;
					}
					for( new i = 0; i < iPlayersNum ; i++ )
						g_iUserCredits[ iPlayers[ i ] ] += iCredits;
						
					new szName[ 32 ];
					get_user_name( id, szName, sizeof ( szName ) -1 );
					ColorChat( 0, RED, "^x04^%s^x01 Adminul^x03 %s^x01 le-a dat^x03 %i^x01 credite jucatorilor de la^x03 TERO^x01!", g_szTag, szName, iCredits );
					return 1;
				}
			}
			
			case 'C':
			{
				if( equal( szFirstArg, "@CT" ) )
				{
					
					get_players( iPlayers, iPlayersNum, "ceh", "CT" );
					if( iPlayersNum == 0 )
					{
						client_cmd( id, "echo NU se afla niciun jucator in aceasta echipa!" );
						return 1;
					}
					for( new i = 0; i < iPlayersNum ; i++ )
						g_iUserCredits[ iPlayers[ i ] ] += iCredits;
						
					new szName[ 32 ];
					get_user_name( id, szName, sizeof ( szName ) -1 );
					ColorChat( 0, RED, "^x04^%s^x01 Adminul^x03 %s^x01 le-a dat^x03 %i^x01 credite jucatorilor de la^x03 CT^x01!", g_szTag, szName, iCredits );
					return 1;
				}
			}
		}
	}
		
	new iPlayer = cmd_target( id, szFirstArg, 8 );
	if( !iPlayer )
	{
		client_cmd( id, "echo Jucatorul %s nu a fost gasit!", szFirstArg );
		return 1;
	}
	
	g_iUserCredits[ iPlayer ] += iCredits;
	
	new szName[ 32 ], _szName[ 32 ];
	get_user_name( id, szName, sizeof ( szName ) -1 );
	get_user_name( id, _szName, sizeof ( _szName ) -1 );
	
	ColorChat( 0, RED, "^x04%s^x01 Adminul^x03 %s^x01 i-a dat^x03 %i^x01 credite lui^x03 %s^x01.", g_szTag, szName, iCredits, _szName );
	
	return 1;
	
	
}

public ClCmdTakeCredits( id )
{
	
	if( !( get_user_flags( id ) & read_flags( g_szGiveCreditsFlag ) ) )
	{
		client_cmd( id, "echo NU ai acces la aceasta comanda!" );
		return 1;
	}
	
	new szFirstArg[ 32 ], szSecondArg[ 10 ];
	
	read_argv( 1, szFirstArg, sizeof ( szFirstArg ) -1 );
	read_argv( 2, szSecondArg, sizeof ( szSecondArg ) -1 );
	
	if( equal( szFirstArg, "" ) || equal( szSecondArg, "" ) )
	{
		client_cmd( id, "echo amx_take_credits < nume > < credite >" );
		return 1;
	}
	
	new iCredits = str_to_num( szSecondArg );
	if( iCredits <= 0 )
	{
		client_cmd( id, "echo Valoare creditelor trebuie sa fie mai mare decat 0!" );
		return 1;
	}
			
	new iPlayer = cmd_target( id, szFirstArg, 8 );
	if( !iPlayer )
	{
		client_cmd( id, "echo Jucatorul %s nu a fost gasit!", szFirstArg );
		return 1;
	}
	
	if( g_iUserCredits[ iPlayer ] < iCredits )
	{
		client_cmd( id, "echo Jucatorul %s nu are atatea credite!Are doar %i", szFirstArg, g_iUserCredits[ iPlayer ] );
		return 1;
	}
	
	g_iUserCredits[ iPlayer ] -= iCredits;
	
	new szName[ 32 ], _szName[ 32 ];
	get_user_name( id, szName, sizeof ( szName ) -1 );
	get_user_name( id, _szName, sizeof ( _szName ) -1 );
	
	ColorChat( 0, RED, "^x04%s^x01 Adminul^x03 %s^x01 i-a sters^x03 %i^x01 credite lui^x03 %s^x01.", g_szTag, szName, iCredits, _szName );
	
	return 1;
	
	
}

public Fwd_ClientUserInfoChanged( id, szBuffer )
{
	if ( !is_user_connected( id ) ) 
		return FMRES_IGNORED;
	
	static szNewName[ 32 ];
	
	engfunc( EngFunc_InfoKeyValue, szBuffer, "name", szNewName, sizeof ( szNewName ) -1 );
	
	if ( equal( szNewName, g_szName[ id ] ) )
		return FMRES_IGNORED;
	
	SaveCredits(  id  );
	
	ColorChat( id, RED, "^x04%s^x01 Tocmai ti-ai schimbat numele din^x03 %s^x01 in^x03 %s^x01 !", g_szTag, g_szName[ id ], szNewName );
	ColorChat( id, RED, "^x04%s^x01 Am salvat^x03 %i^x01 credite pe numele^x03 %s^x01 !", g_szTag, g_iUserCredits[ id ], g_szName[ id ] );
	
	copy( g_szName[ id ], sizeof ( g_szName[] ) -1, szNewName );
	LoadCredits( id );
	
	ColorChat( id, RED, "^x04%s^x01 Am incarcat^x03 %i^x01 credite de pe noul nume (^x03 %s^x01 ) !", g_szTag, g_iUserCredits[ id ], g_szName[ id ] );
	
	return FMRES_IGNORED;
}


public LoadCredits( id )
{
	static szData[ 256 ],  iTimestamp;
	
	if(  nvault_lookup( iVault, g_szName[ id ], szData, sizeof ( szData ) -1, iTimestamp ) )
	{
		static szCredits[ 15 ];
		parse( szData, szCredits, sizeof ( szCredits ) -1 );
		g_iUserCredits[ id ] = str_to_num( szCredits );
		return;
	}
	else
	{
		g_iUserCredits[ id ] = get_pcvar_num( g_iCvarEntry );
	}
	
}


public SaveCredits(  id  )
{
	
	static szData[ 256 ];
	formatex( szData, sizeof ( szData ) -1, "%i", g_iUserCredits[ id ] );
	
	nvault_set( iVault, g_szName[ id ], szData );
}

public plugin_end( )
{
	new iDays = get_pcvar_num( g_iCvarPruneDays );
	if( iDays > 0 )
	{
		nvault_prune( iVault, 0, get_systime( ) - ( iDays * ONE_DAY_IN_SECONDS ) );
	}
	
	nvault_close( iVault );
}


Multumesc.
ne mai pensionam si noi ?
RoyalServer 2
munir
Membru eXtream
Membru eXtream
Posts: 3193
Joined: 30 Aug 2012, 22:16
Detinator Steam: Da
CS Status: Fost scripter
Detinator server CS: Nu
SteamID: -
Reputatie: Fost super moderator
Restrictie schimbare nume
Nume anterior: falseq, cruyff
Location: Bucuresti
Has thanked: 342 times
Been thanked: 571 times
Contact:

20 Oct 2013, 08:55

Mutat in sectiunea corecta.
Retras
User avatar
Doctor whO? <3
Membru, skill +3
Membru, skill +3
Posts: 1199
Joined: 21 Jun 2013, 12:40
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Reputatie: Fost Membru Club eXtreamCS (doua luni)
Has thanked: 111 times
Been thanked: 76 times
Contact:

20 Oct 2013, 09:02

Poftim:
| Afiseaza codul
#include < amxmodx >
#include < fakemeta >
#include < hamsandwich >
#include < nvault >

#define PLUGIN_NAME      "Life-Shop"
#define PLUGIN_VERSION   "1.0"
#define PLUGIN_AUTHOR   "ExoTiQ"

#define MAXPLAYERS             32
#define MAX_STATS_SAVED         64

#define LIFE_COST               100  // Pretul cand cumperi viata
#define LIFE_SELL               50  // Pretul cand vinzi viata
#define LIFE_LIMIT               5  // Limita maxima vietilor in menu.

new g_Life[ MAXPLAYERS + 1 ]
new gName[ MAXPLAYERS ]
new vKey[ MAX_STATS_SAVED ]
new vData[ MAX_STATS_SAVED ]

native fcs_get_user_credits( id );
native fcs_set_user_credits( id, cantitate );

new gVault

public plugin_init ( )
{
	register_plugin ( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR )
	
	register_event( "DeathMsg", "EV_DeathMsg", "a" )
	register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");
	register_clcmd("say /vieti", "Life_Shop")
	register_clcmd("say /life", "Life_Shop")
}

public client_connect( id )
	load_client_Life( id )

public client_disconnect( id )
	save_client_Life( id )


public EV_DeathMsg() {
	new iVictim = read_data( 2 );
	new iTeam = get_user_team( iVictim );
	new iKiller = read_data( 1 );
	
	if( iKiller != iVictim && get_user_team(iKiller) != iTeam ) {
		Life_Shop( iVictim )
	}
	
}
public Life_Shop( id ) 
{
	new szText[ 1024 char ];
	
	formatex( szText, charsmax( szText ), "\yAveti\w: \r%d\y Credite^nAveti\w: \r%d\y vieti" ,fcs_get_user_credits(id) , g_Life[id] );
	
	new menu = menu_create( szText, "Life_handler" );
	
	formatex( szText, charsmax( szText ), "Cumpara 1 viata \y-  \w%d\y Credite" ,LIFE_COST);
	menu_additem( menu, szText, "1", 0 );
	
	
	formatex( szText, charsmax( szText ), "Vinde 1 viata \y+ \w%d\y Credite" ,LIFE_SELL);
	menu_additem( menu, szText, "2", 0 );
	
	formatex( szText, charsmax( szText ), "Foloseste \y- \r1\w Viata" );
	menu_additem( menu, szText, "3", 0 );
	
	menu_setprop(menu, MPROP_EXITNAME, "Iesire")
	
	menu_display(id, menu, 0)
}

public Life_handler (id , menu , item ) {
	
	if (item == MENU_EXIT)
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	
	new s_Data[6], s_Name[64], i_Access, i_Callback
	
	menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
	
	new i_Key = str_to_num(s_Data)
	
	
	new bani = fcs_get_user_credits(id)
	
	switch(i_Key)
	{
		case 1:
		{
			if (bani < LIFE_COST)
			{
				Color_Print(id,  "!g[Life-Menu] !yNu ai destui bani pentru a cumpara !gviata." )            
				return PLUGIN_HANDLED
			}
			
			if ( g_Life[id] >= LIFE_LIMIT )
			{
				Color_Print(id,  "!g[Life-Menu] !yAi ajuns la limita !gmaxima." )
				return PLUGIN_HANDLED
			}
			
			Color_Print(id,  "!g[Life-Menu] !yAi cumparat !g1 Viata")
			
			g_Life[id] += 1
			
			fcs_set_user_credits(id, bani - LIFE_COST)
			Life_Shop( id ) 
		}
		case 2:
		{
			if ( g_Life[id] == 0 )
			{
				Color_Print(id,  "!g[Life-Menu] !yNu ai nici o !gviata.")
				return PLUGIN_HANDLED
			}
			
			Color_Print(id,  "!g[Life-Menu] !yAi vandut !g1 Viata.")
			
			g_Life[id] -= 1
			
			fcs_set_user_credits(id, bani + LIFE_SELL)
			Life_Shop( id ) 
		}
		case 3:
		{
			if ( is_user_alive( id ) )
			{
				Color_Print(id,  "!g[Life-Menu] !yTrebuie sa fii !gmort !y, pentru a folosi viata.")
				return PLUGIN_HANDLED
			}
			
			if ( g_Life[id] == 0 )
			{
				Color_Print(id,  "!g[Life-Menu] !yNu ai nici o !gviata.")
				return PLUGIN_HANDLED
			}
			
			g_Life[id] -= 2
			
			Color_Print(id,  "!g[Life-Menu] !yAi folosit !g1 viata si ai primit !grespawn.")
			
			ExecuteHam(Ham_CS_RoundRespawn, id)
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}
stock save_client_Life( index )
{
	gVault = nvault_open( "Life_Save" )
	
	if( gVault == INVALID_HANDLE )
	{
		set_fail_state( "[Life-Shop] nValut ERROR: =-> Invalid-Handle" )
	}
	
	get_user_name( index, gName, charsmax( gName ) )
	//get_user_name(index,gName,32);
	
	formatex( vKey, charsmax( vKey ), "%sLife",gName )
	formatex( vData, charsmax( vData ), "%d", g_Life[ index ] )
	nvault_set( gVault, vKey, vData )
	nvault_close( gVault )
}

stock load_client_Life( index )
{
	gVault = nvault_open( "Life_Save" )
	
	if( gVault == INVALID_HANDLE )
	{
		set_fail_state( "[Life-Shop] nValut ERROR: =-> Invalid-Handle" )
	}
	
	get_user_name( index, gName, charsmax( gName ) )
	//get_user_name(index,gName,32);
	
	formatex( vKey, charsmax( vKey ), "%sLife",gName )
	g_Life[ index ] = nvault_get( gVault, vKey )
	nvault_close( gVault )
}

public fwClientUserInfoChanged(id, buffer) {
	if (!is_user_connected(id)) {
		return FMRES_IGNORED;
	}
	static val[32];
	static name[32];
	get_user_name(id, name, 31);
	engfunc(EngFunc_InfoKeyValue, buffer, "name", val, sizeof val- 1);
	if (equal(val, name)) {
		return FMRES_IGNORED;
	}
	engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name);
	Color_Print(id,  "!g[Life-Menu] !teamNU este permisa schimbarea nick-ului pe server !")
	console_print(id,"NU este permisa schimbarea nick-ului pe server !");
	return PLUGIN_HANDLED;
}

stock Color_Print(const id, const input[], any:...)
{
	new count = 1, players[32]
	static msg[191]
	vformat(msg, 190, input, 3)
	
	replace_all(msg, 190, "!g", "^4") // Green Color
	replace_all(msg, 190, "!y", "^1") // Default Color
	replace_all(msg, 190, "!team", "^3") // Team Color
	
	if (id) players[0] = id; else get_players(players, count, "ch")
	{    
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players)
				write_byte(players);
				write_string(msg);
				message_end();
			}
		}
	}
}
User avatar
duduftw
Utilizator neserios
Utilizator neserios
Posts: 1936
Joined: 19 Dec 2012, 20:30
Detinator Steam: Da
CS Status: sdd
SteamID: duduftw
Reputatie: Utilizator neserios
Location: Constanta
Has thanked: 97 times
Been thanked: 57 times

20 Oct 2013, 09:23

Spre surprinderea mea chiar a mers.
Ai un multumesc .
rezolvat.
ne mai pensionam si noi ?
DaNe1
Membru, skill 0
Membru, skill 0
Posts: 34
Joined: 19 Oct 2013, 16:07
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Has thanked: 6 times
Been thanked: 2 times
Contact:

20 Oct 2013, 12:41

duduftw wrote:Spre surprinderea mea chiar a mers.
Ai un multumesc .
rezolvat.
1.Dudu stai lin ca nu e facut de el !
2.Daca dadeai un search, il gaseai pe forum, postat si pe credite !
Doctore daca te intreb ce face o functie din acel life menu habar nu ai, cauti pe net :))
User avatar
CsN^ ;x
Membru eXtream
Membru eXtream
Posts: 3560
Joined: 02 Apr 2012, 16:58
Detinator Steam: Nu
CS Status: Retras din domeniul Counter-Strike
Reputatie: Fost moderator
Location: Bucuresti
Has thanked: 797 times
Been thanked: 607 times

20 Oct 2013, 12:43

DaNe1 wrote:
duduftw wrote:Spre surprinderea mea chiar a mers.
Ai un multumesc .
rezolvat.
1.Dudu stai lin ca nu e facut de el !
2.Daca dadeai un search, il gaseai pe forum, postat si pe credite !
Doctore daca te intreb ce face o functie din acel life menu habar nu ai, cauti pe net :))
Pai man a zis el ca e facut de el :-/
Lu dudu ia fost lene sa caute pe net asa ca doctoru nu ia fost si a cautat pentru el :)
Addons HNS level,gravity,xp DOWNLOAD ( e țeapă)
https://5filme.com/ - un simplu site de filme pentru timpul liber
User avatar
Doctor whO? <3
Membru, skill +3
Membru, skill +3
Posts: 1199
Joined: 21 Jun 2013, 12:40
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Reputatie: Fost Membru Club eXtreamCS (doua luni)
Has thanked: 111 times
Been thanked: 76 times
Contact:

20 Oct 2013, 12:58

DaNe1?
Ceva impotriva ca l-am postat?
Nu e facut de mne :)
Dar nici de tne, daca il faci te stresezi de mori.
Te salut din mers :).
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 18 guests