Jump to content
  • 0

Binding Items


Xanthin

Question


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  7
  • Reputation:   1
  • Joined:  03/11/12
  • Last Seen:  

Hello to everyone,

 

its possible to add to this NPC a blacklist with itemIDs that can't be bounded? The problem is we have in the iShop rental eq and if user use the bound NPC the items don't dissappear after the time.

//===== 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
//============================================================

viplounge,30,252,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;
}

Thanks and sry for my english :D

Link to comment
Share on other sites

6 answers to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  7
  • Topics Per Day:  0.00
  • Content Count:  135
  • Reputation:   41
  • Joined:  02/05/14
  • Last Seen:  

Punch this code in after retrieving the desired item ID to be bound:

// Item IDs that cannot be bound
setarray .@blacklist[0], 1201, 1207, 2301;

// Check blacklist
for (.@i = 0; .@i < getarraysize(.@blacklist); .@i++) {
	if (@inventorylist_id[.@item] == .@blacklist[.@i]) {
		mes "Sorry, but "+ getitemname(@inventorylist_id[.@item]) +" is blacklisted from being bound.";
		close;
	}
}
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  7
  • Reputation:   1
  • Joined:  03/11/12
  • Last Seen:  

Works perfectly, thank you :)

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  13
  • Topics Per Day:  0.00
  • Content Count:  68
  • Reputation:   1
  • Joined:  06/21/14
  • Last Seen:  

			//account bound items
			.@boundtype = 1;
			getinventorylist();
			for(.@i = 0; .@i < @inventorylist_count; .@i++) {
			   delitem2 @inventorylist_id[.@j],@inventorylist_amount[.@j],@inventorylist_identify[.@j],@inventorylist_refine[.@j],@inventorylist_attribute[.@j],@inventorylist_card1[.@j],@inventorylist_card2[.@j],@inventorylist_card3[.@j],@inventorylist_card4[.@j];
			   getitembound2 @inventorylist_id[.@j],@inventorylist_amount[.@j],@inventorylist_identify[.@j],@inventorylist_refine[.@j],@inventorylist_attribute[.@j],@inventorylist_card1[.@j],@inventorylist_card2[.@j],@inventorylist_card3[.@j],@inventorylist_card4[.@j],.@boundtype;
			   .@j++;
			}

i plan to make all items in inventory account bound with this code, my problem now is that, IF 2 same items found (example: 2 gloves_) only 1 gloves_ is bounded, the other is not.  Can somebody help me with this routine?  Thanks

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  39
  • Topics Per Day:  0.01
  • Content Count:  386
  • Reputation:   15
  • Joined:  11/17/11
  • Last Seen:  

 

Punch this code in after retrieving the desired item ID to be bound:

// Item IDs that cannot be bound
setarray .@blacklist[0], 1201, 1207, 2301;

// Check blacklist
for (.@i = 0; .@i < getarraysize(.@blacklist); .@i++) {
	if (@inventorylist_id[.@item] == .@blacklist[.@i]) {
		mes "Sorry, but "+ getitemname(@inventorylist_id[.@item]) +" is blacklisted from being bound.";
		close;
	}
}

Where can i put this code? after OnInit:?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  7
  • Topics Per Day:  0.00
  • Content Count:  135
  • Reputation:   41
  • Joined:  02/05/14
  • Last Seen:  

 

 

Punch this code in after retrieving the desired item ID to be bound:

// Item IDs that cannot be bound
setarray .@blacklist[0], 1201, 1207, 2301;

// Check blacklist
for (.@i = 0; .@i < getarraysize(.@blacklist); .@i++) {
	if (@inventorylist_id[.@item] == .@blacklist[.@i]) {
		mes "Sorry, but "+ getitemname(@inventorylist_id[.@item]) +" is blacklisted from being bound.";
		close;
	}
}

Where can i put this code? after OnInit:?

 

 

Read the red text (above).

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
Answer this question...

×   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...