Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* SA-MP Include Structures
- *
- * (c) by Kaliber, 2015
- *
- */
- #if !defined _samp_included
- #include <a_samp>
- #endif
- #if defined _samp_struct
- #endinput
- #endif
- #define _samp_struct
- new heap[0x10][0xA][0x10],struct_data,sz_Data[0x10];
- #pragma tabsize 0
- #define GetStruct(%0) sz_Data[%0]
- #define struct@1:%0{%1}%3(%4); enum%0{%1};@add_%4();@add_%4() return sz_Data[%4]=1,_ad(#%1,0),struct_data++;
- #define struct@2:%0{%1,%2}%3(%4); enum%0{%1,%2};@add_%4();@add_%4() { \
- new tmp[] = #%1#","#%2,buffer[0x10]; \
- for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
- pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
- if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
- strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
- } \
- return sz_Data[%4]=2,struct_data++; \
- }
- #define struct@3:%0{%1,%2,%3}%4(%5); enum%0{%1,%2,%3};@add_%5();@add_%5() { \
- new tmp[] = #%1#","#%2#","#%3,buffer[0x10]; \
- for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
- pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
- if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
- strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
- } \
- return sz_Data[%5]=3,struct_data++; \
- }
- #define struct@4:%0{%1,%2,%3,%4}%5(%6); enum%0{%1,%2,%3,%4};@add_%6();@add_%6() { \
- new tmp[] = #%1#","#%2#","#%3#","#%4,buffer[0x10]; \
- for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
- pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
- if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
- strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
- } \
- return sz_Data[%6]=4,struct_data++; \
- }
- #define struct@5:%0{%1,%2,%3,%4,%5}%6(%7); enum%0{%1,%2,%3,%4,%5};@add_%7();@add_%7() { \
- new tmp[] = #%1#","#%2#","#%3#","#%4#","#%5,buffer[0x10]; \
- for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
- pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
- if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
- strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
- } \
- return sz_Data[%7]=5,struct_data++; \
- }
- #define struct@6:%0{%1,%2,%3,%4,%5,%6}%7(%8); enum%0{%1,%2,%3,%4,%5,%6};@add_%8();@add_%8() { \
- new tmp[] = #%1#","#%2#","#%3#","#%4#","#%5#","#%6,buffer[0x10]; \
- for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
- pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
- if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
- strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
- } \
- return sz_Data[%8]=6,struct_data++; \
- }
- #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() { \
- new tmp[] = #%1#","#%2#","#%3#","#%4#","#%5#","#%6#","#%7,buffer[0x10]; \
- for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
- pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
- if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
- strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
- } \
- return sz_Data[%9]=7,struct_data++; \
- }
- #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() { \
- new tmp[] = #%1#","#%2#","#%3#","#%4#","#%5#","#%6#","#%7#","#%8,buffer[0x10]; \
- for(new i,pos=-1,pos2; i<sizeof tmp; i++) { \
- pos2 = pos,pos = strfind(tmp,",",false,pos+1); \
- if(!i) {strmid(buffer,tmp,0,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);continue;} \
- strmid(buffer,tmp,pos2+1,(pos==-1)?strlen(tmp):pos,0x10),_ad(buffer,i);if(pos==-1) break; \
- } \
- return sz_Data[%9]=8,struct_data++; \
- }
- stock _ad(buffer[],i) {
- new pos = strfind(buffer,":");
- if(pos != -1) strmid(buffer,buffer,pos+1,strlen(buffer),0x10);
- pos = strfind(buffer,"[");
- if(pos != -1) strmid(buffer,buffer,0,pos,0x10);
- return strcat(heap[struct_data][i],buffer,0x10);
- }
- forward ENUM_OnGameModeInit();
- public OnGameModeInit() {
- for(new i,str[7],int[3]; i<0x10; i++) str[0]='\0',str="@add_",valstr(int,i),strcat(str,int),CallLocalFunction(str,"");
- return CallLocalFunction("ENUM_OnGameModeInit","");
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit ENUM_OnGameModeInit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement