block config { // Set this to how long the bubbles should last for, in seconds. es_xset emote_lifetime 2.5 } block load { es_xset emote_version v1.0 es_xmakepublic emote_version es_xset emote_lifetime 2.5 es_xdoblock emote/config es_xset emote 0 es_xset emote_exists 0 es_xset emote_format 0 es_xset emote_format2 0 es_xset emote_format3 0 es_xset emote_index 0 es_xset emote_isdead 0 es_xset emote_vec 0 es_xset emote_x 0 es_xset emote_y 0 es_xset emote_z 0 downloadable materials/models/extras/mbang/speech_info.vmt downloadable materials/models/extras/mbang/speech_info.vtf downloadable models/extras/mbang/info_speech.dx80.vtx downloadable models/extras/mbang/info_speech.dx90.vtx downloadable models/extras/mbang/info_speech.mdl downloadable models/extras/mbang/info_speech.phy downloadable models/extras/mbang/info_speech.sw.vtx downloadable models/extras/mbang/info_speech.vvd downloadable models/extras/mbang/info_speech.xbox.vtv downloadable materials/models/extras/smile/speech_info.vmt downloadable materials/models/extras/smile/speech_info.vtf downloadable models/extras/smile/info_speech.dx80.vtx downloadable models/extras/smile/info_speech.dx90.vtx downloadable models/extras/smile/info_speech.mdl downloadable models/extras/smile/info_speech.phy downloadable models/extras/smile/info_speech.sw.vtx downloadable models/extras/smile/info_speech.vvd downloadable models/extras/smile/info_speech.xbox.vtv downloadable materials/models/extras/frown/speech_info.vmt downloadable materials/models/extras/frown/speech_info.vtf downloadable models/extras/frown/info_speech.dx80.vtx downloadable models/extras/frown/info_speech.dx90.vtx downloadable models/extras/frown/info_speech.mdl downloadable models/extras/frown/info_speech.phy downloadable models/extras/frown/info_speech.sw.vtx downloadable models/extras/frown/info_speech.vvd downloadable models/extras/frown/info_speech.xbox.vtv downloadable materials/models/extras/grin/speech_info.vmt downloadable materials/models/extras/grin/speech_info.vtf downloadable models/extras/grin/info_speech.dx80.vtx downloadable models/extras/grin/info_speech.dx90.vtx downloadable models/extras/grin/info_speech.mdl downloadable models/extras/grin/info_speech.phy downloadable models/extras/grin/info_speech.sw.vtx downloadable models/extras/grin/info_speech.vvd downloadable models/extras/grin/info_speech.xbox.vtv keygroupremove emote_ents keygroupremove emote_entsnew keygroupremove emote_wait es_keygroupcreate es_xmsg #multi "#lightgreen[#greenemote#lightgreen]#green CSS Emote has been loaded!" if (server_var(eventscripts_currentmap) notequalto 0) do { es_xprecachemodel extras/smile/info_speech es_xprecachemodel extras/mbang/info_speech es_xprecachemodel extras/frown/info_speech es_xprecachemodel extras/grin/info_speech } } event es_map_start { es_xprecachemodel extras/smile/info_speech es_xprecachemodel extras/mbang/info_speech es_xprecachemodel extras/frown/info_speech es_xprecachemodel extras/grin/info_speech downloadable materials/models/extras/mbang/speech_info.vmt downloadable materials/models/extras/mbang/speech_info.vtf downloadable models/extras/mbang/info_speech.dx80.vtx downloadable models/extras/mbang/info_speech.dx90.vtx downloadable models/extras/mbang/info_speech.mdl downloadable models/extras/mbang/info_speech.phy downloadable models/extras/mbang/info_speech.sw.vtx downloadable models/extras/mbang/info_speech.vvd downloadable models/extras/mbang/info_speech.xbox.vtv downloadable materials/models/extras/smile/speech_info.vmt downloadable materials/models/extras/smile/speech_info.vtf downloadable models/extras/smile/info_speech.dx80.vtx downloadable models/extras/smile/info_speech.dx90.vtx downloadable models/extras/smile/info_speech.mdl downloadable models/extras/smile/info_speech.phy downloadable models/extras/smile/info_speech.sw.vtx downloadable models/extras/smile/info_speech.vvd downloadable models/extras/smile/info_speech.xbox.vtv downloadable materials/models/extras/frown/speech_info.vmt downloadable materials/models/extras/frown/speech_info.vtf downloadable models/extras/frown/info_speech.dx80.vtx downloadable models/extras/frown/info_speech.dx90.vtx downloadable models/extras/frown/info_speech.mdl downloadable models/extras/frown/info_speech.phy downloadable models/extras/frown/info_speech.sw.vtx downloadable models/extras/frown/info_speech.vvd downloadable models/extras/frown/info_speech.xbox.vtv downloadable materials/models/extras/grin/speech_info.vmt downloadable materials/models/extras/grin/speech_info.vtf downloadable models/extras/grin/info_speech.dx80.vtx downloadable models/extras/grin/info_speech.dx90.vtx downloadable models/extras/grin/info_speech.mdl downloadable models/extras/grin/info_speech.phy downloadable models/extras/grin/info_speech.sw.vtx downloadable models/extras/grin/info_speech.vvd downloadable models/extras/grin/info_speech.xbox.vtv } event player_say { if ("m!" in event_var(text)) do { es_xset emote "prop_dynamic_create extras/mbang/info_speech.mdl" es_xdoblock emote/dobubble } if (":)" in event_var(text)) do { es_xset emote "prop_dynamic_create extras/smile/info_speech.mdl" es_xdoblock emote/dobubble } if (":(" in event_var(text)) do { es_xset emote "prop_dynamic_create extras/frown/info_speech.mdl" es_xdoblock emote/dobubble } if ("lol" in event_var(text)) do { es_xset emote "prop_dynamic_create extras/grin/info_speech.mdl" es_xdoblock emote/dobubble } } block dobubble { es_exists emote_exists key emote_wait event_var(userid) ifx false(emote_exists) do { es_getplayerprop emote_isdead event_var(userid) CBasePlayer.pl.deadflag ifx false(emote_isdead) do { // Create the speech bubble. es_xcreateentitylist emote_ents prop_dynamic es cheatexec event_var(userid) server_var(emote) es_xcreateentitylist emote_entsnew prop_dynamic // Look for our speech bubble. es_xforeachkey emote_index in emote_entsnew "es_xdoblock emote/dobubble_inner" es_xkeygroupdelete emote_ents es_xkeygroupdelete emote_entsnew } } } block dobubble_inner { es_exists emote_exists key emote_ents server_var(emote_index) ifx false(emote_exists) do { // Set the entity's origin. // We want it above the player's head, so get their location first and then move it along the Z-axis. es_getplayerlocation emote_x emote_y emote_z event_var(userid) es_xmath emote_z + 96 es_createvectorstring emote_vec server_var(emote_x) server_var(emote_y) server_var(emote_z) es_setindexprop server_var(emote_index) CBaseEntity.m_vecOrigin server_var (emote_vec) // Set the entity's targetname and make it follow the user. es_format emote_format emote_bubble%1 event_var(userid) es est_setentname server_var(emote_index) server_var(emote_format) es_format emote_format2 emote_user%1 event_var(userid) es_xformatv emote_format3 "targetname %1" emote_format2 es_fire event_var(userid) !self addoutput server_var(emote_format3) es_fire event_var(userid) server_var(emote_format) SetParent server_var (emote_format2) es_fire event_var(userid) server_var(emote_format) SetAnimation idle es_fire event_var(userid) server_var(emote_format) addoutput "angles 0 0 0" es_fire event_var(userid) server_var(emote_format) addoutput "solid 0" es_xformatv emote_format2 "OnUser1 !self,Kill,,%1,1" emote_lifetime es_fire event_var(userid) server_var(emote_format) addoutput server_var (emote_format2) es_fire event_var(userid) server_var(emote_format) FireUser1 } }