slice29a

Untitled

Jul 12th, 2012
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 1.89 KB | None | 0 0
  1. #include <a_samp>
  2. #include <YSI\y_hooks>
  3. #include <YSI\y_amx>
  4.  
  5. stock Init1d(array[], const values[], size, values_size = sizeof(values)) {
  6.     for (new i = 0; i < size; i += values_size)
  7.         memcpy(array[i], values, 0, min(values_size, size - i) * 4, values_size);
  8.    
  9.     return 1;
  10. }
  11.  
  12. stock Init2d(array[][], const values[], sizes[], values_size = sizeof(values)) {
  13.     for (new i = 0; i < sizes[0]; i++)
  14.         Init1d(array[i], values, sizes[1], values_size);
  15.    
  16.     return 1;
  17. }
  18.  
  19. stock Init3d(array[][][], const values[], sizes[], values_size = sizeof(values)) {
  20.     for (new i = 0; i < sizes[0]; i++)
  21.         Init2d(array[i], values, sizes[1], values_size);
  22.    
  23.     return 1;
  24. }
  25.  
  26. stock _InitArray(sizes[3], const values[], values_size = sizeof(values), ...) {
  27.     if (sizes[2] > 1) {
  28.         #emit PUSH.S      values_size
  29.         #emit PUSH.S      sizes
  30.         #emit PUSH.S      values
  31.         #emit PUSH.S      24
  32.         #emit PUSH.C      16
  33.         #emit LCTRL       6
  34.         #emit ADD.C       28
  35.         #emit PUSH.pri
  36.         #emit CONST.pri   Init3d
  37.         #emit SCTRL       6
  38.     } else if (sizes[1] > 1) {
  39.         #emit PUSH.S      values_size
  40.         #emit PUSH.S      sizes
  41.         #emit PUSH.S      values
  42.         #emit PUSH.S      24
  43.         #emit PUSH.C      16
  44.         #emit LCTRL       6
  45.         #emit ADD.C       28
  46.         #emit PUSH.pri
  47.         #emit CONST.pri   Init2d
  48.         #emit SCTRL       6
  49.     }
  50. }
  51.  
  52. #define InitArray(%1,%2) \
  53.     _InitArray({_:ARS1:ARS2:(%1)~}, %2, _, _:%1)
  54.  
  55. #define ARS1:ARS2:(%1:%2)~ \
  56.     sizeof(%2), sizeof(%2[]), sizeof(%2[][])
  57.  
  58. #define ARS2:(%1)~ \
  59.     sizeof(%1), sizeof(%1[]), sizeof(%1[][])
  60.  
  61. #define Array:%1[%2]%3={%4} \
  62.     %1[%2]%3; AR1:AR2:%1();InitArray(%1,{%4}); stock ARa:ARb:%1; //
  63.  
  64. #define AR1:AR2:%1:%2(%3); \
  65.     @_Ar%2(%3);@_Ar%2(%3)
  66.  
  67. #define AR2:%1(%2); \
  68.     @_Ar%1(%2);AR1:@_Ar%1(%2)
  69.  
  70. #define ARa:ARb:%1:%2; \
  71.     @_AR%2
  72.  
  73. #define ARb:%1; \
  74.     @_AR%1
  75.  
  76. hook OnScriptInit() {
  77.     for (new buf[32], idx; (idx = AMX_GetPublicName(idx, buf, !"@_Ar")); )
  78.         CallLocalFunction(buf, !"");
  79. }
Advertisement
Add Comment
Please, Sign In to add comment