OnInit:
/**
* General Configuration
*/
/* 강화 실패 확률 (0 - 99 in percent) */
.chance_of_failure = 0;
/* 실패 시 아이템 삭제여부 (true/false) */
.delete_on_failure = false;
/* 강화 필요 제니 */
.zeny_requirement = 100000;
/* Minimum amount of the bonus value.
* For negative effects or certain bonuses that require negative values
* Maximum possible value is -INT16_MAX)
*/
.minimum_bonus_amount = -100; // usually used with delay bonus options, although not provided in the script.
/* Maximum amount of the bonus value.
* Maximum possible value is INT16_MAX */
.maximum_bonus_amount = 10;
/* Disable selection of bonus value (true/false) */
.enable_random_bonus = true;
StartTalking:
.@name$ = _("[ ^990099잠재력 개방^000000 ]");
disable_items();
mes(.@name$);
mesf("안녕하세요 %s", strcharinfo(PC_NAME));
mes("착용하고 계신 무기에 잠재력을 개방시킬 수 있어요.");
mes("잠재력을 개방시키면 새로운 추가옵션을 얻을 수 있습니다.");
next();
mes(.@name$);
mes("무기 잠재력 개방을 하시겠습니까?");
next();
if (select("할게요!", "아뇨 다음에요..") == 2) {
mes(.@name$);
mes("그래요 다음에 뵈요.");
close();
}
// Build the Menu.
setarray(.@position$[1], "상단", "갑옷", "왼손", "오른손", "걸칠것", "신발");
.@menu$ = "";
for (.@i = 1; .@i <= 6; ++.@i)
.@menu$ += ((getequipisequiped(.@i)) ? getequipname(.@i) : .@position$[.@i] + "-[착용하지 않음]") + ":";
// Select the part.
.@equip_index = select(.@menu$);
// Present a list of currently infused options.
do {
.@menu$ = "";
.@used = false;
// Build the menu of current options.
for (.@i = 1; .@i <= MAX_ITEM_OPTIONS; ++.@i) {
// call getequipoption(<equip_index>, <type>, <slot>);
// if the return is <0, it's a script error.
// if the return is 0, the slot is empty.
// if the return is >0, the slot is unavailable.
.@opt = getequipoption(.@equip_index, .@i, IT_OPT_INDEX);
if (.@opt > 0)
.@menu$ += (.@i) + ") " + .options$[.@opt - 1] + ":";
else
.@menu$ += (.@i) + ") ^999999Empty^000000" + ":";
}
// Option Slot is the actual option slot 0-MAX_ITEM_OPTIONS (@see mmo.h)
.@option_slot = select(.@menu$);
// Check for used slot and request user action if found.
if (getequipoption(.@equip_index, .@option_slot, IT_OPT_INDEX) > 0) {
mes(.@name$);
mes("This slot is already used up!");
if (select("^990000Override the slot.^000000", "Choose again.") == 2)
.@used = true;
next();
}
} while (.@used); // loop if the slot is not to be overridden
// Present a list of available bonuses.
mes(.@name$);
mes("Which of the following item bonuses would you like to add to this item?");
next();
// Build the Options!
.@menu$ = "";
for (.@i = 0; .@i < getarraysize(.options$); ++.@i)
.@menu$ += (.@i + 1) + ") " + .options$[.@i] + ":";
do {
// Select the options!
.@option_variable = select(.@menu$);
next();
mes(.@name$);
mesf("You chose ^009900%s^000000!", .options$[.@option_variable - 1]);
mes("Are you sure?");
next();
} while (select("Fo Shizzle.", "I'ma re-evaluate, brah.") == 2);
// Select a bonus or randomise.
if (.enable_random_bonus) {
.@value = rand(.maximum_bonus_amount);
} else {
do {
mes(.@name$);
mesf("Please input the bonus amount of ^009900%s^000000 you want to add!", .options$[.@option_variable - 1]);
mesf("(Min: %d, Max: %d)", .minimum_bonus_amount, .maximum_bonus_amount);
.@ok = input(.@value, .minimum_bonus_amount, .maximum_bonus_amount);
next();
} while (.@ok);
}
// If there's a chance of failure, inform the user.
if (.chance_of_failure) {
mes(.@name$);
mes("Alright so,");
mes("I'll have you know...");
mesf("There's a ^990000%d%% chance of failure^000000.", .chance_of_failure);
mes("Because, well... I didn't go to school.");
next();
mes(.@name$);
if (.delete_on_failure) {
mes("If I fail, your item will break and it ^990000will be destroyed^000000!");
}
mes("Are you still ready to go forward with this?");
next();
if (select("Fo shizzle.", "Hells naw, go back to school.") == 2) {
mes(.@name$);
mes("Geez, you don't have to be so harsh about it.");
close();
}
next();
}
// If there's a Zeny Requirement, perform the usual.
if (.zeny_requirement > 0) {
mes(.@name$);
mesf("You also have to pay %dZ.", .zeny_requirement);
next();
if (select("Of course!", "No way!") == 2) {
mes(.@name$);
mes("Well, see you around then...");
close();
}
if (Zeny < .zeny_requirement) {
mes(.@name$);
mes("You don't have enough Zeny!");
close();
}
Zeny -= .zeny_requirement;
}
// Check if there's a chance of failure, set and roll the dice.
if (.chance_of_failure && rand(100) <= .chance_of_failure) {
mes(.@name$);
mes("^990000I failed!^000000");
mes("Guess I should go back to school.");
// Delete the item if flagged.
if (.delete_on_failure)
failedrefitem(.@equip_index); // Simulate failed refinement of the item and delete.
} else {
// Set the Item Option bonuses in the slot see db/item_options.conf for more info.
setequipoption(.@equip_index, .@option_slot, .option_constants[.@option_variable - 1], .@value);
mes(.@name$);
mes("^009900Praise Jesus^000000");
mes("I have added an option to your item.");
mes("My skills are flawless!");
}
next();
mes(.@name$);
mes("See you around!");
close();
}
hello
I am currently writing this script.
This is a system that allows you to add desired options to 5 slots of all items.
but i have this script I would like to modify it so that only the weapon can be given the desired option with one slot.
Advice from seniors please. thank you
trin_in,30,164,4 script 잠재력 개방 4_DOG01,{
callsub(StartTalking);
end;
OnInit:
/**
* General Configuration
*/
/* 강화 실패 확률 (0 - 99 in percent) */
.chance_of_failure = 0;
/* 실패 시 아이템 삭제여부 (true/false) */
.delete_on_failure = false;
/* 강화 필요 제니 */
.zeny_requirement = 100000;
/* Minimum amount of the bonus value.
* For negative effects or certain bonuses that require negative values
* Maximum possible value is -INT16_MAX)
*/
.minimum_bonus_amount = -100; // usually used with delay bonus options, although not provided in the script.
/* Maximum amount of the bonus value.
* Maximum possible value is INT16_MAX */
.maximum_bonus_amount = 10;
/* Disable selection of bonus value (true/false) */
.enable_random_bonus = true;
/* Item Option Descriptions */
setarray(.options$[0], "공격력", "마법 공격력", "공격속도", "시전속도", "크리티컬 데미지");
/* Item Option Constants */
setarray(.option_constants[0], VAR_ATKPERCENT, VAR_MAGICATKPERCENT, VAR_PLUSASPDPERCENT, DEC_SPELL_CAST_TIME, DAMAGE_CRI_TARGET);
end;
StartTalking:
.@name$ = _("[ ^990099잠재력 개방^000000 ]");
disable_items();
mes(.@name$);
mesf("안녕하세요 %s", strcharinfo(PC_NAME));
mes("착용하고 계신 무기에 잠재력을 개방시킬 수 있어요.");
mes("잠재력을 개방시키면 새로운 추가옵션을 얻을 수 있습니다.");
next();
mes(.@name$);
mes("무기 잠재력 개방을 하시겠습니까?");
next();
if (select("할게요!", "아뇨 다음에요..") == 2) {
mes(.@name$);
mes("그래요 다음에 뵈요.");
close();
}
// Build the Menu.
setarray(.@position$[1], "상단", "갑옷", "왼손", "오른손", "걸칠것", "신발");
.@menu$ = "";
for (.@i = 1; .@i <= 6; ++.@i)
.@menu$ += ((getequipisequiped(.@i)) ? getequipname(.@i) : .@position$[.@i] + "-[착용하지 않음]") + ":";
// Select the part.
.@equip_index = select(.@menu$);
// Present a list of currently infused options.
do {
.@menu$ = "";
.@used = false;
// Build the menu of current options.
for (.@i = 1; .@i <= MAX_ITEM_OPTIONS; ++.@i) {
// call getequipoption(<equip_index>, <type>, <slot>);
// if the return is <0, it's a script error.
// if the return is 0, the slot is empty.
// if the return is >0, the slot is unavailable.
.@opt = getequipoption(.@equip_index, .@i, IT_OPT_INDEX);
if (.@opt > 0)
.@menu$ += (.@i) + ") " + .options$[.@opt - 1] + ":";
else
.@menu$ += (.@i) + ") ^999999Empty^000000" + ":";
}
// Option Slot is the actual option slot 0-MAX_ITEM_OPTIONS (@see mmo.h)
.@option_slot = select(.@menu$);
// Check for used slot and request user action if found.
if (getequipoption(.@equip_index, .@option_slot, IT_OPT_INDEX) > 0) {
mes(.@name$);
mes("This slot is already used up!");
if (select("^990000Override the slot.^000000", "Choose again.") == 2)
.@used = true;
next();
}
} while (.@used); // loop if the slot is not to be overridden
// Present a list of available bonuses.
mes(.@name$);
mes("Which of the following item bonuses would you like to add to this item?");
next();
// Build the Options!
.@menu$ = "";
for (.@i = 0; .@i < getarraysize(.options$); ++.@i)
.@menu$ += (.@i + 1) + ") " + .options$[.@i] + ":";
do {
// Select the options!
.@option_variable = select(.@menu$);
next();
mes(.@name$);
mesf("You chose ^009900%s^000000!", .options$[.@option_variable - 1]);
mes("Are you sure?");
next();
} while (select("Fo Shizzle.", "I'ma re-evaluate, brah.") == 2);
// Select a bonus or randomise.
if (.enable_random_bonus) {
.@value = rand(.maximum_bonus_amount);
} else {
do {
mes(.@name$);
mesf("Please input the bonus amount of ^009900%s^000000 you want to add!", .options$[.@option_variable - 1]);
mesf("(Min: %d, Max: %d)", .minimum_bonus_amount, .maximum_bonus_amount);
.@ok = input(.@value, .minimum_bonus_amount, .maximum_bonus_amount);
next();
} while (.@ok);
}
// If there's a chance of failure, inform the user.
if (.chance_of_failure) {
mes(.@name$);
mes("Alright so,");
mes("I'll have you know...");
mesf("There's a ^990000%d%% chance of failure^000000.", .chance_of_failure);
mes("Because, well... I didn't go to school.");
next();
mes(.@name$);
if (.delete_on_failure) {
mes("If I fail, your item will break and it ^990000will be destroyed^000000!");
}
mes("Are you still ready to go forward with this?");
next();
if (select("Fo shizzle.", "Hells naw, go back to school.") == 2) {
mes(.@name$);
mes("Geez, you don't have to be so harsh about it.");
close();
}
next();
}
// If there's a Zeny Requirement, perform the usual.
if (.zeny_requirement > 0) {
mes(.@name$);
mesf("You also have to pay %dZ.", .zeny_requirement);
next();
if (select("Of course!", "No way!") == 2) {
mes(.@name$);
mes("Well, see you around then...");
close();
}
if (Zeny < .zeny_requirement) {
mes(.@name$);
mes("You don't have enough Zeny!");
close();
}
Zeny -= .zeny_requirement;
}
// Check if there's a chance of failure, set and roll the dice.
if (.chance_of_failure && rand(100) <= .chance_of_failure) {
mes(.@name$);
mes("^990000I failed!^000000");
mes("Guess I should go back to school.");
// Delete the item if flagged.
if (.delete_on_failure)
failedrefitem(.@equip_index); // Simulate failed refinement of the item and delete.
} else {
// Set the Item Option bonuses in the slot see db/item_options.conf for more info.
setequipoption(.@equip_index, .@option_slot, .option_constants[.@option_variable - 1], .@value);
mes(.@name$);
mes("^009900Praise Jesus^000000");
mes("I have added an option to your item.");
mes("My skills are flawless!");
}
next();
mes(.@name$);
mes("See you around!");
close();
}
Share this post
Link to post
Share on other sites