Jump to content

ihuskie

Members
  • Posts

    12
  • Joined

  • Last visited

Posts posted by ihuskie

  1. 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;
    }

     

  2. Hi All,

     Can i ask a question regarding koe how to make the end time random. Between 45mins to 60 mins.

     

     

    here's our current script for koe

    //===== Hercules Script ===========================================
    //= King of Emperium Hill
    //===== By: =======================================================
    //= AnnieRuru
    //===== Current Version: ==========================================
    //= 1.2
    //===== Compatible With: ==========================================
    //= hercules & rathena 2018-04-08
    //===== Description: ==============================================
    //= defends the emperium in the middle of the map until times up
    //===== Topic =====================================================
    //= http://hercules.ws/board/topic/4495-gvg-king-of-emperium-hill/
    //===== Additional Comments: ======================================
    //= Finally there is a topic for this !
    //=================================================================
    
    -	script	KoE	FAKE_NPC,{
    OnInit:
    	disablenpc "The King#KoE";
    	disablenpc "Exit#KoE";
    	bindatcmd "koe", strnpcinfo(0)+"::OnCommand", 99,100;
    	end;
    OnCommand:
    	if ( compare( .@atcmd_parameters$, "on" ) ) goto L_start;
    	else if ( compare( .@atcmd_parameters$, "off" ) ) goto L_end;
    	else {
    		dispbottom "type - '@koe on' to start the event";
    		dispbottom "type - '@koe off' to end the event";
    	}
    	end;
    L_start:
    OnClock2000: // everyday 8pm starts
    	if ( .start ) end;
    	gvgon "guild_vs1";
    	announce "The King of Emperium Hill has begun!", bc_all;
    	.start = true;
    	enablenpc "The King#KoE";
    	disablenpc "Exit#KoE";
    	$koegid = 0;
    	donpcevent "::OnRevKoE";
    	maprespawnguildid "guild_vs1", $koegid, 3;
    	killmonster "guild_vs1", "KoE::OnEmpDead";
    	monster "guild_vs1",49,49, "EMPERIUM", 1288, 1, "KoE::OnEmpDead";
    	end;
    L_end:
    OnClock2030: // everyday 8:30pm ends
    	gvgoff "guild_vs1";
    	announce "The King of Emperium Hill is over!", bc_all;
    	.start = 0;
    	enablenpc "Exit#KoE";
    	disablenpc "The King#KoE";
    	killmonster "guild_vs1", "KoE::OnEmpDead";
    //	maprespawnguildid "guild_vs1", $koegid, 2; // uncomment this line to kick non-owner off the map when event ends
    
    	//Auto Reward to Master Guild - Coded by Krieg
    	if ($koegid) {
    		.@aid = getguildmasterid($koegid);
    		if (.@aid && isloggedin(.@aid)) {
    			getitem 30004, 150, .@aid;
    		}
    	}
    	end;
    OnEmpDead:
    	$koegid = getcharid(2);
    	announce "The current King of Emperium Hill is the ["+ strcharinfo(2) +"] guild.", bc_all;
    	donpcevent "::OnRevKoE";
    	maprespawnguildid "guild_vs1", $koegid, 2;
    	killmonster "guild_vs1", "KoE::OnEmpDead";
    	sleep 500;
    	if ( .start )
    		monster "guild_vs1",49,49, "EMPERIUM", 1288, 1, "KoE::OnEmpDead";
    	end;
    }
    
    // KoE Entrance
    prontera,155,172,4	script	The King#KoE	1_M_MERCHANT,{
    	mes "[The King]";
    	if ( !getcharid(2) ) {
    		mes "You must have a guild to participate in the ^FF0000King of Emperium Hill Tournament^000000.";
    		close;
    	}
    	mes "Hello.";
    	mes "Would you like to participate in the ^FF0000King of Emperium Hill Tournament^000000?";
    	if ( select ( "Yes", "No" ) == 2 ) close;
    	if ( !getvariableofnpc( .start, "KoE" ) ) close;
    	switch( rand(1,4) ){
    	case 1:	warp "guild_vs1", 50, 88; end;
    	case 2:	warp "guild_vs1", 88, 50; end;
    	case 3:	warp "guild_vs1", 50, 11; end;
    	case 4:	warp "guild_vs1", 11, 50; end;
    	}
    }
    
    // KoE Exit
    guild_vs1,49,56,5	script	Exit#KoE	1_M_BARD,{
    	mes "[Exit]";
    	mes "See ya.";
    	close2;
    	warp "Save",0,0;
    	//if ( getcharid(2) == $koegid )
    		//getitem 30004, 150; // configure prize here - Poring Coin
    	end;
    }
    
    // Flags
    guild_vs1,49,38,4	script	King of Emperium Hill#1::koe_flag	GUILD_FLAG,{
    	if ( !$koegid ) end;
    	mes "[King of Emperium Hill]";
    	mes "The Current King of Emperium Hill is the ["+ getguildname($koegid) +"] guild.";
    	close;
    //OnInit: // Uncomment this line to make the emblem stay after @reloadscript
    OnRevKoE:
    	flagemblem $koegid;
    	end;
    }
    guild_vs1,61,49,6	duplicate(koe_flag)	King of Emperium Hill#2	GUILD_FLAG
    guild_vs1,38,49,2	duplicate(koe_flag)	King of Emperium Hill#3	GUILD_FLAG
    guild_vs1,49,61,0	duplicate(koe_flag)	King of Emperium Hill#4	GUILD_FLAG
    
    guild_vs1	mapflag	nobranch
    guild_vs1	mapflag	nomemo
    guild_vs1	mapflag	nopenalty
    guild_vs1	mapflag	noreturn
    guild_vs1	mapflag	nosave	SavePoint
    guild_vs1	mapflag	noteleport
    guild_vs1	mapflag	gvg_noparty
    guild_vs1	mapflag	nowarp
    guild_vs1	mapflag	nowarpto
    guild_vs1	mapflag	guildlock
    guild_vs1	mapflag	noicewall

     

×
×
  • Create New...