guimaraessilva10 Posted November 9, 2022 Group: Members Topic Count: 8 Topics Per Day: 0.01 Content Count: 11 Reputation: 0 Joined: 09/08/22 Last Seen: November 16, 2022 Share Posted November 9, 2022 (edited) boa tarde a todos eu preciso desse npc que seje aleatorio os atributos so que eu estou querendo que cada atributos seja seje com +3 e +5 sendo que +3 e +5 força +3 e +5 agi entre outros desse jeito pra armadura/sapato/arma/elmo sader_s_enchant.txt Edited November 9, 2022 by guimaraessilva10 Quote Link to comment Share on other sites More sharing options...
Racaae Posted November 10, 2022 Group: Members Topic Count: 0 Topics Per Day: 0 Content Count: 228 Reputation: 97 Joined: 06/02/12 Last Seen: 2 hours ago Share Posted November 10, 2022 Olá Spoiler //===== rAthena Script ======================================= //= saders enchant npc //===== By: ================================================== //= Sader1992 //https://rathena.org/board/profile/30766-sader1992/ //===== Current Version: ===================================== //= 3.1 //= Support random option. //= fix error with removing ore thanks to @Patskie //===== Compatible With: ===================================== //= rAthena Project //https://rathena.org/board/files/file/3602-saders-enchantment-npc/ //https://github.com/sader1992/sader_scripts //===== Update Log: ========================================= //===== Description: ========================================= // 3.1 FIX https://github.com/sader1992/sader_scripts/issues/4 //============================================================ //============================================================ prontera,157,176,6 script sader enchant 998,{ disable_items; mes "[" + strnpcinfo(1) + "]"; if(.s_only_vip){ if(!vip_status(VIP_STATUS_ACTIVE)){ mes "This service is only for VIPs."; close; } } if (BaseLevel < .s_level_required[0]){ mes "Your level is too Low."; mes " "; mes "Minimum level "+.s_level_required[0]+"."; close; } else if (BaseLevel > .s_level_required[1]) { mes "Your level is too High."; mes " "; mes "Maximum level "+.s_level_required[1]+"."; close; } mes "Hello!"; mes "Do you want to enchant you items?"; mes "I am the best enchanter in the world!"; next; mes "[" + strnpcinfo(1) + "]"; if(.s_zeny > 0) mes "This will cost you ^0000FF" + F_InsertComma(.s_zeny) + "z^000000 only!"; if(.item_is_required) mes "and an enchantment orb"; mes "I will do my best to enchant it Successfully!"; mes "but remember"; mes "There is luck in this work too."; next; mes "[" + strnpcinfo(1) + "]"; mes "Please if you have items same"; mes "as the item you want to enchant"; mes "but them in the storage and come back to me!"; mes "So what you want to do!"; .@string$[0] = "Enchant"; if(.remove_enchant) .@string$[1] = "Remove Enchant"; if(.enable_the_shop) .@string$[2] = "The Items you can enchant"; menu .@string$[0],L_Enchant,.@string$[1],L_Remove,.@string$[2],-; callsub Q_shop; end; L_Remove: .@remove_orbs = true; L_Enchant: clear; mes "[" + strnpcinfo(1) + "]"; mes "Please select the item you want to enchant"; for(.@i=0; .@i<getarraysize(.s_all$); .@i++) if(getequipid(.s_all_loc[.@i])>-1) { set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^E81B02" + getitemname(getequipid(.s_all_loc[.@i])) + "^000000 ]:"; }else{ set .@armor_menu$, .@armor_menu$ + .s_all$[.@i] + " - [ ^D6C4E8" + "No Equip" + "^000000 ]:"; } set .@s_all_selected, select(.@armor_menu$) -1; if(getequipid(.s_all_loc[.@s_all_selected])< 0) { clear; mes "[" + strnpcinfo(1) + "]"; mes "You don't have item equiped there."; close; } if (countitem(getequipid(.s_all_loc[.@s_all_selected])) > 1) { clear; mes "[" + strnpcinfo(1) + "]"; mes "You have more then one item"; mes "from the item that you want to enchant."; close; } .@s_item_refine = getequiprefinerycnt(.s_all_loc[.@s_all_selected]); if( getd(".specific_" + .s_all$[.@s_all_selected] + "s") ==1){ for(.@i=0;.@i<getarraysize(getd("." + .s_all$[.@s_all_selected] + "s$"));.@i++){ if(getequipid(.s_all_loc[.@s_all_selected]) == atoi(getd("." + .s_all$[.@s_all_selected] + "s$["+.@i+"]"))){ .@good_to_go = true; } } }else{ for(.@i=0;.@i<getarraysize(.black_list$);.@i++){ if(getequipid(.s_all_loc[.@s_all_selected]) == atoi(.black_list$[.@i])){ .@black_list_item = true; } } .@good_to_go = true; } if(!.@good_to_go || .@black_list_item) { mes "[" + strnpcinfo(1) + "]"; mes "sorry"; mes " i can't enchant this item."; close; } for(.@i=0;.@i<(MAX_ITEM_RDM_OPT);.@i++){ .@r_id[.@i] = getequiprandomoption(.s_all_loc[.@s_all_selected],.@i,ROA_ID); .@r_v[.@i] = getequiprandomoption(.s_all_loc[.@s_all_selected],.@i,ROA_VALUE); .@r_p[.@i] = getequiprandomoption(.s_all_loc[.@s_all_selected],.@i,ROA_PARAM); } .@card0 = getequipcardid(.s_all_loc[.@s_all_selected],0); .@card1 = getequipcardid(.s_all_loc[.@s_all_selected],1); .@card2 = getequipcardid(.s_all_loc[.@s_all_selected],2); .@card3 = getequipcardid(.s_all_loc[.@s_all_selected],3); if(.@remove_orbs){ next; mes "This will remove all the cards and orbs inside the item!"; if (.s_zeny_remove > 0) { mes "this will cost you ^0000FF" + F_InsertComma(.s_zeny_remove) + "z^000000."; } mes "are you sure?"; switch(select("NO:Yes")){ case 1: end; case 2: mes "for the last time!"; mes "are you sure?"; switch(select("NO:Yes")){ case 1: end; case 2: if (Zeny < .s_zeny_remove) { mes "Sorry, but you don't have enough zeny."; close; } if(.select_remove_orb){ if(.@card0 == 0).@card0$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]"; else .@card0$ = getitemname(.@card0); if(.@card1 == 0).@card1$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]"; else .@card1$ = getitemname(.@card1); if(.@card2 == 0).@card2$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]"; else .@card2$ = getitemname(.@card2); if(.@card3 == 0).@card3$ = " - [ ^D6C4E8" + "No Equip" + "^000000 ]"; else .@card3$ = getitemname(.@card3); switch(select(.@card0$,.@card1$,.@card2$,.@card3$)){ case 1: .@card0 = 0; break; case 2: .@card1 = 0; break; case 3: .@card2 = 0; break; case 4: .@card3 = 0; break; } specialeffect2 EF_REPAIRWEAPON; set .@item, getequipid(.s_all_loc[.@s_all_selected]); set Zeny, Zeny-.s_zeny_remove; delitem .@item,1; getitem3 .@item, 1, 1, .@s_item_refine, 0, .@card0, .@card1, .@card2, .@card3,.@r_id,.@r_v,.@r_p; equip .@item; end; } specialeffect2 EF_REPAIRWEAPON; set .@item, getequipid(.s_all_loc[.@s_all_selected]); delitem .@item,1; getitem3 .@item, 1, 1, .@s_item_refine, 0, 0, 0, 0, 0,.@r_id,.@r_v,.@r_p; equip .@item; set Zeny, Zeny-.s_zeny_remove; end; } } } if (.chosse_orb) { next; mes "[" + strnpcinfo(1) + "]"; mes "select the orb you want"; for(.@i=0; .@i<getarraysize(getd("." + .s_all$[.@s_all_selected] + "$")); .@i++) set .@orb_menu$, .@orb_menu$ + getitemname(atoi(getd("." + .s_all$[.@s_all_selected] + "$["+.@i+"]"))) + ":"; set .@s_orb_selected, select(.@orb_menu$) -1; .@selected_orb_id = getd("." + .s_all$[.@s_all_selected] + "$["+.@s_orb_selected+"]"); } else { .@selected_orb_size = rand(getarraysize(getd("." + .s_all$[.@s_all_selected] + "$"))); .@selected_orb_id = getd("." + .s_all$[.@s_all_selected] + "$["+.@selected_orb_size+"]"); } clear; mes "[" + strnpcinfo(1) + "]"; mes "Which slot ?"; for(.@i=getd(".slot_count_" + .s_all$[.@s_all_selected]); .@i<4; .@i++) if(getequipcardid(.s_all_loc[.@s_all_selected],.@i)!= null) { set .@slot_menu$, .@slot_menu$ + " [ ^E81B02" + getitemname(getequipcardid(.s_all_loc[.@s_all_selected],.@i)) + "^000000 ]:"; }else{ set .@slot_menu$, .@slot_menu$ + " [ ^D6C4E8" + "Empty" + "^000000 ]:"; } set .@s_slot_selected, select(.@slot_menu$) -1; .@s_slot_selected += getd(".slot_count_" + .s_all$[.@s_all_selected]); clear; mes "[" + strnpcinfo(1) + "]"; if(!.s_enchant_overwrite){ if(getequipcardid(.s_all_loc[.@s_all_selected],.@s_slot_selected) > 0) { mes "you already have orb in this slot"; close; } } if (Zeny < .s_zeny) { mes "Sorry, but you don't have enough zeny."; close; } if (.item_is_required && .chosse_orb){ if (countitem(.@selected_orb_id) < 1){ mes"you don't have enchant orb"; close; } } mes "I will start now."; close2; specialeffect2 EF_MAPPILLAR; progressbar "ffff00",.progress_time; mes "[" + strnpcinfo(1) + "]"; set Zeny, Zeny-.s_zeny; if(.item_is_required && .chosse_orb){delitem .@selected_orb_id,1;} if (rand(100) < .success_chanse[.@s_slot_selected]){ mes "We did it!"; specialeffect2 154; setd(".@card" + .@s_slot_selected, .@selected_orb_id); set .@item, getequipid(.s_all_loc[.@s_all_selected]); delitem .@item,1; getitem3 .@item, 1, 1, .@s_item_refine, 0, .@card0, .@card1, .@card2, .@card3,.@r_id,.@r_v,.@r_p; equip .@item; close; }else{ specialeffect2 155; mes "I am sorry"; mes "We did Fail"; specialeffect2 EF_PHARMACY_FAIL; if (rand(100) < .brack_chance){ set .@item, getequipid(.s_all_loc[.@s_all_selected]); delitem .@item,1; mes "and it broke!!"; specialeffect EF_SUI_EXPLOSION; } close; } Q_shop: switch(select("Weapons:Armors:Shields:Germents:Shoes:Accessarys:Uppers:Middels:Lowers")){ case 1: callshop "enchantable_items_Weapon",1; break; case 2: callshop "enchantable_items_Armor",1; break; case 3: callshop "enchantable_items_Shield",1; break; case 4: callshop "enchantable_items_Germent",1; break; case 5: callshop "enchantable_items_Shoes",1; break; case 6: callshop "enchantable_items_Accessary",1; break; case 7: callshop "enchantable_items_Upper",1; break; case 8: callshop "enchantable_items_Middel",1; break; case 9: callshop "enchantable_items_Lower",1; break; } end; OnInit: //--------------------------------------------------------------// //--------------------------------------------------------------// //-------------------- configuration -----------------------// //--------------------------------------------------------------// //--------------------------------------------------------------// //--------------------------------------------------------------// //if you want to remove one from the menu you need to remove it down too!! /or add //--------------------------------------------------------------// //setarray .s_all$,"Weapon","Armor","Shield","Germent","Shoes","Accessary","Upper","Middel","Lower"; //setarray .s_all_loc,EQI_HAND_R,EQI_ARMOR,EQI_HAND_L,EQI_GARMENT,EQI_SHOES,EQI_ACC_L,EQI_HEAD_TOP,EQI_HEAD_MID,EQI_HEAD_LOW; setarray .s_all$,"Weapon","Armor","Shoes","Upper","Middel","Lower"; setarray .s_all_loc,EQI_HAND_R,EQI_ARMOR,EQI_SHOES,EQI_HEAD_TOP,EQI_HEAD_MID,EQI_HEAD_LOW; //--------------------------------------------------------------// //Orbs IDs (Note : Shield = left hand so the weapon on the left hand count as Shield too! //--------------------------------------------------------------// setarray .Weapon$,4702,4704,4712,4714,4722,4724,4732,4734,4742,4744,4752,4754; //right handed weapons setarray .Armor$,4702,4704,4712,4714,4722,4724,4732,4734,4742,4744,4752,4754; //Armors setarray .Shield$,4702,4704,4712,4714,4722,4724,4732,4734,4742,4744,4752,4754; //Shields and left hand weapons setarray .Germent$,4702,4704,4712,4714,4722,4724,4732,4734,4742,4744,4752,4754; //Germent setarray .Shoes$,4702,4704,4712,4714,4722,4724,4732,4734,4742,4744,4752,4754; //Shoes setarray .Accessary$,4933,4861,4762,4934; //Accessary setarray .Upper$,4702,4704,4712,4714,4722,4724,4732,4734,4742,4744,4752,4754; //Headgear Top setarray .Middel$,4702,4704,4712,4714,4722,4724,4732,4734,4742,4744,4752,4754; //Middel setarray .Lower$,4702,4704,4712,4714,4722,4724,4732,4734,4742,4744,4752,4754; //Lower //--------------------------------------------------------------// //if you want to put specific IDs for kind of gear put it to 1 //--------------------------------------------------------------// .specific_Weapons = false; .specific_Armors = false; .specific_Shields = false; .specific_Germents = false; .specific_Shoes = false; .specific_Accessarys = false; .specific_Uppers = false; .specific_Middels = false; .specific_Lowers = false; //--------------------------------------------------------------// //if specific put the IDs here //--------------------------------------------------------------// setarray .Weapons$,1601,1201,1204,1207,1210,1213,1216,1219,1222,1247,1248,1249; //right handed weapons setarray .Armors$,2301,2303,2305,2307,2307,2309,2312,2314,2316,2321,2323,2325,2328,2330,2332; //Armors setarray .Shields$,2101,2103,2105,2107,2113,2117; //Shields and left hand weapons setarray .Germents$,2512,2501,2503,2505; //Germents setarray .Shoess$,2416,2401,2403,2405,2411; //Shoes setarray .Accessarys$,2628,2608,2609,2612,2613,2627; //Accessarys setarray .Uppers$,2206,2208,2211,2216; //Uppers setarray .Middels$,2218,2241; //Middels setarray .Lowers$,2628,2206; //Lowers //--------------------------------------------------------------// //if not specific put the black list IDs here (if you want //--------------------------------------------------------------// setarray .black_list$,2335,2338,2340,2341; //--------------------------------------------------------------// //here you can make a specific slot number for each kind //0 = all 4 slot ,1 = last 3 slot ,2 = last 2 slot ,3 = last 1 slot //--------------------------------------------------------------// .slot_count_Weapon = 1; .slot_count_Armor = 1; .slot_count_Shield = 1; .slot_count_Germent = 1; .slot_count_Shoes = 1; .slot_count_Accessary = 1; .slot_count_Upper = 1; .slot_count_Middel = 1; .slot_count_Lower = 1; //--------------------------------------------------------------// //other configuration //--------------------------------------------------------------// setarray .s_level_required,0,175; //the level required to use the npc .s_only_vip = false; //if you want only vip to use it put it to 1 setarray .success_chanse,100,80,60,40; //success chanse [1st_slot_chanse,2nd_slot_chanse,3rd_slot_chanse,4th_slot_chanse] .s_zeny = 10000; //if you don't want zeny requirment set it to 0 .s_zeny_remove = 100000; //this for enchantment reset .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) .s_enchant_overwrite = false; //if true then you can overwrite the enchant .progress_time = 2; //the time that needed to wait until the socket end .chosse_orb = false; //false = random ,true = yes .brack_chance = 10; //the chanse that it will brack if it fail .remove_enchant = true; //false = no ,true = yes .select_remove_orb = true; //--------------------------------------------------------------// //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 //--------------------------------------------------------------// .enable_the_shop = false; //--------------------------------------------------------------// //Do not edit here //--------------------------------------------------------------// npcshopdelitem "enchantable_items_Weapon",512; npcshopdelitem "enchantable_items_Armor",512; npcshopdelitem "enchantable_items_Shield",512; npcshopdelitem "enchantable_items_Germent",512; npcshopdelitem "enchantable_items_Shoes",512; npcshopdelitem "enchantable_items_Accessary",512; npcshopdelitem "enchantable_items_Upper",512; npcshopdelitem "enchantable_items_Middel",512; npcshopdelitem "enchantable_items_Lower",512; for (.@i = 0; .@i < getarraysize(.Weapons$); .@i++) npcshopadditem "enchantable_items_Weapon", atoi(.Weapons$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Armors$); .@i++) npcshopadditem "enchantable_items_Armor", atoi(.Armors$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Shields$); .@i++) npcshopadditem "enchantable_items_Shield", atoi(.Shields$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Germents$); .@i++) npcshopadditem "enchantable_items_Germent", atoi(.Germents$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Shoes$); .@i++) npcshopadditem "enchantable_items_Shoes", atoi(.Shoes$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Accessarys$); .@i++) npcshopadditem "enchantable_items_Accessary", atoi(.Accessarys$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Uppers$); .@i++) npcshopadditem "enchantable_items_Upper", atoi(.Uppers$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Middels$); .@i++) npcshopadditem "enchantable_items_Middel", atoi(.Middels$[.@i]),1; for (.@i = 0; .@i < getarraysize(.Lowers$); .@i++) npcshopadditem "enchantable_items_Lower", atoi(.Lowers$[.@i]),1; end; } - pointshop enchantable_items_Weapon -1,#YOU_CAN_ENCHANT_Weapons,512:1; - pointshop enchantable_items_Armor -1,#YOU_CAN_ENCHANT_Armors,512:1; - pointshop enchantable_items_Shield -1,#YOU_CAN_ENCHANT_Shields,512:1; - pointshop enchantable_items_Germent -1,#YOU_CAN_ENCHANT_Germents,512:1; - pointshop enchantable_items_Shoes -1,#YOU_CAN_ENCHANT_Shoes,512:1; - pointshop enchantable_items_Accessary -1,#YOU_CAN_ENCHANT_Accessarys,512:1; - pointshop enchantable_items_Upper -1,#YOU_CAN_ENCHANT_Uppers,512:1; - pointshop enchantable_items_Middel -1,#YOU_CAN_ENCHANT_Middels,512:1; - pointshop enchantable_items_Lower -1,#YOU_CAN_ENCHANT_Lowers,512:1; Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.