Jump to content
  • 0

RequestSellItem.java


Question

Posted

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));
	}
	

 

Recommended Posts

  • 0
Posted (edited)

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
  • 0
Posted
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 :(

  • 0
Posted

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);

 

  • 0
Posted
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

  • 0
Posted
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

 

  • 0
Posted
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

  • 0
Posted

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

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