Guest User

yang_special_bank

a guest
Jan 13th, 2015
642
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --**Quest by Luzzo
  2. --**Data: 13/01/2015
  3.  
  4. quest yang_special_bank begin
  5.     state start begin
  6.         function GetScriptData(data)
  7.             local bank_data = {['yang_limit'] = 2000000000,                     -- limite di yang prelevabili e depositabili
  8.                               ['rates'] = 1,            -- tasso di interesse calcolato sul giorno
  9.                               ['day_rates_limit'] = 7,              -- limite di giorni su cui calcolare il tasso
  10.                               ['min_lev'] = 25, }                   -- livello minimo per usare la banca,
  11.                              
  12.             return rawget(bank_data, data)     
  13.         end
  14.        
  15.         function DepositYang(yang)
  16.             pc.setqf("yang_bank",yang)
  17.         end
  18.        
  19.         function GetBankYang()
  20.             return pc.getqf("yang_bank")
  21.         end
  22.        
  23.         function GetBankBalance()
  24.             local yang = yang_special_bank.GetBankYang()
  25.             if yang > 0 and yang_special_bank.check_day() > 0 then
  26.                 for x = 1, yang_special_bank.check_day() do
  27.                     yang = yang + math.floor(yang*math.min(yang_special_bank.check_day(),yang_special_bank.GetScriptData('day_rates_limit'))*0.01)
  28.                 end
  29.                 return yang
  30.             elseif yang == 0 then
  31.                 return 0
  32.             elseif yang_special_bank.check_day() == 0 then
  33.                 return yang
  34.             else
  35.                 return 0
  36.             end
  37.         end
  38.        
  39.         function SetBankTime()
  40.             pc.setqf("bank_time",get_time())
  41.         end
  42.        
  43.         function ResetBankTime()
  44.             pc.setqf("bank_time",0)
  45.         end
  46.        
  47.         function GetBankTime()
  48.             return pc.getqf("bank_time")
  49.         end
  50.        
  51.         function check_day()
  52.             if yang_special_bank.GetBankTime() != 0 then
  53.                 local day = get_time() - yang_special_bank.GetBankTime()
  54.                 return math.floor(day / (24*60*60))
  55.             end
  56.             return 0
  57.         end
  58.        
  59.         when 9003.chat."Centro interessi" with pc.get_level() >= yang_special_bank.GetScriptData('min_lev') begin
  60.                    
  61.             say_title("Centro interessi")
  62.             say("Avventuriero puoi depositare")
  63.             say("una somma pari o inferiore.")
  64.             say("a "..yang_special_bank.GetScriptData('yang_limit').." yang.")
  65.             say("Oppure puoi ritirare i tuoi risparmi.")
  66.             say_reward("Il tuo saldo attuale e':"..yang_special_bank.GetBankYang())
  67.             say_reward("Cosa vuoi fare?")
  68.             local bank_self  = select("Ritirare","Depositare","Esci")
  69.             if bank_self == 3 then
  70.                 return
  71.             end
  72.             if bank_self == 1 then
  73.                 say_title("Centro Interessi")
  74.                 say("")
  75.                 say_reward("Giorni di interesse:"..yang_special_bank.check_day())
  76.                 say_reward("Saldo:"..yang_special_bank.GetBankYang())
  77.                 say_reward("Saldo con interessi:"..yang_special_bank.GetBankBalance())
  78.                 say("")
  79.                 say_reward("Vuoi ritirare?")
  80.                 local tmoney = select("Ritira","Esci")
  81.                 if tmoney == 2 then
  82.                     return
  83.                 end
  84.                 say_title("Centro Interessi - Ritiro")
  85.                
  86.                 if yang_special_bank.GetBankBalance() == 0 then --controllo che ci siano soldi depositati
  87.                     say("")
  88.                     say_reward("Non puoi ritirare.Non possiedi yang.")                 
  89.                     return
  90.                 end
  91.                
  92.                 if pc.get_gold()+yang_special_bank.GetBankBalance() >  yang_special_bank.GetScriptData('yang_limit') then --controllo che non si bugghino gli yang con il ritiro
  93.                     say("")
  94.                     say_reward("Non puoi ritirare.Possiedi troppi yang.")                  
  95.                     return
  96.                 end
  97.                
  98.                 if yang_special_bank.GetBankBalance() > yang_special_bank.GetScriptData('yang_limit') then --controllo che non si superi il limite
  99.                     say("")
  100.                     say_reward("Hai superato il limite di ritiro.")
  101.                     say_reward("Ricevi:"..yang_special_bank.GetScriptData('yang_limit').." yang.")
  102.                     yang_special_bank.ResetBankTime()                  
  103.                     pc.change_money(yang_special_bank.GetScriptData('yang_limit'))
  104.                     yang_special_bank.DepositYang(0)
  105.                     return
  106.                 end
  107.                
  108.                 say("")                
  109.                 say_reward("Ricevi:"..yang_special_bank.GetBankBalance().." yang.")            
  110.                 pc.change_money(yang_special_bank.GetBankBalance())            
  111.                 yang_special_bank.ResetBankTime()              
  112.                 yang_special_bank.DepositYang(0)               
  113.                 return
  114.             elseif bank_self == 2 then
  115.                 say_title("Centro Interessi")
  116.                 say("")
  117.                
  118.                 if yang_special_bank.GetBankYang() > 0 then --Controllo che non ci siano già depositi
  119.                     say_reward("Possiedi gia' una cifra depositata")
  120.                     say_reward("non puoi depositare ancora.")
  121.                     say_reward("Ritira per effettuare un nuovo deposito")
  122.                     return
  123.                 end
  124.                
  125.                 say_reward("Inserisci la somma da depositare.")
  126.                 say_reward("Lascia vuoto il campo per uscire.")
  127.                 local y_deposit = tonumber(input())
  128.                
  129.                 if y_deposit == nil then  -- controllo che l'input non sia vuoto
  130.                     return
  131.                 end
  132.                
  133.                 if y_deposit < 1 or y_deposit > yang_special_bank.GetScriptData('yang_limit') then   --controllo che l'inserimento sia valido
  134.                     say_reward("Hai inserito una cifra non valida")
  135.                     say_reward("Devi inserire una cifra tra")
  136.                     say_reward("1 e "..yang_special_bank.GetScriptData('yang_limit').." yang")
  137.                     return
  138.                 end
  139.                
  140.                 if pc.get_gold() < y_deposit then   --controllo che il player abbia abbastanza yang
  141.                     say_reward("Non possiedi questa cifra.")                   
  142.                     return
  143.                 end
  144.                
  145.                 pc.change_money(-y_deposit)
  146.                 yang_special_bank.DepositYang(y_deposit)
  147.                 yang_special_bank.SetBankTime()
  148.                 say_reward("Complimenti!Hai fatto un ottimo")
  149.                 say_reward("investimento.Aspetta che il ")
  150.                 say_reward("duro lavoro dia i suoi frutti.")                   
  151.                
  152.             end
  153.         end
  154.     end
  155. end
Add Comment
Please, Sign In to add comment