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

CS:GO Graffiti


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
AlinT
Member
Join Date: Jun 2020
Location: Romania
Old 07-29-2020 , 16:02   CS:GO Graffiti
Reply With Quote #1

Hi can anyone help me with this plugin? it is for an old version of amxx 1.10 and I have 1.9, does anyone know how to edit it? Thank you very much
Code:
// https://www.tarihiolaylar.com/img/galeri/galeri_ottoman-jpg_665391412_1447579812.jpg

#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <engine>
#include <fakemeta>

#define PLUGIN "CS:GO Graffiti"
#define VERSION "1.0"
#define AUTHOR "Fatih ~ EjderYa"

#define ent_ClassName "CSGOGraffiti"
#define Graf_Image_Size_px 512.0
#define Graf_Scale 0.1
#define LOGFILE "addons/amxmodx/logs/Graf_Admin_Give_Key_Logs.log"

new const Graf_Model[] = "sprites/CSGO_Graffiti_new.spr"
new const Graf_Sound[] = "Grafiti_Print.wav"
new Graf_Model_index
new Save_File[100]

new Cvar_reload_time , Cvar_visibility_time , Cvar_fade_away_time , Cvar_distance , Cvar_drop_key_possibility, Cvar_graffiti_unit
new Graf_Time[33] , PlayerName[33][36] , Active_Spray[33] , Graf_Key[33]


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_dictionary("CSGO_New_Grafiti.txt")
	
	register_clcmd("amx_give_graffiti_key", "cmd_give_key", ADMIN_BAN, "<PLAYER NAME>")
	register_clcmd("say /graffiti","GraffitiMenu_Open")
	
	bind_pcvar_num(create_cvar ("graffiti_reload_time","45"),Cvar_reload_time)
	bind_pcvar_num(create_cvar ("graffiti_visibility_time","25"),Cvar_visibility_time)
	bind_pcvar_num(create_cvar ("graffiti_fade_away_time","30"),Cvar_fade_away_time)
	bind_pcvar_num(create_cvar ("graffiti_distance","120"),Cvar_distance)
	bind_pcvar_num(create_cvar ("graffiti_drop_key_possibility","5"),Cvar_drop_key_possibility)
	bind_pcvar_num(create_cvar ("graffiti_unit","50"),Cvar_graffiti_unit)
	
	RegisterHookChain(RG_CBasePlayer_Killed, "Player_Killed", 1);
	
	File_Control()
	
}


reset_graf_time(id){
	remove_task(id)
	Graf_Time[id] = 0
	
}
public client_putinserver(id){
	reset_graf_time(id)
}
public client_disconnected(id){
	reset_graf_time(id)
}
public overflow_graffiti_detect(Float:i_Origin[3], Float:i_Angles[3], Float:vNormal[3]){
	
	
	new Float:Origin[3] , Float:Angles[3]
	Angles[0] = i_Angles[0]
	
	
	Origin[0] = i_Origin[0] + (vNormal[0] * 0.5);
	Origin[1] = i_Origin[1] + (vNormal[1] * 0.5);
	Origin[2] = i_Origin[2] + (vNormal[2] * 0.5);		
	
	
	Origin[0] = i_Origin[0] + floatcos(i_Angles[1] , degrees ) * 5.0
	Origin[1] = i_Origin[1] + floatsin(i_Angles[1] , degrees ) * 5.0
	Origin[2] = i_Origin[2] + floatsin(i_Angles[2] , degrees ) * 5.0 * floatpower(2.0,0.5)
	
	new Status
	
	Angles[1] = i_Angles[1] + 270.0
	Angles[2] = i_Angles[2] + 45.0
	Status += Spawn_in_wall_detect(Origin,Angles)
	Angles[2] -= 90.0
	Status += Spawn_in_wall_detect(Origin,Angles)
	Angles[1] += 180.0
	Status += Spawn_in_wall_detect(Origin,Angles)
	Angles[2] += 90.0
	Status += Spawn_in_wall_detect(Origin,Angles)
	
	
	if ( Status != 4 )
		return false
	
	return true	
}

public Spawn_in_wall_detect(Float:Origin[3],Float:Angles[3]){
	
	new Float:New_Origin[3]
	New_Origin[0] = Origin[0] + floatcos(Angles[1] , degrees ) * (Graf_Scale * Graf_Image_Size_px) / 2.0
	New_Origin[1] = Origin[1] + floatsin(Angles[1] , degrees ) * (Graf_Scale * Graf_Image_Size_px) / 2.0
	New_Origin[2] = Origin[2] + floatsin(Angles[2] , degrees ) * (Graf_Scale * Graf_Image_Size_px) * floatpower(2.0,0.5) / 2.0
	
	
	if(engfunc(EngFunc_PointContents, New_Origin) == CONTENTS_EMPTY) /// IN WALL : 1   -   OUT WALL 0
		return false
	
	return true
	
	
}

public reload_graf(id){
	if ( Graf_Time[id] > 0 ){
		Graf_Time[id]--
		set_task(1.0,"reload_graf",id)
	}
}


public plugin_precache()
{
	Graf_Model_index = precache_model(Graf_Model);
	precache_sound(Graf_Sound)
}

public cmd_give_key(id, level, cid)
{
	if(!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED_MAIN
	
	static arg1[32]
	read_argv(1, arg1, 31)
	
	static target
	target = cmd_target(id, arg1, (CMDTARGET_ALLOW_SELF|CMDTARGET_NO_BOTS))
	
	if(!is_user_connected(target))
		return PLUGIN_HANDLED_MAIN
		
	Droped_Key(target,id)
	
	return PLUGIN_HANDLED
}
public Player_Killed(Victim, Killer) {
	
	if ( Victim == Killer || Killer == 0 )
		return
		
	if ( random_num(1,100) <= Cvar_drop_key_possibility && is_user_connected(Killer) && !is_user_bot(Killer) )
		Droped_Key(Killer)
	
}




File_Control(){

	formatex(Save_File,charsmax(Save_File),"%L",0,"LOG_FILE_NOTE")
	write_file(LOGFILE,Save_File,0)
	write_file(LOGFILE,"",1)
	
	new configdir[128]
	get_configsdir(configdir, charsmax(configdir) )
	   
	format(Save_File,charsmax(Save_File),"%s/CSGO_Graffiti",configdir)
	mkdir(Save_File)
		
}


public client_connect(id){

	Graf_Key[id] = 0
	if ( !is_user_bot(id) ){
		get_user_name(id,PlayerName[id],35)
		
		new PlayerSave[64]
			
		formatex(PlayerSave,charsmax(PlayerSave),"%s\%s.ini",Save_File,PlayerName[id])
		if ( file_size(PlayerSave) == -1 ){
			write_file(PlayerSave,"0",0)
			write_file(PlayerSave,"0",1)
		}
			
		else
		{
			new data_str[6]
			read_file(PlayerSave,0,data_str,charsmax(data_str))
			Active_Spray[id] = str_to_num(data_str)
			
			read_file(PlayerSave,1,data_str,charsmax(data_str))
			Graf_Key[id] = str_to_num(data_str) 
		}
	}
}




public GraffitiMenu(const id,const page)
{
	new MenuItem[86]
	formatex(MenuItem,charsmax(MenuItem),"\y%L : \r%d^n*** \w%L \r***",id,"GRAF_KEY",Graf_Key[id],id,"MENU_TITLE")
	new menu = menu_create(MenuItem, "GraffitiMenu_continue")
	
	formatex(MenuItem,charsmax(MenuItem),"%s%L",Graf_Key[id] <= 0 ? "\d" : "\w",id,"USE_KEY")
	menu_additem(menu, MenuItem , Graf_Key[id] <= 0 ? "-1" : "0")
	
	//////////////////////////
	new PlayerSave[64] , GraffitiName[36] , Unit[4] , Text[64]
	formatex(PlayerSave,charsmax(PlayerSave),"%s\%s.ini",Save_File,PlayerName[id])
	
	
	new Satir_Sayisi = file_size(PlayerSave, FSOPT_LINES_COUNT)
	for(new i = 2;i<Satir_Sayisi;i++){
		
		Text = ""
		read_file(PlayerSave,i,Text,charsmax(Text))
		
		if ( !equali(Text,"")){
			
			parse(Text,GraffitiName,charsmax(GraffitiName),Unit,charsmax(Unit))
			formatex(Text,charsmax(Text),"%s  \r[%s] \y%L",GraffitiName,Unit,id,Active_Spray[id]==i?"SELECTED":"SPACE")
			num_to_str(i,Unit,charsmax(Unit))
			replace_all(Text,charsmax(Text),"_"," ")
			menu_additem(menu, Text, Unit);
		}
		
	}
	//////////////////////////
	
	
	formatex(MenuItem,charsmax(MenuItem),"%L",id,"EXIT")
	menu_setprop(menu,MPROP_EXITNAME,MenuItem)
	menu_setprop(menu,MPROP_EXIT, MEXIT_NORMAL)
	menu_display(id,menu,page)
	
	
}
public GraffitiMenu_continue(const id, const menu, const item)
{

	if(item == MENU_EXIT )
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new data_str[6], name[32], access, callback;
	menu_item_getinfo(menu, item, access, data_str, charsmax(data_str), name, charsmax(name), callback);
	new data = str_to_num(data_str)
	
	if ( data >= 0 ){
		if ( data == 0 ){
			
			Use_Graffiti_Key(id)
		}
		else
		{
			new PlayerSave[64]
			formatex(PlayerSave,charsmax(PlayerSave),"%s\%s.ini",Save_File,PlayerName[id])
			Active_Spray[id] = data
			write_file(PlayerSave,data_str,0)
			
		}
	}

	GraffitiMenu(id,(data-1)/7)
	
	return PLUGIN_CONTINUE;
}


Float: get_graffiti_frame(id){
	
	new PlayerSave[64]
	formatex(PlayerSave,charsmax(PlayerSave),"%s\%s.ini",Save_File,PlayerName[id])
	read_file(PlayerSave,Active_Spray[id],PlayerSave,charsmax(PlayerSave))
		
	if ( !equali(PlayerSave,""))
		parse(PlayerSave,PlayerSave,1,PlayerSave,1,PlayerSave,charsmax(PlayerSave))
	
	return str_to_float(PlayerSave)

}

public Use_Graffiti_Key(id){

	new File_Graf_Names[64] , line = -1
	formatex(File_Graf_Names,charsmax(File_Graf_Names),"%s\csgo_graffiti_names.txt",Save_File)
	new Katman = random_num(0,file_size(File_Graf_Names, FSOPT_LINES_COUNT)-1)
	read_file(File_Graf_Names,Katman ,File_Graf_Names,charsmax(File_Graf_Names))
	
	new PlayerSave[64] , GraffitiName[36] , Unit[4] , Frame[4] , Text[64]
	formatex(PlayerSave,charsmax(PlayerSave),"%s\%s.ini",Save_File,PlayerName[id])
	
	read_file(PlayerSave,1,Frame,charsmax(Frame))
	Graf_Key[id] = str_to_num(Frame) - 1
	formatex(Frame,charsmax(Frame),"%d",Graf_Key[id])
	write_file(PlayerSave,Frame,1)
	
	new Satir_Sayisi = file_size(PlayerSave, FSOPT_LINES_COUNT)
	for(new i = 2;i<Satir_Sayisi;i++){
		
		Text = ""
		read_file(PlayerSave,i,Text,charsmax(Text))
		
		if ( !equali(Text,"")){			
			
			parse(Text,GraffitiName,charsmax(GraffitiName),Unit,charsmax(Unit),Frame,charsmax(Frame))
			if ( equali(File_Graf_Names,GraffitiName)){
				
				new New_Unit = str_to_num(Unit) + Cvar_graffiti_unit
				formatex(Text,charsmax(Text),"%s %d %s",File_Graf_Names,New_Unit,Frame)
				write_file(PlayerSave,Text,i)
				
				return
			}
			
		}
		else if ( line == -1 )
			line = i
		
	}
	
	
	formatex(Text,charsmax(Text),"%s %d %.1f",File_Graf_Names,Cvar_graffiti_unit,float(Katman))
	write_file(PlayerSave,Text,line)
	
	
	replace_all(File_Graf_Names,charsmax(File_Graf_Names),"_"," ")
	
	//set_dhudmessage( 149,68,0, -1.0, 0.01 , 2, 4.0, 11.0, 0.01 , 1.5 )
	//show_dhudmessage(0, "%L",id,"USED_KEY_MESSAGE",PlayerName[id],File_Graf_Names)

	client_print_color(0,print_team_default,"%L",id,"USED_KEY_MESSAGE",PlayerName[id],File_Graf_Names)
	
}

Droped_Key(id,Admin = -1){
	
	new PlayerSave[64],Sec[5]
	formatex(PlayerSave,charsmax(PlayerSave),"%s\%s.ini",Save_File,PlayerName[id])
	read_file(PlayerSave,1,Sec,charsmax(Sec))
	Graf_Key[id] = str_to_num(Sec) + 1
	formatex(Sec,charsmax(Sec),"%d",Graf_Key[id])
	write_file(PlayerSave,Sec,1)

	new UserName[36] , Message[128]
	get_user_name(id,UserName,charsmax(UserName))
	
	if ( Admin == -1 )
		formatex(Message,charsmax(Message),"%L",0,"USER_WON_KEY",UserName)
	else 
	{
		new AdminName[36]
		get_user_name(Admin,AdminName,charsmax(AdminName))
		
		if ( id == Admin )
			formatex(Message,charsmax(Message),"%L",0,"ADMIN_TOOK_KEY",AdminName)
		else	formatex(Message,charsmax(Message),"%L",0,"ADMIN_GIVED_KEY",AdminName,UserName)
	
	}
	Print_Message_and_Log(Message,Admin != -1?1:0)
}
public client_impulse(id,impulse){
	
	if ( impulse == 201 ){
		
		Drawing_Graffiti(id)
		return PLUGIN_HANDLED
	}

	return PLUGIN_CONTINUE
	
}

public Drawing_Graffiti(id){
	
	if ( !is_user_alive(id) )
		return PLUGIN_HANDLED
	
	new Center_Origin[3];
	new Float:vCenter_Origin[3];
	new Float:Angles[3];
	new Float:vNormal[3];
	get_user_origin(id, Center_Origin, 3);
	IVecFVec(Center_Origin, vCenter_Origin);
	new Float:vPlayerCenter_Origin[3];
	new Float:vViewOfs[3];
	entity_get_vector(id, EV_VEC_origin, vPlayerCenter_Origin);
	entity_get_vector(id, EV_VEC_view_ofs, vViewOfs);
	vPlayerCenter_Origin[0] += vViewOfs[0];
	vPlayerCenter_Origin[1] += vViewOfs[1];
	vPlayerCenter_Origin[2] += vViewOfs[2];
	new Float:Player_Aim[3];
	entity_get_vector(id, EV_VEC_v_angle, Angles);
	Player_Aim[0] = vPlayerCenter_Origin[0] + floatcos(Angles[1], degrees ) * float(Cvar_distance)
	Player_Aim[1] = vPlayerCenter_Origin[1] + floatsin(Angles[1], degrees) * float(Cvar_distance)
	Player_Aim[2] = vPlayerCenter_Origin[2] + floatsin(-Angles[0], degrees) * float(Cvar_distance)
	new Intersection_Status = trace_normal(id, vPlayerCenter_Origin, Player_Aim, vNormal);
	vector_to_angle(vNormal, Angles)
	Angles[1] += 180.0
	
	vCenter_Origin[0] += (vNormal[0] * 0.5);
	vCenter_Origin[1] += (vNormal[1] * 0.5);
	vCenter_Origin[2] += (vNormal[2] * 0.5);
		
	
	if ( Active_Spray[id] <= 0 ){
		client_print(id,print_center,"%L",id,"NO_ACTIVE_SPRAY")
		return PLUGIN_HANDLED
	}
		
	
	if ( Graf_Time[id] != 0 ){
		client_print(id,print_center,"%L",id,"WAIT_SPRITE",Graf_Time[id])
		return PLUGIN_HANDLED
	}
	
	
	if ( !Intersection_Status ){
		client_print(id,print_center,"%L",id,"REMOTE_GROUND")
		return PLUGIN_HANDLED
	}
	
	
	if ( vNormal[2] != 0.0 ){
		client_print(id,print_center,"%L",id,"NOVERTICALWALL")
		return PLUGIN_HANDLED
	}
	
	
	if ( !overflow_graffiti_detect(vCenter_Origin, Angles, vNormal) ){
		client_print(id,print_center,"%L",id,"OVERFLOWING_GRAFFITI")
		return PLUGIN_HANDLED
	}
	
	
	
		
	new ent = rg_create_entity("info_target");
	
	if ( !is_nullent(ent) ){
		
		set_entvar(ent, var_origin,vCenter_Origin)
		set_entvar(ent, var_angles,Angles)
		set_entvar(ent, var_classname,ent_ClassName)
		set_entvar(ent, var_model,Graf_Model)
		set_entvar(ent, var_modelindex, Graf_Model_index)
		set_entvar(ent, var_renderamt, 255.0)
		set_entvar(ent, var_rendermode, kRenderTransTexture)
		set_entvar(ent, var_frame, get_graffiti_frame(id))
		set_entvar(ent, var_scale, get_graffiti_frame(id) >= 60 ? Graf_Scale*2.0:Graf_Scale)
		
		Graf_Time[id] = Cvar_reload_time + 1
		rh_emit_sound2(ent, 0, CHAN_STATIC, Graf_Sound, VOL_NORM, ATTN_IDLE);
		reload_graf(id)
		Drawing_End_Graffiti(id)

		SetThink(ent, "Remove_Graffiti")
		set_entvar(ent, var_nextthink, get_gametime( ) + float(Cvar_visibility_time) )
	}
	
	return PLUGIN_CONTINUE
	
}



public Drawing_End_Graffiti(id){

	new PlayerSave[64] , GraffitiName[36] , Unit[4] , Frame[4] , Text[64]
	formatex(PlayerSave,charsmax(PlayerSave),"%s\%s.ini",Save_File,PlayerName[id])


	read_file(PlayerSave,Active_Spray[id],Text,charsmax(Text))
	parse(Text,GraffitiName,charsmax(GraffitiName),Unit,charsmax(Unit),Frame,charsmax(Frame))
	new New_Unit = str_to_num(Unit)
	client_print_color(id,print_team_default,"New_Unit = %d",New_Unit)
	
	if ( New_Unit > 1 ){
		New_Unit--
		formatex(Text,charsmax(Text),"%s %d %s",GraffitiName,New_Unit,Frame)
		write_file(PlayerSave,Text,Active_Spray[id])
	}
	else	write_file(PlayerSave,"",Active_Spray[id]) , Active_Spray[id] = 0


}

public GraffitiMenu_Open(id)
	GraffitiMenu(id,0)

Print_Message_and_Log(Message[128],LOG = 0){	
	
	//new Sec[5]
	//get_time("%S",Sec,charsmax(Sec))
	//set_dhudmessage( 149,68,0, -1.0, 2.5 * 0.01 * float(str_to_num(Sec)%10) , 2, 4.0, 11.0, 0.01 , 1.5 )
	//show_dhudmessage(0, Message)
	
	client_print_color(0,print_team_default,Message)
	
	replace_all(Message,charsmax(Message),"^1","")
	replace_all(Message,charsmax(Message),"^2","")
	replace_all(Message,charsmax(Message),"^3","")
	replace_all(Message,charsmax(Message),"^4","")
	
	if ( LOG == 1 ){
		new CurrentTime[20]
		get_time("%d/%m/%Y -- %H:%M",CurrentTime,charsmax(CurrentTime))
		format(Message,charsmax(Message),"[ %L ( %s ) ] -> %s ",0,"DATE",CurrentTime,Message)
		
		write_file(LOGFILE,Message,-1)
	}

}

public Remove_Graffiti(ent){
	
	if ( !is_nullent(ent) ) {
		
		new Float:Transparency
		get_entvar( ent, var_renderamt, Transparency)
		Transparency -= 2.55
		
		if ( Transparency <= 2.5 ){
			set_entvar( ent , var_flags , FL_KILLME )
		}
		else
		{
			set_entvar( ent, var_renderamt, Transparency)			
			set_entvar(ent, var_nextthink, get_gametime( ) + ( float(Cvar_fade_away_time) / 100.0 ) )
		}
		
	}
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/

Last edited by AlinT; 07-29-2020 at 16:20.
AlinT is offline
Send a message via AIM to AlinT
 



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 21:21.


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