Jump to content
  • 0
Zarbony

Pow to operator?

Question

Hey there, i use the Shop System whish i found here in herc.

If i Use this System, the server says that "pow" will be removed in future und is deprecated.

How i can fix it without getting issues in NPC Text and Function?

function	ValueConvert	{
	set .@num, atoi(""+getarg(0));
	if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0);
	set .@l, getstrlen(""+.@num);
	for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 ) {
		set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;
			if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$;
	}
	return .@num$;
}

I changed the pow(10,.@i+1) to (10 ** .@i+1) but this got me some issues when i buy some Items from the NPC and the Item Count in text is wrong.

If i use the Pow(10,.@i+1) then it works but the console says deprecated.

How i can fix this?

 

 

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

You should link where you got the script from.

Anyway, your issue is basic maths...order of exponents. Use your parentheses correctly.

pow(10,.@i+1) is the same as 10 ^ (.@i+1)
When you change it to 10 ** .@i+1 it is being read as (10 ^ .@i) + 1

Share this post


Link to post
Share on other sites
  • 0

Hey, it is this Script:

Spoiler



-	shop	F_EMISTRY	-1,512:100
// pvpwait,72,87,5	script	Badge Exchanger#12	757,{

prontera,155,171,5	script	asmplwrwojirdh	4_F_KAFRA9,{
function ShopSettings;
function ValidateCost;
function CurrencyInfo;
function ClearData;
function ValueConvert;
function ErrorNotice;

mes "Hi";
next;
set @menu,select( "Open Shop" );

ClearData();
ShopSettings( @menu );
npcshopitem "F_EMISTRY",512,100;
npcshopdelitem "F_EMISTRY",512;
for(set .@i,0; .@i < getarraysize( @ItemLists ); set .@i,.@i+1)
	npcshopadditem "F_EMISTRY",@ItemLists[.@i],@ItemCost[.@i];
	mes "^FF0000Information:^000000";
	mes "----------------------------";
	CurrencyInfo( @Currency$ );
	mes "----------------------------";
	callshop "F_EMISTRY",1;
	npcshopattach "F_EMISTRY";
end;


function	ShopSettings	{
	switch( getarg(0) ){
		case 1:
			// Currency [ Item ID / Variable Name ]
			set @Currency$,"29996";
			// Item ID Lists
			setarray @ItemLists[0],6153,7227;
			// Item Price
			setarray @ItemCost[0],100,1;
			break;
			// case 4,5,6.....etc...
		default:
			ErrorNotice( "Invalid Menu Selection for Menu "+@menu+"." );
			close;
	}
	
	
	if( @Currency$ == "" )
		ErrorNotice( "Invalid Currency Setting in Menu "+@menu+" ." );
	if( getarraysize( @ItemCost ) != getarraysize( @ItemLists ) || getarraysize( @ItemLists ) != getarraysize( @ItemCost ) )
		ErrorNotice( "Missing or Extra Value of Item or Cost Settings in Menu "+@menu+" ." );
		return;
	}

	function	ErrorNotice	{
		mes "^FF0000ERROR^000000 - "+getarg(0);
		mes "----------------------------";
		mes "Inform this Message to ^0000FFGame Staffs^000000 immediately.";
		close;
	}

	function	CurrencyInfo	{
	if( getitemname( atoi( getarg(0) ) ) != "null" )
	{
		mes "Required : ^FF0000"+getitemname( atoi( getarg(0) ) )+"^000000";
		mes "Total : ^0000FF"+ValueConvert( countitem( atoi( getarg(0) ) ) )+"^000000";
	}
	return;
}

	function	ValidateCost	{
	if( getitemname( atoi( getarg(0) ) ) != "null" )
	{
		if( countitem( atoi( getarg(0) ) ) < getarg(1) ) return 1;
		}else{
			if( getd( getarg(0) ) < getarg(1) ) return 1;
		}
	return 0;
}

	function ClearData	{
		set @Currency$,"";
		set @TotalCost,0;
		deletearray @bought_nameid[0],getarraysize( @bought_nameid );
		deletearray @bought_quantity[0],getarraysize( @bought_quantity );
		deletearray @ItemLists[0],getarraysize( @ItemLists );
		deletearray @ItemCost[0],getarraysize( @ItemCost );
		return;
	}

	function	ValueConvert	{
		set .@num, atoi(""+getarg(0));
		if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0);
		set .@l, getstrlen(""+.@num);
		for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 )
		{
			set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;
				if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$;
		}
		return .@num$;
	}

OnBuyItem:
	ShopSettings( @menu );
	for(set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1)
		for(set @j,0; @j < getarraysize( @ItemLists ); set @j,@j+1)
			if( @ItemLists[@j] == @bought_nameid[@i] ) {
			//set @TotalCost,@TotalCost + ( @ItemCost[@j] * @bought_quantity[@i] );

				set @TotalCost,@TotalCost + ( @ItemCost[@j] * @bought_quantity[@i] );
				set .@item_weight,getiteminfo( @bought_nameid[@i],6 );
				set .@total_item_weight,( .@item_weight * @bought_quantity[@i] );
				set .@total_weight,( .@total_weight + .@total_item_weight );
			}
	if( .@total_weight > ( MaxWeight - Weight )) {
		mes "You can take that much.";
		close;
	}

	mes "^FF0000Billing List:^000000";
	mes "----------------------------";
	for( set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1 )
			mes "^FF0000"+@bought_quantity[@i]+" x ^0000FF"+getitemname( @bought_nameid[@i] )+"^000000";
	mes "----------------------------";
	// if (!checkweight2(@bought_nameid,@bought_quantity)) {
		// next;
		// mes "^FF0000You are currently over-weighted.^000000";
		// mes "^FF0000Please store some items before you do purchases.^000000";
		// close;
	// }else{
		// goto L_getpassed;
	// }	
L_getpassed:
	if( getitemname( atoi( @Currency$ ) ) != "null" ) {
		mes "Total : ^0000FF"+ValueConvert( @TotalCost )+" x "+getitemname( atoi( @Currency$ ) )+"^000000";
	}
	next;
	if( ValidateCost( @Currency$,@TotalCost ) ){
		if( getitemname( atoi( @Currency$ ) ) != "null" ) {
			mes "Insufficient ^0000FF"+getitemname( atoi( @Currency$ ) )+"^000000";
		}
	} else {
		if( select( "- ^0000FFPurchase^000000:- Cancel" ) == 1 ) {
			if( getitemname( atoi( @Currency$ ) ) != "null" )
				delitem atoi( @Currency$ ),@TotalCost;
			else {
				set getd( @Currency$ ),getd( @Currency$ ) - @TotalCost;
			}
			for(set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1)
				getitem @bought_nameid[@i],@bought_quantity[@i];
			dispbottom( "[Notice] Purchased "+getarraysize( @bought_nameid )+" Items.", 0xFF6600 );
			//dispbottom( "- "+ @bought_quantity[@i] +" x "+ getitemname( @bought_nameid[@i] ) +"", 0xFF6600 );
			mes "Please come back, if you want to shopping again.";
		}
	}
	ClearData();
	close;
}


 

Ive tested the 10 ^(.@i+1) and the NPC Stuck.

if i use 10 ** .@i+1 it works but the value is wrong, now i know why this happen.

How i can fix this Script so that it will Work?

Thank you

Share this post


Link to post
Share on other sites
  • 0

LMAO! Haven't you ever seen somebody make an actual calculation? '^' is literally the character used on PC calculators. SMH. I was trying to show you what your calculation was doing...

Edited by bWolfie

Share this post


Link to post
Share on other sites
  • 0

Ive seen someone but i used only the basics.

this is the first time i used this operators and calculators.

Thats why i need help.

If i can fix this by myself i dont ask this question...

ErrorPw.PNG.85063cdd166acdcce61aa761c13b1647.PNG

 

Heres my next try but it will show the next error.

I used the function in Deprecated Notice

This one:

# from the Hercules root folder:
find npc db -type f -exec sed -i -r 's/pow\((.+),[ ]*(.+)\)/((\1) ** (\2))/g' {} +

 

 

 

 

Edited by Zarbony

Share this post


Link to post
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.   Restore formatting

  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.

Loading...

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.