Advertisement
twopac

Untitled

May 21st, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 15.43 KB | None | 0 0
  1. //===== rAthena Script =======================================
  2. //= saders enchant npc
  3. //===== By: ==================================================
  4. //= Sader1992
  5. //https://rathena.org/board/profile/30766-sader1992/
  6. //===== Current Version: =====================================
  7. //= 2.6
  8. //===== Compatible With: =====================================
  9. //= rAthena Project
  10. //https://rathena.org/board/files/file/3602-saders-enchantment-npc/
  11. //https://github.com/sader1992/sader_scripts
  12. //===== Description: =========================================
  13. //============================================================
  14. //============================================================
  15. prontera,157,176,6  script  sader enchant   998,{
  16.     disable_items;
  17.     if(.s_only_vip){
  18.         if(!vip_status(VIP_STATUS_ACTIVE)){
  19.             mes "this service only for vip";
  20.             close;
  21.         }
  22.     }
  23.     if (BaseLevel < .s_level_required[0]){
  24.         mes "Your level is too Low.";
  25.         mes "   ";
  26.         mes "Minimum level "+.s_level_required[0]+".";
  27.         close;
  28.     }else if(BaseLevel > .s_level_required[1]){
  29.         mes "Your level is too High.";
  30.         mes "   ";
  31.         mes "Maximum level "+.s_level_required[1]+".";
  32.         close;
  33.     }
  34.     mes "Hello!";
  35.     mes "Do you want to enchant you items!";
  36.     mes "I am the best enchanter in the world!";
  37.     next;
  38.     if(.s_zeny > 0)
  39.         mes "isso vai te custar " + .s_zeny + " Zenys !";
  40.     if(.item_is_required)
  41.         mes "e 1x ticket encantamento";
  42.     mes "i will do my best to enchant it Successfully!";
  43.     mes "but remember";
  44.     mes "There is luck in this work too.";
  45.     next;
  46.     mes "please if you have items same";
  47.     mes "as the item you want to enchant";
  48.     mes "but them in the storage and come back to me!";
  49.     next;
  50.     .@string$[0] = "Enchant";
  51.     if(.remove_enchant)
  52.         .@string$[1] = "Remove Enchant";
  53.     if(.enable_the_shop)
  54.         .@string$[2] = "The Items you can enchant";
  55.     mes "so what you want to do!";
  56.     menu .@string$[0],L_Enchant,.@string$[1],L_Remove,.@string$[2],-;
  57.     callsub Q_shop; end;
  58.     L_Remove: .@remove_orbs = true;
  59.     L_Enchant:
  60.     next;
  61.     mes "please select the item you want to enchant";
  62.     for(.@i=0; .@i<getarraysize(.s_all$); .@i++)
  63.         if(getequipid(.s_all_loc[.@i])>-1) {
  64.             set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^E81B02" + getitemname(getequipid(.s_all_loc[.@i])) + "^000000 ]:";
  65.         }else{
  66.             set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^D6C4E8" + "No Equip" + "^000000 ]:";
  67.         }
  68.     set .@s_all_selected, select(.@armor_menu$) -1;
  69.     if(getequipid(.s_all_loc[.@s_all_selected])< 0){
  70.         mes "you don't have item equiped there";
  71.         close;
  72.     }
  73.     if (countitem(getequipid(.s_all_loc[.@s_all_selected])) > 1){
  74.             mes "you have more then one item";
  75.             mes "from the item that you want to enchant";
  76.             close;
  77.     }
  78.     .@s_item_refine = getequiprefinerycnt(.s_all_loc[.@s_all_selected]);
  79.     if( getd(".specific_" + .s_all$[.@s_all_selected] + "s") ==1){
  80.         for(.@i=0;.@i<getarraysize(getd("." + .s_all$[.@s_all_selected] + "s$"));.@i++){
  81.             if(getequipid(.s_all_loc[.@s_all_selected]) == atoi(getd("." + .s_all$[.@s_all_selected] + "s$["+.@i+"]"))){
  82.                 .@good_to_go = true;
  83.             }
  84.         }
  85.     }else{
  86.         for(.@i=0;.@i<getarraysize(.black_list$);.@i++){
  87.             if(getequipid(.s_all_loc[.@s_all_selected]) == atoi(.black_list$[.@i])){
  88.                 .@black_list_item = true;
  89.             }
  90.         }
  91.         .@good_to_go = true;
  92.     }
  93.     if(!.@good_to_go || .@black_list_item){
  94.         mes "sorry";
  95.         mes " i can't enchant this item.";
  96.         close;
  97.     }
  98.     .@card0 = getequipcardid(.s_all_loc[.@s_all_selected],0);
  99.     .@card1 = getequipcardid(.s_all_loc[.@s_all_selected],1);
  100.     .@card2 = getequipcardid(.s_all_loc[.@s_all_selected],2);
  101.     .@card3 = getequipcardid(.s_all_loc[.@s_all_selected],3);
  102.     if(.@remove_orbs){
  103.         next;
  104.         mes "this will remove all the cards and orbs inside the item!";
  105.         if (.s_zeny_remove > 0) {
  106.             mes "this will cost you " + .s_zeny_remove + " Zeny.";
  107.         }
  108.         mes "are you sure?";
  109.             switch(select("NO:Yes")){
  110.                 case 1: end;
  111.                 case 2:
  112.                     mes "for the last time!";
  113.                     mes "are you sure?";
  114.                     switch(select("NO:Yes")){
  115.                     case 1: end;
  116.                     case 2:
  117.                         if (Zeny < .s_zeny_remove) {
  118.                             mes "Sorry, but you don't have enough zeny.";
  119.                             close;
  120.                         }
  121.                         if(.select_remove_orb){
  122.                             if(.@card0 == 0).@card0$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]:"; else .@card0$ = getitemname(.@card0);
  123.                             if(.@card1 == 0).@card1$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]:"; else .@card1$ = getitemname(.@card1);
  124.                             if(.@card2 == 0).@card2$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]:"; else .@card2$ = getitemname(.@card2);
  125.                             if(.@card3 == 0).@card3$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]:"; else .@card3$ = getitemname(.@card3);
  126.                             switch(select(.@card0$,.@card1$,.@card2$,.@card3$)){
  127.                                 case 1: .@card0 = 0; break;
  128.                                 case 2: .@card1 = 0; break;
  129.                                 case 3: .@card2 = 0; break;
  130.                                 case 4: .@card3 = 0; break;
  131.                             }
  132.                             specialeffect2 EF_REPAIRWEAPON;
  133.                             set .@item, getequipid(.s_all_loc[.@s_all_selected]);
  134.                             delitem .@item,1;
  135.                             getitem2 .@item, 1, 1, .@s_item_refine, 0, .@card0, .@card1, .@card2, .@card3;
  136.                             set Zeny, Zeny-.s_zeny_remove;
  137.                             end;
  138.                         }
  139.                         specialeffect2 EF_REPAIRWEAPON;
  140.                         set .@item, getequipid(.s_all_loc[.@s_all_selected]);
  141.                         delitem .@item,1;
  142.                         getitem2 .@item, 1, 1, .@s_item_refine, 0, 0, 0, 0, 0;
  143.                         set Zeny, Zeny-.s_zeny_remove;
  144.                         end;
  145.                     }
  146.             }
  147.     }
  148.     if(.chosse_orb){
  149.         next;
  150.         mes "select the orb you want";
  151.         for(.@i=0; .@i<getarraysize(getd("." + .s_all$[.@s_all_selected] + "$")); .@i++)
  152.                 set .@orb_menu$, .@orb_menu$ + getitemname(atoi(getd("." + .s_all$[.@s_all_selected] + "$["+.@i+"]"))) + ":";
  153.         set .@s_orb_selected, select(.@orb_menu$) -1;
  154.         .@selected_orb_id = getd("." + .s_all$[.@s_all_selected] + "$["+.@s_orb_selected+"]");
  155.     }else{
  156.         .@selected_orb_size = rand(getarraysize(getd("." + .s_all$[.@s_all_selected] + "$")));
  157.         .@selected_orb_id = getd("." + .s_all$[.@s_all_selected] + "$["+.@selected_orb_size+"]");
  158.     }
  159.     next;
  160.     mes "which slot ?";
  161.     for(.@i=getd(".slot_count_" + .s_all$[.@s_all_selected]); .@i<4; .@i++)
  162.         if(getequipcardid(.s_all_loc[.@s_all_selected],.@i)!= null) {
  163.             set .@slot_menu$, .@slot_menu$ + " [ ^E81B02" + getitemname(getequipcardid(.s_all_loc[.@s_all_selected],.@i)) + "^000000 ]:";
  164.         }else{
  165.             set .@slot_menu$, .@slot_menu$ + " [ ^D6C4E8" + "Empty" + "^000000 ]:";
  166.         }
  167.     set .@s_slot_selected, select(.@slot_menu$) -1;
  168.     .@s_slot_selected += getd(".slot_count_" + .s_all$[.@s_all_selected]);
  169.     if(!.s_enchant_overwrite){
  170.         if(getequipcardid(.s_all_loc[.@s_all_selected],.@s_slot_selected) > 0){
  171.             mes "you already have orb in this slot";
  172.             close;
  173.         }
  174.     }
  175.     if (Zeny < .s_zeny) {
  176.             mes "Sorry, but you don't have enough zeny.";
  177.             close;
  178.         }
  179.     if(.item_is_required && .chosse_orb){
  180.         if (countitem(.@selected_orb_id) < 1){
  181.             mes"you don't have enchant orb";
  182.             close;
  183.         }
  184.     }
  185.     close2;
  186.     specialeffect2 EF_MAPPILLAR;
  187.     progressbar "ffff00",.progress_time;
  188.     set Zeny, Zeny-.s_zeny;
  189.     if(.item_is_required && .chosse_orb){delitem .@selected_orb_id,1;}
  190.     if (rand(100) < .success_chanse[.@s_slot_selected]){
  191.         mes "We did it!";
  192.         specialeffect2 154;
  193.         setd(".@card" + .@s_slot_selected, .@selected_orb_id);
  194.         set .@item, getequipid(.s_all_loc[.@s_all_selected]);
  195.         delitem .@item,1;
  196.         getitem2 .@item, 1, 1, .@s_item_refine, 0, .@card0, .@card1, .@card2, .@card3;
  197.         equip .@item;
  198.         close;
  199.     }else{
  200.         specialeffect2 155;
  201.         mes "I am sorry";
  202.         mes "We did Fail";
  203.         specialeffect2 EF_PHARMACY_FAIL;
  204.         if (rand(100) < .brack_chance){
  205.             set .@item, getequipid(.s_all_loc[.@s_all_selected]);
  206.             delitem .@item,1;
  207.             mes "and it broke!!";
  208.             specialeffect EF_SUI_EXPLOSION;
  209.         }
  210.         close;
  211.     }
  212.    
  213.    
  214. Q_shop:
  215.     switch(select("Weapons:Armors:Shields:Germents:Shoses:Accessarys:Uppers:Middels:Lowers")){
  216.     case 1: callshop "enchantable_items_Weapon",1; break;
  217.     case 2: callshop "enchantable_items_Armor",1; break;
  218.     case 3: callshop "enchantable_items_Shield",1; break;
  219.     case 4: callshop "enchantable_items_Germent",1; break;
  220.     case 5: callshop "enchantable_items_Shose",1; break;
  221.     case 6: callshop "enchantable_items_Accessary",1; break;
  222.     case 7: callshop "enchantable_items_Upper",1; break;
  223.     case 8: callshop "enchantable_items_Middel",1; break;
  224.     case 9: callshop "enchantable_items_Lower",1; break;
  225.     }
  226. end;   
  227.  
  228. OnInit:
  229.     //--------------------------------------------------------------//
  230.     //--------------------------------------------------------------//
  231.     //--------------------   configuration   -----------------------//
  232.     //--------------------------------------------------------------//
  233.     //--------------------------------------------------------------//
  234.    
  235.     //--------------------------------------------------------------//
  236.     //if you want to remove one from the menu you need to remove it down too!! /or add
  237.     //--------------------------------------------------------------//
  238.     setarray .s_all$,"Armadura","Meio";
  239.     setarray .s_all_loc,EQI_ARMOR,EQI_HEAD_MID;
  240.    
  241.     //--------------------------------------------------------------//
  242.     //Orbs IDs (Note : Shield = left hand so the weapon on the left hand count as Shield too!
  243.     //--------------------------------------------------------------//
  244.     //setarray .Weapon$,4741,4933,4861,4762,4934;   //right handed weapons
  245.     setarray .Armadura$,4700,4701,4702,4730,4731,4732,4740,4741,4742,4710,4711,4712,4720,4721,4722,4750,4751,4752,4760,4761,4806,4861,4862,4867,4870,4800,4871; //Armors
  246.     //setarray .Shield$,4861,4762,4934; //Shields and left hand weapons
  247.     //setarray .Germent$,4741,4933,4861,4762,4934;  //Germent
  248.     //setarray .Shose$,4741,4933,4861,4762,4934;    //Shose
  249.     //setarray .Accessary$,4741,4933,4861,4762,4934;    //orbs id
  250.     //setarray .Upper$,4741,4933,4861,4762,4934;    //Accessary
  251.     setarray .Meio$,4700,4701,4702,4730,4731,4732,4740,4741,4742,4710,4711,4712,4720,4721,4722,4750,4751,4752,4760,4761,4806,4861,4862,4867,4870,4800,4871; //Middel
  252.     //setarray .Lower$,4741,4933,4861,4762,4934;    //Lower
  253.    
  254.     //--------------------------------------------------------------//
  255.     //if you want to put specific IDs for kind of gear put it to 1
  256.     //--------------------------------------------------------------//
  257.     .specific_Weapons = false;
  258.     .specific_Armaduras = false;
  259.     .specific_Shields = false;
  260.     .specific_Germents = false;
  261.     .specific_Shoses = false;
  262.     .specific_Accessarys = false;
  263.     .specific_Uppers = false;
  264.     .specific_Meios = false;
  265.     .specific_Lowers = false;
  266.    
  267.     //--------------------------------------------------------------//
  268.     //if specific put the IDs here
  269.     //--------------------------------------------------------------//
  270.     setarray .Weapons$,1601,1201,1204,1207,1210,1213,1216,1219,1222,1247,1248,1249; //right handed weapons
  271.     setarray .Armaduras$,2301,2303,2305,2307,2307,2309,2312,2314,2316,2321,2323,2325,2328,2330,2332;    //Armors
  272.     setarray .Shields$,2101,2103,2105,2107,2113,2117;   //Shields and left hand weapons
  273.     setarray .Germents$,2512,2501,2503,2505;    //Germents
  274.     setarray .Shoses$,2416,2401,2403,2405,2411; //Shoses
  275.     setarray .Accessarys$,2628,2608,2609,2612,2613,2627;    //Accessarys
  276.     setarray .Uppers$,2206,2208,2211,2216;  //Uppers
  277.     setarray .Meios$,2204,2202; //Meios
  278.     setarray .Lowers$,2628,2206;    //Lowers
  279.    
  280.     //--------------------------------------------------------------//
  281.     //if not specific put the black list IDs here (if you want
  282.     //--------------------------------------------------------------//
  283.     setarray .black_list$,2335,2338,2340,2341;
  284.    
  285.     //--------------------------------------------------------------//
  286.     //here you can make a specific slot number for each kind
  287.     //0 = all 4 slot ,1 = last 3 slot ,2 = last 2 slot ,3 = last 1 slot
  288.     //--------------------------------------------------------------//
  289.     .slot_count_Weapon = 0;
  290.     .slot_count_Armadura = 3;
  291.     .slot_count_Shield = 0;
  292.     .slot_count_Germent = 0;
  293.     .slot_count_Shose = 0;
  294.     .slot_count_Accessary = 0;
  295.     .slot_count_Upper = 0;
  296.     .slot_count_Meio = 3;
  297.     .slot_count_Lower = 0;
  298.    
  299.     //--------------------------------------------------------------//
  300.     //other configuration
  301.     //--------------------------------------------------------------//
  302.     setarray .s_level_required,0,175;   //the level required to use the npc
  303.     .s_only_vip = false;    //if you want only vip to use it put it to 1
  304.     setarray .success_chanse,100,100,100,100;   //success chanse [1st_slot_chanse,2nd_slot_chanse,3rd_slot_chanse,4th_slot_chanse]
  305.     .s_zeny = 5000000;  //if you don't want zeny requirment set it to 0
  306.     .s_zeny_remove = 10000000;  //this for enchantment reset
  307.     .item_is_required = false;  //if you want the orb it self to be required true = yes , false = no(if .chosse_orb = false this will be false too)
  308.     .s_enchant_overwrite = false;   //if true then you can overwrite the enchant
  309.     .progress_time = 1; //the time that needed to wait until the socket end
  310.     .chosse_orb = false;    //false = random ,true = yes
  311.     .brack_chance = 0;  //the chanse that it will brack if it fail
  312.     .remove_enchant = true; //false = no ,true = yes
  313.     .select_remove_orb = false;
  314.     //--------------------------------------------------------------//
  315.     //this will only show the items that the npc can enchant in a shop but no one can buy from it as long as you don't give them the value
  316.     //--------------------------------------------------------------//
  317.     .enable_the_shop = false;
  318.  
  319.  
  320.    
  321.    
  322.    
  323.     //--------------------------------------------------------------//
  324.     //Do not edit here
  325.     //--------------------------------------------------------------//
  326.     npcshopdelitem "enchantable_items_Weapon",512;
  327.     npcshopdelitem "enchantable_items_Armor",512;
  328.     npcshopdelitem "enchantable_items_Shield",512;
  329.     npcshopdelitem "enchantable_items_Germent",512;
  330.     npcshopdelitem "enchantable_items_Shose",512;
  331.     npcshopdelitem "enchantable_items_Accessary",512;
  332.     npcshopdelitem "enchantable_items_Upper",512;
  333.     npcshopdelitem "enchantable_items_Middel",512;
  334.     npcshopdelitem "enchantable_items_Lower",512;
  335.    
  336.     for (.@i = 0; .@i < getarraysize(.Weapons$); .@i++)
  337.             npcshopadditem "enchantable_items_Weapon", atoi(.Weapons$[.@i]),1;
  338.     for (.@i = 0; .@i < getarraysize(.Armors$); .@i++)
  339.             npcshopadditem "enchantable_items_Armor", atoi(.Armors$[.@i]),1;
  340.     for (.@i = 0; .@i < getarraysize(.Shields$); .@i++)
  341.             npcshopadditem "enchantable_items_Shield", atoi(.Shields$[.@i]),1;
  342.     for (.@i = 0; .@i < getarraysize(.Germents$); .@i++)
  343.             npcshopadditem "enchantable_items_Germent", atoi(.Germents$[.@i]),1;   
  344.     for (.@i = 0; .@i < getarraysize(.Shoses$); .@i++)
  345.             npcshopadditem "enchantable_items_Shose", atoi(.Shoses$[.@i]),1;   
  346.     for (.@i = 0; .@i < getarraysize(.Accessarys$); .@i++)
  347.             npcshopadditem "enchantable_items_Accessary", atoi(.Accessarys$[.@i]),1;   
  348.     for (.@i = 0; .@i < getarraysize(.Uppers$); .@i++)
  349.             npcshopadditem "enchantable_items_Upper", atoi(.Uppers$[.@i]),1;       
  350.     for (.@i = 0; .@i < getarraysize(.Middels$); .@i++)
  351.             npcshopadditem "enchantable_items_Middel", atoi(.Middels$[.@i]),1; 
  352.     for (.@i = 0; .@i < getarraysize(.Lowers$); .@i++)
  353.             npcshopadditem "enchantable_items_Lower", atoi(.Lowers$[.@i]),1;   
  354.     end;
  355. }
  356. -   pointshop   enchantable_items_Weapon    -1,#YOU_CAN_ENCHANT_Weapons,512:1;
  357. -   pointshop   enchantable_items_Armor -1,#YOU_CAN_ENCHANT_Armors,512:1;
  358. -   pointshop   enchantable_items_Shield    -1,#YOU_CAN_ENCHANT_Shields,512:1;
  359. -   pointshop   enchantable_items_Germent   -1,#YOU_CAN_ENCHANT_Germents,512:1;
  360. -   pointshop   enchantable_items_Shose -1,#YOU_CAN_ENCHANT_Shoses,512:1;
  361. -   pointshop   enchantable_items_Accessary -1,#YOU_CAN_ENCHANT_Accessarys,512:1;
  362. -   pointshop   enchantable_items_Upper -1,#YOU_CAN_ENCHANT_Uppers,512:1;
  363. -   pointshop   enchantable_items_Middel    -1,#YOU_CAN_ENCHANT_Middels,512:1;
  364. -   pointshop   enchantable_items_Lower -1,#YOU_CAN_ENCHANT_Lowers,512:1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement