hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.18. 02:35



Jelenlévő felhasználók

Jelenleg 105 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 104 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: berak "all"
HozzászólásElküldve: 2012.09.10. 16:08 
Offline
Őskövület
Avatar

Csatlakozott: 2011.09.17. 17:54
Hozzászólások: 2350
Megköszönt másnak: 40 alkalommal
Megköszönték neki: 57 alkalommal
Hy.Megpróbáltam ebbe a részbe beleírni,hogy ha tartalmazza a játékos szövege az "all"-t akkor az összes ammót berakja a bankba de sajnos nem sikerült,ez nekem magas kicsit,sok a return,sok a kapcsos zárójel.Valaki csinálja meg pls,fontos lenne !

Ebbe a részbe kellene:
SMA Forráskód: [ Mindet kijelol ]
  1. public Command_Say(id)
  2. {
  3. static szArgs[32], szArg1[32], szArg2[32]
  4. szArgs[0] = '^0'
  5. szArg1[0] = '^0'
  6. szArg2[0] = '^0'
  7. read_args(szArgs, charsmax(szArgs))
  8. remove_quotes(szArgs)
  9. parse(szArgs, szArg1, charsmax(szArg1), szArg2, charsmax(szArg2))
  10.  
  11. new iCommand = 0
  12. if(equali(szArg1, "/berak"))
  13. iCommand = CMD_DEPOSIT
  14. else if(equali(szArg1, "/kivesz"))
  15. iCommand = CMD_WITHDRAW
  16. else if(equali(szArg1, "/bank"))
  17. iCommand = CMD_INFO
  18.  
  19. if(iCommand)
  20. {
  21. if(iCommand == CMD_INFO)
  22. Command_Info(id)
  23. else
  24. {
  25. new iValue = str_to_num(szArg2)
  26. if(iValue <= 0)
  27. {
  28. SayText(id, id, ZP_BANK_FMT, id, "ZP_BANK_INVALID_AMOUNT")
  29. return PLUGIN_HANDLED
  30. }
  31.  
  32. else if(iCommand == CMD_DEPOSIT)
  33. Command_Deposit(id, iValue)
  34. else
  35. Command_Withdraw(id, iValue)
  36. }
  37.  
  38. return PLUGIN_HANDLED
  39.  
  40. }
  41.  
  42. return PLUGIN_CONTINUE
  43. }


A rész ahol végrehajtja:

SMA Forráskód: [ Mindet kijelol ]
  1. Command_Deposit(id, iDeposit)
  2. {
  3. new iCurrentAmount = zp_get_user_ammo_packs(id)
  4. new iDepositMin = get_pcvar_num(cvDepositMin)
  5. if(!iCurrentAmount)
  6. {
  7. SayText(id, id, ZP_BANK_FMT, id, "ZP_BANK_NO_AMMO")
  8. return
  9. }
  10.  
  11. if(iDeposit > iCurrentAmount)
  12. iDeposit = iCurrentAmount
  13.  
  14. if(iCurrentAmount < iDepositMin)
  15. {
  16. SayText(id, id, ZP_BANK_FMT, id, "ZP_BANK_DMIN", iDepositMin)
  17. return
  18. }
  19.  
  20. if(iDeposit < iDepositMin)
  21. {
  22. SayText(id, id, ZP_BANK_FMT, id, "ZP_BANK_DMIN", iDepositMin)
  23. return
  24. }
  25.  
  26. new iCurrent = g_iAmmoPacks[id] + g_iSessionMovement[id]
  27. new iSum = iCurrent + iDeposit
  28. new iBankMax = get_pcvar_num(cvBankMax)
  29.  
  30. if(iBankMax && (iSum > iBankMax))
  31. {
  32. iDeposit = iBankMax - iCurrent
  33. iSum = iBankMax
  34.  
  35. SayText(id, id, ZP_BANK_FMT, id, "ZP_BANK_MAX", iBankMax)
  36. }
  37.  
  38. if(iDeposit)
  39. {
  40. g_iSessionMovement[id] += iDeposit
  41.  
  42. if (g_iWithdrawLimit[id] > abs(iDeposit))
  43. {
  44. g_iWithdrawLimit[id] -= abs(iDeposit)
  45. }
  46. else
  47. {
  48. g_iWithdrawLimit[id] = 0
  49. }
  50.  
  51. SayText(id, id, ZP_BANK_FMT, id, "ZP_BANK_DEPOSIT", iDeposit, iSum, (get_pcvar_num(cvWithdrawLimit) - g_iWithdrawLimit[id]))
  52. zp_set_user_ammo_packs(id, iCurrentAmount - iDeposit)
  53.  
  54. if (get_pcvar_num(cvDeBug) >= 3)
  55. {
  56. new PIP[32],Pname[32]
  57. get_user_ip(id, PIP, 31, 1)
  58. get_user_name(id, Pname, 31)
  59. log_to_file(zplog,"[AC] Bank: (Player ^"%s^") (IP ^"%s^") deposited ^"%d^" ammovalue to vault",Pname,PIP,iDeposit)
  60. }
  61. }
  62.  
  63. // If autosave enabled save this bullshit to vault
  64. if (get_pcvar_num(cvAutoSave) == 1)
  65. {
  66. SaveClient(id, g_szAuth[id])
  67. }
  68. }


És innen próbáltam kilesni ha valakinek segít:

SMA Forráskód: [ Mindet kijelol ]
  1. public handle_say(id)
  2. {
  3. if (!get_pcvar_num(pcvars[enable]))
  4. return PLUGIN_CONTINUE;
  5.  
  6. new text[70], arg1[32], arg2[32], arg3[6];
  7. read_args(text, sizeof(text) - 1);
  8. remove_quotes(text);
  9. arg1[0] = '^0';
  10. arg2[0] = '^0';
  11. arg3[0] = '^0';
  12. parse(text, arg1, sizeof(arg1) - 1, arg2, sizeof(arg2) - 1, arg3, sizeof(arg3) - 1);
  13.  
  14. //strip forward slash if present
  15. if (equali(arg1, "/", 1))
  16. format(arg1, 31, arg1[1]);
  17.  
  18. // if the chat line has more than 2 words, we're not interested at all
  19. if (arg3[0])
  20. return PLUGIN_CONTINUE;
  21.  
  22. if (equali(arg1, "berak", 7) || equali(arg1, "betesz", 4) || equali(arg1, "save", 5))
  23. {
  24. if (!get_pcvar_num(pcvars[deposit]))
  25. {
  26. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_DNA");
  27.  
  28. return PLUGIN_CONTINUE;
  29. }
  30.  
  31. if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
  32. {
  33. new amount = str_to_num(arg2);
  34. if (amount <= 0)
  35. {
  36. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_VGZ");
  37.  
  38. return PLUGIN_CONTINUE;
  39. }
  40. store_packs(id, amount);
  41.  
  42. return PLUGIN_HANDLED;
  43. }
  44. else if (equali(arg2, "all"))
  45. {
  46. store_packs(id, 0);
  47.  
  48. return PLUGIN_HANDLED;
  49. }
  50. else if (!arg2[0])
  51. {
  52. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_HELP_DPS");
  53.  
  54. return PLUGIN_CONTINUE;
  55. }
  56.  
  57. return PLUGIN_CONTINUE;
  58. }
  59. else if (equali(arg1, "kivesz", 8) || equali(arg1, "kiszed", 4) || equali(arg1, "retrieve", 8))
  60. {
  61. if (!get_pcvar_num(pcvars[withdraw]))
  62. {
  63. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_WNA");
  64.  
  65. return PLUGIN_CONTINUE;
  66. }
  67.  
  68. if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
  69. {
  70. new amount = str_to_num(arg2);
  71. if (amount <= 0)
  72. {
  73. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_VGZ");
  74.  
  75. return PLUGIN_CONTINUE;
  76. }
  77. take_packs(id, amount);
  78.  
  79. return PLUGIN_HANDLED;
  80. }
  81. else if (equali(arg2, "all", 3) || equali(arg2, "everything", 10))
  82. {
  83. take_packs(id, 0);
  84.  
  85. return PLUGIN_HANDLED;
  86. }
  87. else if (!arg2[0])
  88. {
  89. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_HELP_WD");
  90.  
  91. return PLUGIN_CONTINUE;
  92. }
  93.  
  94. return PLUGIN_CONTINUE;
  95. }
  96. else if (equali(arg1, "packs", 6) || equali(arg1, "account", 7) || equali(arg1, "bank", 4))
  97. {
  98. if (!arg2[0])
  99. {
  100. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_INFO_CHK1", bankstorage[id]);
  101.  
  102. return PLUGIN_HANDLED;
  103. }
  104. else
  105. {
  106. new id2 = cmd_target(id, arg2, 2);
  107. if (!id2)
  108. return PLUGIN_CONTINUE;
  109.  
  110. static id2name[32];
  111. get_user_name(id2, id2name, 31);
  112. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_INFO_CHK2", id2name, bankstorage[id2]);
  113.  
  114. return PLUGIN_HANDLED;
  115. }
  116.  
  117. return PLUGIN_CONTINUE;
  118. }
  119.  
  120. return PLUGIN_CONTINUE;
  121. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: berak "all"
HozzászólásElküldve: 2012.09.10. 20:46 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. public Command_Say(id)
  2. {
  3. static szArgs[32], szArg1[32], szArg2[32]
  4. szArgs[0] = '^0'
  5. szArg1[0] = '^0'
  6. szArg2[0] = '^0'
  7. read_args(szArgs, charsmax(szArgs))
  8. remove_quotes(szArgs)
  9. parse(szArgs, szArg1, charsmax(szArg1), szArg2, charsmax(szArg2))
  10.  
  11. new iCommand = 0
  12. if(equali(szArg1, "/berak"))
  13. iCommand = CMD_DEPOSIT
  14. else if(equali(szArg1, "/kivesz"))
  15. iCommand = CMD_WITHDRAW
  16. else if(equali(szArg1, "/bank"))
  17. iCommand = CMD_INFO
  18.  
  19. if(iCommand)
  20. {
  21. if(iCommand == CMD_INFO)
  22. Command_Info(id)
  23. else
  24. {
  25. if(equal(szArg2, "all")
  26. {
  27. else if(iCommand == CMD_DEPOSIT)
  28. Command_Deposit(id, összes)
  29. else
  30. Command_Withdraw(id, összes)
  31. }
  32. else
  33. {
  34. new iValue = str_to_num(szArg2)
  35. if(iValue <= 0)
  36. {
  37. SayText(id, id, ZP_BANK_FMT, id, "ZP_BANK_INVALID_AMOUNT")
  38. return PLUGIN_HANDLED
  39. }
  40. else if(iCommand == CMD_DEPOSIT)
  41. Command_Deposit(id, iValue)
  42. else
  43. Command_Withdraw(id, iValue)
  44. }
  45. }
  46.  
  47. return PLUGIN_HANDLED
  48.  
  49. }
  50.  
  51. return PLUGIN_CONTINUE
  52. }

_________________
http://www.ebateam.eu/

Ők köszönték meg IrOn nek ezt a hozzászólást: VirTuaL ~` (2012.09.11. 11:42)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: berak "all"
HozzászólásElküldve: 2012.09.11. 11:42 
Offline
Őskövület
Avatar

Csatlakozott: 2011.09.17. 17:54
Hozzászólások: 2350
Megköszönt másnak: 40 alkalommal
Megköszönték neki: 57 alkalommal
Nem jó,errort dob.Szerintem az elsék nem jól vannak.(az "összes"-t átírtam.)

Errorok:
Kód:
zp_bank.sma(664) : warning 217: loose indentation
zp_bank.sma(664) : error 029: invalid expression, assumed zero
zp_bank.sma(664 -- 665) : warning 215: expression has no effect
zp_bank.sma(665) : warning 217: loose indentation
zp_bank.sma(672) : warning 217: loose indentation
zp_bank.sma(672) : error 029: invalid expression, assumed zero
zp_bank.sma(672 -- 673) : warning 215: expression has no effect
zp_bank.sma(673) : warning 217: loose indentation
zp_bank.sma(680) : error 001: expected token: ")", but found "{"
zp_bank.sma(681) : error 029: invalid expression, assumed zero
zp_bank.sma(681) : warning 215: expression has no effect
zp_bank.sma(681) : error 001: expected token: ";", but found "if"
zp_bank.sma(700) : warning 217: loose indentation
zp_bank.sma(700) : error 029: invalid expression, assumed zero
zp_bank.sma(700 -- 701) : warning 215: expression has no effect
zp_bank.sma(701) : warning 217: loose indentation


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: berak "all"
HozzászólásElküldve: 2012.09.11. 12:48 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
:!: UPDATED :!:

Try again

Kód:
public Command_Say(id)
{
   static szArgs[32], szArg1[32], szArg2[32]
   szArgs[0] = '^0'
   szArg1[0] = '^0'
   szArg2[0] = '^0'
   read_args(szArgs, charsmax(szArgs))
   remove_quotes(szArgs)
   parse(szArgs, szArg1, charsmax(szArg1), szArg2, charsmax(szArg2))
 
   new iCommand = 0
   if(equali(szArg1, "/berak"))
      iCommand = CMD_DEPOSIT
   else if(equali(szArg1, "/kivesz"))
      iCommand = CMD_WITHDRAW
   else if(equali(szArg1, "/bank"))
      iCommand = CMD_INFO
 
 
 
   if(iCommand)
   {
      if(iCommand == CMD_INFO)
         Command_Info(id)
      else
      {
         if(!(iCommand == CMD_DEPOSIT || iCommand == CMD_WITHDRAW))
            return PLUGIN_CONTINUE
            
         new iValue;
         if (equali(szArg2, "all"))
         {   
            if (iCommand == CMD_WITHDRAW)
               iValue = g_iAmmoPacks[id];
            else
               iValue = zp_get_user_ammo_packs(id)
               
            if(iValue <= 0)
            {
               // IDE KÉNE EGY ÚJ LANG, HOGY NINCS MIT BETENNI/KIVENNI. AZ INVALID AMMOUNT ITT NEM SZÉP.
               SayText(id, id, ZP_BANK_FMT, id, "ZP_BANK_INVALID_AMOUNT")
               return PLUGIN_HANDLED
            }
         }
         else
         {
            iValue = str_to_num(szArg2)
            if(iValue <= 0)
            {
               SayText(id, id, ZP_BANK_FMT, id, "ZP_BANK_INVALID_AMOUNT")
               return PLUGIN_HANDLED
            }
         }         
 
         if(iCommand == CMD_DEPOSIT)
            Command_Deposit(id, iValue)
         else
            Command_Withdraw(id, iValue)
      }
 
      return PLUGIN_HANDLED
 
   }
 
   return PLUGIN_CONTINUE
}

_________________
Kód:
I'm back

Kép

Ők köszönték meg Metal nek ezt a hozzászólást: VirTuaL ~` (2012.09.11. 13:00)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: berak "all"
HozzászólásElküldve: 2012.09.11. 12:59 
Offline
Őskövület
Avatar

Csatlakozott: 2011.09.17. 17:54
Hozzászólások: 2350
Megköszönt másnak: 40 alkalommal
Megköszönték neki: 57 alkalommal
Tökéletesen megy,thx :)
Na még annyi kellene,hogy kivesz all-nál ne azt kérje le hogy mennyi ammója van mert akkor csak annyit vesz ki a bankból amennyi ammója van,nem az összeset.

SMA:

SMA Forráskód: [ Mindet kijelol ]
  1.  
  2.  
  3. #include <amxmodx>
  4.  
  5. #include <amxmisc>
  6.  
  7. #include <zombieplague>
  8.  
  9. #include <vault>
  10.  
  11.  
  12.  
  13. stock const ZP_BANK_FMT[] = "^x04[AC] %L"
  14.  
  15. stock const zplog[] = "zp_bank_activity.log"
  16.  
  17.  
  18.  
  19. new g_iAmmoPacks[33]
  20.  
  21. new g_iSessionMovement[33]
  22.  
  23. new g_iWithdrawLimit[33]
  24.  
  25. new g_szAuth[33][32]
  26.  
  27. new cvAnnounceTime
  28.  
  29. new cvBankMax
  30.  
  31. new cvDepositMin
  32.  
  33. new cvWithdrawMax
  34.  
  35. new cvWithdrawLimit
  36.  
  37. new cvBankSaveDays
  38.  
  39. new cvAutoSave
  40.  
  41. new cvDeBug
  42.  
  43.  
  44.  
  45. // Temporary Database vars (used to restore players stats in case they get disconnected)
  46.  
  47. new db_playerip[64][32] // player name
  48.  
  49. new db_wlimit[64] // withdraw limit
  50.  
  51. new db_slot_i // additional saved slots counter (should start on maxplayers+1)
  52.  
  53.  
  54.  
  55. // Temporary save player's stats to database
  56.  
  57. Tmp_Save(id)
  58.  
  59. {
  60.  
  61. new PIP[32]
  62.  
  63. get_user_ip(id, PIP, 31, 1)
  64.  
  65.  
  66.  
  67. // Check whether there is another record already in that slot
  68.  
  69. if (db_playerip[id][0] && !equal(PIP, db_playerip[id]))
  70.  
  71. {
  72.  
  73. // If DB size is exceeded, write over old records
  74.  
  75. if (db_slot_i >= sizeof db_playerip)
  76.  
  77. db_slot_i = get_maxplayers()+1
  78.  
  79.  
  80.  
  81. // Move previous record onto an additional save slot
  82.  
  83. copy(db_playerip[db_slot_i], charsmax(db_playerip[]), db_playerip[id])
  84.  
  85. db_wlimit[db_slot_i] = db_wlimit[id]
  86.  
  87. db_slot_i++
  88.  
  89. }
  90.  
  91.  
  92.  
  93. copy(db_playerip[id], charsmax(db_playerip[]), PIP) // name
  94.  
  95. db_wlimit[id] = g_iWithdrawLimit[id] // withdraw limit
  96.  
  97. }
  98.  
  99.  
  100.  
  101. // Load temporary saved player's stats from database (if a record is found)
  102.  
  103. Tmp_Load(id)
  104.  
  105. {
  106.  
  107. new PIP[32]
  108.  
  109. get_user_ip(id, PIP, 31, 1)
  110.  
  111.  
  112.  
  113. // Look for a matching record
  114.  
  115. static i
  116.  
  117. for (i = 0; i < sizeof db_playerip; i++)
  118.  
  119. {
  120.  
  121. if (equal(PIP, db_playerip[i]))
  122.  
  123. {
  124.  
  125. // Bingo!
  126.  
  127. g_iWithdrawLimit[id] = db_wlimit[i]
  128.  
  129. return;
  130.  
  131. }
  132.  
  133. }
  134.  
  135. }
  136.  
  137.  
  138.  
  139. LoadClient(id, szAuth[])
  140.  
  141. {
  142.  
  143. static szValue[11]
  144.  
  145. new iValue = 0
  146.  
  147. new key[38], vaultdata[56], name[34], timestamp[11]
  148.  
  149.  
  150.  
  151. // Little memory cleanup
  152.  
  153. szValue[0] = '^0'
  154.  
  155. key[0] = '^0'
  156.  
  157. vaultdata[0] = '^0'
  158.  
  159. name[0] = '^0'
  160.  
  161. timestamp[0] = '^0'
  162.  
  163.  
  164.  
  165. format(key,37,"ZBANK.%s",szAuth)
  166.  
  167.  
  168.  
  169. get_vaultdata(key,vaultdata,55)
  170.  
  171. parse(vaultdata,name,33,timestamp,10,szValue,10)
  172.  
  173. remove_quotes(name)
  174.  
  175.  
  176.  
  177. if (strlen(szValue) > 0)
  178.  
  179. {
  180.  
  181. iValue = (g_iAmmoPacks[id] = str_to_num(szValue))
  182.  
  183. }
  184.  
  185.  
  186.  
  187. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_LOAD", iValue, szAuth, (get_pcvar_num(cvWithdrawLimit) - g_iWithdrawLimit[id]))
  188.  
  189.  
  190.  
  191. if (get_pcvar_num(cvDeBug) >= 2)
  192.  
  193. {
  194.  
  195. if (iValue != 0)
  196.  
  197. {
  198.  
  199. log_to_file(zplog,"[ZP] DBLoad: loaded ^"%d^" ammovalue for (Player ^"%s^") (IP ^"%s^")",iValue,name,szAuth)
  200.  
  201. }
  202.  
  203. else
  204.  
  205. {
  206.  
  207. log_to_file(zplog,"[ZP] DBLoad: nothing to load for (IP ^"%s^"). So sad.",szAuth)
  208.  
  209. }
  210.  
  211.  
  212.  
  213. }
  214.  
  215. }
  216.  
  217.  
  218.  
  219. SaveClient(id, szAuth[])
  220.  
  221. {
  222.  
  223. static szValue[11]
  224.  
  225. new key[38], vaultdata[56], name[32]
  226.  
  227.  
  228.  
  229. // Little memory cleanup
  230.  
  231. szValue[0] = '^0'
  232.  
  233. key[0] = '^0'
  234.  
  235. vaultdata[0] = '^0'
  236.  
  237. name[0] = '^0'
  238.  
  239.  
  240.  
  241. num_to_str(g_iAmmoPacks[id] + g_iSessionMovement[id], szValue, charsmax(szValue))
  242.  
  243. get_user_name(id, name, 31)
  244.  
  245. format(key,37,"ZBANK.%s",szAuth)
  246.  
  247. format(vaultdata,55,"^"%s^" %d %s",name,get_systime(),szValue)
  248.  
  249.  
  250.  
  251. if (str_to_num(szValue) <= 0)
  252.  
  253. {
  254.  
  255. remove_vaultdata(key)
  256.  
  257. }
  258.  
  259. else
  260.  
  261. {
  262.  
  263. set_vaultdata(key,vaultdata)
  264.  
  265. }
  266.  
  267.  
  268.  
  269. if (get_pcvar_num(cvDeBug) >= 2)
  270.  
  271. {
  272.  
  273. if (str_to_num(szValue) > 0)
  274.  
  275. {
  276.  
  277. log_to_file(zplog,"[ZP] DBSave: saved ^"%s^" ammovalue for (Player ^"%s^") (IP ^"%s^")",szValue,name,szAuth)
  278.  
  279. }
  280.  
  281. else
  282.  
  283. {
  284.  
  285. log_to_file(zplog,"[ZP] DBSave: nothing to save for (IP ^"%s^"). So sad.",szAuth)
  286.  
  287. }
  288.  
  289. }
  290.  
  291. }
  292.  
  293.  
  294.  
  295. MemClr(id)
  296.  
  297. {
  298.  
  299. g_szAuth[id][0] = '^0'
  300.  
  301. g_iAmmoPacks[id] = 0
  302.  
  303. g_iSessionMovement[id] = 0
  304.  
  305. g_iWithdrawLimit[id] = 0
  306.  
  307. }
  308.  
  309.  
  310.  
  311. cleanDB()
  312.  
  313. {
  314.  
  315. // Open up the vault file - read line by line
  316.  
  317. // Use vault to delete to any data over a certain age
  318.  
  319. new gVaultFile[128]
  320.  
  321. if ( !file_exists(gVaultFile) ) return
  322.  
  323. get_localinfo("amxx_vault", gVaultFile, 127)
  324.  
  325.  
  326.  
  327. new ammoSaveDays = get_pcvar_num(cvBankSaveDays)
  328.  
  329.  
  330.  
  331. if ( ammoSaveDays < 0) return
  332.  
  333.  
  334.  
  335. if (get_pcvar_num(cvDeBug) >= 1)
  336.  
  337. {
  338.  
  339. log_to_file(zplog,"[ZP] DBClean: starting DB cleanup...")
  340.  
  341. }
  342.  
  343.  
  344.  
  345. // Create a copy of savekeys to remove
  346.  
  347. new temp[128], pcounter
  348.  
  349. formatex(temp, 127, "%s~", gVaultFile)
  350.  
  351.  
  352.  
  353. new vaultFile = fopen(gVaultFile, "r")
  354.  
  355. new tempFile = fopen(temp, "w+")
  356.  
  357.  
  358.  
  359. // Read through the file looking for valid entries
  360.  
  361. // Check the epoch time to see if deletion should happen
  362.  
  363. new data[93], vaultSaveKey[38], name[34], epoch[11], value[11]
  364.  
  365. new maxTime = ammoSaveDays * 24 * 3600
  366.  
  367. new curTime = get_systime()
  368.  
  369. new bool:dataFound
  370.  
  371.  
  372.  
  373. while ( !feof(vaultFile) ) {
  374.  
  375. data[0] = '^0'
  376.  
  377.  
  378.  
  379. // Read the line in vault and if zp save info check to see if we should copy vault key to temp file
  380.  
  381. // Don't need to read whole line only enough for what we need to parse
  382.  
  383. fgets(vaultFile, data, 92)
  384.  
  385.  
  386.  
  387. if ( equal(data, "ZBANK", 5) ) {
  388.  
  389. vaultSaveKey[0] = '^0'
  390.  
  391. name[0] = '^0'
  392.  
  393. epoch[0] = '^0'
  394.  
  395. value[0] = '^0'
  396.  
  397.  
  398.  
  399. // Only copy keys if older than max save days
  400.  
  401. parse(data, vaultSaveKey, 37, name, 33, epoch, 10, value, 10)
  402.  
  403. if ( (str_to_num(epoch) + maxTime) < curTime ) {
  404.  
  405. fprintf(tempFile, "%s^n", vaultSaveKey)
  406.  
  407. dataFound = true
  408.  
  409. }
  410.  
  411. }
  412.  
  413. }
  414.  
  415.  
  416.  
  417. // Finished reading vault close it
  418.  
  419. fclose(vaultFile)
  420.  
  421.  
  422.  
  423. if ( dataFound ) {
  424.  
  425. // Reset to top of temp file
  426.  
  427. fseek(tempFile, 0, SEEK_SET)
  428.  
  429.  
  430.  
  431. // Remove all entries in temp file from vault.ini
  432.  
  433. while ( !feof(tempFile) ) {
  434.  
  435. vaultSaveKey[0] = '^0'
  436.  
  437.  
  438.  
  439. fgets(tempFile, vaultSaveKey, 38)
  440.  
  441. trim(vaultSaveKey)
  442.  
  443.  
  444.  
  445. if ( vaultSaveKey[0] != '^0' )
  446.  
  447. {
  448.  
  449. remove_vaultdata(vaultSaveKey)
  450.  
  451. pcounter++
  452.  
  453. if (get_pcvar_num(cvDeBug) >= 1)
  454.  
  455. {
  456.  
  457. log_to_file(zplog,"[ZP] DBClean: Deleting %s due to defined autoprune",vaultSaveKey)
  458.  
  459. }
  460.  
  461. }
  462.  
  463. }
  464.  
  465. }
  466.  
  467.  
  468.  
  469. fclose(tempFile)
  470.  
  471. delete_file(temp)
  472.  
  473.  
  474.  
  475. if (get_pcvar_num(cvDeBug) >= 1)
  476.  
  477. {
  478.  
  479. log_to_file(zplog,"[ZP] DBClean: database prunned successfully. %d users deleted. Settings: %d days",pcounter,ammoSaveDays)
  480.  
  481. }
  482.  
  483. }
  484.  
  485.  
  486.  
  487. // Admin set ammopacks for player bank
  488.  
  489. public cmd_zpbankset(id, level, cid)
  490.  
  491. {
  492.  
  493. // Check for access flag
  494.  
  495. if (!cmd_access(id, level, cid, 3))
  496.  
  497. return PLUGIN_HANDLED;
  498.  
  499.  
  500.  
  501. // Retrieve arguments
  502.  
  503. static arg[32], ammo[11], player, amount
  504.  
  505. read_argv(1, arg, sizeof arg - 1)
  506.  
  507. read_argv(2, ammo, sizeof arg - 1)
  508.  
  509. amount = str_to_num(ammo)
  510.  
  511. player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
  512.  
  513.  
  514.  
  515. // Invalid target
  516.  
  517. if (!player) return PLUGIN_HANDLED;
  518.  
  519.  
  520.  
  521. if (amount >= 0)
  522.  
  523. {
  524.  
  525. g_iAmmoPacks[player] = amount
  526.  
  527. }
  528.  
  529.  
  530.  
  531. if (get_pcvar_num(cvDeBug) >= 1)
  532.  
  533. {
  534.  
  535. new PIP[32],Pname[32]
  536.  
  537. get_user_name(player, Pname, 31)
  538.  
  539. get_user_ip(player, PIP, 31, 1)
  540.  
  541. log_to_file(zplog,"[ZP] BankSet: set ^"%d^" bank ammovalue for (Player ^"%s^") (IP ^"%s^")",amount,Pname,PIP)
  542.  
  543. console_print(id,"[ZP] Set ^"%d^" bank ammovalue for ^"%s^"",amount,Pname,PIP)
  544.  
  545. }
  546.  
  547.  
  548.  
  549. // If autosave enabled save this bullshit to vault
  550.  
  551. if (get_pcvar_num(cvAutoSave) == 1)
  552.  
  553. {
  554.  
  555. SaveClient(player, g_szAuth[player])
  556.  
  557. }
  558.  
  559.  
  560.  
  561. return PLUGIN_HANDLED;
  562.  
  563. }
  564.  
  565.  
  566.  
  567. // Admin add ammopacks to player bank
  568.  
  569. public cmd_zpbankadd(id, level, cid)
  570.  
  571. {
  572.  
  573. // Check for access flag
  574.  
  575. if (!cmd_access(id, level, cid, 3))
  576.  
  577. return PLUGIN_HANDLED;
  578.  
  579.  
  580.  
  581. // Retrieve arguments
  582.  
  583. static arg[32], ammo[11], player, amount
  584.  
  585. read_argv(1, arg, sizeof arg - 1)
  586.  
  587. read_argv(2, ammo, sizeof arg - 1)
  588.  
  589. amount = str_to_num(ammo)
  590.  
  591. player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
  592.  
  593.  
  594.  
  595. // Invalid target
  596.  
  597. if (!player) return PLUGIN_HANDLED;
  598.  
  599.  
  600.  
  601. g_iAmmoPacks[player] += amount
  602.  
  603.  
  604.  
  605. if (get_pcvar_num(cvDeBug) >= 1)
  606.  
  607. {
  608.  
  609. new PIP[32],Pname[32]
  610.  
  611. get_user_name(player, Pname, 31)
  612.  
  613. get_user_ip(player, PIP, 31, 1)
  614.  
  615. log_to_file(zplog,"[ZP] BankSet: added ^"%d^" bank ammovalue for (Player ^"%s^") (IP ^"%s^")",amount,Pname,PIP)
  616.  
  617. console_print(id,"[ZP] Added ^"%d^" bank ammovalue for ^"%s^"",amount,Pname,PIP)
  618.  
  619. }
  620.  
  621.  
  622.  
  623. // If autosave enabled save this bullshit to vault
  624.  
  625. if (get_pcvar_num(cvAutoSave) == 1)
  626.  
  627. {
  628.  
  629. SaveClient(player, g_szAuth[player])
  630.  
  631. }
  632.  
  633.  
  634.  
  635. return PLUGIN_HANDLED;
  636.  
  637. }
  638.  
  639.  
  640.  
  641. // Admin set withdraw limit status for player
  642.  
  643. public cmd_zpbanklim(id, level, cid)
  644.  
  645. {
  646.  
  647. // Check for access flag
  648.  
  649. if (!cmd_access(id, level, cid, 3))
  650.  
  651. return PLUGIN_HANDLED;
  652.  
  653.  
  654.  
  655. // Retrieve arguments
  656.  
  657. static arg[32], limit[11], player, amount
  658.  
  659. read_argv(1, arg, sizeof arg - 1)
  660.  
  661. read_argv(2, limit, sizeof arg - 1)
  662.  
  663. amount = str_to_num(limit)
  664.  
  665. player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
  666.  
  667.  
  668.  
  669. // Invalid target
  670.  
  671. if (!player) return PLUGIN_HANDLED;
  672.  
  673.  
  674.  
  675. g_iWithdrawLimit[player] = amount
  676.  
  677.  
  678.  
  679. if (get_pcvar_num(cvDeBug) >= 1)
  680.  
  681. {
  682.  
  683. new PIP[32],Pname[32]
  684.  
  685. get_user_name(player, Pname, 31)
  686.  
  687. get_user_ip(player, PIP, 31, 1)
  688.  
  689. log_to_file(zplog,"[ZP] BankSet: set ^"%d^" withdraw limit for (Player ^"%s^") (IP ^"%s^")",amount,Pname,PIP)
  690.  
  691. console_print(id,"[ZP] Set ^"%d^" withdraw limit for ^"%s^"",amount,Pname,PIP)
  692.  
  693. }
  694.  
  695.  
  696.  
  697. return PLUGIN_HANDLED;
  698.  
  699. }
  700.  
  701.  
  702.  
  703. // Admin set ammopacks to pocket
  704.  
  705. public cmd_zpammoset(id, level, cid)
  706.  
  707. {
  708.  
  709. // Check for access flag
  710.  
  711. if (!cmd_access(id, level, cid, 3))
  712.  
  713. return PLUGIN_HANDLED;
  714.  
  715.  
  716.  
  717. // Retrieve arguments
  718.  
  719. static arg[32], ammo[11], player, amount
  720.  
  721. read_argv(1, arg, sizeof arg - 1)
  722.  
  723. read_argv(2, ammo, sizeof arg - 1)
  724.  
  725. amount = str_to_num(ammo)
  726.  
  727. player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
  728.  
  729.  
  730.  
  731. // Invalid target
  732.  
  733. if (!player) return PLUGIN_HANDLED;
  734.  
  735.  
  736.  
  737. zp_set_user_ammo_packs(player, amount)
  738.  
  739.  
  740.  
  741. if (get_pcvar_num(cvDeBug) >= 1)
  742.  
  743. {
  744.  
  745. new PIP[32],Pname[32]
  746.  
  747. get_user_name(player, Pname, 31)
  748.  
  749. get_user_ip(player, PIP, 31, 1)
  750.  
  751. log_to_file(zplog,"[ZP] BankSet: set ^"%d^" pocket ammovalue for (Player ^"%s^") (IP ^"%s^")",amount,Pname,PIP)
  752.  
  753. console_print(id,"[ZP] Set ^"%d^" pocket ammovalue for ^"%s^"",amount,Pname,PIP)
  754.  
  755. }
  756.  
  757.  
  758.  
  759. return PLUGIN_HANDLED;
  760.  
  761. }
  762.  
  763.  
  764.  
  765. // Admin add ammopacks to pocket
  766.  
  767. public cmd_zpammoadd(id, level, cid)
  768.  
  769. {
  770.  
  771. // Check for access flag
  772.  
  773. if (!cmd_access(id, level, cid, 3))
  774.  
  775. return PLUGIN_HANDLED;
  776.  
  777.  
  778.  
  779. // Retrieve arguments
  780.  
  781. static arg[32], ammo[11], player, amount
  782.  
  783. read_argv(1, arg, sizeof arg - 1)
  784.  
  785. read_argv(2, ammo, sizeof arg - 1)
  786.  
  787. amount = str_to_num(ammo)
  788.  
  789. player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
  790.  
  791.  
  792.  
  793. // Invalid target
  794.  
  795. if (!player) return PLUGIN_HANDLED;
  796.  
  797.  
  798.  
  799. zp_set_user_ammo_packs(player, zp_get_user_ammo_packs(player) + amount)
  800.  
  801.  
  802.  
  803. if (get_pcvar_num(cvDeBug) >= 1)
  804.  
  805. {
  806.  
  807. new PIP[32],Pname[32]
  808.  
  809. get_user_name(player, Pname, 31)
  810.  
  811. get_user_ip(player, PIP, 31, 1)
  812.  
  813. log_to_file(zplog,"[ZP] BankSet: added ^"%d^" pocket ammovalue for (Player ^"%s^") (IP ^"%s^")",amount,Pname,PIP)
  814.  
  815. console_print(id,"[ZP] Added ^"%d^" pocket ammovalue for ^"%s^"",amount,Pname,PIP)
  816.  
  817. }
  818.  
  819.  
  820.  
  821. return PLUGIN_HANDLED;
  822.  
  823. }
  824.  
  825.  
  826.  
  827.  
  828.  
  829. // Admin check players bank accounts
  830.  
  831. public cmd_zpbanklist(id, level, cid)
  832.  
  833. {
  834.  
  835. if (!cmd_access(id, level, cid, 1))
  836.  
  837. return PLUGIN_HANDLED
  838.  
  839.  
  840.  
  841. new playerCount
  842.  
  843. new players[32], name[32]
  844.  
  845.  
  846.  
  847. get_players(players, playerCount)
  848.  
  849.  
  850.  
  851. console_print(id,"Players Bank Accounts:^n")
  852.  
  853.  
  854.  
  855. new pid, teamName[5]
  856.  
  857. for ( new team = 1; team >= 0; team-- ) {
  858.  
  859. for ( new x = 0; x < playerCount; x++ ) {
  860.  
  861. pid = players[x]
  862.  
  863. if ( zp_get_user_zombie(pid) != team ) continue
  864.  
  865. get_user_name(pid, name, 31)
  866.  
  867.  
  868.  
  869. teamName[0] = '^0'
  870.  
  871. if ( zp_get_user_zombie(pid) == 1 ) copy(teamName, 4, "ZM :")
  872.  
  873. else if ( zp_get_user_zombie(pid) == 0 ) copy(teamName, 4, "HU :")
  874.  
  875. else copy(teamName, 4, "S :")
  876.  
  877.  
  878.  
  879. console_print(id, "%s%-24s (Bank: ^"%d^") (Pocket: ^"%d^") (WLimit: ^"%d^")", teamName, name, (g_iAmmoPacks[pid] + g_iSessionMovement[pid]), zp_get_user_ammo_packs(pid), (get_pcvar_num(cvWithdrawLimit) - g_iWithdrawLimit[pid]))
  880.  
  881. }
  882.  
  883. }
  884.  
  885.  
  886.  
  887. console_print(id, "")
  888.  
  889.  
  890.  
  891. if (get_pcvar_num(cvDeBug) >= 3)
  892.  
  893. {
  894.  
  895. new PIP[32],Pname[32]
  896.  
  897. get_user_name(id, Pname, 31)
  898.  
  899. get_user_ip(id, PIP, 31, 1)
  900.  
  901. log_to_file(zplog,"[ZP] Bank: (Player ^"%s^") (IP ^"%s^") asked for players bank account list",Pname,PIP)
  902.  
  903. }
  904.  
  905.  
  906.  
  907. return PLUGIN_HANDLED;
  908.  
  909. }
  910.  
  911.  
  912.  
  913. public plugin_init()
  914.  
  915. {
  916.  
  917. register_plugin("[ZP] Ammo Bank", "1.4", "danielkza and Lethal")
  918.  
  919.  
  920.  
  921. register_clcmd("say", "Command_Say")
  922.  
  923. register_dictionary("zp_bank_ammo.txt")
  924.  
  925.  
  926.  
  927. cvAnnounceTime = register_cvar("zp_bank_announce_time", "300")
  928.  
  929. cvBankMax = register_cvar("zp_bank_store_max", "50000")
  930.  
  931. cvDepositMin = register_cvar("zp_bank_deposit_min", "25")
  932.  
  933. cvWithdrawMax = register_cvar("zp_bank_withdraw_max", "250")
  934.  
  935. cvWithdrawLimit = register_cvar("zp_bank_withdraw_limit", "750")
  936.  
  937. cvBankSaveDays = register_cvar("zp_bank_savedays", "14")
  938.  
  939. cvAutoSave = register_cvar("zp_bank_autosave", "1")
  940.  
  941. cvDeBug = register_cvar("zp_bank_debug", "1")
  942.  
  943.  
  944.  
  945. register_concmd("playerbank", "cmd_zpbanklist", ADMIN_ALL, " - Show current ammo values for players")
  946.  
  947. register_concmd("zp_bankosszeg", "cmd_zpbankset", ADMIN_IMMUNITY, "<name> <amount> - Set player ammobank value")
  948.  
  949. register_concmd("zp_bankammo", "cmd_zpbankadd", ADMIN_IMMUNITY, "<name> <amount> - Add ammopacks to player ammobank")
  950.  
  951. register_concmd("zp_limbank", "cmd_zpbanklim", ADMIN_IMMUNITY, "<name> <amount> - Set player ammobank withdraw limit status")
  952.  
  953. register_concmd("zp_setammo", "cmd_zpammoset", ADMIN_IMMUNITY, "<name> <amount> - Set player pocket ammopacks")
  954.  
  955. register_concmd("zp_addammo", "cmd_zpammoadd", ADMIN_IMMUNITY, "<name> <amount> - Add ammopacks to players pocket")
  956.  
  957.  
  958.  
  959. // For temporarily save player stats
  960.  
  961. register_logevent("logevent_round_end", 2, "1=Round_End")
  962.  
  963.  
  964.  
  965. Task_Announce()
  966.  
  967. }
  968.  
  969.  
  970.  
  971.  
  972.  
  973. // For temporarily save player stats
  974.  
  975. public logevent_round_end()
  976.  
  977. {
  978.  
  979. // Prevent this from getting called twice when restarting (bugfix)
  980.  
  981. static Float:lastendtime
  982.  
  983. if (get_gametime() - lastendtime < 0.5) return;
  984.  
  985. lastendtime = get_gametime()
  986.  
  987.  
  988.  
  989. // Temporarily save player stats?
  990.  
  991. if (get_pcvar_num(cvAutoSave))
  992.  
  993. {
  994.  
  995. static id
  996.  
  997. for (id = 1; id <= get_maxplayers(); id++)
  998.  
  999. {
  1000.  
  1001. // Not connected
  1002.  
  1003. if (!is_user_connected(id))
  1004.  
  1005. continue;
  1006.  
  1007.  
  1008.  
  1009. Tmp_Save(id)
  1010.  
  1011. }
  1012.  
  1013. }
  1014.  
  1015. }
  1016.  
  1017.  
  1018.  
  1019. public plugin_end()
  1020.  
  1021. {
  1022.  
  1023. // Client's should have already been saved by now (client_disconnect is called before plugin_end).
  1024.  
  1025. // But it costs nothing to be sure.
  1026.  
  1027. new iPlayers[32], iNum
  1028.  
  1029. get_players(iPlayers, iNum)
  1030.  
  1031.  
  1032.  
  1033. new iPlayer
  1034.  
  1035. for(new i=0; i < iNum;i++)
  1036.  
  1037. {
  1038.  
  1039. iPlayer = iPlayers[i]
  1040.  
  1041.  
  1042.  
  1043. if (strlen(g_szAuth[iPlayer]) > 0)
  1044.  
  1045. SaveClient(iPlayer, g_szAuth[iPlayer])
  1046.  
  1047.  
  1048.  
  1049. MemClr(iPlayer)
  1050.  
  1051. }
  1052.  
  1053.  
  1054.  
  1055. cleanDB()
  1056.  
  1057. }
  1058.  
  1059.  
  1060.  
  1061. public client_putinserver(id)
  1062.  
  1063. {
  1064.  
  1065. static szAuth[32]
  1066.  
  1067. MemClr(id)
  1068.  
  1069. get_user_ip(id, szAuth, 31, 1)
  1070.  
  1071. copy(g_szAuth[id], charsmax(g_szAuth[]), szAuth)
  1072.  
  1073.  
  1074.  
  1075. LoadClient(id, szAuth)
  1076.  
  1077.  
  1078.  
  1079. // For temporarily save player stats
  1080.  
  1081. Tmp_Load(id)
  1082.  
  1083. }
  1084.  
  1085.  
  1086.  
  1087. public client_disconnect(id)
  1088.  
  1089. {
  1090.  
  1091. if (strlen(g_szAuth[id]) > 0)
  1092.  
  1093. SaveClient(id, g_szAuth[id])
  1094.  
  1095.  
  1096.  
  1097. // For temporarily save player stats
  1098.  
  1099. Tmp_Save(id)
  1100.  
  1101.  
  1102.  
  1103. MemClr(id)
  1104.  
  1105. }
  1106.  
  1107.  
  1108.  
  1109. public Task_Announce()
  1110.  
  1111. {
  1112.  
  1113. static iPlayers[32], iNum, iPlayer
  1114.  
  1115. get_players(iPlayers, iNum)
  1116.  
  1117.  
  1118.  
  1119. for(new i=0; i < iNum;i++)
  1120.  
  1121. {
  1122.  
  1123. iPlayer = iPlayers[i]
  1124.  
  1125. SayText(iPlayer, ZP_BANK_FMT, LANG_PLAYER, "ZP_BANK_ANNOUNCE")
  1126.  
  1127. }
  1128.  
  1129.  
  1130.  
  1131. set_task(get_pcvar_float(cvAnnounceTime), "Task_Announce")
  1132.  
  1133. }
  1134.  
  1135.  
  1136.  
  1137. enum
  1138.  
  1139. {
  1140.  
  1141. CMD_DEPOSIT = 1,
  1142.  
  1143. CMD_WITHDRAW,
  1144.  
  1145. CMD_INFO
  1146.  
  1147. }
  1148.  
  1149.  
  1150.  
  1151. public Command_Say(id)
  1152.  
  1153. {
  1154.  
  1155. static szArgs[32], szArg1[32], szArg2[32]
  1156.  
  1157. szArgs[0] = '^0'
  1158.  
  1159. szArg1[0] = '^0'
  1160.  
  1161. szArg2[0] = '^0'
  1162.  
  1163. read_args(szArgs, charsmax(szArgs))
  1164.  
  1165. remove_quotes(szArgs)
  1166.  
  1167. parse(szArgs, szArg1, charsmax(szArg1), szArg2, charsmax(szArg2))
  1168.  
  1169.  
  1170.  
  1171. new iCommand = 0
  1172.  
  1173. if(equali(szArg1, "/berak"))
  1174.  
  1175. iCommand = CMD_DEPOSIT
  1176.  
  1177. else if(equali(szArg1, "/kivesz"))
  1178.  
  1179. iCommand = CMD_WITHDRAW
  1180.  
  1181. if(equali(szArg1, "berak"))
  1182.  
  1183. iCommand = CMD_DEPOSIT
  1184.  
  1185. else if(equali(szArg1, "kivesz"))
  1186.  
  1187. iCommand = CMD_WITHDRAW
  1188.  
  1189. else if(equali(szArg1, "/bank"))
  1190.  
  1191. iCommand = CMD_INFO
  1192.  
  1193.  
  1194.  
  1195. if(iCommand)
  1196.  
  1197. {
  1198.  
  1199. if(iCommand == CMD_INFO)
  1200.  
  1201. Command_Info(id)
  1202.  
  1203. else
  1204.  
  1205. {
  1206.  
  1207. new iValue;
  1208.  
  1209. if (equali(szArg2, "all"))
  1210.  
  1211. {
  1212.  
  1213. iValue = zp_get_user_ammo_packs(id)
  1214.  
  1215. if(iValue <= 0)
  1216.  
  1217. {
  1218.  
  1219. SayText(id, ZP_BANK_FMT, id, "ZP_NO_AMMO_TO_SET")
  1220.  
  1221. return PLUGIN_HANDLED
  1222.  
  1223. }
  1224.  
  1225. }
  1226.  
  1227. else
  1228.  
  1229. {
  1230.  
  1231. iValue = str_to_num(szArg2)
  1232.  
  1233. if(iValue <= 0)
  1234.  
  1235. {
  1236.  
  1237. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_INVALID_AMOUNT")
  1238.  
  1239. return PLUGIN_HANDLED
  1240.  
  1241. }
  1242.  
  1243. }
  1244.  
  1245.  
  1246.  
  1247. if(iCommand == CMD_DEPOSIT)
  1248.  
  1249. Command_Deposit(id, iValue)
  1250.  
  1251. else
  1252.  
  1253. Command_Withdraw(id, iValue)
  1254.  
  1255. }
  1256.  
  1257.  
  1258.  
  1259. return PLUGIN_HANDLED
  1260.  
  1261.  
  1262.  
  1263. }
  1264.  
  1265.  
  1266.  
  1267. return PLUGIN_CONTINUE
  1268.  
  1269. }
  1270.  
  1271.  
  1272.  
  1273. Command_Info(id)
  1274.  
  1275. {
  1276.  
  1277. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_LOAD", g_iAmmoPacks[id] + g_iSessionMovement[id], g_szAuth[id], (get_pcvar_num(cvWithdrawLimit) - g_iWithdrawLimit[id]))
  1278.  
  1279. }
  1280.  
  1281.  
  1282.  
  1283. Command_Deposit(id, iDeposit)
  1284.  
  1285. {
  1286.  
  1287. new iCurrentAmount = zp_get_user_ammo_packs(id)
  1288.  
  1289. new iDepositMin = get_pcvar_num(cvDepositMin)
  1290.  
  1291. if(!iCurrentAmount)
  1292.  
  1293. {
  1294.  
  1295. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_NO_AMMO")
  1296.  
  1297. return
  1298.  
  1299. }
  1300.  
  1301.  
  1302.  
  1303. if(iDeposit > iCurrentAmount)
  1304.  
  1305. iDeposit = iCurrentAmount
  1306.  
  1307.  
  1308.  
  1309. if(iCurrentAmount < iDepositMin)
  1310.  
  1311. {
  1312.  
  1313. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_DMIN", iDepositMin)
  1314.  
  1315. return
  1316.  
  1317. }
  1318.  
  1319.  
  1320.  
  1321. if(iDeposit < iDepositMin)
  1322.  
  1323. {
  1324.  
  1325. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_DMIN", iDepositMin)
  1326.  
  1327. return
  1328.  
  1329. }
  1330.  
  1331.  
  1332.  
  1333. new iCurrent = g_iAmmoPacks[id] + g_iSessionMovement[id]
  1334.  
  1335. new iSum = iCurrent + iDeposit
  1336.  
  1337. new iBankMax = get_pcvar_num(cvBankMax)
  1338.  
  1339.  
  1340.  
  1341. if(iBankMax && (iSum > iBankMax))
  1342.  
  1343. {
  1344.  
  1345. iDeposit = iBankMax - iCurrent
  1346.  
  1347. iSum = iBankMax
  1348.  
  1349.  
  1350.  
  1351. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_MAX", iBankMax)
  1352.  
  1353. }
  1354.  
  1355.  
  1356.  
  1357. if(iDeposit)
  1358.  
  1359. {
  1360.  
  1361. g_iSessionMovement[id] += iDeposit
  1362.  
  1363.  
  1364.  
  1365. if (g_iWithdrawLimit[id] > abs(iDeposit))
  1366.  
  1367. {
  1368.  
  1369. g_iWithdrawLimit[id] -= abs(iDeposit)
  1370.  
  1371. }
  1372.  
  1373. else
  1374.  
  1375. {
  1376.  
  1377. g_iWithdrawLimit[id] = 0
  1378.  
  1379. }
  1380.  
  1381.  
  1382.  
  1383. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_DEPOSIT", iDeposit, iSum, (get_pcvar_num(cvWithdrawLimit) - g_iWithdrawLimit[id]))
  1384.  
  1385. zp_set_user_ammo_packs(id, iCurrentAmount - iDeposit)
  1386.  
  1387.  
  1388.  
  1389. if (get_pcvar_num(cvDeBug) >= 3)
  1390.  
  1391. {
  1392.  
  1393. new PIP[32],Pname[32]
  1394.  
  1395. get_user_ip(id, PIP, 31, 1)
  1396.  
  1397. get_user_name(id, Pname, 31)
  1398.  
  1399. log_to_file(zplog,"[ZP] Bank: (Player ^"%s^") (IP ^"%s^") deposited ^"%d^" ammovalue to vault",Pname,PIP,iDeposit)
  1400.  
  1401. }
  1402.  
  1403. }
  1404.  
  1405.  
  1406.  
  1407. // If autosave enabled save this bullshit to vault
  1408.  
  1409. if (get_pcvar_num(cvAutoSave) == 1)
  1410.  
  1411. {
  1412.  
  1413. SaveClient(id, g_szAuth[id])
  1414.  
  1415. }
  1416.  
  1417. }
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423. Command_Withdraw(id, iWithdraw)
  1424.  
  1425. {
  1426.  
  1427. new iDeposited = g_iAmmoPacks[id] + g_iSessionMovement[id]
  1428.  
  1429. new iWithdrawMax = get_pcvar_num(cvWithdrawMax)
  1430.  
  1431. new iWithdrawLimit = get_pcvar_num(cvWithdrawLimit)
  1432.  
  1433.  
  1434.  
  1435. if(!iDeposited)
  1436.  
  1437. {
  1438.  
  1439. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_EMPTY")
  1440.  
  1441. return
  1442.  
  1443. }
  1444.  
  1445.  
  1446.  
  1447. if(iWithdraw > iDeposited)
  1448.  
  1449. iWithdraw = iDeposited
  1450.  
  1451.  
  1452.  
  1453. if(iWithdraw > iWithdrawMax)
  1454.  
  1455. {
  1456.  
  1457. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_WMAX", iWithdrawMax)
  1458.  
  1459. return
  1460.  
  1461. }
  1462.  
  1463.  
  1464.  
  1465. if((g_iWithdrawLimit[id] > iWithdrawLimit) || ((g_iWithdrawLimit[id] + iWithdraw) > iWithdrawLimit))
  1466.  
  1467. {
  1468.  
  1469. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_WLIM", iWithdrawLimit, (iWithdrawLimit - g_iWithdrawLimit[id]))
  1470.  
  1471. return
  1472.  
  1473. }
  1474.  
  1475.  
  1476.  
  1477. g_iWithdrawLimit[id] += iWithdraw
  1478.  
  1479. g_iSessionMovement[id] -= iWithdraw
  1480.  
  1481.  
  1482.  
  1483. SayText(id, ZP_BANK_FMT, id, "ZP_BANK_WITHDRAW", iWithdraw, iDeposited - iWithdraw, (get_pcvar_num(cvWithdrawLimit) - g_iWithdrawLimit[id]))
  1484.  
  1485. zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + iWithdraw)
  1486.  
  1487. if (get_pcvar_num(cvDeBug) >= 3)
  1488.  
  1489. {
  1490.  
  1491. new PIP[32],Pname[32]
  1492.  
  1493. get_user_ip(id, PIP, 31, 1)
  1494.  
  1495. get_user_name(id, Pname, 31)
  1496.  
  1497. log_to_file(zplog,"[ZP] Bank: (Player ^"%s^") (IP ^"%s^") withdrawed ^"%d^" ammovalue from vault",Pname,PIP,iWithdraw)
  1498.  
  1499. }
  1500.  
  1501.  
  1502.  
  1503. // If autosave enabled save this bullshit to vault
  1504.  
  1505. if (get_pcvar_num(cvAutoSave) == 1)
  1506.  
  1507. {
  1508.  
  1509. SaveClient(id, g_szAuth[id])
  1510.  
  1511. }
  1512.  
  1513. }
  1514.  
  1515.  
  1516.  
  1517. stock SayText(const id, const input[], any:...)
  1518.  
  1519. {
  1520.  
  1521. new count = 1, players[32]
  1522.  
  1523. static msg[191]
  1524.  
  1525. vformat(msg, 190, input, 3)
  1526.  
  1527.  
  1528.  
  1529. replace_all(msg, 190, "!g", "^4") // Green Color
  1530.  
  1531. replace_all(msg, 190, "!y", "^1") // Default Color
  1532.  
  1533. replace_all(msg, 190, "!t", "^3") // Team Color
  1534.  
  1535.  
  1536.  
  1537. if (id) players[0] = id; else get_players(players, count, "ch")
  1538.  
  1539. {
  1540.  
  1541. for ( new i = 0; i < count; i++ )
  1542.  
  1543. {
  1544.  
  1545. if ( is_user_connected(players[i]) )
  1546.  
  1547. {
  1548.  
  1549. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  1550.  
  1551. write_byte(players[i]);
  1552.  
  1553. write_string(msg);
  1554.  
  1555. message_end();
  1556.  
  1557. }
  1558.  
  1559. }
  1560.  
  1561. }
  1562.  
  1563. }
  1564.  
  1565.  


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 5 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 10 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole