Raised This Month: $51 Target: $400
 12% 

Prop Spawn help


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
tedoficialsteam
Junior Member
Join Date: Mar 2014
Old 03-04-2014 , 20:42   Prop Spawn help
Reply With Quote #1

Hi, i'm trying to make a plugin that spawns chairs at my aim. everything works fine, but the deal is to remove only one with my aim, not all the chairs. can someone help me?

Code:
#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <sdktools_sound>
#include <smlib>
#include <sdkhooks>


#define PLUGIN_VERSION "v1.2"
#define MAX_FILE_LEN 80

new Handle:g_CvarSoundName = INVALID_HANDLE;
new Handle:cvarIngameMenu = INVALID_HANDLE;

new String:g_soundName[MAX_FILE_LEN];

public Plugin:myinfo =
{
	name = "Cadeira",
	author = "Dk--",
	description = "Spawn Props",
	version = PLUGIN_VERSION,
};

public OnPluginStart()
{
		g_CvarSoundName = CreateConVar("sm_join_sound", "music/cadeira/cadeira.mp3", "The sound to play");
		cvarIngameMenu = CreateConVar("cadeira_ingamemenu", "1", "Enabled menu", FCVAR_NONE, true, 0.0, true, 1.0);
        RegAdminCmd("sm_cadeiras", Cadeira, ADMFLAG_GENERIC);
		LoadTranslations("common.phrases");
}

public OnConfigsExecuted()
{
    GetConVarString(g_CvarSoundName, g_soundName, sizeof(g_soundName)); //Gets the cvar value from g_CvarSoundName in OnPluginStart and puts it inside the string g_soundName
    decl String:buffer[MAX_FILE_LEN]; //Creates a string called buffer
    PrecacheSound(g_soundName, true); //Precaches the sound
    Format(buffer, sizeof(buffer), "sound/%s", g_soundName); //Formats the buffer string with the directory to the sound file
    AddFileToDownloadsTable(buffer); //Adds buffer (The sound file) to the downloads table
}

public Action:Cadeira(client,args)
{ 
		if(!GetConVarBool(cvarIngameMenu))
		return;
		{
		if(client == 0)
		{
			PrintToServer("%t","Command is in-game only");
			return;
		}
			DID2(client);
		PrintToConsole(client, "Menu de cadeiras esta aberto");
		}
}  

public bool:RayDontHitSelf(entity, contentsMask, any:data) 
{ 
	return (entity != data); 
} 

public OnMapStart()
{
	PrecacheModel("models/props/gg_tibet/modernchair.mdl");
	PrecacheSound("music/cadeira/cadeira.mp3");
}
  


stock FindEntityByClassname2(startEnt, const String:classname[])
{

	while (startEnt > -1 && !IsValidEntity(startEnt)) startEnt--;
 	
	return FindEntityByClassname(startEnt, classname);
	
}

public Action:DID(clientId) 
{
	new Handle:menu = CreateMenu(DIDMenuHandler);
	SetMenuTitle(menu, "Começar ou Pausar musica");

	AddMenuItem(menu, "option1", "Play");
	AddMenuItem(menu, "option2", "Stop");
	SetMenuExitButton(menu, true);
	DisplayMenu(menu, clientId, 15);
	
	return Plugin_Handled;
}

public DIDMenuHandler(Handle:menu, MenuAction:action, client, itemNum) 
{
	if ( action == MenuAction_Select ) 
	{
		new String:info[32];
		
		GetMenuItem(menu, itemNum, info, sizeof(info));

		if ( strcmp(info,"option1") == 0 ) 
		{
			{
				DID(client);
				EmitSoundToAll(g_soundName, _, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, SNDVOL_NORMAL, SNDPITCH_NORMAL);
				PrintToChatAll("Iniciando Musica");
			}
			
		}
		
		else if ( strcmp(info,"option2") == 0 ) 
		{
			{
				DID(client);
				for (new i = 1; i < GetMaxClients(); i++)
				{
					StopSoundPerm(i, g_soundName);
					AddNormalSoundHook(SoundHook);
				}
				PrintToChatAll("Pausando Musica");
			}
			
		}
	}
}

public Action:SoundHook(clients[64], &numClients, String:sound[PLATFORM_MAX_PATH], &Ent, &channel, &Float:volume, &level, &pitch, &flags)
{
    if (StrEqual(sound, "g_soundName", false)) return Plugin_Stop;
    return Plugin_Continue;
}  



stock StopSoundPerm( client, String:sound[ ] )
{
    StopSound( client, SNDCHAN_AUTO, sound );
    StopSound( client, SNDCHAN_WEAPON, sound );
    StopSound( client, SNDCHAN_VOICE, sound );
    StopSound( client, SNDCHAN_ITEM, sound );
    StopSound( client, SNDCHAN_BODY, sound);
    StopSound( client, SNDCHAN_STREAM, sound );
    StopSound( client, SNDCHAN_VOICE_BASE, sound );
    StopSound( client, SNDCHAN_USER_BASE, sound );
}  

public Action:DID2(clientId) 
{
	new Handle:menu2 = CreateMenu(DID2MenuHandler);
	SetMenuTitle(menu2, "Crie sua cadeira");

	AddMenuItem(menu2, "option1", "Criar cadeira");
	AddMenuItem(menu2, "option3", "Deletar cadeiras");
	AddMenuItem(menu2, "option2", "Menu de Musica");
	SetMenuExitButton(menu2, true);
	DisplayMenu(menu2, clientId, 15);
	
	return Plugin_Handled;
}

public DID2MenuHandler(Handle:menu2, MenuAction:action, client, itemNum) 
{
	if ( action == MenuAction_Select ) 
	{
		new String:info[32];
		
		GetMenuItem(menu2, itemNum, info, sizeof(info));

		if ( strcmp(info,"option1") == 0 ) 
		{
				DID2(client);
				decl Float:start[3], Float:angle[3], Float:end[3], Float:normal[3], Float:fOrigin[3];
				GetClientEyePosition(client, start); 
				GetClientEyeAngles(client, angle); 
		
				TR_TraceRayFilter(start, angle, MASK_SOLID, RayType_Infinite, RayDontHitSelf, client); 
				if (TR_DidHit(INVALID_HANDLE)) 
				{ 
					TR_GetEndPosition(end, INVALID_HANDLE); 
					TR_GetPlaneNormal(INVALID_HANDLE, normal); 
					GetVectorAngles(normal, normal); 
					normal[0] += 90.0; 
			 
					new ent = CreateEntityByName("prop_physics_override"); 
					
					if(ent == -1)
					return Plugin_Handled;
					
					SetEntityModel(ent, "models/props/gg_tibet/modernchair.mdl");
					DispatchKeyValue(ent, "StartDisabled", "false"); 
					DispatchKeyValue(ent, "physdamagescale", "50.0");
					DispatchKeyValue(ent, "spawnflags", "8"); 
					DispatchKeyValue(ent, "Solid", "6"); 
					DispatchKeyValue(ent, "classname", "models/props/gg_tibet/modernchair.mdl");
					DispatchSpawn(ent); 
					SetEntPropEnt(ent, Prop_Send, "m_hOwnerEntity", client);
					SetEntProp(ent, Prop_Data, "m_iHealth", 50);
					
					if ( DispatchSpawn(ent) ) 
					{
						SetEntPropEnt(ent, Prop_Send, "m_hEffectEntity", client);
						TeleportEntity(ent, end, normal, NULL_VECTOR);  
						SetEntProp(ent, Prop_Send, "m_usSolidFlags",  152);
						SetEntProp(ent, Prop_Send, "m_CollisionGroup", 8);
						AcceptEntityInput(ent, "DisableMotion");
						
						return ent;
					}
	
					return -1;

				} 

				PrintToChat(client, "\x04[\x04Brazuka Gamers\x01] \x01Voce criou uma cadeira ^^"); // english
		}
		
		else if ( strcmp(info,"option3") == 0 ) 
		{
			//For delete only my prop!!
			
			//This delete all created
			new index = -1;
			while ((index = FindEntityByClassname2(index, "prop_physics_override")) != -1)
			AcceptEntityInput(index, "Kill");
			return Plugin_Handled;
		}
		
		else if ( strcmp(info,"option2") == 0 ) 
		{
			DID(client);
		}
	}
}
tedoficialsteam is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 13:43.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode