just changed so medic sets to max health instead of a static number
This commit is contained in:
		
							parent
							
								
									a14df3e10d
								
							
						
					
					
						commit
						0cb6d1c977
					
				
							
								
								
									
										171
									
								
								ZombieRiot/scripting/Medic.sp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										171
									
								
								ZombieRiot/scripting/Medic.sp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,171 @@
 | 
				
			|||||||
 | 
					#include <sourcemod>
 | 
				
			||||||
 | 
					#include <sdktools>
 | 
				
			||||||
 | 
					//smrpg basing !medic on the health perk.
 | 
				
			||||||
 | 
					#tryinclude <smrpg_health>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma semicolon 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PLUGIN_VERSION 	"1.0"
 | 
				
			||||||
 | 
					#define PLUGIN_AUTHOR	"tuty"
 | 
				
			||||||
 | 
					#tryinclude <smrpg_health>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SOUND_FILE	"misc/medic.wav"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					new Handle:gPluginEnabled = INVALID_HANDLE;
 | 
				
			||||||
 | 
					new Handle:gMinHealth = INVALID_HANDLE;
 | 
				
			||||||
 | 
					new Handle:gMedicCost = INVALID_HANDLE;
 | 
				
			||||||
 | 
					new Handle:gShowInChat = INVALID_HANDLE;
 | 
				
			||||||
 | 
					new Handle:gMaxTimeUse = INVALID_HANDLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					new gPlayerMoney;
 | 
				
			||||||
 | 
					new gUsedMedic[ 33 ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Plugin:myinfo = 
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						name = "CSS Medic",
 | 
				
			||||||
 | 
						author = PLUGIN_AUTHOR,
 | 
				
			||||||
 | 
						description = "You can call a medic.",
 | 
				
			||||||
 | 
						version = PLUGIN_VERSION,
 | 
				
			||||||
 | 
						url = "www.ligs.us"
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					public OnPluginStart()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						HookEvent( "player_spawn", Event_PlayerSpawn );
 | 
				
			||||||
 | 
						RegConsoleCmd( "say", Command_Medic );
 | 
				
			||||||
 | 
						RegConsoleCmd( "say_team", Command_Medic );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						CreateConVar( "cssmedic_version", PLUGIN_VERSION, "CSS Medic Version", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_REPLICATED | FCVAR_NOTIFY );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						gPluginEnabled = CreateConVar( "css_medic", "1" );
 | 
				
			||||||
 | 
						gMinHealth = CreateConVar( "css_medic_minhealth", "99" );
 | 
				
			||||||
 | 
						gMedicCost = CreateConVar( "css_medic_cost", "2000" );
 | 
				
			||||||
 | 
						gShowInChat = CreateConVar( "css_medic_showcall", "1" );
 | 
				
			||||||
 | 
						gMaxTimeUse = CreateConVar( "css_medic_maxuse", "1" );
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						gPlayerMoney = FindSendPropOffs( "CCSPlayer", "m_iAccount" );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					public OnClientConnected( id )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						gUsedMedic[ id ] = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					public OnClientDisconnect( id )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						gUsedMedic[ id ] = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					public OnMapStart()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						decl String:MedicSound[ 100 ];
 | 
				
			||||||
 | 
						FormatEx( MedicSound, sizeof( MedicSound ) - 1, "sound/%s", SOUND_FILE );
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						if( FileExists( MedicSound )  )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							AddFileToDownloadsTable( MedicSound );
 | 
				
			||||||
 | 
							PrecacheSound( SOUND_FILE, true );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					public Action:Event_PlayerSpawn( Handle:event, const String:name[], bool:dontBroadcast )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if( GetConVarInt( gPluginEnabled ) == 1 )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							new id = GetClientOfUserId( GetEventInt( event, "userid" ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							gUsedMedic[ id ] = 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					public Action:Command_Medic( id, args )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    decl String:Said[ 128 ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    GetCmdArgString( Said, sizeof( Said ) - 1 );
 | 
				
			||||||
 | 
					    StripQuotes( Said );
 | 
				
			||||||
 | 
					    TrimString( Said );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if( StrEqual( Said, "!medic" ) || StrEqual( Said, "!doctor" ) )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if( GetConVarInt( gPluginEnabled ) == 0 )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            PrintToChat( id, "\x03[CSS Medic] \x01Sorry, you can't call a \x04Medic\x01 !" );
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            return Plugin_Continue;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        if( !IsPlayerAlive( id ) )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            PrintToChat( id, "\x03[CSS Medic] \x01You can't call \x04Medic \x01while you are dead!" );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					            return Plugin_Continue;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        new maxtime = GetConVarInt( gMaxTimeUse );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if( gUsedMedic[ id ] >= maxtime )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            PrintToChat( id, "\x03[CSS Medic] \x01You can call \x04Medic \x01only \x03%d \x01times per round!", maxtime );
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            return Plugin_Continue;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        new money = GetClientMoney( id );
 | 
				
			||||||
 | 
					        new cost = GetConVarInt( gMedicCost );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if( money < cost )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            PrintToChat( id, "\x03[CSS Medic] \x01You don't have enough money to call a \x04Medic\x01 ! You need %d$", cost );
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            return Plugin_Continue;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if( GetClientHealth( id ) >= GetConVarInt( gMinHealth ) )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            PrintToChat( id, "\x03[CSS Medic] \x01Hey dude! You have enough health, and you don't need a \x04Medic \x01! Go back to fight!" );
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            return Plugin_Continue;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        gUsedMedic[ id ]++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //overwritting the cvar by using the health perk from smrpg. so it will always just restore max health.
 | 
				
			||||||
 | 
					        SetEntProp( id, Prop_Data, "m_iHealth",  SMRPG_Health_GetClientMaxHealth(id) );
 | 
				
			||||||
 | 
					        SetClientMoney( id, money - cost );
 | 
				
			||||||
 | 
					        PrintToChat( id, "\x03[CSS Medic] \x01Successfully called a \x04Medic\x01 ! You are now healed." );
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        if( GetConVarInt( gShowInChat ) != 0 )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            decl String:Name[ 32 ];
 | 
				
			||||||
 | 
					            GetClientName( id, Name, sizeof( Name ) - 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            PrintToChatAll( "\x03%s \x01(CALLED): \x04Medic!", Name );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        new Float:fOrigin[ 3 ];
 | 
				
			||||||
 | 
					        GetClientAbsOrigin( id, Float:fOrigin );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        EmitAmbientSound( SOUND_FILE, fOrigin, id, SNDLEVEL_CONVO );
 | 
				
			||||||
 | 
					        AttachClientIcon( id );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return Plugin_Continue;
 | 
				
			||||||
 | 
					}	
 | 
				
			||||||
 | 
					stock SetClientMoney( index, money )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if( gPlayerMoney != -1 )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							SetEntData( index, gPlayerMoney, money );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					stock GetClientMoney( index )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if( gPlayerMoney != -1 )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return GetEntData( index, gPlayerMoney );
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					stock AttachClientIcon( index )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						TE_Start( "RadioIcon" );
 | 
				
			||||||
 | 
						TE_WriteNum( "m_iAttachToClient", index );
 | 
				
			||||||
 | 
						TE_SendToAll();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user