Jump to content
  • 0

Multisell Bug


Antartico™

Question

If you buy any item in any multisell shop, and the amount of required adena is higher than the adena limit of interlude, you get the items, and it cost you... not 0 adena, but -1444684684 adena, you get the items, and you gain adena.

 

Example:

 

You sell 1 potion for 500kk adena, and you have 1 adena in your inventory.

Try buy 1 or 2 or 3 or 4 potions, and you get the message "you don't have enough adena".

Now try buy 5...

You get 5 potions, and maybe 2kkk adena (from 1 adena).

 

There is any chance of support from someone to fix this?

 

PD: Tested and work on aCis 360

Link to comment
Share on other sites

Recommended Posts

  • 0

Da fak. How it come that you create English topic in GR section? Ffs.

 

Imma tell you one thing, it's current on all l2j packs. Also, gz for the topic. Now everyone will know about that issue, but from another side, shitty servers will go down :D

 

I posted it here because i sent a PM to Tryskell two weeks ago and he never answer me, then i sent you another PM and you just told me "a very nasty bug", but as you enjoy trolling noobs like me, i don't know if you was saying it seriously or just kidding.

Link to comment
Share on other sites

  • 0

I posted it here because i sent a PM to Tryskell two weeks ago and he never answer me, then i sent you another PM and you just told me "a very nasty bug", but as you enjoy trolling noobs like me, i don't know if you was saying it seriously or just kidding.

He is just kidding always

Link to comment
Share on other sites

  • 0

Meeee, nooo wai. I'm always serious  :you serious?:

 

 

:happyforever:  :you serious?:  :happyforever:  :you serious?:  :dat:  :happyforever:

Link to comment
Share on other sites

  • 0

 

If you buy any item in any multisell shop, and the amount of required adena is higher than the adena limit of interlude, you get the items, and it cost you... not 0 adena, but -1444684684 adena, you get the items, and you gain adena.
 
Example:
 
You sell 1 potion for 500kk adena, and you have 1 adena in your inventory.
Try buy 1 or 2 or 3 or 4 potions, and you get the message "you don't have enough adena".
Now try buy 5...
You get 5 potions, and maybe 2kkk adena (from 1 adena).
 
There is any chance of support from someone to fix this?
 
PD: Tested and work on aCis 360

 

 

The fix is straight forward, cast the multiplication of count and price into an long and compare it with Integer.MAX_VALUE, I personally prefer masking it with 0xFF

Link to comment
Share on other sites

  • 0

this one is even better

It's exactly what you suggest

/**
 * Returns the product of the arguments,
 * throwing an exception if the result overflows an {@code int}.
 *
 * @param x the first value
 * @param y the second value
 * @return the result
 * @throws ArithmeticException if the result overflows an int
 * @since 1.8
 */
public static int multiplyExact(int x, int y) {
    long r = (long)x * (long)y;
    if ((int)r != r) {
        throw new ArithmeticException("integer overflow");
    }
    return (int)r;
}
Link to comment
Share on other sites

  • 0

 

It's exactly what you suggest

/**
 * Returns the product of the arguments,
 * throwing an exception if the result overflows an {@code int}.
 *
 * @param x the first value
 * @param y the second value
 * @return the result
 * @throws ArithmeticException if the result overflows an int
 * @since 1.8
 */
public static int multiplyExact(int x, int y) {
    long r = (long)x * (long)y;
    if ((int)r != r) {
        throw new ArithmeticException("integer overflow");
    }
    return (int)r;
}

 

ofc it is, I am veteran in OOP 

Link to comment
Share on other sites

  • 0

Fix is simple... just throw InvalidArgumentException when reducing inventory item with negative count, after that just look from where all the errors come xD Problem isnt only multisell, also bug works everywhere, except russian packs, they have this

private static long mulAndCheck(long a, long b, String msg, boolean limit) {
		long ret;
		if (a > b)
			// use symmetry to reduce boundary cases
			ret = mulAndCheck(b, a, msg, limit);
		else if (a < 0) {
			if (b < 0) {
				// check for positive overflow with negative a, negative b
				if (a >= Long.MAX_VALUE / b)
					ret = a * b;
				else if(limit)
					ret = Long.MAX_VALUE;
				else
					throw new ArithmeticException(msg);
			} else if (b > 0) {
				// check for negative overflow with negative a, positive b
				if (Long.MIN_VALUE / b <= a)
					ret = a * b;
				else if(limit)
					ret = Long.MIN_VALUE;
				else
					throw new ArithmeticException(msg);
			}
			else
				ret = 0;
		} else if (a > 0) {
			// check for positive overflow with positive a, positive b
			if (a <= Long.MAX_VALUE / b)
				ret = a * b;
			else if(limit)
				ret = Long.MAX_VALUE;
			else
				throw new ArithmeticException(msg);
		}
		else
			ret = 0;
		return ret;
	}
:D:D:D:D:D:D:D:D

Its pure govnokod though. http://govnokod.ru/java

Edited by Nik
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.



  • Posts

    • the links are offiline, could you reupload them please, if you have other versions of h5 or c6 could you share them too, thanks!
    • Good afternoon everyone, we’ll get a couple of strong players in the CP, more details can be found here https://mw2.community/topic/211276-awr-team/  
    • so i bought this crap of the server few years back and i just found it laying around on my pc and i thought i should share it, if i remember correctly this crap has a lot of bugs that people abuse 🙂   https://drive.google.com/file/d/13QWg8pi4BPbGbTmlygZ078LjL6Fb0J2a/view?usp=sharing source   https://drive.google.com/file/d/13QWg8pi4BPbGbTmlygZ078LjL6Fb0J2a/view?usp=sharing system    
    • Error: Unable to access jarfile libs\Geodata_Converter_v01.jar
    • Since last massive leak as explained as 07/09 (notably all development branches), I don't accept anymore financial newcomers that easily. People will have to contribute 100 cookies worth of contributions (bug reports/fixes) as a first step to be accepted as Donator. Free user can join after sharing over 200 cookies out of contributions, compared to 100 cookies before. You can say thanks to RusAcis, and notably his worthless leader, UnleashedForce. The size of users will continue to shrink if more leaks occur, until true helpers only will be left. New prices are as following : Joining price: 200€ + 100 cookies, or 200 cookies This fee has to be paid if you are joining aCis project. Next month, and all other months, you will have to donate only basic monthly donation. Monthly price: 10€ / 10 cookies This fee has to be paid every month. I won't accept any new join fee before the 100 cookies contribution. Your money will be instantly sent back. Also, in the same shape of idea, actual supporters/donators have to be active to stay in sources. It doesn't have to be a particular amount, you just have to share from time to time *anything*. I don't accept anymore silent ppl. Only useful people will be kept.
  • Topics

×
×
  • Create New...