AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Suggestions / Requests (https://forums.alliedmods.net/forumdisplay.php?f=12)
-   -   CS:GO Graffiti (https://forums.alliedmods.net/showthread.php?t=326399)

AlinT 07-29-2020 16:02

CS:GO Graffiti
 
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 }
*/


OciXCrom 07-29-2020 16:04

Re: CS:GO Graffiti
 
Um, AMXX 1.10 comes after 1.9.

AlinT 07-29-2020 16:17

Re: CS:GO Graffiti
 
Quote:

Originally Posted by OciXCrom (Post 2712219)
Um, AMXX 1.10 comes after 1.9.

yes, sorry I meant if it can be done for the version I have 1.9

OciXCrom 07-29-2020 16:20

Re: CS:GO Graffiti
 
I doubt that one even exists today, especially with those new functions in the code, so that's definitely not true. Since you clearly haven't read the requirements, did you try compiling and running the plugin before writing here? If yes, show the errors.

AlinT 07-29-2020 16:25

Re: CS:GO Graffiti
 
Quote:

Originally Posted by OciXCrom (Post 2712228)
I doubt that one even exists today, especially with those new functions in the code, so that's definitely not true. Since you clearly haven't read the requirements, did you try compiling and running the plugin before writing here? If yes, show the errors.


When I compiled it didn't give any error just that it doesn't work on the server,
Code:

unknown unknown unknown New_Csgo_Graffi bad load

Stefanos 07-29-2020 17:03

Re: CS:GO Graffiti
 
i use this plugin on 1.8.3 amxmodx and its good, only sometimes i got error "owerflow drawing" can someone fix that?!

OciXCrom 07-29-2020 17:52

Re: CS:GO Graffiti
 
Quote:

Originally Posted by AlinT (Post 2712232)
When I compiled it didn't give any error just that it doesn't work on the server,
Code:

unknown unknown unknown New_Csgo_Graffi bad load

Post the output of the "amxx modules" and "amxx version" server commands.

AlinT 07-30-2020 10:21

Re: CS:GO Graffiti
 
Quote:

Originally Posted by OciXCrom (Post 2712252)
Post the output of the "amxx modules" and "amxx version" server commands.

Come on, Oxy, I feel like you're my savior


Currently running plugins:
[ 1] AMX Mod X, v1.9.0.5263, Oct 27 2019, by AMX Mod X Dev Team, see http://www.amxmodx.org
[ 2] Reunion, v0.1.0.92, 2018-02-11, by The Legion, see
[ 3] Fun, v1.9.0.5263, Sep 10 2018, by AMX Mod X Dev Team, see http://www.amxmodx.org
[ 4] Engine, v1.9.0.5263, Sep 10 2018, by AMX Mod X Dev Team, see http://www.amxmodx.org
[ 5] FakeMeta, v1.9.0.5263, Sep 10 2018, by AMX Mod X Dev Team, see http://www.amxmodx.org
[ 6] CSX, v1.9.0.5263, Sep 10 2018, by AMX Mod X Dev Team, see http://www.amxmodx.org/
[ 7] CStrike, v1.9.0.5263, Sep 10 2018, by AMX Mod X Dev Team, see http://www.amxmodx.org
[ 8] Ham Sandwich, v1.9.0.5263, Sep 10 2018, by AMX Mod X Dev Team, see http://www.amxmodx.org
[ 9] ReAPI, v5.1.0.112

Cirovic 07-30-2020 11:56

Re: CS:GO Graffiti
 
no steam no support i guess

AlinT 07-30-2020 13:23

Re: CS:GO Graffiti
 
Quote:

Originally Posted by Cirovic (Post 2712376)
no steam no support i guess

steam on !


All times are GMT -4. The time now is 06:02.

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