Advertisement
johnlol

Advance Punching Bag

Aug 14th, 2023
3,566
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VeriLog 9.39 KB | Gaming | 0 0
  1. // Advance Punching Bag with Parameter settings
  2. // by pajodex
  3. // Video preview : https://www.youtube.com/watch?v=RoLhYx-Iny8
  4.  
  5. prontera,224,79,0   script  Set Parameters#0    844,{
  6. function get_size_name;
  7. function get_race_name;
  8. function get_ele_name;
  9.     ignoretimeout 1;
  10.     mes "Current punching bag info:";
  11.     .@dupid = atoi(strnpcinfo(2));
  12.     getunitdata .gid[.@dupid], .@data;
  13.     mes "Size : "+ get_size_name(.@data[UMOB_SIZE]);
  14.     mes "Level : "+ .@data[UMOB_LEVEL];
  15.     mes "Race : "+ get_race_name(.@data[UMOB_RACE]);
  16.     mes "Element : "+ get_ele_name(.@data[UMOB_ELETYPE]) +" Lv. "+ .@data[UMOB_ELELEVEL];
  17.     mes "Stats : ";
  18.     mes "==============================";
  19.     mes "Str - "+ .@data[UMOB_STR] +"    Agi - "+ .@data[UMOB_AGI] +"    Vit - "+ .@data[UMOB_VIT];
  20.     mes "Int - "+ .@data[UMOB_INT] +"    Dex - "+ .@data[UMOB_DEX] +"    Luk - "+ .@data[UMOB_LUK];
  21.     mes "Def - "+ .@data[UMOB_DEF] +"    Mdef - "+ .@data[UMOB_MDEF];
  22.     next;
  23.     if ( select("> Set parameter:Cancel") == 2 ) {
  24.         mes "Bye";
  25.         close;
  26.     }
  27.     do {
  28.         mes "Select which parameter to change.";
  29.         next;
  30.         switch(select("> Size [ ^ff0000"+(.@UMOB_SIZE ? get_size_name(.@UMOB_SIZE):get_size_name(.UMOB_SIZE))+"^000000 ]:> Level [ ^ff0000"+(.@UMOB_LEVEL ? .@UMOB_LEVEL:.UMOB_LEVEL)+"^000000 ]:> Race [ ^ff0000"+(.@UMOB_RACE ? get_race_name(.@UMOB_RACE):get_race_name(.UMOB_RACE))+"^000000 ]:> Element [ ^ff0000"+(.@UMOB_ELETYPE ? get_ele_name(.@UMOB_ELETYPE):get_ele_name(.UMOB_ELETYPE))+" Lv "+(.@UMOB_ELELEVEL ? .@UMOB_ELELEVEL:.UMOB_ELELEVEL)+"^000000 ]:> Stats:> Enter Mob ID:^0000ffDone^000000")) {
  31.         case 1:
  32.             .@UMOB_SIZE = select("- Small:- Medium:- Large")-1;
  33.             break;
  34.         case 2:
  35.             mes "Input level (1-"+.maxlv+"):";
  36.             next;
  37.             input .@UMOB_LEVEL, 1, .maxlv;
  38.             break;
  39.         case 3:
  40.             .@UMOB_RACE = select("- Formless:- Undead:- Brute:- Plant:- Insect:- Fish:- Demon:- Demihuman:- Angel:- Dragon:- Player") - 1;
  41.             break;
  42.         case 4:
  43.             mes "Select Element:";
  44.             next;
  45.             .@UMOB_ELETYPE = select("- Neutral:- Water:- Earth:- Fire:- Wind:- Poison:- Holy:- Shadow:- Ghost:- Undead") - 1;
  46.             mes "Select Level:";
  47.             next;
  48.             .@UMOB_ELELEVEL = select("Lv 1:Lv 2:Lv 3:Lv 4");
  49.             break;
  50.         case 5:
  51.             mes "Select:";
  52.             next;
  53.             switch(select("> STR [ ^ff0000"+(.@UMOB_STR ? .@UMOB_STR:.UMOB_STR)+"^000000 ]:> AGI [ ^ff0000"+(.@UMOB_AGI ? .@UMOB_AGI:.UMOB_AGI)+"^000000 ]:> VIT [ ^ff0000"+(.@UMOB_VIT ? .@UMOB_VIT:.UMOB_VIT)+"^000000 ]:> INT [ ^ff0000"+(.@UMOB_INT ? .@UMOB_INT:.UMOB_INT)+"^000000 ]:> DEX [ ^ff0000"+(.@UMOB_DEX ? .@UMOB_DEX:.UMOB_DEX)+"^000000 ]:> LUK [ ^ff0000"+(.@UMOB_LUK ? .@UMOB_LUK:.UMOB_LUK)+"^000000 ]:> DEF [ ^ff0000"+(.@UMOB_DEF ? .@UMOB_DEF:.UMOB_DEF)+"^000000 ]:> MDEF [ ^ff0000"+(.@UMOB_MDEF ? .@UMOB_MDEF:.UMOB_MDEF)+"^000000 ]")) {
  54.                 case 1: .@data$ = "STR"; break;
  55.                 case 2: .@data$ = "AGI"; break;
  56.                 case 3: .@data$ = "VIT"; break;
  57.                 case 4: .@data$ = "INT"; break;
  58.                 case 5: .@data$ = "DEX"; break;
  59.                 case 6: .@data$ = "LUK"; break;
  60.                 case 7: .@data$ = "DEF"; break;
  61.                 case 8: .@data$ = "MDEF"; break;
  62.             }
  63.             mes "Value (1-"+.max_stat+":";
  64.             next;
  65.             input .@val, 1, .max_stat;
  66.             setd ".@UMOB_"+.@data$, .@val;
  67.             break;
  68.         case 6:
  69.             mes "Enter Monster ID to simulate:";
  70.             next;
  71.             input .@val;
  72.             if ( (.@name_english$ = getmonsterinfo(.@val, MOB_NAME)) == "null" ) {
  73.                 mes "Cannot find Monster ID "+.@val+" on the database!";
  74.                 next;
  75.                 break;
  76.             }
  77.             query_sql("SELECT `element_level` FROM `"+(checkre(0) ? "mob_db_re":"mob_db")+"` WHERE `id` = '"+.@val+"'", .@UMOB_ELELEVEL);
  78.             .@UMOB_LEVEL = getmonsterinfo(.@val, MOB_LV);
  79.             .@UMOB_SIZE = getmonsterinfo(.@val, MOB_SIZE);
  80.             .@UMOB_RACE = getmonsterinfo(.@val, MOB_RACE);
  81.             .@UMOB_ELETYPE = getmonsterinfo(.@val, MOB_ELEMENT);
  82.             .@UMOB_DEF = getmonsterinfo(.@val, MOB_DEF);
  83.             .@UMOB_MDEF = getmonsterinfo(.@val, MOB_MDEF);
  84.             .@UMOB_STR = getmonsterinfo(.@val, MOB_STR);
  85.             .@UMOB_AGI = getmonsterinfo(.@val, MOB_AGI);
  86.             .@UMOB_VIT = getmonsterinfo(.@val, MOB_VIT);
  87.             .@UMOB_INT = getmonsterinfo(.@val, MOB_INT);
  88.             .@UMOB_DEX = getmonsterinfo(.@val, MOB_DEX);
  89.             .@UMOB_LUK = getmonsterinfo(.@val, MOB_LUK);
  90.             mes "Fetching and applying data of monster '"+.@name_english$+"("+.@val+")' on punching bag...";
  91.             next;
  92.             break;
  93.    
  94.         default: // Finalize
  95.             .@done = true;
  96.             break;
  97.         }
  98.     } while ( !.@done );
  99.     mes "Please review before I spawn:";
  100.     mes "Size : "+ get_size_name((.@UMOB_SIZE ? .@UMOB_SIZE:.UMOB_SIZE));
  101.     mes "Level : "+ (.@UMOB_LEVEL ? .@UMOB_LEVEL:.UMOB_LEVEL);
  102.     mes "Race : "+ get_race_name((.@UMOB_RACE ? .@UMOB_RACE:.UMOB_RACE));
  103.     mes "Element : "+ get_ele_name((.@UMOB_ELETYPE ? .@UMOB_ELETYPE:.UMOB_ELETYPE)) +" Lv. "+ (.@UMOB_ELELEVEL ? .@UMOB_ELELEVEL:.UMOB_ELELEVEL);
  104.     mes "Stats : ";
  105.     mes "==============================";
  106.     mes "Str - "+ (.@UMOB_STR ? .@UMOB_STR:.UMOB_STR) +"    Agi - "+ (.@UMOB_AGI ? .@UMOB_AGI:.UMOB_AGI) +"    Vit - "+ (.@UMOB_VIT ? .@UMOB_VIT:.UMOB_VIT);
  107.     mes "Int - "+ (.@UMOB_INT ? .@UMOB_INT:.UMOB_INT) +"    Dex - "+ (.@UMOB_DEX ? .@UMOB_DEX:.UMOB_DEX) +"    Luk - "+ (.@UMOB_LUK ? .@UMOB_LUK:.UMOB_LUK);
  108.     mes "Def - "+ (.@UMOB_DEF ? .@UMOB_DEF:.UMOB_DEF) +"    Mdef - "+ (.@UMOB_MDEF ? .@UMOB_MDEF:.UMOB_MDEF);
  109.     next;
  110.     if (select("> Finalize!:> Cancel")==2) close;
  111.     mes "Done!";
  112.     close2;
  113.     .UMOB_SIZE = (.@UMOB_SIZE) ? .@UMOB_SIZE:.UMOB_SIZE;
  114.     .UMOB_LEVEL = (.@UMOB_LEVEL) ? .@UMOB_LEVEL:.UMOB_LEVEL;
  115.     .UMOB_RACE = (.@UMOB_RACE) ? .@UMOB_RACE:.UMOB_RACE;
  116.     .UMOB_ELETYPE = (.@UMOB_ELETYPE) ? .@UMOB_ELETYPE:.UMOB_ELETYPE;
  117.     .UMOB_ELELEVEL = (.@UMOB_ELELEVEL) ? .@UMOB_ELELEVEL:.UMOB_ELELEVEL;
  118.     .UMOB_STR = (.@UMOB_STR) ? .@UMOB_STR:.UMOB_STR;
  119.     .UMOB_AGI = (.@UMOB_AGI) ? .@UMOB_AGI:.UMOB_AGI;
  120.     .UMOB_VIT = (.@UMOB_VIT) ? .@UMOB_VIT:.UMOB_VIT;
  121.     .UMOB_INT = (.@UMOB_INT) ? .@UMOB_INT:.UMOB_INT;
  122.     .UMOB_DEX = (.@UMOB_DEX) ? .@UMOB_DEX:.UMOB_DEX;
  123.     .UMOB_LUK = (.@UMOB_LUK) ? .@UMOB_LUK:.UMOB_LUK;
  124.     .UMOB_DEF = (.@UMOB_DEF) ? .@UMOB_DEF:.UMOB_DEF;
  125.     .UMOB_MDEF = (.@UMOB_MDEF) ? .@UMOB_MDEF:.UMOB_MDEF;
  126.     killmonster strnpcinfo(4),strnpcinfo(0)+"::OnMyMobDead";
  127.     donpcevent strnpcinfo(0)+"::OnMyMobDead";
  128.     end;
  129.    
  130. OnInit:
  131.     // Max level players can input
  132.     .maxlv = 99;
  133.  
  134.     // Max stats players can input
  135.     .max_stat = 120;
  136.    
  137.     // Max hp - don't change if you dont know what you are doing
  138.     .UMOB_MAXHP = 2000000000;
  139.  
  140.     // Default values on initial spawn
  141.     .UMOB_SIZE = 1;
  142.     .UMOB_LEVEL = 10;
  143.     .UMOB_RACE = 3;
  144.     .UMOB_ELETYPE = 1;
  145.     .UMOB_ELELEVEL = 1;
  146.     .UMOB_STR = 5;
  147.     .UMOB_AGI = 5;
  148.     .UMOB_VIT = 5;
  149.     .UMOB_INT = 5;
  150.     .UMOB_DEX = 5;
  151.     .UMOB_LUK = 5;
  152.     .UMOB_DEF = 10;
  153.     .UMOB_MDEF = 10;
  154.  
  155. OnMyMobDead:
  156.     getunitdata(getnpcid(0), .@d);
  157.     monster strnpcinfo(4),.@d[UNPC_X],.@d[UNPC_Y],"Punching Bag",(!checkre(0))?1905:2411,1,strnpcinfo(0)+"::OnMyMobDead";
  158.     .@dupid = atoi(strnpcinfo(2));
  159.     .gid[.@dupid] = $@mobid[0];
  160.     .mhp[.@dupid] = .UMOB_MAXHP;
  161.     setunitdata .gid[.@dupid],UMOB_MODE,.@d[UMOB_MODE]|0x4000000|0x0200000; // Set MD_STATUS_IMMUNE (0x4000000) because EDP/burn/%MHP based status can skew the DPS counter so much.
  162.     setunitdata .gid[.@dupid],UMOB_MAXHP,.UMOB_MAXHP;
  163.     setunitdata .gid[.@dupid],UMOB_SIZE,.UMOB_SIZE;
  164.     setunitdata .gid[.@dupid],UMOB_LEVEL,.UMOB_LEVEL;
  165.     setunitdata .gid[.@dupid],UMOB_RACE,.UMOB_RACE;
  166.     setunitdata .gid[.@dupid],UMOB_ELETYPE,.UMOB_ELETYPE;
  167.     setunitdata .gid[.@dupid],UMOB_ELELEVEL,.UMOB_ELELEVEL;
  168.     setunitdata .gid[.@dupid],UMOB_STR,.UMOB_STR;
  169.     setunitdata .gid[.@dupid],UMOB_AGI,.UMOB_AGI;
  170.     setunitdata .gid[.@dupid],UMOB_VIT,.UMOB_VIT;
  171.     setunitdata .gid[.@dupid],UMOB_INT,.UMOB_INT;
  172.     setunitdata .gid[.@dupid],UMOB_DEX,.UMOB_DEX;
  173.     setunitdata .gid[.@dupid],UMOB_LUK,.UMOB_LUK;
  174.     setunitdata .gid[.@dupid],UMOB_DEF,.UMOB_DEF;
  175.     setunitdata .gid[.@dupid],UMOB_MDEF,.UMOB_MDEF;
  176.     initnpctimer;
  177.     end;
  178.    
  179. OnTimer5000:
  180.     .@dupid = atoi(strnpcinfo(2));
  181.     if(unitexists(.gid[.@dupid])){
  182.         getunitdata(.gid[.@dupid],.@d);
  183.         .@diff = (.mhp[.@dupid] - .@d[UMOB_HP]);
  184.         if(.@diff > 0){
  185.             npctalk "Punching Bag : I've taken " + F_InsertComma(.@diff/5) + " DPS in last 5 seconds.";
  186.             setunitdata .gid[.@dupid],UMOB_HP,.mhp[.@dupid];
  187.             specialeffect EF_HEAL, .gid[.@dupid];
  188.         }
  189.     }
  190.     initnpctimer;
  191.  
  192.     function    get_size_name   {
  193.         switch ( getarg(0) ) {
  194.             case 0 : .@val$ = "Small"; break;
  195.             case 1 : .@val$ = "Medium"; break;
  196.             case 2 : .@val$ = "Large"; break;
  197.         }
  198.         return .@val$;
  199.     }
  200.    
  201.     function    get_race_name   {
  202.         switch ( getarg(0) ) {
  203.             case 0: .@val$ = "Formless"; break;
  204.             case 1: .@val$ = "Undead"; break;
  205.             case 2: .@val$ = "Brute"; break;
  206.             case 3: .@val$ = "Plant"; break;
  207.             case 4: .@val$ = "Insect"; break;
  208.             case 5: .@val$ = "Fish"; break;
  209.             case 6: .@val$ = "Demon"; break;
  210.             case 7: .@val$ = "Demihuman"; break;
  211.             case 8: .@val$ = "Angel"; break;
  212.             case 9: .@val$ = "Dragon"; break;
  213.             case 10: .@val$ = "Player"; break;
  214.         }
  215.         return .@val$;
  216.     }
  217.    
  218.     function    get_ele_name    {
  219.         switch ( getarg(0) ) {
  220.             case 0: .@val$ = "Neutral"; break;
  221.             case 1: .@val$ = "Water"; break;
  222.             case 2: .@val$ = "Earth"; break;
  223.             case 3: .@val$ = "Fire"; break;
  224.             case 4: .@val$ = "Wind"; break;
  225.             case 5: .@val$ = "Poison"; break;
  226.             case 6: .@val$ = "Holy"; break;
  227.             case 7: .@val$ = "Shadow"; break;
  228.             case 8: .@val$ = "Ghost"; break;
  229.             case 9: .@val$ = "Undead"; break;
  230.         }
  231.         return .@val$;
  232.     }
  233. }
  234.  
  235. prontera,216,79,0   duplicate(Set Parameters#0) Set Parameters#1    844
  236. prontera,224,70,0   duplicate(Set Parameters#0) Set Parameters#2    844
  237. prontera,216,58,0   duplicate(Set Parameters#0) Set Parameters#3    844
  238. prontera,224,58,0   duplicate(Set Parameters#0) Set Parameters#4    844
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement