Advertisement
Guest User

Need to add a weightcheck

a guest
Oct 4th, 2014
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 15.38 KB | None | 0 0
  1. //===== rAthena Script =======================================
  2. //= tr0n's Questboard
  3. //===== By: ==================================================
  4. //= tr0n
  5. //===== Current Version: =====================================
  6. //= 1.4.4
  7. //===== Compatible With: =====================================
  8. //= rAthena Project
  9. //===== Description: =========================================
  10. //= Easily add collection and hunting quests.
  11. //===== Additional Comments: =================================  
  12. // 1.0.0 Release
  13. // 1.1.0 Added zeny reward
  14. // 1.2.0 Rewrote checkmob and killcounter
  15. // 1.3.1 Added level restriction
  16. // 1.3.4 Added Reward Item Amount
  17. // 1.4.4 Added Quest delay
  18. //============================================================
  19.  
  20. prontera,143,178,7  script  Questboard  857,{
  21.        
  22.     if(c_run==1){
  23.         mes "[^FF7700Questboard^000000]";
  24.         mes "^0000FF"+getd("." + currentquest$ + "_collectionname$")+"^000000";
  25.         mes "--------------------------------";
  26.         for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_collectionitem")); set .@j,.@j+2) {
  27.             mes "^FF0000"+getitemname(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+" - "+countitem(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+"/"+getd("."+currentquest$+"_collectionitem["+(.@j+1)+"]")+" ea.^000000";
  28.         }
  29.         mes "--------------------------------";
  30.         mes "[Reward]";
  31.         mes "Item: ^0000FF"+((getd("." +currentquest$+"_collectionprize"))?getitemname(getd("." +currentquest$+"_collectionprize"))+" - "+getd("." +currentquest$+"_collectionamount")+" ea.^000000":"Nothing^000000");
  32.         mes "Zeny: ^0000FF"+getd("." +currentquest$+"_collectionzeny")+"^000000";
  33.         mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+0+"]")+"^000000";
  34.         mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+1+"]")+"^000000";
  35.         next;
  36.         if(select("Finish:Abort") == 2){
  37.             mes "[^FF7700Questboard^000000]";
  38.             mes "Quest aborted.";
  39.             set currentquest$, "";
  40.             set c_run, 0;
  41.             close;
  42.         }
  43.         goto L_checkitems;
  44.     }
  45.    
  46.     if(h_run==1){
  47.         mes "[^FF7700Questboard^000000]";
  48.         mes "^0000FF"+getd("." + currentquest$ + "_huntingname$")+"^000000";
  49.         mes "--------------------------------";
  50.         for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_huntingmob")); set .@j,.@j+2) {
  51.             set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@j)+"]");
  52.             mes "^FF0000"+strmobinfo(1,getd("."+currentquest$+"_huntingmob["+.@j+"]"))+" - "+getd(currentquest$+"_"+.@currentmob+"_"+(.@j+1)+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+(.@j+1)+"]")+" ea.^000000";
  53.         }
  54.         mes "--------------------------------";
  55.         mes "[Reward]";
  56.         mes "Item: ^0000FF"+((getd("." +currentquest$+"_huntingprize"))?getitemname(getd("." +currentquest$+"_huntingprize"))+" - "+getd("." +currentquest$+"_huntingamount")+" ea.^000000":"Nothing^000000");
  57.         mes "Zeny: ^0000FF"+getd("." +currentquest$+"_huntingzeny")+"^000000";
  58.         mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+0+"]")+"^000000";
  59.         mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+1+"]")+"^000000";
  60.         next;
  61.         if(select("Finish:Abort") == 2){
  62.             mes "[^FF7700Questboard^000000]";
  63.             mes "Quest aborting...";
  64.             next;
  65.             mes "^FF0000Are you sure?^000000";
  66.             mes "Your progress will be abandoned afterwards..";
  67.             menu "Continue my hunting..",-,"Yes, abort please!",L_Aborted;
  68.             mes "You did the right choice!";
  69.             close;
  70.            
  71.             L_Aborted:
  72.             for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){
  73.                 set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]");
  74.                 setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0);
  75.             }
  76.             set currentquest$, "";
  77.             set h_run, 0;
  78.             close;
  79.         }
  80.         goto L_checkmobs;
  81.     }
  82.        
  83. L_questmenu:
  84.     mes "[^FF7700Questboard^000000]";
  85.     mes "Select category:";
  86.     next;
  87.    
  88.     switch(select((.collection)?"Collection Quests":"",
  89.                   (.hunting)?"Hunting Quests":"",
  90.                   "Exit")) {
  91.    
  92. case 1:
  93.     set .@collectmenu$, "";
  94.     for( set .@i,0; .@i < .collectionquestcount; set .@i,.@i+1) {
  95.         if (.@i) set .@collectmenu$,.@collectmenu$+":";
  96.         set .@collectmenu$, .@collectmenu$ + "[" + getd("." +(.@i+1)+"_collectionmin") + " - " + getd("." +(.@i+1)+"_collectionmax") + "] " + getd("." + (.@i+1) + "_collectionname$");
  97.     }
  98.     set .@selection,select(.@collectmenu$);
  99.     if(gettimetick(2) < getd(.@selection + "_collection_delay")){
  100.         set .@time_left, getd(.@selection + "_collection_delay")-gettimetick(2);
  101.         mes "[^FF7700Questboard^000000]";
  102.         if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again.";
  103.         if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again.";
  104.         mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again.";
  105.         close;
  106.     }
  107.     mes "[^FF7700Questboard^000000]";
  108.     mes "^0000FF"+getd("." + .@selection + "_collectionname$")+"^000000";
  109.     mes "--------------------------------";
  110.     for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_collectionitem")); set .@j,.@j+2) {
  111.         mes "^FF0000"+getitemname(getd("."+.@selection+"_collectionitem["+.@j+"]"))+" - "+getd("."+.@selection+"_collectionitem["+(.@j+1)+"]")+" ea.^000000";
  112.     }
  113.     mes "--------------------------------";
  114.     mes "[Reward]";
  115.     mes "Item: ^0000FF"+((getd("." +.@selection+"_collectionprize"))?getitemname(getd("." +.@selection+"_collectionprize"))+" - "+getd("." +.@selection+"_collectionamount")+" ea.^000000":"Nothing^000000");
  116.     mes "Zeny: ^0000FF"+getd("." +.@selection+"_collectionzeny")+"^000000";
  117.     mes "Base EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+0+"]")+"^000000";
  118.     mes "Job EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+1+"]")+"^000000";
  119.     next;
  120.     if(select("Accept:Decline") == 2){
  121.         close;
  122.     }
  123.     if(BaseLevel >= getd("." +.@selection+"_collectionmin") && BaseLevel <= getd("." +.@selection+"_collectionmax"))
  124.     {
  125.         mes "[^FF7700Questboard^000000]";
  126.         mes "Quest accepted.";
  127.         set c_run, 1;
  128.         set currentquest$, .@selection;
  129.         close;
  130.     }
  131.     else
  132.     {
  133.         mes "[^FF7700Questboard^000000]";
  134.         mes "You don't have the required";
  135.         mes "level to do this quest.";
  136.         close;
  137.     }
  138.    
  139. case 2:
  140.     set .@huntmenu$, "";
  141.     for( set .@i,0; .@i < .huntingquestcount; set .@i,.@i+1) {
  142.         if (.@i) set .@huntmenu$,.@huntmenu$+":";
  143.         set .@huntmenu$, .@huntmenu$ + "[" + getd("." +(.@i+1)+"_huntingmin") + " - " + getd("." +(.@i+1)+"_huntingmax") + "] " + getd("." + (.@i+1) + "_huntingname$");
  144.     }
  145.     set .@selection,select(.@huntmenu$);
  146.     if(gettimetick(2) < getd(.@selection + "_hunting_delay")){
  147.         set .@time_left, getd(.@selection + "_hunting_delay")-gettimetick(2);
  148.         mes "[^FF7700Questboard^000000]";
  149.         if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again.";
  150.         if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again.";
  151.         mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again.";
  152.         close;
  153.     }
  154.     mes "[^FF7700Questboard^000000]";
  155.     mes "^0000FF"+getd("." + .@selection + "_huntingname$")+"^000000";
  156.     mes "--------------------------------";
  157.     for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_huntingmob")); set .@j,.@j+2) {
  158.         mes "^FF0000"+strmobinfo(1,getd("."+.@selection+"_huntingmob["+.@j+"]"))+" - "+getd("."+.@selection+"_huntingmob["+(.@j+1)+"]")+" ea.^000000";
  159.     }
  160.     mes "--------------------------------";
  161.     mes "[Reward]";
  162.     mes "Item: ^0000FF"+((getd("." +.@selection+"_huntingprize"))?getitemname(getd("." +.@selection+"_huntingprize"))+" - "+getd("." +.@selection+"_huntingamount")+" ea.^000000":"Nothing^000000");
  163.     mes "Zeny: ^0000FF"+getd("." +.@selection+"_huntingzeny")+"^000000";
  164.     mes "Base EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+0+"]")+"^000000";
  165.     mes "Job EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+1+"]")+"^000000";
  166.     next;
  167.     if(select("Accept:Decline") == 2){
  168.         close;
  169.     }
  170.     if(BaseLevel >= getd("." +.@selection+"_huntingmin") && BaseLevel <= getd("." +.@selection+"_huntingmax"))
  171.     {
  172.         mes "[^FF7700Questboard^000000]";
  173.         mes "Quest accepted.";
  174.         set h_run, 1;
  175.         set currentquest$, .@selection;
  176.         close;
  177.     }
  178.     else
  179.     {
  180.         mes "[^FF7700Questboard^000000]";
  181.         mes "You don't have the required";
  182.         mes "level to do this quest.";
  183.         close;
  184.     }
  185.    
  186. case 3:
  187.     close;
  188.     }
  189.    
  190. L_checkitems:
  191.     for( set .@k,0; .@k < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@k,.@k+2) {
  192.         if(countitem(getd("."+currentquest$+"_collectionitem["+.@k+"]"))>=getd("."+currentquest$+"_collectionitem["+(.@k+1)+"]")){
  193.             set .@checkitem,.@checkitem+2;
  194.         }
  195.     }
  196.     if(.@checkitem<getarraysize(getd("."+currentquest$+"_collectionitem"))){
  197.         mes "[^FF7700Questboard^000000]";
  198.         mes "You don't have everything.";
  199.         close;
  200.     }
  201.     for( set .@delcount,0; .@delcount < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@delcount,.@delcount+2) {
  202.         delitem getd("."+currentquest$+"_collectionitem["+.@delcount+"]"),getd("."+currentquest$+"_collectionitem["+(.@delcount+1)+"]");
  203.     }
  204.     mes "[^FF7700Questboard^000000]";
  205.     mes "Congratulation! Here is your Reward.";
  206.     if(getd("." +currentquest$+"_collectionprize")!=0) getitem(getd("." +currentquest$+"_collectionprize"),getd("." +currentquest$+"_collectionamount"));
  207.     set Zeny,Zeny+getd("." +currentquest$+"_collectionzeny");
  208.     getexp getd("." +currentquest$+"_collectionexp["+0+"]"),getd("." +currentquest$+"_collectionexp["+1+"]");
  209.     setd(currentquest$ + "_collection_delay"),gettimetick(2)+.quest_delay;
  210.     set currentquest$, "";
  211.     set c_run, 0;
  212.     close;
  213.    
  214. L_checkmobs:
  215.     set .@goal, (getarraysize(getd("."+currentquest$+"_huntingmob"))/2);
  216.     for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){
  217.         set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]");
  218.         if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")==getd("."+currentquest$+"_huntingmob["+.@i+"]")){
  219.             set .@checkmonster, .@checkmonster+1;
  220.             if(.@checkmonster==.@goal){
  221.                 goto L_checkmobs2;
  222.             }
  223.             continue;
  224.         }
  225.         goto L_checkmobs2;
  226.     }
  227.    
  228. L_checkmobs2:
  229.     if(.@checkmonster<.@goal){
  230.         mes "[^FF7700Questboard^000000]";
  231.         mes "You didn't kill the monsters I requested.";
  232.         close;
  233.     }
  234.    
  235.     mes "[^FF7700Questboard^000000]";
  236.     mes "Congratulation! Here is your Reward.";
  237.     for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){
  238.         set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]");
  239.         setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0);
  240.     }
  241.     if(getd("." +currentquest$+"_huntingprize")!=0) getitem(getd("." +currentquest$+"_huntingprize"),getd("." +currentquest$+"_huntingamount"));
  242.     set Zeny, Zeny+getd("." +currentquest$+"_huntingzeny");
  243.     getexp getd("." +currentquest$+"_huntingexp["+0+"]"),getd("." +currentquest$+"_huntingexp["+1+"]");
  244.     setd(currentquest$ + "_hunting_delay"),gettimetick(2)+.quest_delay;
  245.     set currentquest$, "";
  246.     set h_run, 0;
  247.     close;
  248.  
  249. OnNPCKillEvent:
  250.     if(h_run!=1) end;
  251.     for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){
  252.         if(killedrid==getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]")){
  253.             set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]");
  254.             if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")>=getd("."+currentquest$+"_huntingmob["+.@i+"]")) end;
  255.             setd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount", getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+1);
  256.             dispbottom getd("."+currentquest$+"_huntingname$")+": ["+strmobinfo(1,.@currentmob)+"] ("+ getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+.@i+"]")+")";
  257.             end;
  258.         }
  259.         continue;
  260.     }
  261.     end;
  262.    
  263. OnInit:
  264.  
  265.     function AddCollection;
  266.     function AddHunting;
  267.  
  268.     //Activate/Deactive quest categories here
  269.     set .collection, 1;
  270.     set .hunting, 1;
  271.    
  272.     //Quest Delay (seconds)
  273.     //24 hours = 86400 seconds
  274.     set .quest_delay, 0;
  275.    
  276.     //Checks if quests are loaded (prevents out of index)
  277.     if(.questsloaded==1) end;
  278.         set .questsloaded, 1;
  279.        
  280.         //Add Collection Quests here
  281.         //AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...);
  282.         AddCollection("WHAT IS THIS?",10,25,504,30,0,8000,7000,940,30);
  283.         AddCollection("THIS IS JUST THE BEGINNING",15,50,518,40,0,20000,17000,957,80);
  284.         AddCollection("CAKE OR GIFT",25,99,663,100,0,25000,22000,539,70);
  285.         AddCollection("YOLO.",40,90,11501,100,0,40000,37000,1020,65);
  286.         AddCollection("LIFE IS ABOUT KEEP GOING",55,95,578,160,0,60000,55000,1032,80);
  287.                 AddCollection("ENDING SOON",70,99,12208,1,0,100000,80000,1095,95);
  288.         AddCollection("BERRIES PLS",80,99,607,10,0,100000,80000,608,22);
  289.         AddCollection("ALMOST 99",89,99,985,20,0,500000,400000,934,50,7054,50,967,50);
  290.        
  291.         //Add Hunting Quests here
  292.         //AddHunting("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...);
  293.         AddHunting("YOU JELLY?",1,55,526,40,20000,60000,48000,1002,10,1113,10,1242,10,1031,10);
  294.         AddHunting("WALKERS",20,85,12016,20,50000,180000,155000,1015,10,1153,10,1197,10);
  295.         AddHunting("BIGFOOT",30,80,518,70,25000,155000,135000,1060,40,1056,40);
  296.         AddHunting("I HATE MUMMIES",35,99,12215,10,35000,320000,295000,1297,20,1098,30);
  297.         end;
  298.        
  299.  
  300. function AddCollection {
  301.     set .collectionquestcount,.collectionquestcount+1;
  302.     setd ("." +.collectionquestcount+"_collectionname$", getarg(0));
  303.     setd ("." +.collectionquestcount+"_collectionmin", getarg(1));
  304.     setd ("." +.collectionquestcount+"_collectionmax", getarg(2));
  305.     setd ("." +.collectionquestcount+"_collectionprize", getarg(3));
  306.     setd ("." +.collectionquestcount+"_collectionamount", getarg(4));
  307.     setd ("." +.collectionquestcount+"_collectionzeny", getarg(5));
  308.     set .@argcount, 6;
  309.     set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionexp"));
  310.     setd ("." +.collectionquestcount+"_collectionexp["+.@size+"]",getarg(.@argcount));
  311.     setd ("." +.collectionquestcount+"_collectionexp["+(.@size+1)+"]",getarg(.@argcount+1));
  312.     set .@argcount, .@argcount+2;
  313.     while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) {
  314.         set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionitem"));
  315.         setd ("."+.collectionquestcount+"_collectionitem["+.@size+"]",getarg(.@argcount));
  316.         setd ("."+.collectionquestcount+"_collectionitem["+(.@size+1)+"]",getarg(.@argcount+1));
  317.         set .@argcount,.@argcount+2;
  318.     }
  319.     return;
  320. }
  321.  
  322. function AddHunting {
  323.     set .huntingquestcount,.huntingquestcount+1;
  324.     setd ("." +.huntingquestcount+"_huntingname$", getarg(0));
  325.     setd ("." +.huntingquestcount+"_huntingmin", getarg(1));
  326.     setd ("." +.huntingquestcount+"_huntingmax", getarg(2));
  327.     setd ("." +.huntingquestcount+"_huntingprize", getarg(3));
  328.     setd ("." +.huntingquestcount+"_huntingamount", getarg(4));
  329.     setd ("." +.huntingquestcount+"_huntingzeny", getarg(5));
  330.     set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingexp"));
  331.     set .@argcount, 6;
  332.     setd ("." +.huntingquestcount+"_huntingexp["+.@size+"]",getarg(.@argcount));
  333.     setd ("." +.huntingquestcount+"_huntingexp["+(.@size+1)+"]",getarg(.@argcount+1));
  334.     set .@argcount, .@argcount+2;
  335.     while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) {
  336.         set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingmob"));
  337.         setd ("."+.huntingquestcount+"_huntingmob["+.@size+"]",getarg(.@argcount));
  338.         setd ("."+.huntingquestcount+"_huntingmob["+(.@size+1)+"]",getarg(.@argcount+1));
  339.         set .@argcount, .@argcount+2;
  340.     }
  341.     return;
  342. }
  343. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement