Hi All can i seek for your assistance why my enchant NPC will not allow me to proceed after i choose the costume that i want to enchant by the way "30004" is the itemid i set for the transaction.
update : I was able to enchant top mid and low headgear costume but for garment it doesnt work
here's my script
//===== rAthena Script =======================================
//= Costume Enchanter
//===== By ===================================================
//= llchrisll
//===== Version ==============================================
//= 1.0 - Initial Version
//= 1.1 - Added support for all costume slots
// - Added forgotten "Reset Enchantment" menu option
//= 1.2 - Added support to use an price to enchant
// - Removed the unecessary variable for Reset Enchantment
// - Modified the menu creation
//===== Tested With ==========================================
//= rAthena 03/26/2018 Revision
//= GIT Hash: 333f0dddc8353663eacba0423751988c9bc38e34
//===== Description ==========================================
//= This NPC allows players to enchant Costumes.
//= Selectable Enchants and reseting the Enchantments.
//===== Request =============================================
//= by Vegas (https://rathena.org/board/profile/53497-vegas/)
//= Topic: https://rathena.org/board/topic/115174-runen-enchanter-npc-for-custom-upper-middle-lower/
//============================================================
prontera,151,171,4 script Costume Enchanter 101,{
disable_items;
mes .n$;
mes "Hello, "+strcharinfo(0)+"!";
mes "If you like I can enchant your costume equipment with any enchantment I have in store";
mes ( (.exchange_cost[0] > 0)?"in exchange for "+.enchant_cost[1]+"x "+getitemname(.enchant_cost[0]):"for free")+".";
mes "I can also reset an Enchantment "+ ((.enchant_reset[0] > 0)?", but I require "+.enchant_reset[1]+"x "+getitemname(.enchant_reset[0]):"for free")+".";
next;
switch(select("- Enchant Costumes:- Reset Enchantment:- Nevermind")) {
case 1:
mes .n$;
mes "Please select the Costume you want me to enchant:";
for ( set .@s,0; .@s < getarraysize(.enchant_slot); set .@s,.@s + 1) {
switch(.enchant_slot[.@s]) {
case EQI_COSTUME_HEAD_TOP: set .@c_slot$,"Top Headgear"; break;
case EQI_COSTUME_HEAD_MID: set .@c_slot$,"Mid Headgear"; break;
case EQI_COSTUME_HEAD_LOW: set .@c_slot$,"Low Headgear"; break;
case EQI_COSTUME_GARMENT: set .@c_slot$,"Garment"; break;
case EQI_SHADOW_ARMOR: set .@c_slot$,"Armor"; break;
case EQI_SHADOW_WEAPON: set .@c_slot$,"Weapon"; break;
case EQI_SHADOW_SHIELD: set .@c_slot$,"Shield"; break;
case EQI_SHADOW_SHOES: set .@c_slot$,"Shoes"; break;
case EQI_SHADOW_ACC_R: set .@c_slot$,"Accessory Right"; break;
case EQI_SHADOW_ACC_L: set .@c_slot$,"Accessory Left"; break;
}
set .@c_m$,.@c_m$ + ((getequipid(.enchant_slot[.@s]) != -1)?.@c_slot$ + " - "+getitemname(getequipid(.enchant_slot[.@s])):"") + ( (.enchant_slot[.@s+1] != 0)?":":"");
}
set .@c_m$,.@c_m$ + ":- Cancel";
set .@c,select(.@c_m$);
if(.@c >= getarraysize(.enchant_slot)) close;
set .@part,.enchant_slot[.@c-1];
next;
mes .n$;
if(getequipid(.@part) == -1) {
mes "It looks like you don't have any costume equipped on there.";
close;
}
set .@hg,getequipid(.@part); // Saving Item ID
set .@ref,getequiprefinerycnt(.@part); // Saving Refine Level, if there is one
set .@card1,getequipcardid(.@part,0); // Save Item ID of Card Slot 1
mes "Selected Costume: "+getitemname(getequipid(.@part));
if(getequipcardid(.@part,3) != 0) {
mes "But it looks like you already have an enchantment in this costume.";
close;
}
mes "Now please select the Enchantment:";
next;
for ( set .@e,0; .@e < getarraysize(.enchant_id); set .@e,.@e + 1)
set .@e_m$,.@e_m$ + "> "+getitemname(.enchant_id[.@e])+ ( (.enchant_id[.@e+1] != 0)?":":"");
set .@rune,select(.@e_m$) - 1;
mes .n$;
mes "Selected Enchantment: "+getitemname(.enchant_id[.@rune]);
if(.enchant_cost[0] > 0 && countitem(.enchant_cost[0]) < .enchant_cost[1]) {
mes "But it looks like you don't have enough "+getitemname(.enchant_cost[0])+"!";
close;
}
mes "Proceed?";
if(select("- Yes:- No") - 1) close;
next;
if(.enchant_cost[0] > 0)
delitem .enchant_cost[0],.enchant_cost[1];
delequip .@part;
getitem2 .@hg,1,1,.@ref,0,.@card1,0,0,.enchant_id[.@rune];
equip .@hg;
mes .n$;
mes "The enchantment was a success.";
mes "See ya next time.";
enable_items;
break;
case 2:
mes .n$;
mes "Please select the Costume you want me to reset the enchantment!";
for ( set .@s,0; .@s < getarraysize(.enchant_slot); set .@s,.@s + 1) {
switch(.enchant_slot[.@s]) {
case EQI_COSTUME_HEAD_TOP: set .@c_slot$,"Top Headgear"; break;
case EQI_COSTUME_HEAD_MID: set .@c_slot$,"Mid Headgear"; break;
case EQI_COSTUME_HEAD_LOW: set .@c_slot$,"Low Headgear"; break;
case EQI_COSTUME_GARMENT: set .@c_slot$,"Garment"; break;
case EQI_SHADOW_ARMOR: set .@c_slot$,"Armor"; break;
case EQI_SHADOW_WEAPON: set .@c_slot$,"Weapon"; break;
case EQI_SHADOW_SHIELD: set .@c_slot$,"Shield"; break;
case EQI_SHADOW_SHOES: set .@c_slot$,"Shoes"; break;
case EQI_SHADOW_ACC_R: set .@c_slot$,"Accessory Right"; break;
case EQI_SHADOW_ACC_L: set .@c_slot$,"Accessory Left"; break;
}
set .@c_m$,.@c_m$ + ((getequipid(.enchant_slot[.@s]) != -1)?.@c_slot$ + " - "+getitemname(getequipid(.enchant_slot[.@s])):"") + ( (.enchant_slot[.@s+1] != 0)?":":"");
}
set .@c_m$,.@c_m$ + ":- Cancel";
set .@c,select(.@c_m$);
if(.@c >= getarraysize(.enchant_slot)) close;
set .@part,.enchant_slot[.@c-1];
next;
mes .n$;
if(getequipcardid(.@part,3) == 0) {
mes "It looks like you don't have any enchantment in this costume.";
close;
}
set .@hg,getequipid(.@part); // Saving Item ID
set .@ref,getequiprefinerycnt(.@part); // Saving Refine Level, if there is one
set .@card1,getequipcardid(.@part,0); // Save Item ID of Card Slot 1
mes "Selected Costume: "+getitemname(getequipid(.@part));
if(.enchant_reset[0] > 0 && countitem(.enchant_reset[0]) < .enchant_reset[1]) {
mes "But you don't have the required Items to reset the enchantment!";
close;
}
mes "Proceed?";
if(select("- Yes:- No") - 1) close;
next;
if(.enchant_reset[0])
delitem .enchant_reset[0],.enchant_reset[1];
delequip .@part;
getitem2 .@hg,1,1,.@ref,0,.@card1,0,0,0;
equip .@hg;
mes .n$;
mes "The enchantment has been reseted.";
mes "See ya next time.";
break;
case 3: break;
}
end;
OnInit:
set .n$,"[Costume Enchanter]";
// Enter here every Costume Slot, which you want to be enchantable
// Valid Entries:
// - EQI_COSTUME_HEAD_TOP
// - EQI_COSTUME_HEAD_MID
// - EQI_COSTUME_HEAD_LOW
// - EQI_COSTUME_GARMENT
// - EQI_SHADOW_ARMOR
// - EQI_SHADOW_WEAPON
// - EQI_SHADOW_SHIELD
// - EQI_SHADOW_SHOES
// - EQI_SHADOW_ACC_R
// - EQI_SHADOW_ACC_L
setarray .enchant_slot[0],EQI_COSTUME_HEAD_TOP,EQI_COSTUME_HEAD_MID,EQI_COSTUME_HEAD_LOW,EQI_COSTUME_GARMENT;
// Enchantment ID's
setarray .enchant_id[0],4720,4721;
// Price for enchanting:
// To disable the price, put 0 as values
setarray .enchant_cost[0],30004,100; // Item ID,Amount
// Price for reseting:
// To disable the price, put 0 as values
setarray .enchant_reset[0],30004,100; // Item ID,Amount
end;
}
Question
ihuskie
Hi All can i seek for your assistance why my enchant NPC will not allow me to proceed after i choose the costume that i want to enchant by the way "30004" is the itemid i set for the transaction.
update : I was able to enchant top mid and low headgear costume but for garment it doesnt work
here's my script
Link to comment
Share on other sites
1 answer to this question
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.