//===== rAthena Script =======================================
//= Item Bound Script
//===== By: ==================================================
//= Akinari
//===== Compatible With: =====================================
//= Revision 17351+ (rAthena Only)
//===== Description: =========================================
//= Item Bound Script
//= Allows users to pay a price to make an item bound to
//= Account, Character, or Guild
//============================================================
sec_in01,178,179,4 script Bound Items 429,{
mes "I can bind your items to your account, guild, or character"+((.bindprice)?" for a ^0000FF"+.bindprice+"^000000 zeny fee":"")+".";
next;
mes "With this, you can rest assured your items are safe.";
next;
mes "What would you like to do?";
if(select("Bind:Unbind") == 1) {
if(Zeny <= .bindprice) {
mes "You don't have enough zeny to bind an item.";
close;
}
mes "What kind of bind? Don't forget i can unbind only Guild binded items!";
.@boundtype = 1 << (select("Account:Guild:Character")-1);
if(.@boundtype == 2 && (!getcharid(2) || getguildmaster(getcharid(2)) != strcharinfo(0))) {
mes "In order for me to bind an item to a guild you must be the master of one.";
close;
}
getinventorylist();
for(.@i = 0; .@i < @inventorylist_count; .@i++) {
//We only show the items that you allow to be bound
//Allows equipment (default)
if(@inventorylist_bound[.@i])
continue;
if(((.allowbind & 1) && (getiteminfo(@inventorylist_id[.@i],2) == (4|5))) ||
((.allowbind & 2) && (getiteminfo(@inventorylist_id[.@i],2) == (0|2|11|18))) ||
((.allowbind & 4) && (getiteminfo(@inventorylist_id[.@i],2) == (3|6|7|8|10)))
) {
set .@bindlist$, .@bindlist$ + ":" + getitemname(@inventorylist_id[.@i]) + " - " + @inventorylist_id[.@i];
set .@bindlist[.@j],.@i;
.@j++;
}
}
.@item = .@bindlist[select(.@bindlist$)-2];
next;
mes "Before I continue, I want you to know I can't tell the difference between multiple items. If you have a specific item you want bounded, please remove any duplicates from inventory.";
if(select("I understand, continue:Wait a minute") == 2) {
next;
mes "I'll be here when you're ready.";
close;
}
next;
mes "Are you sure you'd like to bind your "+ getitemname(@inventorylist_id[.@item]) +" to your "+.boundtypes$[.@boundtype]+"?";
if(select("Yes:No") == 1) {
zeny -= .bindprice;
delitem2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item];
getitembound2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item],.@boundtype;
mes "All done!";
if(.logbinds)
logmes "Bound "+ @inventorylist_amount[.@item]+" "+@inventorylist_id[.@item]+" as "+.boundtypes$[.@boundtype]+" type.";
}
} else {
if(!countbound()) {
mes "You don't have any bound items in your inventory. Not much I can do here.";
close;
}
countbound(2);
if(.unbindprice) {
mes "Unbinding an item has a fee of ^0000FF"+.unbindprice+"^000000 zeny.";
if(Zeny < .unbindprice) {
mes "You don't have enough to unbind an item.";
close;
}
}
getinventorylist();
for(.@i = 0; .@i < @inventorylist_count; .@i++) {
if(@inventorylist_bound[.@i]) {
set .@bindlist$, .@bindlist$ + ":" + getitemname(@inventorylist_id[.@i]) + " - " + @inventorylist_id[.@i];
set .@bindlist[.@j],.@i;
.@j++;
}
}
.@item = .@bindlist[select(.@bindlist$)-2];
next;
for(.@i = 0; .@i < getarraysize(@bound_items); .@i++) {
if(@inventorylist_id[.@item] == @bound_items[.@i] &&
(!getcharid(2) || getguildmaster(getcharid(2)) != strcharinfo(0))
) {
mes "I will only unbind guild bound items that the guild master requests.";
close;
}
}
mes "Before I continue, I want you to know I can't tell the difference between multiple items. If you have a specific item you want unbounded, please remove any duplicates from inventory.";
if(select("I understand, continue:Wait a minute") == 2) {
next;
mes "I'll be here when you're ready.";
close;
next;
mes "Are you sure you'd like to unbind your "+ getitemname(@inventorylist_id[.@item]) +"?";
if(select("Yes:No") == 1) {
Zeny -= .unbindprice;
delitem2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item];
getitem2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item];
mes "All done!";
if(.logbinds)
logmes "Unbound "+ @inventorylist_amount[.@item]+" "+@inventorylist_id[.@item]+".";
}
}
close;
OnInit:
//* Configuration *\\
//Price
.bindprice = 0;
.unbindprice = 100000;
//What to allow to be bound - Add as necessary
//1 = Equipment - 2 = Consumables - 4 = Etc
.allowbind = 1;
//Log binds via NPC?
.logbinds = 1;
//Other stuff
.boundtypes$[1] = "account";
.boundtypes$[2] = "guild";
.boundtypes$[4] = "character";
end;
Question
skymia
how to make all items bound for this script?
in this script only weapon is allowed to bound
//===== rAthena Script ======================================= //= Item Bound Script //===== By: ================================================== //= Akinari //===== Compatible With: ===================================== //= Revision 17351+ (rAthena Only) //===== Description: ========================================= //= Item Bound Script //= Allows users to pay a price to make an item bound to //= Account, Character, or Guild //============================================================ sec_in01,178,179,4 script Bound Items 429,{ mes "I can bind your items to your account, guild, or character"+((.bindprice)?" for a ^0000FF"+.bindprice+"^000000 zeny fee":"")+"."; next; mes "With this, you can rest assured your items are safe."; next; mes "What would you like to do?"; if(select("Bind:Unbind") == 1) { if(Zeny <= .bindprice) { mes "You don't have enough zeny to bind an item."; close; } mes "What kind of bind? Don't forget i can unbind only Guild binded items!"; .@boundtype = 1 << (select("Account:Guild:Character")-1); if(.@boundtype == 2 && (!getcharid(2) || getguildmaster(getcharid(2)) != strcharinfo(0))) { mes "In order for me to bind an item to a guild you must be the master of one."; close; } getinventorylist(); for(.@i = 0; .@i < @inventorylist_count; .@i++) { //We only show the items that you allow to be bound //Allows equipment (default) if(@inventorylist_bound[.@i]) continue; if(((.allowbind & 1) && (getiteminfo(@inventorylist_id[.@i],2) == (4|5))) || ((.allowbind & 2) && (getiteminfo(@inventorylist_id[.@i],2) == (0|2|11|18))) || ((.allowbind & 4) && (getiteminfo(@inventorylist_id[.@i],2) == (3|6|7|8|10))) ) { set .@bindlist$, .@bindlist$ + ":" + getitemname(@inventorylist_id[.@i]) + " - " + @inventorylist_id[.@i]; set .@bindlist[.@j],.@i; .@j++; } } .@item = .@bindlist[select(.@bindlist$)-2]; next; mes "Before I continue, I want you to know I can't tell the difference between multiple items. If you have a specific item you want bounded, please remove any duplicates from inventory."; if(select("I understand, continue:Wait a minute") == 2) { next; mes "I'll be here when you're ready."; close; } next; mes "Are you sure you'd like to bind your "+ getitemname(@inventorylist_id[.@item]) +" to your "+.boundtypes$[.@boundtype]+"?"; if(select("Yes:No") == 1) { zeny -= .bindprice; delitem2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item]; getitembound2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item],.@boundtype; mes "All done!"; if(.logbinds) logmes "Bound "+ @inventorylist_amount[.@item]+" "+@inventorylist_id[.@item]+" as "+.boundtypes$[.@boundtype]+" type."; } } else { if(!countbound()) { mes "You don't have any bound items in your inventory. Not much I can do here."; close; } countbound(2); if(.unbindprice) { mes "Unbinding an item has a fee of ^0000FF"+.unbindprice+"^000000 zeny."; if(Zeny < .unbindprice) { mes "You don't have enough to unbind an item."; close; } } getinventorylist(); for(.@i = 0; .@i < @inventorylist_count; .@i++) { if(@inventorylist_bound[.@i]) { set .@bindlist$, .@bindlist$ + ":" + getitemname(@inventorylist_id[.@i]) + " - " + @inventorylist_id[.@i]; set .@bindlist[.@j],.@i; .@j++; } } .@item = .@bindlist[select(.@bindlist$)-2]; next; for(.@i = 0; .@i < getarraysize(@bound_items); .@i++) { if(@inventorylist_id[.@item] == @bound_items[.@i] && (!getcharid(2) || getguildmaster(getcharid(2)) != strcharinfo(0)) ) { mes "I will only unbind guild bound items that the guild master requests."; close; } } mes "Before I continue, I want you to know I can't tell the difference between multiple items. If you have a specific item you want unbounded, please remove any duplicates from inventory."; if(select("I understand, continue:Wait a minute") == 2) { next; mes "I'll be here when you're ready."; close; next; mes "Are you sure you'd like to unbind your "+ getitemname(@inventorylist_id[.@item]) +"?"; if(select("Yes:No") == 1) { Zeny -= .unbindprice; delitem2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item]; getitem2 @inventorylist_id[.@item],@inventorylist_amount[.@item],@inventorylist_identify[.@item],@inventorylist_refine[.@item],@inventorylist_attribute[.@item],@inventorylist_card1[.@item],@inventorylist_card2[.@item],@inventorylist_card3[.@item],@inventorylist_card4[.@item]; mes "All done!"; if(.logbinds) logmes "Unbound "+ @inventorylist_amount[.@item]+" "+@inventorylist_id[.@item]+"."; } } close; OnInit: //* Configuration *\\ //Price .bindprice = 0; .unbindprice = 100000; //What to allow to be bound - Add as necessary //1 = Equipment - 2 = Consumables - 4 = Etc .allowbind = 1; //Log binds via NPC? .logbinds = 1; //Other stuff .boundtypes$[1] = "account"; .boundtypes$[2] = "guild"; .boundtypes$[4] = "character"; end;
Link to comment
Share on other sites
4 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.