Advertisement
Guest User

SA:MP Structures (c) by Kaliber

a guest
Jan 12th, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.59 KB | None | 0 0
  1. /* SA-MP Include Structures
  2.  *
  3.  * (c) by Kaliber, 2015
  4.  *
  5.  */
  6. #if !defined _samp_included
  7.     #include <a_samp>
  8. #endif
  9. #if defined _samp_struct
  10.     #endinput
  11. #endif
  12. #define _samp_struct
  13.  
  14. new heap[0x10][0xA][0x10],struct_data,sz_Data[0x10];
  15. #pragma tabsize 0
  16. #define GetStruct(%0) sz_Data[%0]
  17. #define struct@1:%0{%1}%3(%4); enum%0{%1};@add_%4();@add_%4() return sz_Data[%4]=1,_ad(#%1,0),struct_data++;
  18. #define struct@2:%0{%1,%2}%3(%4); enum%0{%1,%2};@add_%4();@add_%4() { \
  19.     new tmp[] = #%1#","#%2,buffer[0x10]; \
  20.     for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
  21.         pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
  22.         if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
  23.         strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
  24.     } \
  25.     return sz_Data[%4]=2,struct_data++; \
  26. }
  27. #define struct@3:%0{%1,%2,%3}%4(%5); enum%0{%1,%2,%3};@add_%5();@add_%5() { \
  28.     new tmp[] = #%1#","#%2#","#%3,buffer[0x10]; \
  29.     for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
  30.         pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
  31.         if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
  32.         strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
  33.     } \
  34.     return sz_Data[%5]=3,struct_data++; \
  35. }
  36. #define struct@4:%0{%1,%2,%3,%4}%5(%6); enum%0{%1,%2,%3,%4};@add_%6();@add_%6() { \
  37.     new tmp[] = #%1#","#%2#","#%3#","#%4,buffer[0x10]; \
  38.     for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
  39.         pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
  40.         if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
  41.         strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
  42.     } \
  43.     return sz_Data[%6]=4,struct_data++; \
  44. }
  45. #define struct@5:%0{%1,%2,%3,%4,%5}%6(%7); enum%0{%1,%2,%3,%4,%5};@add_%7();@add_%7() { \
  46.     new tmp[] = #%1#","#%2#","#%3#","#%4#","#%5,buffer[0x10]; \
  47.     for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
  48.         pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
  49.         if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
  50.         strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
  51.     } \
  52.     return sz_Data[%7]=5,struct_data++; \
  53. }
  54. #define struct@6:%0{%1,%2,%3,%4,%5,%6}%7(%8); enum%0{%1,%2,%3,%4,%5,%6};@add_%8();@add_%8() { \
  55.     new tmp[] = #%1#","#%2#","#%3#","#%4#","#%5#","#%6,buffer[0x10]; \
  56.     for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
  57.         pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
  58.         if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
  59.         strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
  60.     } \
  61.     return sz_Data[%8]=6,struct_data++; \
  62. }
  63. #define struct@7:%0{%1,%2,%3,%4,%5,%6,%7}%8(%9); enum%0{%1,%2,%3,%4,%5,%6,%7};@add_%9();@add_%9() { \
  64.     new tmp[] = #%1#","#%2#","#%3#","#%4#","#%5#","#%6#","#%7,buffer[0x10]; \
  65.     for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
  66.         pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
  67.         if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
  68.         strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
  69.     } \
  70.     return sz_Data[%9]=7,struct_data++; \
  71. }
  72. #define struct@8:%0{%1,%2,%3,%4,%5,%6,%7,%8}(%9); enum%0{%1,%2,%3,%4,%5,%6,%7,%8};@add_%9();@add_%9() { \
  73.     new tmp[] = #%1#","#%2#","#%3#","#%4#","#%5#","#%6#","#%7#","#%8,buffer[0x10]; \
  74.     for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
  75.         pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
  76.         if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
  77.         strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
  78.     } \
  79.     return sz_Data[%9]=8,struct_data++; \
  80. }
  81. stock _ad(buffer[],i) {
  82.     new pos = strfind(buffer,":");
  83.     if(pos != -1) strmid(buffer,buffer,pos+1,strlen(buffer),0x10);
  84.     pos = strfind(buffer,"[");
  85.     if(pos != -1) strmid(buffer,buffer,0,pos,0x10);
  86.     return strcat(heap[struct_data][i],buffer,0x10);
  87. }
  88. forward ENUM_OnGameModeInit();
  89. public OnGameModeInit() {
  90.     for(new i,str[7],int[3]; i<0x10; i++) str[0]='\0',str="@add_",valstr(int,i),strcat(str,int),CallLocalFunction(str,"");
  91.     return CallLocalFunction("ENUM_OnGameModeInit","");
  92. }
  93. #if defined _ALS_OnGameModeInit
  94.     #undef OnGameModeInit
  95. #else
  96.     #define _ALS_OnGameModeInit
  97. #endif
  98. #define OnGameModeInit ENUM_OnGameModeInit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement