Advertisement
johnlol

DailyReward_v2

May 10th, 2019
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VeriLog 16.01 KB | None | 0 0
  1. //===== EinherjarRO Scripts ==================================
  2. //= Requested
  3. //===== By: ==================================================
  4. //= Stolao
  5. //===== Current Version: =====================================
  6. //= 2.1C
  7. //===== Compatible With: =====================================
  8. //= rAthena SVN
  9. //===== Description: =========================================
  10. //= A reward system for players who play more frequently
  11. //===== Todo =================================================
  12. //= Make Logging out then it continue count
  13. //===== Additional Comments: =================================
  14. //= 2.00 Origional Make
  15. //= 2.01 Fixed Logic Bug
  16. //= 2.02 Fixed Year Multiplier
  17. //= 2.03 Added an IP check
  18. //= 2.04 Split Rewards up
  19. //= 2.05 Move ip check to Daily reward collection
  20. //= 2.06 Added ability to see next day via commands/relogging
  21. //= 2.07 Added Delay
  22. //= 2.08 Moved Delay to none VIP only
  23. //= 2.09 Removed some useless lines
  24. //= 2.0A Removed Menus due to bugs
  25. //= 2.0B Fixed VIP Cutin
  26. //= 2.0C Added it showing previos day cutin
  27. //= 2.0D Added a for loop
  28. //= 2.0E Fixed Ramined logged in time calculation (visual bug)
  29. //= 2.0F Added a F_InsertPlural to "more minute"
  30. //= 2.10 Added a Mac Check
  31. //= 2.11 Changed the IP check to [Sader1992] version
  32. //= 2.12 Enable Bound Type
  33. //= 2.13 Added 'collectreward', 'dailyreward', 'collectdaily' Commands
  34. //= 2.14 Added 'nextreward' Command
  35. //= 2.15 Added Daily Buffs
  36. //= 2.16 Added Exp Rewards
  37. //= 2.17 Removed Reards for Autotraders
  38. //= 2.18 Move Buffs to Daily so VIP wont trigger twice
  39. //= 2.19 Optimized Slightly
  40. //= 2.1A Fixed a bug with VIP getting bonus rewards in normal rewards
  41. //= 2.1B Fixed some documentaion
  42. //= 2.1C Fixed extra '['
  43. //===== Contact Info: ========================================
  44. //= [Stolao]
  45. //= Email: Taingram11@gmail.com
  46. //============================================================
  47. prontera,5,5,5  script  LOGIN   111,{
  48. OnPCLoginEvent:
  49.     if(!@logintime)
  50.         @logintime = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
  51. OnLoginCmnd:
  52.     .@i = gettime(DT_YEAR) * 12 * 31 + gettime(DT_MONTH) * 31 + gettime(DT_DAYOFMONTH);
  53.     if(.Reset && .@i > #LastDailyReward + 1)
  54.         #DRewardCon = 0;
  55.     if(.Reset && .@i > #LastVIPReward + 1)
  56.         #VIPRewardCon = 0;
  57.     .@VIPSize = getarraysize(.VIPRewards$);
  58.     .@Size = getarraysize(.Rewards$);
  59.     if(#DRewardCon >= .@Size && #VIPRewardCon >= .@VIPSize){
  60.         #LastDailyReward = .@i;
  61.         #LastVIPReward = .@i;
  62.         end;
  63.     }
  64.     sleep2 1000;
  65.     for(.@k = 0; .@k < 2; .@k++){
  66.         if(!.@k){
  67.             if(!vip_status(VIP_STATUS_ACTIVE) && .VIPRewards$[#VIPRewardCon + 1] != ""){
  68.                 //message strcharinfo(0),"[Daily Rewards]: Become a VIP for more rewards.";
  69.                 continue;
  70.             } else if(#VIPRewardCon >= .@VIPSize){
  71.                 message strcharinfo(0),"[Daily Rewards]: No more VIP rewards remaining this month.";
  72.                 continue;
  73.             } else if(.@i <= #LastVIPReward){
  74.                 message strcharinfo(0),"[Daily Rewards]: VIP Rewards already collected today";
  75.                 continue;
  76.             }
  77.         } else {
  78.             if(#DRewardCon >= .@Size){
  79.                 message strcharinfo(0),"[Daily Rewards]: No more rewards remaining this month.";
  80.                 continue;
  81.             } else if(.@i <= #LastDailyReward){
  82.                 message strcharinfo(0),"[Daily Rewards]: Rewards already collected today.";
  83.                 continue;
  84.             }
  85.         }
  86.         if(!.@k)
  87.             explode(.@XT$,.VIPRewards$[#VIPRewardCon + 1],",");
  88.         else {
  89.             if(.IPCheck){
  90.                 query_sql("SELECT account_id FROM `login` WHERE last_ip = '"+getcharip()+"'", .@AccountId);
  91.                 .@Size = getarraysize(.@AccountId);
  92.                 for(.@i=0; .@i < .@Size; .@i++){
  93.                     query_sql("SELECT `value` FROM `acc_reg_num` WHERE `account_id` = '"+.@AccountId[.@i]+"' AND `key` = '#LastDailyReward'",.@LastIp2);
  94.                     if(.@i <= .@LastIp2){
  95.                         message strcharinfo(0),"[Daily Rewards]: Rewards are limited to 1 per IP sorry.";
  96.                         continue;
  97.                     }
  98.                 }
  99.             }
  100.             if(.MacCheck){
  101.                 query_sql("SELECT last_unique_id FROM `login` WHERE account_id = "+getcharid(3)+"", .@last_unique_id$);
  102.                 query_sql("SELECT account_id FROM `login` WHERE last_unique_id = '"+.@last_unique_id$+"'", .@AccountId2);
  103.                 .@Size = getarraysize(.@AccountId2);
  104.                 for(.@i=0; .@i < .@Size; .@i++){
  105.                     query_sql("SELECT `value` FROM `acc_reg_num` WHERE `account_id` = '"+.@AccountId2[.@i]+"' AND `key` = '#LastDailyReward'",.@MacCheck2);
  106.                     if(.@i <= .@MacCheck2){
  107.                         message strcharinfo(0),"[Daily Rewards]: Rewards are limited to 1 per computer sorry.";
  108.                         continue;
  109.                     }
  110.                 }
  111.             }
  112.             if(.Rest){
  113.                 .@time = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
  114.                 if(.@time < @logintime + .Rest){
  115.                     .@delay = @logintime + .Rest - .@time;
  116.                     message strcharinfo(0),"[Daily Rewards]: to collect reward you must remain logged in for "+callfunc("F_InsertPlural",.@delay,"more minute")+".";
  117.                     continue;
  118.                 }  
  119.             }
  120.             deletearray .@XT$[0],getarraysize(.@XT$);
  121.             .@NextDay = #DRewardCon + 1;
  122.             explode(.@XT$,.Rewards$[.@NextDay],",");
  123.         }
  124.         if(checkvending() & 2 && .Mode & 256){
  125.             message strcharinfo(0),"[Daily Rewards]: Venders cannot recive rewards.";
  126.             end;
  127.         }
  128.         .@Size = getarraysize(.@XT$);
  129.         deletearray .@TT[0],getarraysize(.@TT);
  130.         deletearray .@itms[0],getarraysize(.@itms);
  131.         deletearray .@qnts[0],getarraysize(.@qnts);
  132.         for(.@x = y = 0; .@x < .@Size; .@x++)
  133.             .@TT[.@x] = atoi(.@XT$[.@x]);
  134.         if(.Mode & 1 && (.@TT[4] > 0 || .@vip[4] > 0)){
  135.             .@Size = getarraysize(.@TT);
  136.             for(.@x = 4; .@x <= .@Size - 1 ; .@x += 2){
  137.                 .@itms[.@y] = .@TT[.@x];
  138.                 .@qnts[.@y] = .@TT[.@x + 1];
  139.                 .@y++;
  140.             }
  141.             if(checkweight2(.@itms,.@qnts)){
  142.                 for(.@x = 0; .@x < .@y; .@x++){
  143.                     if(.Mode & 128)
  144.                         getitembound  .@itms[.@x], .@qnts[.@x], .Bound_Mode;
  145.                     else    getitem  .@itms[.@x], .@qnts[.@x];
  146.                 }
  147.             } else {
  148.                 message strcharinfo(0),"[Daily Rewards]: You cannot carry the prizes, please use storage and relog.";
  149.                 continue;
  150.             }
  151.         }
  152.         if(.Mode & 2 && (.@TT[1])){
  153.             #Loyalty += .@TT[1];
  154.             message strcharinfo(0),"[Daily Rewards]: Recieved "+ .@TT[1] +" "+.Points$;
  155.         }
  156.         if(.Mode & 4 && (.@TT[0])){
  157.             zeny += .@TT[0];
  158.             message strcharinfo(0),"[Daily Rewards]: Recieved "+ .@TT[0] +"z";
  159.         }
  160.         if(.Mode & 8 && (.@TT[3] || .@TT[4]))
  161.             getexp .@TT[3], .@TT[4];
  162.  
  163.         if(!.@k){
  164.             if(.Mode & 32)
  165.                 cutin .VIPCutins$[#VIPRewardCon],4;
  166.             #VIPRewardCon++;
  167.             #LastVIPReward = .@i;
  168.             sleep2 1000;
  169.             if(.Mode & 64)
  170.                 cutin .VIPCutins$[#VIPRewardCon],4;
  171.             message strcharinfo(0),"[Daily Rewards]: You have collected your VIP reward, for "+callfunc("F_InsertPlural",#VIPRewardCon,"day")+" this month.";
  172.         } else {
  173.             if(.Mode & 16){
  174.                 .@Size = getarraysize(.BuffInfo);
  175.                 for(.@x = 0; .@x < .@Size; .@x += 4){
  176.                     if(.@NextDay == .BuffInfo[.@x + 1])
  177.                         sc_start .BuffInfo[.@x], .BuffInfo[.@x + 2] * 60000, .BuffInfo[.@x + 3];
  178.                 }
  179.             }
  180.             if(.Mode & 32)
  181.                 cutin .Cutins$[#DRewardCon],4;
  182.             #DRewardCon++;
  183.             #LastDailyReward = .@i;
  184.             sleep2 1000;
  185.             if(.Mode & 64)
  186.                 cutin .Cutins$[#DRewardCon],4;
  187.             message strcharinfo(0),"[Daily Rewards]: You have collected your daily reward, for "+callfunc("F_InsertPlural",#DRewardCon,"day")+" this month.";
  188.         }  
  189.         if(.Mode & 32 || .Mode & 64){
  190.             sleep2 15000;
  191.             cutin "",255;
  192.         }
  193.     }
  194.     end;
  195.  
  196. OnNextCmnd:
  197.     .@time = gettime(DT_YEAR) * 60 * 24 * 365 + gettime(DT_DAYOFYEAR) * 60 * 24 + gettime(DT_HOUR) * 60 + gettime(DT_MINUTE);
  198.     if(.@time >= @logintime + .Rest){
  199.         message strcharinfo(0),"[Daily Rewards]: your next reward is available.";
  200.     } else {
  201.         .@i = gettime(DT_YEAR) * 12 * 31 + gettime(DT_MONTH) * 31 + gettime(DT_DAYOFMONTH);
  202.         if(.@i <= #LastDailyReward)
  203.             message strcharinfo(0),"[Daily Rewards]: Your next reward will be aviable tomorrow.";
  204.         else {
  205.             .@days = (.@time >= @logintime + .Rest) / 60 / 24;
  206.             .@hours = ((.@time >= @logintime + .Rest) / 60) % 24;
  207.             .@mins = (.@time >= @logintime + .Rest) % 60;
  208.             message strcharinfo(0),"[Daily Rewards]: You have "+ ((.@days) ? .@days +" Days " : "") + ((.@hours) ? .@hours +" Hours " : "") + ((.@mins) ? .@mins +" Minutes " : "") +"till your next reward.";
  209.         }
  210.         if(.Mode & 32 || .Mode & 64){
  211.             if(.@NextDay >= getarraysize(.Rewards$))
  212.                 .@g = 0;
  213.             else    .@g = #DRewardCon + 1;
  214.             cutin .Cutins$[.@g],4;
  215.         }
  216.     }
  217.     end;
  218.  
  219. OnHour00:
  220.     if(gettime(DT_DAYOFMONTH) == 1){
  221.         query_sql("DELETE FROM `acc_reg_num` WHERE `key` = '#DRewardCon' OR `key` = '#VIPRewardCon' OR `key` = '#LastVIPReward' OR `key` = '#LastDailyReward'");
  222.         addrid(0);
  223.         #DRewardCon = #VIPRewardCon = #LastVIPReward = #LastDailyReward = 0;
  224.     }
  225.     end;
  226.  
  227. OnInit:
  228.     // Basic Settings
  229.     //   1: Item | 2: Points | 4: Zeny | 8: Exp
  230.     //   16: Gain Buffs
  231.     //   32: Show Cutins | 64: Show Next Day Cutin
  232.     //   128: Item Rewards Bound
  233.     //   256: No Rewards for Autotraders
  234.     //     (a bit value, e.g. 3 = Items & Points from Multi)
  235.     .Mode = 1|2|4|16|32|64|128|256;
  236.  
  237.     // Item Binding Mode
  238.     //   Bound_Account : Account Bound item
  239.     //   Bound_Guild   : Guild Bound item
  240.     //   Bound_Party   : Party Bound item
  241.     //   Bound_Char    : Character Bound item
  242.     .Bound_Mode = Bound_Account;
  243.  
  244.     // To disable the command '@loginreward' comment the next lines
  245.     // * Needs extra commands for typos
  246.     bindatcmd("relog","LOGIN::OnLoginCmnd",0,99);
  247.     bindatcmd("collectreward",strnpcinfo(3)+"::OnLoginCmnd",0,99);
  248.     bindatcmd("dailyreward",strnpcinfo(3)+"::OnLoginCmnd",0,99);
  249.     bindatcmd("collectdaily",strnpcinfo(3)+"::OnLoginCmnd",0,99);
  250.     bindatcmd("nextreward",strnpcinfo(3)+"::OnNextCmnd",0,99);
  251.  
  252.     // Reset days back to 0 on a skipped day.
  253.     // Toggle
  254.     // [0] = Off
  255.     // [1] = On
  256.     .Reset = 0;
  257.  
  258.     // .Rest
  259.     // Delay after login to collect rewards
  260.     // In Minutes
  261.     .Rest = 0;
  262.  
  263.     // Point Name
  264.     .Points$ = "Loyalty Points";
  265.  
  266.     // Ip check to prevent multi accounts
  267.     // Toggle
  268.     // [0] = Off
  269.     // [1] = On
  270.     .IPCheck = 0;
  271.  
  272.     // Consecutive Days Buff
  273.     // Each buff contains 4 variables
  274.     // <Type>,<Days>,<Duration>,<Rate>, // Buff 1
  275.     // <Type>,<Days>,<Duration>,<Rate>, // Buff 2
  276.     //   ...;
  277.     //
  278.     //  Example: 188,7,45,3
  279.     //    -On the 7th day logged in Player gains +3 Str for 45 mins
  280.     //
  281.     //  Type is 188, which references which SC_ to use, SC_INCSTR in this example
  282.     //     -For a full list of SC_ visit the db/const.txt
  283.     //  Days is days buff is applied, in this example 7, so every 7th day, 14,21,28....
  284.     //  Duration is buff duration is Minuits, in this example 45 mins
  285.     //  Rate is buff val1, in this example player gains 3 Str
  286.     setarray .BuffInfo
  287.                 ,260,2,360,1    // Life Insurance for 360 on 2nd Day
  288.                 ,198,3,120,10   // +10% Hp for 120 Mins on 3rd Day
  289.                 ,260,4,360,1    // Life Insurance for 360 on 4th Day
  290.                 ,196,5,120,25   // +25 Flee for 120 Mins on 5th Day
  291.                 ,198,6,120,10   // +10% Hp for 120 Mins on 6th Day
  292.                 ,257,7,240,50   // +50% Exp for 240 Mins on 7th Day
  293.                 ,260,8,360,1    // Life Insurance for 360 on 8th Day
  294.                 ,198,9,120,10   // +10% Hp for 120 Mins on 9th Day
  295.                 ,196,10,120,25  // +25 Flee for 120 Mins on 10th Day
  296.  
  297.                 ,198,12,120,10  // +10% Hp for 120 Mins on 12th Day
  298.                 ,257,14,240,50  // +50% Exp for 240 Mins on 14th Day
  299.                 ,196,15,120,25  // +25 Flee for 120 Mins on 15th Day
  300.                 ,260,16,360,1   // Life Insurance for 360 on 16th Day
  301.  
  302.                 ,198,18,120,10  // +10% Hp for 120 Mins on 18th Day
  303.                 ,196,20,120,25  // +25 Flee for 120 Mins on 20th Day
  304.                 ,257,21,240,50  // +50% Exp for 240 Mins on 21st Day
  305.                 ,260,22,360,1   // Life Insurance for 360 on 22nd Day
  306.  
  307.                 ,198,24,120,10  // +10% Hp for 120 Mins on 24th Day
  308.                 ,196,25,120,25  // +25 Flee for 120 Mins on 25th Day
  309.                 ,260,26,360,1   // Life Insurance for 360 on 26th Day
  310.                 ,198,27,120,10  // +10% Hp for 120 Mins on 27th Day
  311.                 ,257,28,240,50  // +50% Exp for 240 Mins on 28th Day
  312.  
  313.                 ,196,30,120,25; // +25 Flee for 120 Mins on 30th Day
  314.  
  315.     // Daily Prize items:
  316.     //   "<Zeny>,<Points>,<BaseExp>,<JobExp>,<itemID-1>,<amount-1>,<itemID-2>,<amount-2>...etc", // Day 1
  317.     //   "<Zeny>,<Points>,<BaseExp>,<JobExp>,<itemID-1>,<amount-1>,<itemID-2>,<amount-2>...etc"  // Day 2
  318.     //   ...;
  319.     // Total length of any days string must be 255 or shorter
  320.     setarray .Rewards$[1],
  321.         "1000",             // Day 1: 1000 Zeny
  322.         "0,0,0,0,501,5",        // Day 2: 5 Red Potion
  323.         "0,0,0,0,506,5",        // Day 3: 5 Green Potion
  324.         "2000",             // Day 4: 2000 Zeny
  325.         "2000",             // Day 5: 2000 Zeny
  326.         "0,0,0,0,502,5",        // Day 6: 5 Orange Potion
  327.         "0,0,0,0,12208,1",      // Day 7: 1 Battle Manual
  328.         "2500",             // Day 8: 2500 Zeny
  329.         "2500",             // Day 8: 2500 Zeny
  330.         "2500",             // Day 9: 2500 Zeny
  331.         "0,0,0,0,503,5",        // Day 10: 5 White Potion
  332.         "2500",             // Day 11: 2500 Zeny
  333.         "2500",             // Day 12: 2500 Zeny
  334.         "2500",             // Day 13: 2500 Zeny
  335.         "0,0,0,0,503,5,506,3",      // Day 14: 5 White Potion + 3 Green Potion
  336.         "2500",             // Day 15: 2500 Zeny
  337.         "2500",             // Day 16: 2500 Zeny
  338.         "2500",             // Day 17: 2500 Zeny
  339.         "0,0,0,0,503,5,506,3",      // Day 18: 5 White Potion + 3 Green Potion
  340.         "2500",             // Day 19: 2500 Zeny
  341.         "2500",             // Day 20: 2500 Zeny
  342.         "0,0,0,0,604,3",        // Day 21: 1 Dead Branch
  343.         "2500",             // Day 22: 2500 Zeny
  344.         "0,0,0,0,503,5,506,3",      // Day 23: 5 White Potion + 3 Green Potion
  345.         "2500",             // Day 24: 2500 Zeny
  346.         "2500",             // Day 25: 2500 Zeny
  347.         "0,0,0,0,503,5,506,3",      // Day 26: 5 White Potion + 3 Green Potion
  348.         "2500",             // Day 27: 2500 Zeny
  349.         "2500";             // Day 28: 2500 Zeny
  350.  
  351.  
  352.     // VIP Prize items:
  353.     //   "<Zeny>,<Points>,<BaseExp>,<JobExp>,<itemID-1>,<amount-1>,<itemID-2>,<amount-2>...etc", // Day 1
  354.     //   "<Zeny>,<Points>,<BaseExp>,<JobExp>,<itemID-1>,<amount-1>,<itemID-2>,<amount-2>...etc"  // Day 2
  355.     //   ...;
  356.     // Total length of any days string must be 255 or shorter
  357.     //
  358.     // Note VIPs Collect both VIP and Normal Player rewards
  359.     setarray .VIPRewards$[1],
  360.         "1000",             // Day 1: 1000 Zeny
  361.         "0,0,0,0,501,5",        // Day 2: 5 Red Potion
  362.         "0,0,0,0,506,5",        // Day 3: 5 Green Potion
  363.         "2000",             // Day 4: 2000 Zeny
  364.         "2000",             // Day 5: 2000 Zeny
  365.         "0,0,0,0,502,5",        // Day 6: 5 Orange Potion
  366.         "0,0,0,0,12208,1",      // Day 7: 1 Battle Manual
  367.         "2500",             // Day 8: 2500 Zeny
  368.         "2500",             // Day 8: 2500 Zeny
  369.         "2500",             // Day 9: 2500 Zeny
  370.         "0,0,0,0,503,5",        // Day 10: 5 White Potion
  371.         "2500",             // Day 11: 2500 Zeny
  372.         "2500",             // Day 12: 2500 Zeny
  373.         "2500",             // Day 13: 2500 Zeny
  374.         "0,0,0,0,503,5,506,3",      // Day 14: 5 White Potion + 3 Green Potion
  375.         "2500",             // Day 15: 2500 Zeny
  376.         "2500",             // Day 16: 2500 Zeny
  377.         "2500",             // Day 17: 2500 Zeny
  378.         "0,0,0,0,503,5,506,3",      // Day 18: 5 White Potion + 3 Green Potion
  379.         "2500",             // Day 19: 2500 Zeny
  380.         "2500",             // Day 20: 2500 Zeny
  381.         "0,0,0,0,604,3",        // Day 21: 1 Dead Branch
  382.         "2500",             // Day 22: 2500 Zeny
  383.         "0,0,0,0,503,5,506,3",      // Day 23: 5 White Potion + 3 Green Potion
  384.         "2500",             // Day 24: 2500 Zeny
  385.         "2500",             // Day 25: 2500 Zeny
  386.         "0,0,0,0,503,5,506,3",      // Day 26: 5 White Potion + 3 Green Potion
  387.         "2500",             // Day 27: 2500 Zeny
  388.         "2500";             // Day 28: 2500 Zeny
  389.  
  390.     // Cutin Array
  391.     //  Shows a cutin before collecting for each date
  392.     //  Start at 0 if showing next day
  393.     setarray .Cutins$,
  394.             "kafra_01",
  395.             "kafra_02",
  396.             "kafra_03",
  397.             "kafra_04",
  398.             "kafra_05",
  399.             "kafra_06",
  400.             "kafra_07",
  401.             "kafra_01",
  402.             "kafra_02",
  403.             "kafra_03",
  404.             "kafra_04",
  405.             "kafra_05",
  406.             "kafra_06",
  407.             "kafra_07",
  408.             "kafra_01",
  409.             "kafra_02",
  410.             "kafra_03",
  411.             "kafra_04",
  412.             "kafra_05",
  413.             "kafra_06",
  414.             "kafra_07",
  415.             "kafra_08",
  416.             "kafra_01",
  417.             "kafra_02",
  418.             "kafra_03",
  419.             "kafra_04",
  420.             "kafra_05",
  421.             "kafra_06",
  422.             "kafra_07",
  423.             "kafra_08",
  424.             "kafra_09",
  425.             "kafra_01",
  426.             "kafra_02",
  427.             "kafra_03";
  428.  
  429.     // Cutin Array
  430.     //  Shows a cutin on collecting for each date
  431.     setarray .VIPCutins$,
  432.             "kafra_01",
  433.             "kafra_02",
  434.             "kafra_03",
  435.             "kafra_04",
  436.             "kafra_05",
  437.             "kafra_06",
  438.             "kafra_07",
  439.             "kafra_01",
  440.             "kafra_02",
  441.             "kafra_03",
  442.             "kafra_04",
  443.             "kafra_05",
  444.             "kafra_06",
  445.             "kafra_07",
  446.             "kafra_01",
  447.             "kafra_02",
  448.             "kafra_03",
  449.             "kafra_04",
  450.             "kafra_05",
  451.             "kafra_06",
  452.             "kafra_07",
  453.             "kafra_08",
  454.             "kafra_01",
  455.             "kafra_02",
  456.             "kafra_03",
  457.             "kafra_04",
  458.             "kafra_05",
  459.             "kafra_06",
  460.             "kafra_07",
  461.             "kafra_08",
  462.             "kafra_09",
  463.             "kafra_01",
  464.             "kafra_02",
  465.             "kafra_03";
  466. end;
  467. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement