Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public load()
- {
- if(!dir_exists(g_Path))
- {
- server_print("[OpenglCheck] No dir opengl32 with source files!!!")
- return PLUGIN_HANDLED
- }
- new glfile[32], glfile_path[64], err[64]
- if(!file_exists(g_File))
- {
- new gldir = open_dir(g_Path,glfile,31)
- formatex(glfile_path,63,"%s/%s",g_Path,glfile)
- file_copy(glfile_path,g_File,err,63,true)
- if(strlen(err) > 0)
- {
- server_print("[OpenglCheck] %s",err)
- server_print("[OpenglCheck] Invalid opengl32 file,!!!")
- return PLUGIN_HANDLED
- }
- close_dir(gldir)
- }
- new prec_buff[34], glfile_buff[34]
- md5_file(g_File,prec_buff)
- g_Files = ArrayCreate(32);
- new gldir = open_dir(g_Path,glfile,31)
- new maxarr = 0
- do
- {
- if(strlen(glfile)>3)
- {
- if(contain(glfile,"@") != -1)
- {
- new renfile[64]
- formatex(renfile,63,"%s",glfile)
- replace(glfile,31,"@","")
- formatex(glfile_path,63,"%s/%s",g_Path,glfile)
- format(renfile,63,"%s/%s",g_Path,renfile)
- rename_file(renfile,glfile_path,true)
- server_print("[OpenglCheck] Invalid opengl file name: %s renamed to: %s",renfile,glfile_path)
- }
- formatex(glfile_path,63,"%s/%s",g_Path,glfile)
- md5_file(glfile_path,glfile_buff)
- if(equal(prec_buff,glfile_buff))
- {
- copy(g_PrecFile,31,glfile)
- server_print("[OpenglCheck] Precached opengl file is %s",g_PrecFile)
- }
- ArrayPushString(g_Files,glfile);
- maxarr += 1;
- }
- }
- while ( next_file(gldir,glfile,31))
- close_dir(gldir)
- //check and update list of files
- new listfile[128]
- get_configsdir(listfile,127)
- format(listfile,127,"%s/openglfiles.txt",listfile)
- if(!file_exists(listfile))
- {
- server_print("[OpenglCheck] openglfiles.txt not exist, create file !!!")
- write_file(listfile,g_PrecFile,0)
- write_file(listfile,"0",1)
- }
- new i, chk, lstfile[36],chkfile[36],arrfile[32], maxlst, len
- //new maxlst = file_size(listfile,1)
- for(i = 0 ; i < maxarr ; i++)
- {
- ArrayGetString(g_Files,i,arrfile,31)
- formatex(chkfile,35,"@%s",arrfile)
- chk = 0
- //loop inside list file to check new opengl files from dir
- //for loop is shortly than while loop because skip first 2 lines, but spent time with reading maxlines
- /*
- new listfile_handle = fopen( listfile, "rt" );
- while(!feof(listfile_handle))
- {
- fgets(listfile_handle,lstfile,35)
- if(strlen(lstfile) >10)
- {
- if (strfind(lstfile,chkfile)!=-1)
- chk += 1
- }
- }
- */
- new j
- maxlst = file_size(listfile,1)
- for(j = 2 ; j < maxlst-1 ; j++)
- {
- read_file(listfile,j,lstfile,31,len)
- if (strfind(lstfile,chkfile)!=-1)
- chk += 1
- }
- if (chk == 0)
- {
- server_print("[OpenglCheck] write opengl file %s in list",chkfile)
- format(chkfile,35,"0%s",chkfile)
- write_file(listfile,chkfile,-1)
- }
- }
- //set nextopengl file
- new nextfile[32], setfile[32], pos
- read_file(listfile,0,nextfile,31,len)
- read_file(listfile,1,setfile,31,len)
- if( strlen(setfile) < 2 ) //cycle ?
- {
- if(maxlst > 3) //in case of firstime running or only one file in opengl dir
- {
- i=0
- for( i = 0 ; i < maxarr ; i++ )
- {
- ArrayGetString(g_Files,i,chkfile,31)
- if ( strfind(nextfile,chkfile) != -1)
- {
- if (i == maxarr-1)
- pos = 0
- else
- pos = i+1
- }
- }
- ArrayGetString(g_Files,pos,nextfile,31)
- }
- else
- {
- copy(nextfile,31,g_PrecFile)
- }
- formatex(glfile_path,63,"%s/%s",g_Path,nextfile)
- write_file(listfile,nextfile,0)
- }
- else
- {
- formatex(glfile_path,63,"%s/%s",g_Path,setfile)
- }
- ArrayDestroy(g_Files);
- file_copy(glfile_path,g_File,err,63,true)
- if (strlen(err)>0)
- server_print("[OpenglCheck] %s",err)
- return PLUGIN_CONTINUE
- }
- public plugin_precache()
- {
- force_unmodified(force_exactfile, {0,0,0},{0,0,0}, g_File)
- }
- public inconsistent_file(id, const filename[], reason[64])
- {
- if (equal(filename,g_File))
- {
- g_CheckPlayer[id]=1
- g_PunishPlayer[id]=0
- }
- return PLUGIN_HANDLED //to avoid kicking player without opengl file
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement