Jump to content

Utility: Customizible Enchant NPC(WIP)


Lil Troll

Recommended Posts


  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.01
  • Content Count:  276
  • Reputation:   24
  • Joined:  07/06/13
  • Last Seen:  

[spoiler=Old topic name = Utility: Simple Enchant Crafting Tool]- script Armor Enchanting Tool -1,{
OnInit:
npctalk "Powerful Enchanting Tool is Opened";
//OnInit: is needed for the script to work!
}
function script EnchMenu {
getitem 17514,1;
switch(select("[Enchant]:[Nothing]")) {
Case 1:
callfunc "ArmorEnchant";
next;
Case 2:
dispbottom "Nothing";
end;
}
}

function script ArmorEnchant {
setarray .@blacklist,2307,2308,2309,2310; // Input items you wanted to ban
setarray .rate, 40,30,20,10; // rate of getting +1 is 40%, +2 is 30%, +3 is 20%, +4 is 10%
.item_id = 7227; // item ID requirement use to enchant
setarray .item_req, 3,5,7; // require 3 items to make 1st enchant, 5 items to make 2nd enchant ...

while ( .rate[.@i] ) {
.totalchance = .totalchance + .rate[.@i];
.@i++;
}

mes "[^0000FFArmor Enchant^000000]";
mes "Do you want to Enchat your ^0000FFArmor^000000?";
next;
if ( select ( "Yes", "No" ) == 2 ) close;
mes "[^0000FFArmor Enchant^000000]";
if ( !getequipisequiped( EQI_ARMOR ) ) {
mes "You dont have any ^0000FFArmor^000000 that is being equipped.";
close;
}
.@id = getequipid( EQI_ARMOR );
.@ref = getequiprefinerycnt( EQI_ARMOR );
.@card1 = getequipcardid( EQI_ARMOR, 0 );
.@card2 = getequipcardid( EQI_ARMOR, 1 );
.@card3 = getequipcardid( EQI_ARMOR, 2 );
.@card4 = getequipcardid( EQI_ARMOR, 3 );
set .@b,getarraysize(.@blacklist);
for ( .@c = 0; .@c < .@b; .@c++ ) {
if (isequipped(.@blacklist[.@c])) {
mes "Its forbidden to enchant "+getitemname(.@blacklist[.@c])+".";
close;
}
}
if ( .@card1 == 255 || .@card1 == 254 ) {
mes "I can't enchant a signed equipment.";
close;
}
if ( !.@card4 )
.@enchant = 0;
else if ( !.@card3 )
.@enchant = 1;
else if ( !.@card2 )
.@enchant = 2;
else {
mes "Sorry, this ^0000FFArmor^000000 has already been enchanted 3 times.";
close;
}
if(countitem(.item_id)< .item_req[.@enchant]) {
mes "Sorry, you need "+ .item_req[ .@enchant ] +" "+ getitemname( .item_id ) +" to enchant this armor.";
close;
}

.@rand = rand(.totalchance);
while ( ( .@rand = .@rand - .rate[.@r] ) >= 0 ) .@r++;
.@o = rand(0,5); // orb of str/int/dex ...
delitem .item_id, .item_req[ .@enchant ];
delitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, .@card3, .@card4;
if ( !.@card4 )
getitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, .@card3, 4700 + .@o * 10 + .@r;
else if ( !.@card3 )
getitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, 4700 + .@o * 10 + .@r, .@card4;
else
getitem2 .@id, 1,1, .@ref, 0, .@card1, 4700 + .@o * 10 + .@r, .@card3, .@card4;
equip .@id;
mes "Armor Enchancement successful !";
close;
return;
}

 

/////////////////////////////////////////////////////////////////////////
//---------------------------------------------------------------------//
//                      COSTUMIZE ME - ENCHANTER                       //
//                     AUTHOR: LIL TROLL//COLDFIRE                     //
//---------------------------------------------------------------------//
//                          RATHENA SCRIPT                             //
//---------------------------------------------------------------------//
//                           Version alpha v.1                         //
//---------------------------------------------------------------------//
//    REFERENCE:             		      			       //
//    http://rathena.org/board/topic/61734-custom-enchantment-system   //
//    Credits to: Kenedos(Copied some Features and Scripts)            //
//    - Karazu for requesting the script.			       //
//	 CORE SCRIPT:                                                  //
//    - Done							       //
//    - MODE:							       //
//      - Normal Mode - Done					       //
//      - VIP - Work in Progress				       //
//      - Special - Work in Progress                                   //
//	 FEATURES:						       //
//    - Can add blacklist of items.	 			       //
//    - Enable/Disable/Change npc zeny cost of enchanting.             //
//    - Pick between 1 or 3 slot of enchanting.                        //
//    - Enable/Disable enchant overiding.                              //
//    - Customizable ItemID/Amount of requirements.                    //
//    - Customizable per slot success rate.                            //
//    - Progressbar(DONE) VS Cutin(WIP) effect when enchanting.        //
//    - Selectable enchanting modes.  				       //
//    - Equipment restriction toggle.				       //
//    - Customizable Stones/Orbs to be inserted in armor.              //
//---------------------------------------------------------------------//
/////////////////////////////////////////////////////////////////////////

[spoiler=To do:]- Adding one orb/stone type per armor enchant toggle. (Prevent imbalance usage of enchant.)
- Adding Special/Donator/Vip Mode
- Adding more stuffs per suggestions, I really would like to make it very customizable. :)

 

Its because it was taking too much time making this script(not yet have enough time to finish the script, lots of work to do and other stuff.) I release alpha version of the script, so at the meantime atleast anyone can help me find error and bugs for faster development while i can only do scripting in little time, or everyone can help me modify and update the script(that would be great!). Please do suggest for room of improvement or new features. Thanks!

 

enchantment.txt

Edited by Lil Troll
  • Upvote 1
Link to comment
Share on other sites

  • 2 weeks later...

  • Group:  Members
  • Topic Count:  43
  • Topics Per Day:  0.01
  • Content Count:  173
  • Reputation:   9
  • Joined:  11/14/12
  • Last Seen:  

Cool script! Altho I have donate armor rentals on my server, which would make them permanent once you use this(am I right?)

 

Can you make another version of this but instead of armor, it will enchant accessories(or headgears maybe?) :D

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  37
  • Topics Per Day:  0.01
  • Content Count:  177
  • Reputation:   9
  • Joined:  06/25/12
  • Last Seen:  

 orochimakoto, I have a modified version wherein you can enchant on any part of the alt q(armor, headgear, access... etc).

Lil Troll: this line

if(countitem(.item_id)<= .item_req[.@enchant]) {

should be

 

if(countitem(.item_id)< .item_req[.@enchant]) {

like this if I'm not mistaken...

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  43
  • Topics Per Day:  0.01
  • Content Count:  173
  • Reputation:   9
  • Joined:  11/14/12
  • Last Seen:  

^Is it possible to enchant accessories only, or headgears and accessories only?

Like I said, this script will make rental armors into permanent ones, which is not good :)

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.01
  • Content Count:  276
  • Reputation:   24
  • Joined:  07/06/13
  • Last Seen:  

For the mean time just add your blacklisted items here.. Including rental items.

 

 setarray .blacklist,2307,2308,2309,2310; // Input items you wanted to ban.

 

-	script	Armor Enchanting Tool	-1,{
OnInit:
    npctalk "Powerful Enchanting Tool is Opened";        
    //OnInit: is needed for the script to work!
}
function	script	EnchMenu	{
    getitem 17514,1;
    switch(select("[Enchant]:[Nothing]")) {
    Case 1:
       callfunc "ArmorEnchant";
       next;
    Case 2:
        dispbottom "Nothing";
           end;
    }
}

function	script	ArmorEnchant	{
    setarray .@blacklist,2307,2308,2309,2310; // Input items you wanted to ban
    setarray .rate, 40,30,20,10; // rate of getting +1 is 40%, +2 is 30%, +3 is 20%, +4 is 10%
    .item_id = 7227; // item ID requirement use to enchant
    setarray .item_req, 3,5,7; // require 3 items to make 1st enchant, 5 items to make 2nd enchant ...

    while ( .rate[.@i] ) {
        .totalchance = .totalchance + .rate[.@i];
        .@i++;
        }
  
    mes "[^0000FFArmor Enchant^000000]";
    mes "Do you want to Enchat your ^0000FFArmor^000000?";
    next;
    if ( select ( "Yes", "No" ) == 2 ) close;
    mes "[^0000FFArmor Enchant^000000]";
    if ( !getequipisequiped( EQI_ARMOR ) ) {
        mes "You dont have any ^0000FFArmor^000000 that is being equipped.";
        close;
    }
    .@id = getequipid( EQI_ARMOR );
    .@ref = getequiprefinerycnt( EQI_ARMOR );
    .@card1 = getequipcardid( EQI_ARMOR, 0 );
    .@card2 = getequipcardid( EQI_ARMOR, 1 );
    .@card3 = getequipcardid( EQI_ARMOR, 2 );
    .@card4 = getequipcardid( EQI_ARMOR, 3 );
	set .@b,getarraysize(.@blacklist);
	for ( .@c = 0; .@c < .@b; .@c++ ) {
	//set .@e,.@blacklist[.@c];
    if (isequipped(.@blacklist[.@c])) {
        mes "Its forbidden to enchant "+getitemname(.@blacklist[.@c])+".";
        close;
        }
    }
    if ( .@card1 == 255 || .@card1 == 254 ) {
        mes "I can't enchant a signed equipment.";
        close;
        }
    if ( !.@card4 )
        .@enchant = 0;
    else if ( !.@card3 )
        .@enchant = 1;
    else if ( !.@card2 )
        .@enchant = 2;
    else {
        mes "Sorry, this ^0000FFArmor^000000 has already been enchanted 3 times.";
        close;
        }
    if(countitem(.item_id)< .item_req[.@enchant]) {
        mes "Sorry, you need "+ .item_req[ .@enchant ] +" "+ getitemname( .item_id ) +" to enchant this armor.";
        close;
        }

    .@rand = rand(.totalchance);
    while ( ( .@rand = .@rand - .rate[.@r] ) >= 0 ) .@r++;
    .@o = rand(0,5); // orb of str/int/dex ...
    delitem .item_id, .item_req[ .@enchant ];
    delitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, .@card3, .@card4;
    if ( !.@card4 )
        getitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, .@card3, 4700 + .@o * 10 + .@r;
    else if ( !.@card3 )
        getitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, 4700 + .@o * 10 + .@r, .@card4;
    else
        getitem2 .@id, 1,1, .@ref, 0, .@card1, 4700 + .@o * 10 + .@r, .@card3, .@card4;
    equip .@id;
    mes "Armor Enchancement successful !";
    close;
    return;
}

 

If you wanted to modify it and get the expiretick of the rental item, you can modify your src click this link.

If you wanted to modify this and change them to what ever placement you would like just modify this part.

EQI_ARMOR :

EQI_HEAD_TOP	1
EQI_ARMOR	2
EQI_HAND_L	3
EQI_HAND_R	4
EQI_GARMENT	5
EQI_SHOES	6
EQI_ACC_L	7
EQI_ACC_R	8
EQI_HEAD_MID	9
EQI_HEAD_LOW	10
EQI_COSTUME_HEAD_LOW	11
EQI_COSTUME_HEAD_MID	12
EQI_COSTUME_HEAD_TOP	13
EQI_COSTUME_GARMENT	14
Edited by Lil Troll
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  37
  • Topics Per Day:  0.01
  • Content Count:  177
  • Reputation:   9
  • Joined:  06/25/12
  • Last Seen:  


setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2";

set .@menu$,"";

for(set .@i,1; .@i<=10; set .@i,.@i+1) {

if(getequipisequiped(.@i))

set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]";

set .@menu$, .@menu$ + ":";

}

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.01
  • Content Count:  276
  • Reputation:   24
  • Joined:  07/06/13
  • Last Seen:  

Thanks for correcting me @Mad Walker. I edited the top post script already.

@orochi just follow @Mad walker, guide. :)

Link to comment
Share on other sites

  • 4 weeks later...

  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.01
  • Content Count:  276
  • Reputation:   24
  • Joined:  07/06/13
  • Last Seen:  

Bump, updated the topic, anyone can suggest, feel free to drop replies or anything.  /ok 

Link to comment
Share on other sites

  • 2 weeks later...

  • Group:  Members
  • Topic Count:  5
  • Topics Per Day:  0.00
  • Content Count:  77
  • Reputation:   3
  • Joined:  06/06/13
  • Last Seen:  

Thanks for the script... +1 Sorry I dont give some inputs for you  :P

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.01
  • Content Count:  276
  • Reputation:   24
  • Joined:  07/06/13
  • Last Seen:  

Thanks for the script... +1 Sorry I dont give some inputs for you  :P

Thanks probably this weekend ima try finish the script got a bomb of free time then. Feel free to suggest. :)

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  5
  • Topics Per Day:  0.00
  • Content Count:  77
  • Reputation:   3
  • Joined:  06/06/13
  • Last Seen:  

Thanks for the script... +1 Sorry I dont give some inputs for you  :P

Thanks probably this weekend ima try finish the script got a bomb of free time then. Feel free to suggest. :)

Thanks Lil Trol... I'm waiting for your next release script and hopefully I can give some fresh injection ideas  :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...