Zarbony 1 Posted July 31, 2019 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? Quote Share this post Link to post Share on other sites
0 bWolfie 138 Posted July 31, 2019 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 1 Zarbony reacted to this Quote Share this post Link to post Share on other sites
0 Zarbony 1 Posted August 1, 2019 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 Quote Share this post Link to post Share on other sites
0 bWolfie 138 Posted August 1, 2019 (edited) 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 August 1, 2019 by bWolfie Quote Share this post Link to post Share on other sites
0 Zarbony 1 Posted August 1, 2019 (edited) 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... 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 August 1, 2019 by Zarbony Quote Share this post Link to post Share on other sites
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