Advertisement
ErikSon_

Serverside Ammo / Reload

Sep 9th, 2014
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.24 KB | None | 0 0
  1. #if !defined _samp_included
  2.     #include <a_samp>
  3. #endif
  4.  
  5. new s_waffe[MAX_PLAYERS][46][2],
  6.     PlayerText:WaffenTD[MAX_PLAYERS];
  7. forward GivePlayerWeapon_Ex(playerid,Gun,Muni);
  8. forward _nl(playerid,time,weaponid);
  9. forward SSAR_PlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  10. forward SSAR_OnGameModeInit();
  11. forward SSAR_OnPlayerUpdate(playerid);
  12.  
  13.  
  14. /*      Settings        */
  15. stock Nachladen(playerid,weaponid){
  16.     new time;
  17.     switch(weaponid){
  18.         case 22..24,26..32,37,38,41,42:time = 3; //Ladezeit der Waffen anpassen ( Nachladezeit: 3 Sekunden )
  19.         default:{ //Shotguns, Rifles etc.
  20.             if(s_waffe[playerid][weaponid][0] - GunAmmo(weaponid) <= 0)return RemovePlayerWeapon(playerid,weaponid);
  21.             s_waffe[playerid][weaponid][1] = GunAmmo(weaponid),
  22.             s_waffe[playerid][weaponid][0] -= GunAmmo(weaponid);
  23.             return SetPlayerAmmo(playerid,weaponid,99999);
  24.         }
  25.     }
  26.     SetPlayerAmmo(playerid,weaponid,99999);
  27.     SetTimerEx("_nl",888,false,"iii",playerid,time,weaponid);
  28.     return SetPlayerArmedWeapon(playerid,0);
  29. }
  30. stock GunAmmo(weaponid){ //Munitionen der Waffen anpassen! ( im Magazin )
  31.     new muni;
  32.     switch(weaponid){
  33.         case 22:muni = 34;
  34.         case 23:muni = 17;
  35.         case 24:muni = 7;
  36.         case 26:muni = 2;
  37.         case 27:muni = 7;
  38.         case 28:muni = 100;
  39.         case 29:muni = 30;
  40.         case 30:muni = 30;
  41.         case 31:muni = 50;
  42.         case 32:muni = 100;
  43.         case 37:muni = 100;
  44.         case 38:muni = 500;
  45.         case 41:muni = 200;
  46.         case 42:muni = 100;
  47.         default:muni = 1;
  48.     }
  49.     return muni;
  50. }
  51. /*      Settings        */
  52.  
  53.  
  54.  
  55. public OnGameModeInit(){
  56.     print(" Serverside Ammo / Reload by ErikSon");
  57.     for(new playerid = 0; playerid < MAX_PLAYERS; playerid++){
  58.         WaffenTD[playerid] = CreatePlayerTextDraw(playerid,503.5 ,20 , "");
  59.         PlayerTextDrawFont(playerid,WaffenTD[playerid] , 1);
  60.         PlayerTextDrawLetterSize(playerid,WaffenTD[playerid] , 0.3, 2.1);
  61.         PlayerTextDrawColor(playerid,WaffenTD[playerid] , 0xE10000FF);
  62.         PlayerTextDrawSetOutline(playerid,WaffenTD[playerid] , false);
  63.         PlayerTextDrawSetProportional(playerid,WaffenTD[playerid] , true);
  64.         PlayerTextDrawSetShadow(playerid,WaffenTD[playerid] , 1);
  65.         PlayerTextDrawShow(playerid,WaffenTD[playerid]);
  66.     }  
  67.     return CallLocalFunction("SSAR_OnGameModeInit","");
  68. }
  69.  
  70. public OnPlayerUpdate(playerid){
  71.     if(FireWeapon(GetPlayerWeapon(playerid))){
  72.         new string[16];
  73.         format(string,16,"%i - %i",s_waffe[playerid][GetPlayerWeapon(playerid)][0],s_waffe[playerid][GetPlayerWeapon(playerid)][1]);
  74.         PlayerTextDrawSetString(playerid,WaffenTD[playerid],string);
  75.     }
  76.     else PlayerTextDrawSetString(playerid,WaffenTD[playerid],"");
  77.     return CallLocalFunction("SSAR_OnPlayerUpdate","i",playerid);
  78. }
  79.  
  80. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ){
  81.     s_waffe[playerid][weaponid][1] --;
  82.     if(s_waffe[playerid][weaponid][0] <= 0 && s_waffe[playerid][weaponid][1] <= 0)RemovePlayerWeapon(playerid,weaponid);
  83.     else if(s_waffe[playerid][weaponid][1] <= 0)Nachladen(playerid,weaponid);
  84.     return CallLocalFunction("SSAR_OnPlayerWeaponShot","iiiifff",playerid,weaponid,hittype,hitid,fX,fY,fZ);
  85. }
  86.  
  87. public _nl(playerid,time,weaponid){
  88.     ClearAnimations(playerid);
  89.     SetPlayerArmedWeapon(playerid,weaponid);
  90.     if(s_waffe[playerid][weaponid][0] - GunAmmo(weaponid) <= 0)return RemovePlayerWeapon(playerid,weaponid);
  91.     s_waffe[playerid][weaponid][1] = GunAmmo(weaponid),
  92.     s_waffe[playerid][weaponid][0] -= GunAmmo(weaponid);
  93.     if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)return ApplyAnimation(playerid,"BUDDY","buddy_crouchreload",1.0,0,1,1,0,888*time,1);
  94.     else return ApplyAnimation(playerid,"BUDDY","buddy_reload",1.0,0,1,1,0,888*time,1);
  95. }
  96.  
  97. stock FireWeapon(weaponid){
  98.     switch(weaponid){
  99.         case 16..18:return 1;
  100.         case 22..39:return 1;
  101.         default:return 0;
  102.     }
  103.     return 1;
  104. }
  105.  
  106. stock RemovePlayerWeapon(playerid, weaponid){
  107.     if(!IsPlayerConnected(playerid) || weaponid < 0 || weaponid > 50)return 1;
  108.     s_waffe[playerid][weaponid][0] = 0,s_waffe[playerid][weaponid][1] = 0;
  109.     new saveweapon[13], saveammo[13];
  110.     for(new slot = 0; slot < 13; slot++)
  111.     GetPlayerWeaponData(playerid, slot, saveweapon[slot], saveammo[slot]);
  112.     ResetPlayerWeapons(playerid);
  113.     for(new slot; slot < 13; slot++){
  114.         if(saveweapon[slot] == weaponid || saveammo[slot] == 0)continue;
  115.         GivePlayerWeapon_Ex(playerid, saveweapon[slot], saveammo[slot]);
  116.     }
  117.     return GivePlayerWeapon_Ex(playerid, 0, 1);
  118. }
  119.  
  120. public GivePlayerWeapon_Ex(playerid,Gun,Muni){
  121.     if(Muni - GunAmmo(Gun) <= 0){
  122.          s_waffe[playerid][Gun][1] = Muni;
  123.     }
  124.     else {
  125.         s_waffe[playerid][Gun][0] = Muni - GunAmmo(Gun), s_waffe[playerid][Gun][1] = GunAmmo(Gun);
  126.     }
  127.     return GivePlayerWeapon(playerid,Gun,99999);
  128. }
  129.  
  130. #if defined _ALS_GivePlayerWeapon
  131.     #undef GivePlayerWeapon
  132. #else
  133.     #define _ALS_GivePlayerWeapon
  134. #endif
  135. #define GivePlayerWeapon                GivePlayerWeapon_Ex
  136.  
  137. #if defined _ALS_OnGameModeInit
  138.     #undef OnGameModeInit
  139. #else
  140.     #define _ALS_OnGameModeInit
  141. #endif
  142. #define OnGameModeInit                  SSAR_OnGameModeInit
  143.  
  144. #if defined _ALS_OnPlayerUpdate
  145.     #undef OnPlayerUpdate
  146. #else
  147.     #define _ALS_OnPlayerUpdate
  148. #endif
  149. #define OnPlayerUpdate                  SSAR_OnPlayerUpdate
  150.  
  151. #if defined _ALS_OnPlayerWeaponShot
  152.     #undef OnPlayerWeaponShot
  153. #else
  154.     #define _ALS_OnPlayerWeaponShot
  155. #endif
  156. #define OnPlayerWeaponShot              SSAR_OnPlayerWeaponShot
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement