xxZeus

Dynamic Classes (Rough code)

Mar 10th, 2016
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.98 KB | None | 0 0
  1. #define MAX_CLASS 318
  2.  
  3. enum classEnum{
  4.     cskin, Float:cx, Float:cy, Float:cz, Float:cAngle, cweapon1, cweapon1_ammo, cweapon2, cweapon2_ammo, cweapon3, cweapon3_ammo, cteamid
  5. }
  6.  
  7. new Classes[MAX_CLASS][classEnum];
  8. new counter = -1;
  9. new lastClass[MAX_PLAYERS] = {0, ...};
  10. new currentClass[MAX_PLAYERS];
  11.  
  12. // Make sure Gamemodeinit is before hooking
  13. public OnGameModeInit()
  14. {
  15.     // add three random class, these will serve to see player pressed right button or left, no need to change anything here they should be blank
  16.     // dont add or remove addplayerclass lines here
  17.     AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
  18.     AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
  19.     AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
  20. }
  21.  
  22. stock h_AddPlayerClass(skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo)
  23. {
  24.     if(counter == MAX_CLASS-1)
  25.     {      
  26.         print("Max class limit reached");
  27.         return -1;
  28.     }
  29.     counter++;
  30.     Classes[counter][cskin] = skin;
  31.     Classes[counter][cx] = x;
  32.     Classes[counter][cy] = y;
  33.     Classes[counter][cz] = z;
  34.     Classes[counter][cAngle] = Angle;
  35.     Classes[counter][cweapon1] = weapon1;
  36.     Classes[counter][cweapon1_ammo] = weapon1_ammo;
  37.     Classes[counter][cweapon2] = weapon2;
  38.     Classes[counter][cweapon2_ammo] = weapon2_ammo;
  39.     Classes[counter][cweapon3] = weapon3;
  40.     Classes[counter][cweapon3_ammo] = weapon3_ammo;
  41.     return counter;
  42. }
  43.  
  44. stock h_AddPlayerClassEx(teamid, skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo)
  45. {
  46.     if(counter == MAX_CLASS-1)
  47.     {      
  48.         print("Max class limit reached");
  49.         return -1;
  50.     }
  51.     counter++;
  52.     Classes[counter][cteamid] = teamid;
  53.     Classes[counter][cskin] = skin;
  54.     Classes[counter][cx] = x;
  55.     Classes[counter][cy] = y;
  56.     Classes[counter][cz] = z;
  57.     Classes[counter][cAngle] = Angle;
  58.     Classes[counter][cweapon1] = weapon1;
  59.     Classes[counter][cweapon1_ammo] = weapon1_ammo;
  60.     Classes[counter][cweapon2] = weapon2;
  61.     Classes[counter][cweapon2_ammo] = weapon2_ammo;
  62.     Classes[counter][cweapon3] = weapon3;
  63.     Classes[counter][cweapon3_ammo] = weapon3_ammo;
  64.     return counter;
  65. }
  66.  
  67. //******************** REMOVE ALL CLASSES
  68. stock RemoveAllClasses()
  69. {
  70.     counter = -1;
  71. }
  72.  
  73. public OnPlayerRequestClass(playerid,classid)
  74. {
  75.     if(counter != -1)// if there is atleast one class
  76.     {
  77.         switch(lastClass[playerid])
  78.         {
  79.             case 0:
  80.             {
  81.                 if(classid == 0)
  82.                 {
  83.                     SetSpawnInfo(playerid, Classes[0][cteamid], Classes[0][cskin], Classes[0][cx], Classes[0][cy], Classes[0][cz], Classes[0][cAngle], Classes[0][cweapon1], Classes[0][cweapon1_ammo], Classes[0][cweapon2], Classes[0][cweapon2_ammo], Classes[0][cweapon3], Classes[0][cweapon3_ammo]);
  84.                     SetPlayerSkin(Classes[0][cskin]);
  85.                     currentClass[playerid] = 0;
  86.                 }
  87.                 if(classid == 1)// this means player pressed right button
  88.                 {
  89.                     if(currentClass[playerid] == counter)currentClass[playerid] = 0;
  90.                     else currentClass[playerid]++;
  91.                     SetSpawnInfo(playerid, Classes[currentClass[playerid]][cteamid], Classes[currentClass[playerid]][cskin], Classes[currentClass[playerid]][cx], Classes[currentClass[playerid]][cy], Classes[currentClass[playerid]][cz], Classes[currentClass[playerid]][cAngle], Classes[currentClass[playerid]][cweapon1], Classes[currentClass[playerid]][cweapon1_ammo], Classes[currentClass[playerid]][cweapon2], Classes[currentClass[playerid]][cweapon2_ammo], Classes[currentClass[playerid]][cweapon3], Classes[currentClass[playerid]][cweapon3_ammo]);
  92.                     SetPlayerSkin(Classes[currentClass[playerid]][cskin]);                 
  93.                 }
  94.                 if(classid == 2)//this means player pressed left button
  95.                 {
  96.                     if(currentClass[playerid] == 0)currentClass[playerid] = counter;
  97.                     else currentClass[playerid]--;
  98.                     SetSpawnInfo(playerid, Classes[currentClass[playerid]][cteamid], Classes[currentClass[playerid]][cskin], Classes[currentClass[playerid]][cx], Classes[currentClass[playerid]][cy], Classes[currentClass[playerid]][cz], Classes[currentClass[playerid]][cAngle], Classes[currentClass[playerid]][cweapon1], Classes[currentClass[playerid]][cweapon1_ammo], Classes[currentClass[playerid]][cweapon2], Classes[currentClass[playerid]][cweapon2_ammo], Classes[currentClass[playerid]][cweapon3], Classes[currentClass[playerid]][cweapon3_ammo]);
  99.                     SetPlayerSkin(Classes[currentClass[playerid]][cskin])
  100.                 }
  101.             }
  102.             case 1:
  103.             {
  104.                 if(classid == 1)
  105.                 {
  106.                     SetSpawnInfo(playerid, Classes[0][cteamid], Classes[0][cskin], Classes[0][cx], Classes[0][cy], Classes[0][cz], Classes[0][cAngle], Classes[0][cweapon1], Classes[0][cweapon1_ammo], Classes[0][cweapon2], Classes[0][cweapon2_ammo], Classes[0][cweapon3], Classes[0][cweapon3_ammo]);
  107.                     SetPlayerSkin(Classes[0][cskin]);
  108.                     currentClass[playerid] = 0;
  109.                 }
  110.                 if(classid == 2)// this means player pressed right button
  111.                 {
  112.                     if(currentClass[playerid] == counter)currentClass[playerid] = 0;
  113.                     else currentClass[playerid]++;
  114.                     SetSpawnInfo(playerid, Classes[currentClass[playerid]][cteamid], Classes[currentClass[playerid]][cskin], Classes[currentClass[playerid]][cx], Classes[currentClass[playerid]][cy], Classes[currentClass[playerid]][cz], Classes[currentClass[playerid]][cAngle], Classes[currentClass[playerid]][cweapon1], Classes[currentClass[playerid]][cweapon1_ammo], Classes[currentClass[playerid]][cweapon2], Classes[currentClass[playerid]][cweapon2_ammo], Classes[currentClass[playerid]][cweapon3], Classes[currentClass[playerid]][cweapon3_ammo]);
  115.                     SetPlayerSkin(Classes[currentClass[playerid]][cskin]);                 
  116.                 }
  117.                 if(classid == 0)//this means player pressed left button
  118.                 {
  119.                     if(currentClass[playerid] == 0)currentClass[playerid] = counter;
  120.                     else currentClass[playerid]--;
  121.                     SetSpawnInfo(playerid, Classes[currentClass[playerid]][cteamid], Classes[currentClass[playerid]][cskin], Classes[currentClass[playerid]][cx], Classes[currentClass[playerid]][cy], Classes[currentClass[playerid]][cz], Classes[currentClass[playerid]][cAngle], Classes[currentClass[playerid]][cweapon1], Classes[currentClass[playerid]][cweapon1_ammo], Classes[currentClass[playerid]][cweapon2], Classes[currentClass[playerid]][cweapon2_ammo], Classes[currentClass[playerid]][cweapon3], Classes[currentClass[playerid]][cweapon3_ammo]);
  122.                     SetPlayerSkin(Classes[currentClass[playerid]][cskin])
  123.                 }
  124.             }
  125.             case 2:
  126.             {
  127.                 if(classid == 2)
  128.                 {
  129.                     SetSpawnInfo(playerid, Classes[0][cteamid], Classes[0][cskin], Classes[0][cx], Classes[0][cy], Classes[0][cz], Classes[0][cAngle], Classes[0][cweapon1], Classes[0][cweapon1_ammo], Classes[0][cweapon2], Classes[0][cweapon2_ammo], Classes[0][cweapon3], Classes[0][cweapon3_ammo]);
  130.                     SetPlayerSkin(Classes[0][cskin]);
  131.                     currentClass[playerid] = 0;
  132.                 }
  133.                 if(classid == 0)// this means player pressed right button
  134.                 {
  135.                     if(currentClass[playerid] == counter)currentClass[playerid] = 0;
  136.                     else currentClass[playerid]++;
  137.                     SetSpawnInfo(playerid, Classes[currentClass[playerid]][cteamid], Classes[currentClass[playerid]][cskin], Classes[currentClass[playerid]][cx], Classes[currentClass[playerid]][cy], Classes[currentClass[playerid]][cz], Classes[currentClass[playerid]][cAngle], Classes[currentClass[playerid]][cweapon1], Classes[currentClass[playerid]][cweapon1_ammo], Classes[currentClass[playerid]][cweapon2], Classes[currentClass[playerid]][cweapon2_ammo], Classes[currentClass[playerid]][cweapon3], Classes[currentClass[playerid]][cweapon3_ammo]);
  138.                     SetPlayerSkin(Classes[currentClass[playerid]][cskin]);                 
  139.                 }
  140.                 if(classid == 1)//this means player pressed left button
  141.                 {
  142.                     if(currentClass[playerid] == 0)currentClass[playerid] = counter;
  143.                     else currentClass[playerid]--;
  144.                     SetSpawnInfo(playerid, Classes[currentClass[playerid]][cteamid], Classes[currentClass[playerid]][cskin], Classes[currentClass[playerid]][cx], Classes[currentClass[playerid]][cy], Classes[currentClass[playerid]][cz], Classes[currentClass[playerid]][cAngle], Classes[currentClass[playerid]][cweapon1], Classes[currentClass[playerid]][cweapon1_ammo], Classes[currentClass[playerid]][cweapon2], Classes[currentClass[playerid]][cweapon2_ammo], Classes[currentClass[playerid]][cweapon3], Classes[currentClass[playerid]][cweapon3_ammo]);
  145.                     SetPlayerSkin(Classes[currentClass[playerid]][cskin])
  146.                 }
  147.             }
  148.         }
  149.     }
  150.     lastClass[playerid] = classid;
  151.     CallLocalFunction("h_OnPlayerRequestClass", "dd", playerid, currentClass);
  152. }
  153.  
  154. // This will be always below the above code, dont change order of code
  155. //Hooking :
  156. #if defined _ALS_AddPlayerClass
  157.   #undef AddPlayerClass
  158. #else
  159. #define _ALS_AddPlayerClass
  160. #endif
  161.  
  162. #define AddPlayerClass h_AddPlayerClass
  163.  
  164. #if defined _ALS_AddPlayerClassEx
  165.   #undef AddPlayerClassEx
  166. #else
  167. #define _ALS_AddPlayerClassEx
  168. #endif
  169.  
  170. #define AddPlayerClassEx h_AddPlayerClassEx
  171.  
  172. // hook request class :
  173. #if defined _ALS_OnPlayerRequestClass
  174.   #undef OnPlayerRequestClass
  175. #else
  176. #define _ALS_OnPlayerRequestClass
  177. #endif
  178.  
  179. #define OnPlayerSpawn h_OnPlayerSpawn
  180.  
  181.  
  182. forward h_OnPlayerRequestClass(playerid, classid);
Add Comment
Please, Sign In to add comment