HARDECORE Posted November 19, 2019 Posted November 19, 2019 how do i get a player to sell anything in npc for 1 adena? 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)); }
0 Nightw0lf Posted November 20, 2019 Posted November 20, 2019 (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 November 20, 2019 by Nightw0lf
0 HARDECORE Posted November 20, 2019 Author Posted November 20, 2019 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 HARDECORE Posted November 20, 2019 Author Posted November 20, 2019 6 hours ago, cyta5 said: i think you can change it from database... All my items are in XML.
0 L2 TokTil Posted November 20, 2019 Posted November 20, 2019 13 hours ago, HARDECORE said: long price = item.getReferencePrice() / 100; change that to long price = 1;
0 Nightw0lf Posted November 20, 2019 Posted November 20, 2019 29 minutes ago, L2 TokTil said: change that to long price = 1;
0 melron Posted November 20, 2019 Posted November 20, 2019 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 L2 TokTil Posted November 20, 2019 Posted November 20, 2019 8 hours ago, Nightw0lf 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
0 Nightw0lf Posted November 21, 2019 Posted November 21, 2019 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 HARDECORE Posted November 21, 2019 Author Posted November 21, 2019 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.
0 tazerman2 Posted November 22, 2019 Posted November 22, 2019 (edited) have this in SellList.java writeQ(item.getItem().getReferencePrice() / 2); change it writeQ(1); Edited November 22, 2019 by tazerman2
0 HARDECORE Posted November 22, 2019 Author Posted November 22, 2019 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
0 tazerman2 Posted November 22, 2019 Posted November 22, 2019 make post in pastebin selllist.java and requestsellitem.java for fix that you need
0 HARDECORE Posted November 22, 2019 Author Posted November 22, 2019 2 hours ago, tazerman2 said: make post in pastebin selllist.java and requestsellitem.java for fix that you need ok Here it is: https://pastebin.com/3RKSvWca
0 filimon Posted November 22, 2019 Posted November 22, 2019 long price = item.getReferencePrice() / 1;
Question
HARDECORE
how do i get a player to sell anything in npc for 1 adena?
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)); }20 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now