Jump to content
  • 0

RequestSellItem.java


HARDECORE

Question

how do i get a player to sell anything in npc for 1 adena? 

 

7NPq0L3.jpg

 

 

 

Note: There is the option to go item by item and set the price to 1. but that would bring me a lot of work, in the code there is an easier way?

 

 

		
		long totalPrice = 0;
		// Proceed the sell
		for (UniqueItemHolder i : _items)
		{
			L2ItemInstance item = player.checkItemManipulation(i.getObjectId(), i.getCount(), "sell");
			if ((item == null) || (!item.isSellable()))
			{
				continue;
			}
			
			long price = item.getReferencePrice() / 100;
			totalPrice += price * i.getCount();
			if (((MAX_ADENA / i.getCount()) < price) || (totalPrice > MAX_ADENA))
			{
				Util.handleIllegalPlayerAction(player, "Warning!! Character " + player.getName() + " of account " + player.getAccountName() + " tried to purchase over " + MAX_ADENA + " adena worth of goods.", Config.DEFAULT_PUNISH);
				return;
			}
			
			if (Config.ALLOW_REFUND)
			{
				item = player.getInventory().transferItem("Sell", i.getObjectId(), i.getCount(), player.getRefund(), player, merchant);
			}
			else
			{
				item = player.getInventory().destroyItem("Sell", i.getObjectId(), i.getCount(), player, merchant);
			}
		}
		player.addAdena("Sell", totalPrice, merchant, false);
		
		// Update current load as well
		StatusUpdate su = player.makeStatusUpdate(StatusUpdate.CUR_LOAD);
		player.sendPacket(su);
		player.sendPacket(new ExBuySellList(player, taxRate, true));
	}
	

 

Link to comment
Share on other sites

Recommended Posts

  • 0

change this

player.addAdena("Sell", totalPrice, merchant, false);

to

player.addAdena("Sell", 1, merchant, false);

 

the best solution is to write for all items sold that cost is 1 adena in the window so you wont confuze players

Edited by Nightw0lf
Link to comment
Share on other sites

  • 0
5 hours ago, Nightw0lf said:

change this

player.addAdena("Sell", totalPrice, merchant, false);

to

player.addAdena("Sell", 1, merchant, false);

 

the best solution is to write for all items sold that cost is 1 adena in the window so you wont confuze players

 

did not work :(

Link to comment
Share on other sites

  • 0

Nightw0lf's answer is the correct one. You just need to edit the visual sell price too in order to work perfect.

 

SellList.java

-			writeD(item.getItem().getReferencePrice() / 2);
+			writeD(1);



RequestSellItem.java

-		player.addAdena("Sell", totalPrice, merchant, false);
+		player.addAdena("Sell", 1, merchant, false);

 

Link to comment
Share on other sites

  • 0
8 hours ago, Nightw0lf said:

:thinking:

when you change total price to 1, it worse because all item stackable example (11 piece item) is still 1 adena in total, if we want to antisipation adena population we can change price per item to this 

 

totalPrice = SafeMath.addAndCheck(totalPrice, SafeMath.mulAndCheck((item.getReferencePrice() / "your rate setting"), count) / 2); <= this code from my pack so maybe diff from another pack

or item.getReferencePrice(), count)/ "your rate setting"

 

*"your rate setting" = like item drop rate

so all item still have uniqe price not 1 adena,

 

to antisipation player to make trash in every town floor <= still can be anticipation to make all item drop by player destroy by xx sec like drop by monster

 

#Still newbee, correct me if im wrong

Link to comment
Share on other sites

  • 0
15 hours ago, L2 TokTil said:

when you change total price to 1, it worse because all item stackable example (11 piece item) is still 1 adena in total, if we want to antisipation adena population we can change price per item to this 

 

totalPrice = SafeMath.addAndCheck(totalPrice, SafeMath.mulAndCheck((item.getReferencePrice() / "your rate setting"), count) / 2); <= this code from my pack so maybe diff from another pack

or item.getReferencePrice(), count)/ "your rate setting"

 

*"your rate setting" = like item drop rate

so all item still have uniqe price not 1 adena,

 

to antisipation player to make trash in every town floor <= still can be anticipation to make all item drop by player destroy by xx sec like drop by monster

 

#Still newbee, correct me if im wrong

 

On 11/20/2019 at 8:46 AM, Nightw0lf said:

change this

player.addAdena("Sell", totalPrice, merchant, false);

to

player.addAdena("Sell", 1, merchant, false);

 

the best solution is to write for all items sold that cost is 1 adena in the window so you wont confuze players

 

Link to comment
Share on other sites

  • 0
On 11/20/2019 at 1:29 PM, melron said:

Nightw0lf's answer is the correct one. You just need to edit the visual sell price too in order to work perfect.

 


SellList.java

-			writeD(item.getItem().getReferencePrice() / 2);
+			writeD(1);



RequestSellItem.java

-		player.addAdena("Sell", totalPrice, merchant, false);
+		player.addAdena("Sell", 1, merchant, false);

 

 

Hello. first of all thank you so much for helping me. 
In my SellList.java there is no such line that you have replaced. take a look look at the print.

 

x9b3Tvv.png

Link to comment
Share on other sites

  • 0

all right. but can you show for the player that will be sold for 1 adena? why the modification works. but "player" will think it will sell for the price that is shown and is not.

 

see the video:

 

https://www.youtube.com/watch?v=kqQXrmU82ao

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.
Note: Your post will require moderator approval before it will be visible.

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