Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2014
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.02 KB | None | 0 0
  1. public load()
  2. {
  3.  
  4.     if(!dir_exists(g_Path))
  5.     {
  6.         server_print("[OpenglCheck] No dir opengl32 with source files!!!")
  7.         return PLUGIN_HANDLED
  8.     }
  9.     new glfile[32], glfile_path[64], err[64]
  10.    
  11.     if(!file_exists(g_File))
  12.     {
  13.         new gldir = open_dir(g_Path,glfile,31)
  14.        
  15.         formatex(glfile_path,63,"%s/%s",g_Path,glfile)
  16.         file_copy(glfile_path,g_File,err,63,true)
  17.        
  18.         if(strlen(err) > 0)
  19.         {
  20.             server_print("[OpenglCheck] %s",err)
  21.             server_print("[OpenglCheck] Invalid opengl32 file,!!!")
  22.             return PLUGIN_HANDLED
  23.         }
  24.         close_dir(gldir)
  25.     }
  26.     new prec_buff[34], glfile_buff[34]
  27.     md5_file(g_File,prec_buff)
  28.    
  29.     g_Files = ArrayCreate(32);
  30.     new gldir = open_dir(g_Path,glfile,31)
  31.     new maxarr = 0
  32.    
  33.     do
  34.     {
  35.         if(strlen(glfile)>3)
  36.         {
  37.             if(contain(glfile,"@") != -1)
  38.             {
  39.                 new renfile[64]
  40.                
  41.                 formatex(renfile,63,"%s",glfile)
  42.                 replace(glfile,31,"@","")
  43.                 formatex(glfile_path,63,"%s/%s",g_Path,glfile)
  44.                 format(renfile,63,"%s/%s",g_Path,renfile)
  45.                
  46.                 rename_file(renfile,glfile_path,true)
  47.                 server_print("[OpenglCheck] Invalid opengl file name: %s renamed to: %s",renfile,glfile_path)
  48.             }
  49.            
  50.             formatex(glfile_path,63,"%s/%s",g_Path,glfile)
  51.             md5_file(glfile_path,glfile_buff)
  52.             if(equal(prec_buff,glfile_buff))
  53.             {
  54.                 copy(g_PrecFile,31,glfile)
  55.                 server_print("[OpenglCheck] Precached opengl file is %s",g_PrecFile)    
  56.             }
  57.             ArrayPushString(g_Files,glfile);
  58.             maxarr += 1;
  59.         }
  60.    
  61.     }
  62.     while ( next_file(gldir,glfile,31))
  63.     close_dir(gldir)       
  64.    
  65.     //check and update list of files
  66.     new listfile[128]
  67.    
  68.     get_configsdir(listfile,127)
  69.     format(listfile,127,"%s/openglfiles.txt",listfile)
  70.    
  71.     if(!file_exists(listfile))
  72.     {
  73.         server_print("[OpenglCheck] openglfiles.txt not exist, create file !!!")
  74.         write_file(listfile,g_PrecFile,0)
  75.         write_file(listfile,"0",1)
  76.     }
  77.  
  78.     new i, chk, lstfile[36],chkfile[36],arrfile[32], maxlst, len
  79.    
  80.     //new maxlst = file_size(listfile,1)
  81.  
  82.     for(i = 0 ; i < maxarr ; i++)
  83.     {
  84.         ArrayGetString(g_Files,i,arrfile,31)
  85.         formatex(chkfile,35,"@%s",arrfile)
  86.         chk = 0
  87.        
  88.         //loop inside list file to check new opengl files from dir
  89.         //for loop is shortly than while loop because skip first 2 lines, but spent time with reading maxlines
  90.         /*
  91.         new listfile_handle = fopen( listfile, "rt" );
  92.         while(!feof(listfile_handle))
  93.         {
  94.             fgets(listfile_handle,lstfile,35)
  95.             if(strlen(lstfile) >10)
  96.             {
  97.                 if (strfind(lstfile,chkfile)!=-1)
  98.                     chk += 1
  99.             }
  100.         }
  101.         */
  102.        
  103.         new j
  104.         maxlst = file_size(listfile,1)
  105.        
  106.         for(j = 2 ; j < maxlst-1 ; j++)
  107.         {
  108.             read_file(listfile,j,lstfile,31,len)
  109.             if (strfind(lstfile,chkfile)!=-1)
  110.                 chk += 1
  111.         }
  112.        
  113.         if (chk == 0)  
  114.         {
  115.             server_print("[OpenglCheck] write opengl file %s in list",chkfile)
  116.             format(chkfile,35,"0%s",chkfile)
  117.             write_file(listfile,chkfile,-1)
  118.         }
  119.     }
  120.    
  121.     //set nextopengl file
  122.     new nextfile[32], setfile[32], pos
  123.    
  124.     read_file(listfile,0,nextfile,31,len)
  125.     read_file(listfile,1,setfile,31,len)
  126.    
  127.     if( strlen(setfile) < 2 ) //cycle ?
  128.     {
  129.        
  130.         if(maxlst > 3) //in case of firstime running or only one file in opengl dir
  131.         {
  132.             i=0
  133.             for( i = 0 ; i < maxarr ; i++ )
  134.             {
  135.                 ArrayGetString(g_Files,i,chkfile,31)
  136.                
  137.                 if ( strfind(nextfile,chkfile) != -1)
  138.                 {
  139.                     if (i == maxarr-1)
  140.                         pos = 0
  141.                     else
  142.                         pos = i+1
  143.                 }
  144.             }
  145.             ArrayGetString(g_Files,pos,nextfile,31)
  146.         }
  147.         else
  148.         {
  149.             copy(nextfile,31,g_PrecFile)
  150.         }
  151.        
  152.         formatex(glfile_path,63,"%s/%s",g_Path,nextfile)
  153.         write_file(listfile,nextfile,0)
  154.     }
  155.     else
  156.     {
  157.         formatex(glfile_path,63,"%s/%s",g_Path,setfile)
  158.     }
  159.    
  160.     ArrayDestroy(g_Files);
  161.    
  162.     file_copy(glfile_path,g_File,err,63,true)
  163.     if (strlen(err)>0)
  164.         server_print("[OpenglCheck] %s",err)
  165.     return PLUGIN_CONTINUE
  166. }
  167.  
  168. public plugin_precache()
  169. {
  170.     force_unmodified(force_exactfile, {0,0,0},{0,0,0}, g_File)
  171. }
  172.  
  173. public inconsistent_file(id, const filename[], reason[64])
  174. {
  175.     if (equal(filename,g_File))
  176.     {
  177.         g_CheckPlayer[id]=1
  178.         g_PunishPlayer[id]=0
  179.     }
  180.     return PLUGIN_HANDLED //to avoid kicking player without opengl file
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement