Good day guys! Anyone can help me convert this to rathena compatability? Thanks in advance!
//================= Hercules Script =======================================//= _ _ _//= | | | | | |//= | |_| | ___ _ __ ___ _ _| | ___ ___//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|//= | | | | __/ | | (__| |_| | | __/\__ \//= \_| |_/\___|_| \___|\__,_|_|\___||___///================= License ===============================================//= This file is part of Hercules.//= http://herc.ws - http://github.com/HerculesWS/Hercules//=//= Copyright (C) 2017 Hercules Dev Team//= Copyright (C) 2017 Smokexyz//=//= Hercules is free software: you can redistribute it and/or modify//= it under the terms of the GNU General Public License as published by//= the Free Software Foundation, either version 3 of the License, or//= (at your option) any later version.//=//= This program is distributed in the hope that it will be useful,//= but WITHOUT ANY WARRANTY; without even the implied warranty of//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the//= GNU General Public License for more details.//=//= You should have received a copy of the GNU General Public License//= along with this program. If not, see <http://www.gnu.org/licenses/>.//=========================================================================//= Option Master (Item Options NPC @see db/item_options.conf)//================= Description ===========================================//= Select from a list of your equipments, one to enhance with up to 5 options.//= A list of the first 10 options are provided in this npc.//================= Current Version =======================================//= 1.0//=========================================================================
prontera,153,180,4 script OptionMaster4_DOG01,{
callsub(StartTalking);
end;OnInit:/**
* General Configuration
*//* Chance of the enhancement process to fail. (0 - 99 in percent) */.chance_of_failure =10;/* Delete the item on failure? (true/false) */.delete_on_failure =true;/* Required amount of zeny for a try. */.zeny_requirement =100;/* 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 =100;/* Disable selection of bonus value (true/false) */.enable_random_bonus =false;/* Item Option Descriptions */
setarray(.options$[0],"Max HP","Max SP","STR","AGI","VIT","INT","DEX","LUK");/* Item Option Constants */
setarray(.option_constants[0], VAR_MAXHPAMOUNT, VAR_MAXSPAMOUNT, VAR_STRAMOUNT, VAR_AGIAMOUNT, VAR_VITAMOUNT, VAR_INTAMOUNT, VAR_DEXAMOUNT, VAR_LUKAMOUNT);
end;StartTalking:.@name$= _("[ ^990099Option Master^000000 ]");
disable_items();
mes(.@name$);
mesf("Hey there %s", strcharinfo(PC_NAME));
mes("There's a new-found method of adding options to an equipment that I have been working on.");
next();if(.enable_random_bonus){
mes(.@name$);
mes("Equipment bonuses are added randomly per slot!");
mes("So if you wind up with a low amount of bonus, don't hesitate to override the slot.");
next();}
mes(.@name$);
mes("Would you like me to add extra stats to your equipment?");
next();if(select("Of course!","Meh, not right now.")==2){
mes(.@name$);
mes("Alright then, catch you later.");
close();}// Build the Menu.
setarray(.@position$[1],"Head","Body","Left Hand","Right Hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3");.@menu$="";for(.@i=1;.@i<=10;++.@i).@menu$+=((getequipisequiped(.@i))? getequipname(.@i):.@position$[.@i]+"-[Not equipped]")+":";// Select the part..@equip_index= select(.@menu$);// Check if it's worn.if(!getequipisequiped(.@equip_index)){
mes(.@name$);
mes("Brah, your item ain't equipped.");
close();// Check if it allows options}elseif(!getequipisenableopt(.@equip_index)){
mes(.@name$);
mes("Brah, this equip can't have options.");
close();// Check if equipment is identified.}elseif(!getequipisidentify(.@equip_index)){
mes(.@name$);
mes("Brah, this equip ain't identified.");
close();}// 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();}
Question
Louis T Steinhil
Good day guys! Anyone can help me convert this to rathena compatability? Thanks in advance!
Link to comment
Share on other sites
2 answers 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.