Jump to content

iCORE

Members
  • Content Count

    393
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by iCORE


  1. 	function	script	Option_Acc	{
    	mes "blah";
    //	dispbottom getequipid(EQI_ACC_L) +" "+ getequipid(EQI_ACC_R);
    	next;
    	if ( getequipid(EQI_ACC_L) == -1 && getequipid(EQI_ACC_R) == -1 ) {
    		mes "You don't have Accessory equipped";
    		close;
    	}
    	.@s = select( getequipid(EQI_ACC_L)? getequipname(EQI_ACC_L) : "",  getequipid(EQI_ACC_R)? getequipname(EQI_ACC_R) : "" ) + 6;
    //	dispbottom .@s +"";
    	if ( getequipoption( .@s, 1, IT_OPT_INDEX ) ) {
    		mes "this Accessory has already enchanted with Item Options";
    		close;
    	}
    	mes "do you want to add +STR to this Accessory?";
    	next;
    	if ( select( "Yes", "No" ) == 2 ) close;
    	setequipoption .@s, 1, VAR_STRAMOUNT, 1;
    	close;
    }

    i have this and it only fill Slot 1. 


  2. i would like to request a scroll that gives "Item Option" if use. and a scroll that removes the "Item Option"

    its like flyff Awakening System

    http://flyff-wiki.webzen.com/wiki/Awakening

     

    for more info:

    (1)make a configuration on what equipment to choose.

    (2)Scroll of Awake <--- 100% give fix Item Option Stats to Slot 1 and so on... 

    Slot 1 = STR + 3

    Slot 2 = EMPTY

    Slot 3 = EMPTY

    Slot 4 = EMPTY

    Slot 5 = EMPTY

    (3)then if i use scroll of awake again it will fill up Slot 2 and and so on up to Slot 5 and when all slots are filled, then i can no longer use the scroll.

    Scroll of Revert <--- Choose the specific Item Option Stats that i want to remove.

     

    refrence:

     


  3. On 3/13/2019 at 4:14 AM, AnnieRuru said:

    prontera,153,180,4 script Option Master 4_DOG01,{ mes "blah"; // dispbottom getequipid(EQI_ACC_L) +" "+ getequipid(EQI_ACC_R); next; if ( getequipid(EQI_ACC_L) == -1 && getequipid(EQI_ACC_R) == -1 ) { mes "You don't have Accessory equipped"; close; } .@s = select( getequipid(EQI_ACC_L)? getequipname(EQI_ACC_L) : "", getequipid(EQI_ACC_R)? getequipname(EQI_ACC_R) : "" ) + 6; // dispbottom .@s +""; if ( getequipoption( .@s, 1, IT_OPT_INDEX ) ) { mes "this Accessory has already enchanted with Item Options"; close; } mes "do you want to add +STR to this Accessory?"; next; if ( select( "Yes", "No" ) == 2 ) close; setequipoption .@s, 1, VAR_STRAMOUNT, 1; close; }

    
    prontera,153,180,4	script	Option Master	4_DOG01,{
    	mes "blah";
    //	dispbottom getequipid(EQI_ACC_L) +" "+ getequipid(EQI_ACC_R);
    	next;
    	if ( getequipid(EQI_ACC_L) == -1 && getequipid(EQI_ACC_R) == -1 ) {
    		mes "You don't have Accessory equipped";
    		close;
    	}
    	.@s = select( getequipid(EQI_ACC_L)? getequipname(EQI_ACC_L) : "",  getequipid(EQI_ACC_R)? getequipname(EQI_ACC_R) : "" ) + 6;
    //	dispbottom .@s +"";
    	if ( getequipoption( .@s, 1, IT_OPT_INDEX ) ) {
    		mes "this Accessory has already enchanted with Item Options";
    		close;
    	}
    	mes "do you want to add +STR to this Accessory?";
    	next;
    	if ( select( "Yes", "No" ) == 2 ) close;
    	setequipoption .@s, 1, VAR_STRAMOUNT, 1;
    	close;
    }

     

    @AnnieRurusorry about the last post, this script work perfect and to be more specific.

    i want this script have an option like this

    //--------------------------------------------------------------//
    //other configuration
    //--------------------------------------------------------------//

    setarray OptionList, STR, INT, DEX; //Choose what is only here

    .MaxOption = 5; // here you can make a specific slot number 1 = 1 slot , 2 = 2 slots and so on.....

    .FixOption = 100; // no min or max just fix.....
     


  4. What do i need to change to make it only choose from 3rd slot to 4th slot only

     

    prairie,130,89,4	script	Enchant Expert	4_PORING,{
    	mes .npc$;
    	mes "Hello there!";
    	mes "I can enchant your items,";
    	mes "for a small fee of "+.pric+"z.";
    	emotion e_no1,0; next;
    	if(select("Yes:No")&2) { mes .npc$; mes "Alright, thanks anyways!"; close; }
    	if(Zeny<.pric) { mes .npc$; mes "I'm sorry you don't have enough Zeny, please come back later."; close; }
    	
    	mes .npc$;
    	mes "Which item would you like to enchant?"; next;
    	while(set(.@a,.@a+1)<=.e_len) {
    		if(getequipid(.@a)>-1)
    			set .@menu$, .@menu$+.eqp$[.@a-1]+"- [^0000FF"+getitemname(getequipid(.@a))+"^000000]:";
    		else set .@menu$, .@menu$+"^adb4be"+.eqp$[.@a-1]+"- [Empty]^000000:";
    	}
    		
    	select(.@menu$);
    	set .@eq_loc, @menu;
    	set .@eq_itm, getequipid(.@eq_loc);
    	if(.@eq_itm<0) {
    		mes .npc$;
    		mes "Hmm, I don't think you have anything equipped there.";
    		close;
    	}
    	
    	set .@menu$, "";
    	set .@a, .en_orb[0];
    	while((set(.@a,.@a+1)-1)<=.en_orb[1])
    		if(getiteminfo(.@a-1,2)>-1)
    			if(set(.@c,countitem(.@a-1))) {
    				set .@menu$, .@menu$+getitemname(.@a-1)+" x"+.@c+":";
    				set .@b,.@b+1; set .@item[.@b], .@a-1;
    			}
    			
    	if(.@menu$=="") {
    		mes .npc$;
    		mes "Hmm, you don't seem to have any enchantment orbs.";
    		close;
    	}
    
    	mes .npc$;
    	mes "Please, select an enchantment from the menu."; next;
    	select(.@menu$);
    	set .@itm, .@item[@menu];
    
    	set .@menu$, ""; set .@a, 0;
    	while((set(.@a,.@a+1))<4) {
    		if(getequipcardid(.@eq_loc,.@a))
    			set .@menu$, .@menu$+(.@a+1)+.crd_c$[.@a]+" Slot- [^a92435"+getitemname(getequipcardid(.@eq_loc,.@a))+"^000000]:";
    		else set .@menu$, .@menu$+(.@a+1)+.crd_c$[.@a]+" Slot- [^30ad25Empty^000000]:";
    	}
    	
    	setarray .@card, getequipcardid(.@eq_loc,0), getequipcardid(.@eq_loc,1), getequipcardid(.@eq_loc,2), getequipcardid(.@eq_loc,3);
    	
    	mes .npc$;
    	mes "Select a slot."; next;
    	set .@men, select(.@menu$);
    	set .@eqrf,	getequiprefinerycnt(.@eq_loc);
    	if(getequipcardid(.@eq_loc,@menu)) {
    		mes .npc$;
    		mes "Would you like me to remove this card?"; next;
    		if(select("Yes:No")&2) { mes .npc$; mes "Alright, thanks anyways!"; close; }
    		getitem getequipcardid(.@eq_loc,.@men),1;
    		unequip(.@eq_loc);
    		delitem2 .@eq_itm, 1, 1, .@eqrf, 0, .@card[0], .@card[1], .@card[2], .@card[3];
    		set .@card[.@men], 0;
    		getitem2 .@eq_itm, 1, 1, .@eqrf, 0, .@card[0], .@card[1], .@card[2], .@card[3];
    	}
    
    	if(rand(100)>.perc) {
    		mes .npc$;
    		mes "I'm sorry but I've failed you!";
    		misceffect 155; emotion e_sob,0;
    		set Zeny,Zeny-.pric;
    		close;
    	}
    	
    	set Zeny,Zeny-.pric;
    	delitem .@itm,1;
    	delitem2 .@eq_itm, 1, 1, .@eqrf, 0, .@card[0], .@card[1], .@card[2], .@card[3];
    	set .@card[.@men], .@itm;
    	getitem2 .@eq_itm, 1, 1, .@eqrf, 0, .@card[0], .@card[1], .@card[2], .@card[3];
    	misceffect .efet;
    	emotion e_no1,0;
    	mes .npc$;
    	mes "All done!";
    	equip .@eq_itm;
    	close;
    
    //NPC Constants
    	OnInit:
    		//=-=-=-=-=-=-=Configuration=-=-=-=-=-=-=
    		set      .npc$  ,	"[^0000FFEnchant Expert^000000]"; // NPC Name
    		set      .pric  ,	1000000;                          // Price
    		set      .efet  ,	154;                              // Effect Number
    		set      .perc  ,	rand(100,100);                      // Percent
    		setarray .crd_c$,	"st", "nd", "rd", "th";           // Count
    		setarray .en_orb,	25600, 25629;                       // Range of IDs selected for enchanting.
    		setarray .eqp$  ,	"Upper Headgear", "Armor", "Left Hand", "Right Hand", "Garment",
    		                	"Shoes", "Accessory1", "Accessory2", "Mid Headgear", "Low Headgear";
    		set      .e_len ,	getarraysize(.eqp$);
    		//=-=-=-=-=-=-=-=-Skorm-=-=-=-=-=-=-=-=-=
    }

     


  5. i need help in this effect it does not stack up and im using it as a charm

     

    bonus2 bHPregenRate, (readparam (bMaxHP/100)*5,1000;

     

    it regen 5% of my max hp but when i equip 2 or more same charms the effect does not stack up.

     


  6. absorb_health.c: In function ‘pc_damage_pre’:
    absorb_health.c:66:9: warning: implicit declaration of function ‘rand’ [-Wimplicit-function-declaration]
       if ( (rand() % 1000) < ssd->hp_gain_rate_chance ) {
             ^
    absorb_health.c:66:3: warning: nested extern declaration of ‘rand’ [-Wnested-externs]
       if ( (rand() % 1000) < ssd->hp_gain_rate_chance ) {
       ^
            PLUGIN  absorb_health

    @AnnieRuru


  7. @AnnieRuru sorry for my bad explanation but ill still try to explain it more clearly.

    Example:

    Item Description is "Absord 10% damage and heal as HP".

    Player A deals 100 damage to Player B therefore Player B will heal 10% of the damage as HP. 

    its like bHPDrainRate,'n'; but will trigger when being attacked by someone.

    hope i explain it clearly that its not reduce damage like you are saying.


  8. Hi, how can i make this script work only with accessories and make items as requirements to upgrade

    edit: Also how to remove all the choices and make a fix option.

    Example: npc will only add VAR_STRAMOUNT in accessory

     

     

    //================= 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	Option Master	4_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
    	} else if (!getequipisenableopt(.@equip_index)) {
    		mes(.@name$);
    		mes("Brah, this equip can't have options.");
    		close();
    	// Check if equipment is identified.
    	} else if (!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();
    }

     

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.