Kod:
/// https://i.hizliresim.com/3O9D9r.png
#include <amxmodx>
#include <engine>
#include <fakemeta>
#define PLUGIN "CSGO Grafiti Plugin"
#define VERSION "2.0"
#define AUTHOR "Fatih ~ EjderYa"
new max_players, Bot_Player[33]
#define is_player(%1) ( 1 <= %1 <= max_players )
#define GRAFFITI_SOUND "Grafiti_Print.wav"
#define GRAFFITI_MODEL "sprites/kararpenalti.spr",
#define GRAFFITI_MODEL "sprites/kedi_kopke.spr",
#define GRAFFITI_MODEL "sprites/valoranthayalet.spr",
#define GRAFFITI_MODEL "sprites/tuzakkutusu.spr",
#define GRAFFITI_MODEL "sprites/elektrik.spr",
#define GRAFFITI_MODEL "sprites/jhonwick.spr",
#define GRAFFITI_MODEL "sprites/cokmemnunoldum.spr",
#define GRAFFITI_MODEL "sprites/cikiskapisi.spr",
#define GRAFFITI_MODEL "sprites/tavukbrimstone.spr",
#define GRAFFITI_MODEL "sprites/kutukedi.spr",
#define GRAFFITI_MODEL "sprites/tutunankedi.spr",
#define GRAFFITI_MODEL "sprites/elleryukari.spr"
#define Grafiti_Max_Colour_Client 1
#define Grafiti_Max_Seymbol_Client 38
#define Field_Control_Constant 50.0
new Graffiti_Drawing_Second[33] , Graffiti_Colour[33] , Graffiti_Symbol[33] , Menu_Status[33] , ent_Menu[33] , Second
new cvar_graffiti_reload_time , cvar_graffiti_visibility_time , cvar_graffiti_fade_away_time , cvar_graffiti_distance
new const Float:g_Colors[][3] =
{
// R G B
{255.0, 255.0, 255.0}, // 0
{255.0, 255.0, 255.0}, // 0
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
cvar_graffiti_reload_time = register_cvar("graffiti_reload_time","1")
cvar_graffiti_visibility_time = register_cvar("graffiti_visibility_time","25")
cvar_graffiti_fade_away_time = register_cvar("graffiti_fade_away_time","30")
cvar_graffiti_distance = register_cvar("graffiti_distance","150.0")
register_clcmd("say /grafiti","graffiti_menu")
register_clcmd("say .graffiti","graffiti_menu")
max_players = get_maxplayers()
register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 )
register_dictionary("CSGO_Grafiti.txt")
Start_Second_Increase()
}
public client_PreThink(id){
if ( Menu_Status[id] != 0 ){
if( pev_valid(ent_Menu[id]) ) {
new Float: Angles[3] , Float:Origin[3]
pev(id,pev_angles,Angles)
pev(id,pev_origin,Origin)
Origin[0] += floatcos(Angles[1],degrees) * 7.0
Origin[1] += floatsin(Angles[1],degrees) * 7.0
Origin[2] += 15.0
Angles[0] += 180.0
Angles[1] += 180.0
Angles[2] += 180.0
set_pev( ent_Menu[id] , pev_angles , Angles )
set_pev( ent_Menu[id] , pev_origin , Origin )
}
}
}
public fwdAddToFullPack_Post( es, e, ent, host, host_flags, player, p_set ){
if( is_player( host ) && !is_player( ent ) && !Bot_Player[ host ] )
if ( Menu_Status[host] != 0 )
if( pev_valid(ent) )
if( ent == ent_Menu[host] ){
set_es( es , ES_RenderAmt , 255.0 )
set_es( es , ES_Scale , 0.015 )
}
return PLUGIN_CONTINUE
}
public graffiti_menu(id){
new Menu_title[128] , Symbol_Text[10] , Colour_Text[10]
if ( Graffiti_Symbol[id] == Grafiti_Max_Seymbol_Client )
formatex(Symbol_Text,charsmax(Symbol_Text),"%L",id,"RANDOM")
else formatex(Symbol_Text,charsmax(Symbol_Text),"%d",Graffiti_Symbol[id]+1)
if ( Graffiti_Colour[id] == Grafiti_Max_Colour_Client +1 )
formatex(Colour_Text,charsmax(Colour_Text),"%L",id,"RANDOM")
else formatex(Colour_Text,charsmax(Colour_Text),"%d",Graffiti_Colour[id]+1)
formatex(Menu_title,charsmax(Menu_title),"\r*** \w%L \r***\d^n^n\w%L : \r%s^n\w%L : \r%s",id,"MENU_TITLE",id,"SYMBOL",Symbol_Text,id,"COLOUR",Colour_Text)
new graffiti_menu = menu_create(Menu_title, "graffiti_menu_transaction")
new Menu_Options[32]
formatex(Menu_Options,charsmax(Menu_Options),"\w%L",id,"NEXT_SYMBOL")
menu_additem(graffiti_menu , Menu_Options, "1")
formatex(Menu_Options,charsmax(Menu_Options),"\w%L^n",id,"BACK_SYMBOL")
menu_additem(graffiti_menu , Menu_Options, "2")
formatex(Menu_Options,charsmax(Menu_Options),"\w%L",id,"NEXT_COLOUR")
menu_additem(graffiti_menu , Menu_Options, "3")
formatex(Menu_Options,charsmax(Menu_Options),"\w%L",id,"BACK_COLOUR")
menu_additem(graffiti_menu , Menu_Options, "4")
formatex(Menu_Options,charsmax(Menu_Options),"\w%L",id,"EXIT")
menu_setprop(graffiti_menu,MPROP_EXITNAME,Menu_Options)
menu_setprop(graffiti_menu,MPROP_EXIT, MEXIT_NORMAL)
menu_display(id,graffiti_menu)
if ( !pev_valid(ent_Menu[id]) )
create_menu_entity(id)
if ( Menu_Status[id] == 0 ) set_task(5.0,"Menu_Status_Algilaperceive",id)
Menu_Status[id] += 1
return PLUGIN_HANDLED
}
public graffiti_menu_transaction(id, Menu , item){
new data[6], iName[64]
new acces, callback
menu_item_getinfo(Menu, item, acces, data,5, iName, 63, callback)
switch(str_to_num(data)){
case 0 : Menu_Status[id] = 0
case 1 : Graffiti_Symbol[id] += 1
case 2 : Graffiti_Symbol[id] -= 1
case 3 : Graffiti_Colour[id] += 1
case 4 : Graffiti_Colour[id] -= 1
}
if ( Graffiti_Symbol[id] < 0 ) Graffiti_Symbol[id] = Grafiti_Max_Seymbol_Client
else if ( Graffiti_Symbol[id] > Grafiti_Max_Seymbol_Client ) Graffiti_Symbol[id] = 0
if ( Graffiti_Colour[id] < 0 ) Graffiti_Colour[id] = Grafiti_Max_Colour_Client + 1
else if ( Graffiti_Colour[id] > Grafiti_Max_Colour_Client + 1 ) Graffiti_Colour[id] = 0
Symbol_and_Colur_Control(id,ent_Menu[id])
if(str_to_num(data) != 0) graffiti_menu(id)
}
public Create_Graffiti(id,Float:Origin[3], Float:Angles[3], Float:vNormal[3]){
Graffiti_Drawing_Second[id] = Second
new MODEL_ent = create_entity("env_sprite");
if (is_valid_ent(MODEL_ent) )
{
Origin[0] += (vNormal[0] * 0.5);
Origin[1] += (vNormal[1] * 0.5);
Origin[2] += (vNormal[2] * 0.5);
entity_set_string(MODEL_ent, EV_SZ_classname, "CSGO_Grafiti" );
entity_set_model(MODEL_ent, GRAFFITI_MODEL);
entity_set_vector(MODEL_ent, EV_VEC_angles, Angles ) ;
set_pev( MODEL_ent, pev_rendermode, kRenderTransAlpha)
new Seymbol
if ( Graffiti_Symbol[id] > Grafiti_Max_Seymbol_Client - 1 ) Seymbol = random_num(0,Grafiti_Max_Seymbol_Client - 1)
else Seymbol = Graffiti_Symbol[id]
entity_set_float(MODEL_ent, EV_FL_frame, float(Seymbol) );
if ( Seymbol == 0 ) entity_set_float(MODEL_ent, EV_FL_scale, 0.13);
else entity_set_float(MODEL_ent, EV_FL_scale, 0.25);
if ( Seymbol != 0 ){
new Colour
if ( Graffiti_Colour[id] > Grafiti_Max_Colour_Client ) Colour = random_num(0,Grafiti_Max_Colour_Client)
else Colour = Graffiti_Colour[id]
set_pev(MODEL_ent, pev_rendercolor , g_Colors[Colour])
}
else set_pev(MODEL_ent, pev_rendercolor , {255.0,255.0,255.0})
set_pev( MODEL_ent, pev_renderamt, 255.0)
entity_set_origin(MODEL_ent, Origin);
emit_sound(MODEL_ent, CHAN_ITEM, GRAFFITI_SOUND, 0.70, ATTN_NORM, 0, PITCH_NORM)
set_task(get_pcvar_float(cvar_graffiti_visibility_time),"Remove_Graffiti",MODEL_ent)
}
return PLUGIN_CONTINUE
}
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 ) * Field_Control_Constant / 2.0
New_Origin[1] = Origin[1] + floatsin(Angles[1] , degrees ) * Field_Control_Constant / 2.0
New_Origin[2] = Origin[2] + floatsin(Angles[2] , degrees ) * Field_Control_Constant * 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 plugin_precache(){
precache_model(GRAFFITI_MODEL)
precache_sound(GRAFFITI_SOUND);
}
public client_putinserver(id){
Graffiti_Drawing_Second[id] = Second - get_pcvar_num(cvar_graffiti_reload_time)
Graffiti_Colour[id] = Grafiti_Max_Colour_Client + 1
Graffiti_Symbol[id] = Grafiti_Max_Seymbol_Client
Bot_Player[id] = is_user_bot( id )
}
public create_menu_entity(id){
new Float:Origin[3]
pev(id,pev_origin,Origin)
if(engfunc(EngFunc_PointContents, Origin) == CONTENTS_EMPTY){
ent_Menu[id] = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "env_sprite" ) )
set_pev( ent_Menu[id], pev_origin, Origin )
set_pev( ent_Menu[id], pev_solid, SOLID_NOT )
engfunc( EngFunc_SetModel, ent_Menu[id], GRAFFITI_MODEL )
set_pev( ent_Menu[id], pev_rendermode, kRenderTransAlpha)
set_pev( ent_Menu[id], pev_renderamt, 0.0)
Symbol_and_Colur_Control(id,ent_Menu[id])
}
}
public Symbol_and_Colur_Control(id,Graffiti_ent){
if( pev_valid(ent_Menu[id]) ) {
new Float:Colour[3]
if ( Graffiti_Symbol[id] != 0 ){
if ( Graffiti_Colour[id] == Grafiti_Max_Colour_Client +1 )
{
Colour[0] = 50.0
Colour[1] = 50.0
Colour[2] = 50.0
}
else
{
Colour[0] = g_Colors[Graffiti_Colour[id]][0]
Colour[1] = g_Colors[Graffiti_Colour[id]][1]
Colour[2] = g_Colors[Graffiti_Colour[id]][2]
}
}
else Colour[0] = 255.0 , Colour[1] = 255.0 , Colour[2] = 255.0
set_pev( Graffiti_ent , pev_rendercolor , Colour )
set_pev( Graffiti_ent , pev_frame , float(Graffiti_Symbol[id]) )
}
}
public Drawing_Graffiti(id){
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 ) * get_pcvar_float(cvar_graffiti_distance);
Player_Aim[1] = vPlayerCenter_Origin[1] + floatsin(Angles[1], degrees) * get_pcvar_float(cvar_graffiti_distance);
Player_Aim[2] = vPlayerCenter_Origin[2] + floatsin(-Angles[0], degrees) * get_pcvar_float(cvar_graffiti_distance);
new Intersection_Status = trace_normal(id, vPlayerCenter_Origin, Player_Aim, vNormal);
vector_to_angle(vNormal, Angles)
Angles[1] += 180.0
if ( Graffiti_Drawing_Second[id] + get_pcvar_num(cvar_graffiti_reload_time) > Second ){
client_print(id,print_center,"%L",id,"WAIT_SPRITE",Graffiti_Drawing_Second[id] + get_pcvar_num(cvar_graffiti_reload_time) - Second)
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
}
Create_Graffiti(id,vCenter_Origin, Angles, vNormal)
return PLUGIN_CONTINUE
}
public Remove_Graffiti(ent){
if ( pev_valid(ent) ) {
new Float:Transparency
pev( ent, pev_renderamt, Transparency)
Transparency -= 2.5
if ( Transparency <= 2.5 ){
remove_entity(ent)
}
else
{
set_pev( ent, pev_renderamt, Transparency)
set_task(get_pcvar_float(cvar_graffiti_fade_away_time)/102.0,"Remove_Graffiti",ent)
}
}
}
public Start_Second_Increase(){
Second++
set_task(1.0,"Start_Second_Increase")
}
public client_impulse(id,impulse){
if ( impulse == 201 )
if ( is_user_alive(id) ){
Drawing_Graffiti(id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public Menu_Status_Algilaperceive(id){
if ( Menu_Status[id] != 0 ){
if ( Menu_Status[id] > 5 ) Menu_Status[id] = 5
else Menu_Status[id] -= 1
set_task(1.0,"Menu_Status_Algilaperceive",id)
}
else remove_entity(ent_Menu[id])
})

