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

Every roun as a greeting


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
XMRX
Junior Member
Join Date: Jul 2017
Old 07-26-2017 , 08:50   Every roun as a greeting
Reply With Quote #1

Can we set this plugin every round as a greeting

Code:
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "CSO Emotion"
#define VERSION "2.3"
#define AUTHOR "Dias"

#define MAX_EMOTION 6
#define BUTTON_HOLDTIME 0.5
#define USE_TYPE 1 // 1 = J Button (Cheer); 2 = Hold R Button

#define TASK_EMOTION 1962
#define TASK_HOLDTIME 1963

new const p_model[] = "models/cso_emotion/cso_emotion2.mdl"
new const v_model[] = "models/cso_emotion/v_cso_emotion_v23.mdl"
new const Resource_Sound[MAX_EMOTION][] = 
{
	"cso_emotion/man_angry.wav",
	"cso_emotion/man_dance.wav",
	"cso_emotion/man_hi.wav",
	"cso_emotion/man_joy.wav",
	"cso_emotion/man_procoke.wav",
	"cso_emotion/man_special.wav"		
}

new Emotion_Name[MAX_EMOTION][] = 
{
	"Merhaba",
	"Kiskirtma",
	"Sevinç",
	"Kizgin",
	"Dans",
	"Ozel"
}

new Float:Emotion_Time[MAX_EMOTION] = 
{
	3.0,
	7.0,
	4.5,
	3.8,
	6.7,
	6.0
}

enum
{
	EMO_HI = 0,
	EMO_PROVOKE,
	EMO_JOY,
	EMO_ANGRY,
	EMO_DANCE,
	EMO_SPECIAL1
}

new g_InDoingEmo[33], g_AnimEnt[33], g_AvtEnt[33], g_OldWeapon[33], g_OldKnifeModel[33][128]
new g_MaxPlayers, g_HoldingButton[33], g_UseType

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_event("HLTV", "event_new_round", "a", "1=0", "2=0")  
	
	register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
	register_event("DeathMsg", "Event_DeathMsg", "a")
	
	register_forward(FM_CmdStart, "fw_CmdStart")
	register_forward(FM_AddToFullPack, "fw_AddToFullPack_Post", 1)
	register_forward(FM_Think, "fw_Think")
	
	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
	
	g_UseType = USE_TYPE
	if(g_UseType == 1) register_clcmd("cheer", "Open_EmoMenu")
	
	g_MaxPlayers = get_maxplayers()
}

public plugin_precache()
{
	engfunc(EngFunc_PrecacheModel, p_model)
	engfunc(EngFunc_PrecacheModel, v_model)
	
	for(new i = 0; i < sizeof(Resource_Sound); i++)
		engfunc(EngFunc_PrecacheSound, Resource_Sound[i])
}

public Event_NewRound()
{
	
	
	
	
	for(new i = 0; i < g_MaxPlayers; i++)
	{
		if(!is_user_connected(i))
			continue
			
		Reset_Var(i)
	}
}

public Event_DeathMsg()
{
	static Victim; Victim = read_data(2)
	Do_Reset_Emotion(Victim)
}

public fw_PlayerSpawn_Post(id)
{
	if(g_UseType == 1)
		client_printc(id, "!g[Zombie WarS!n [J] !gTusuna Basarak!n Duygu !tBelirtin!n")
	else if(g_UseType == 2)
		client_printc(id, "!g[Zombie WarS!n [J] !gTusuna Basarak!n Duygu !tBelirtin!n")
}

public Reset_Var(id)
{
	if(!is_user_connected(id))
		return
		
	if(g_InDoingEmo[id])
	{
		if(get_user_weapon(id) == CSW_KNIFE)
			set_pev(id, pev_viewmodel2, g_OldKnifeModel[id])
	}
		
	if(task_exists(id+TASK_EMOTION)) remove_task(id+TASK_EMOTION)	
		
	Set_Entity_Invisible(id, 0)
	
	if(pev_valid(g_AnimEnt[id])) engfunc(EngFunc_RemoveEntity, g_AnimEnt[id])
	if(pev_valid(g_AvtEnt[id])) engfunc(EngFunc_RemoveEntity, g_AvtEnt[id])
	
	g_InDoingEmo[id] = 0
	g_AnimEnt[id] = g_AvtEnt[id] = 0	
	g_HoldingButton[id] = 0
}

public Open_EmoMenu2(id)
{
	id -= TASK_HOLDTIME
	Open_EmoMenu(id)
}

public Open_EmoMenu(id)
{
	if(!is_user_alive(id))
		return
	if(g_InDoingEmo[id])
		return
		
	static menu, NumberId[6]
	menu = menu_create("Duygu", "MenuHandle_Emo")
	
	for(new i = 0; i < MAX_EMOTION; i++)
	{
		num_to_str(i, NumberId, sizeof(NumberId))
		menu_additem(menu, Emotion_Name[i], NumberId)
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	menu_display(id, menu, 0)	
}

public MenuHandle_Emo(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu)
		return
	}
	if(!is_user_alive(id))
		return
	if(g_InDoingEmo[id])
		return
		
	static Data[6], Name[64], Access, Callback
	menu_item_getinfo(menu, item, Access, Data, charsmax(Data), Name, charsmax(Name), Callback)
	
	static EmoId; EmoId = str_to_num(Data)
	
	if(EmoId >= MAX_EMOTION)
		return
		
	Set_Emotion_Start(id, EmoId)
}

public Set_Emotion_Start(id, EmoId)
{
	g_InDoingEmo[id] = 1
	Set_Entity_Invisible(id, 1)
	
	Create_AvtEnt(id)
	Create_AnimEnt(id)
	
	if(!Check_Avalible(id)) return
	
	Do_Set_Emotion(id, EmoId)
}

public Create_AvtEnt(id)
{
	if(pev_valid(g_AvtEnt[id]))
		return
	
	g_AvtEnt[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))

	if(!pev_valid(g_AvtEnt[id])) 
		return	
	
	static ent; ent = g_AvtEnt[id]
	set_pev(ent, pev_classname, "avatar")
	set_pev(ent, pev_owner, id)
	set_pev(ent, pev_movetype, MOVETYPE_FOLLOW)
	set_pev(ent, pev_solid, SOLID_NOT)

	// Set Model
	static PlayerModel[64]
	fm_cs_get_user_model(id, PlayerModel, sizeof(PlayerModel))
	
	format(PlayerModel, sizeof(PlayerModel), "models/player/%s/%s.mdl", PlayerModel, PlayerModel)
	engfunc(EngFunc_SetModel, g_AvtEnt[id], PlayerModel)	
	
	// Set Avatar
	set_pev(ent, pev_body, pev(id, pev_body))
	set_pev(ent, pev_skin, pev(id, pev_skin))
	
	set_pev(ent, pev_renderamt, pev(id, pev_renderamt))
	static Float:Color[3]; pev(id, pev_rendercolor, Color)
	set_pev(ent, pev_rendercolor, Color)
	set_pev(ent, pev_renderfx, pev(id, pev_renderfx))
	set_pev(ent, pev_rendermode, pev(id, pev_rendermode))
	
	Set_Entity_Invisible(ent, 0)
}

public Create_AnimEnt(id)
{
	if(pev_valid(g_AnimEnt[id]))
		return
			
	g_AnimEnt[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
	
	if(!pev_valid(g_AnimEnt[id])) 
		return
		
	static ent; ent = g_AnimEnt[id]
	set_pev(ent, pev_classname, "AnimEnt")
	set_pev(ent, pev_owner, id)
	set_pev(ent, pev_movetype, MOVETYPE_TOSS)
	
	engfunc(EngFunc_SetModel, ent, p_model)
	engfunc(EngFunc_SetSize, ent, {-16.0, -16.0, 0.0}, {16.0, 16.0, 72.0})
	set_pev(ent, pev_solid, SOLID_BBOX)
	
	engfunc(EngFunc_DropToFloor, ent)
	Set_Entity_Invisible(ent, 0)
	
	set_pev(ent, pev_nextthink, get_gametime() + 0.1)
}

public Check_Avalible(id)
{
	if(!pev_valid(g_AnimEnt[id]) || !pev_valid(g_AvtEnt[id]))
	{
		Do_Reset_Emotion(id)
		return 0
	}
		
	return 1
}

public Do_Set_Emotion(id, EmoId)
{
	// Set Player Emotion
	static Float:Origin[3], Float:Angles[3], Float:Velocity[3]
		
	pev(id, pev_origin, Origin); pev(id, pev_angles, Angles); pev(id, pev_velocity, Velocity)
		
	Origin[2] -= 36.0
	set_pev(g_AnimEnt[id], pev_origin, Origin)
		
	Angles[0] = 0.0; Angles[2] = 0.0
	set_pev(g_AnimEnt[id], pev_angles, Angles)
	set_pev(g_AnimEnt[id], pev_velocity, Velocity)
		
	set_pev(g_AvtEnt[id], pev_aiment, g_AnimEnt[id])
	Set_Entity_Anim(g_AnimEnt[id], EmoId, 1)
	
	// Set Hand Emotion
	g_OldWeapon[id] = get_user_weapon(id)
	fm_give_item(id, "weapon_knife")
	engclient_cmd(id, "weapon_knife")
	
	pev(id, pev_viewmodel2, g_OldKnifeModel[id], 127)
	set_pev(id, pev_viewmodel2, v_model)
	Set_Weapon_Anim(id, EmoId)
	
	static KnifeEnt; KnifeEnt = fm_get_user_weapon_entity(id, CSW_KNIFE)
	if(pev_valid(KnifeEnt)) set_pdata_float(KnifeEnt, 48, Emotion_Time[EmoId], 4)
	
	if(task_exists(id+TASK_EMOTION)) remove_task(id+TASK_EMOTION)
	set_task(Emotion_Time[EmoId], "Reset_Emotion", id+TASK_EMOTION)
}

public Reset_Emotion(id)
{
	id -= TASK_EMOTION
	
	if(!is_user_connected(id))
		return
	if(!g_InDoingEmo[id])
		return
		
	Do_Reset_Emotion(id)
}

public Do_Reset_Emotion(id)
{
	if(!is_user_connected(id))
		return
	if(!g_InDoingEmo[id])
		return
		
	if(task_exists(id+TASK_EMOTION)) remove_task(id+TASK_EMOTION)
	Set_Entity_Invisible(id, 0)
	
	if(pev_valid(g_AnimEnt[id])) engfunc(EngFunc_RemoveEntity, g_AnimEnt[id])
	if(pev_valid(g_AvtEnt[id])) engfunc(EngFunc_RemoveEntity, g_AvtEnt[id])
	
	g_AnimEnt[id] = g_AvtEnt[id] = 0
	
	if(is_user_alive(id))
	{
		if(get_user_weapon(id) == CSW_KNIFE)
			set_pev(id, pev_viewmodel2, g_OldKnifeModel[id])
		
		static MyOldWeapon; MyOldWeapon = g_OldWeapon[id]
		static Classname[64]; get_weaponname(MyOldWeapon, Classname, sizeof(Classname))
		engclient_cmd(id, Classname)
	}
	
	g_InDoingEmo[id] = 0
}

public fw_CmdStart(id, uc_handle, seed)
{
	if(!is_user_alive(id))
		return

	
	if(!g_InDoingEmo[id] && g_UseType == 2)
	{
		static UseButton, UseOldButton
		UseButton = (get_uc(uc_handle, UC_Buttons) & IN_RELOAD)
		UseOldButton = (pev(id, pev_oldbuttons) & IN_RELOAD)
		
		if(UseButton)
		{
			if(!UseOldButton && !g_InDoingEmo[id])
			{
				g_HoldingButton[id] = 1
				set_task(BUTTON_HOLDTIME, "Open_EmoMenu2", id+TASK_HOLDTIME)
			}
		} else {
			if(UseOldButton && g_HoldingButton[id])
			{
				if(task_exists(id+TASK_HOLDTIME)) 
				{
					remove_task(id+TASK_HOLDTIME)
					g_HoldingButton[id] = 0
				}
			}
		}	
		
		return
	}
		
	static CurButton; CurButton = get_uc(uc_handle, UC_Buttons)
	
	if((CurButton & IN_ATTACK) || (CurButton & IN_ATTACK2) || (CurButton & IN_DUCK) || (CurButton & IN_JUMP))
	{
		Do_Reset_Emotion(id)
		return
	}
	
	static Float:Velocity[3], Float:Vector
	pev(id, pev_velocity, Velocity); Vector = vector_length(Velocity)
	
	if(Vector != 0.0)
	{
		Do_Reset_Emotion(id)
		return
	}
	
	/*
	if(get_user_weapon(id) != CSW_KNIFE)
	{
		Do_Reset_Emotion(id)
		return
	}*/
}

public fw_AddToFullPack_Post(es_handle, e , ent, host, hostflags, player, pSet)
{
	if(!is_user_alive(host) && !pev_valid(ent))
		return FMRES_IGNORED
	if(g_AnimEnt[host] != ent)
		return FMRES_IGNORED
			
	set_es(es_handle, ES_Effects, get_es(es_handle, ES_Effects) | EF_NODRAW)
	return FMRES_IGNORED
}

public fw_Think(ent)
{
	if(!pev_valid(ent))
		return
		
	static Classname[64]
	pev(ent, pev_classname, Classname, sizeof(Classname))
	
	if(equal(Classname, "AnimEnt"))
	{
		static id; id = pev(ent, pev_owner)
		if(!is_user_alive(id))
			return
			
		// Set Player Emotion
		static Float:Angles[3], Float:Angles2[3]
		
		pev(id, pev_angles, Angles)
		pev(ent, pev_angles, Angles2)
		
		Angles[0] = 0.0; Angles[2] = 0.0
		
		if(Angles[1] != Angles2[1]) set_pev(ent, pev_angles, Angles)
		set_pev(ent, pev_nextthink, get_gametime() + 0.05)
		
		if(pev(ent, pev_effects) == (pev(ent, pev_effects) | EF_NODRAW)) Set_Entity_Invisible(ent, 0)
	}
}

stock fm_cs_get_user_model(id, Model[], Len)
{
	if(!is_user_connected(id))
		return
		
	engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", Model, Len)
}

stock Set_Entity_Invisible(ent, Invisible = 1)
{
	if(!pev_valid(ent))
		return
		
	set_pev(ent, pev_effects, Invisible == 0 ? pev(ent, pev_effects) & ~EF_NODRAW : pev(ent, pev_effects) | EF_NODRAW)
}

stock Set_Entity_Anim(ent, Anim, ResetFrame)
{
	if(!pev_valid(ent))
		return
		
	set_pev(ent, pev_animtime, get_gametime())
	set_pev(ent, pev_framerate, 1.0)
	set_pev(ent, pev_sequence, Anim)
	if(ResetFrame) set_pev(ent, pev_frame, 0)
}


stock Set_Weapon_Anim(id, Anim)
{
	if(!is_user_alive(id))
		return
		
	set_pev(id, pev_weaponanim, Anim)

	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
	write_byte(Anim)
	write_byte(pev(id, pev_body))
	message_end()
}

stock client_printc(index, const text[], any:...)
{
	new szMsg[128];
	vformat(szMsg, sizeof(szMsg) - 1, text, 3);

	replace_all(szMsg, sizeof(szMsg) - 1, "!g", "^x04");
	replace_all(szMsg, sizeof(szMsg) - 1, "!n", "^x01");
	replace_all(szMsg, sizeof(szMsg) - 1, "!t", "^x03");

	if(index == 0)
	{
		for(new i = 0; i < g_MaxPlayers; i++)
		{
			if(!is_user_connected(i))
				continue
			
			message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, i)
			write_byte(i)
			write_string(szMsg)
			message_end()
		}		
	} else {
		message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, index);
		write_byte(index);
		write_string(szMsg);
		message_end();
	}
}
XMRX is offline
XMRX
Junior Member
Join Date: Jul 2017
Old 07-26-2017 , 12:48   Re: Every roun as a greeting
Reply With Quote #2

No one knows
XMRX is offline
wickedd
Veteran Member
Join Date: Nov 2009
Old 07-26-2017 , 20:34   Re: Every roun as a greeting
Reply With Quote #3

What? Explain more please
__________________
Just buy the fucking game!!!!
I hate No-Steamers and lazy ass people.
wickedd is offline
Reply



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 07:03.


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