try this.
// Credit to emistry Multi-shop
// use @pc for check point
// -------- Dummy data (duplicate as needed) --------
- shop Emistry_Shop -1,512:100
// --------------------------------------------------
prontera,100,100,4 script Redeem Points 852,{
function ShopSettings;
function ValidateCost;
function CurrencyInfo;
function ClearData;
function ValueConvert;
function ErrorNotice;
mes "Each Shop from the Menu may purchase using ^FF0000Different Currency^000000.";
mes "^00FF00____________________________^000000";
mes "So,Which shop you would like to look at it";
next;
// Menu Selection
select("Headgear","Foods","Cossumber");
ClearData();
ShopSettings( @menu );
npcshopitem "Emistry_Shop",512,100;
npcshopdelitem "Emistry_Shop",512;
for(set
[email protected],0;
[email protected] < getarraysize( @ItemLists ); set
[email protected],
[email protected]+1)
npcshopadditem "Emistry_Shop",@ItemLists[
[email protected]],@ItemCost[
[email protected]];
mes "Okay...wait awhile";
mes "^00FF00____________________________^000000";
CurrencyInfo( @Currency$ );
mes "^00FF00____________________________^000000";
callshop "Emistry_Shop",1;
npcshopattach "Emistry_Shop";
end;
function ShopSettings {
switch( getarg(0) ){
Case 1:
// Currency [ Item ID / Variable Name ]
set @Currency$,"pvppoint";
// Item ID Lists
setarray @ItemLists[0],5377,5288,5146,5269,5376,5235,5236,5237,5289,5306,5322,5366; // ITEM ID
// Item Price
setarray @ItemCost[0],200,220,150,400,450,250,250,250,200,250,230,300; // ITEM COST/AMOUNT
break;
Case 2:
// Currency [ Item ID / Variable Name ]
set @Currency$,"pvppoint";
// Item ID Lists
setarray @ItemLists[0],1815;
// Item Price
setarray @ItemCost[0],100;
break;
Case 3:
// Currency [ Item ID / Variable Name ]
set @Currency$,"pvppoint";
// Item ID Lists
setarray @ItemLists[0],2776,12260,14037;
// Item Price
setarray @ItemCost[0],500,50,30;
break;
// Case 4,5,6.....etc...
default:
ErrorNotice( "Invalid Menu Selection for Menu "
[email protected]+"." );
close;
}
if( @Currency$ == "" )
ErrorNotice( "Invalid Currency Setting in Menu "
[email protected]+" ." );
if( getarraysize( @ItemCost ) != getarraysize( @ItemLists ) || getarraysize( @ItemLists ) != getarraysize( @ItemCost ) )
ErrorNotice( "Missing or Extra Value of Item or Cost Settings in Menu "
[email protected]+" ." );
return;
}
function ErrorNotice {
mes "^FF0000ERROR^000000 - "+getarg(0);
mes "^00FF00____________________________^000000";
mes "Inform this Message to ^0000FFGame Staffs^000000 immediately !";
close;
}
function CurrencyInfo {
if( getitemname( atoi( getarg(0) ) ) != "null" ){
mes "Item Currency : ^FF0000"+getitemname( atoi( getarg(0) ) )+"^000000";
mes "Available Amount : ^0000FF"+ValueConvert( countitem( atoi( getarg(0) ) ) )+"^000000";
}else if( getitemname( atoi( getarg(0) ) ) == "null" ){
mes "Variable Currency : ^FF0000"+getarg(0)+"^000000";
mes "Available Amount : ^0000FF"+ValueConvert( getd( 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
[email protected], atoi(""+getarg(0));
if (
[email protected] == 0 ||
[email protected] >= 2147483647 ) return getarg(0);
set
[email protected], getstrlen(""
[email protected]);
for ( set
[email protected],0;
[email protected] <
[email protected]; set
[email protected],
[email protected] + 1 ) {
set
[email protected]$,
[email protected] % pow(10,
[email protected]+1) / pow(10,
[email protected]) +
[email protected]$;
if ( (
[email protected]+1) % 3 == 0 &&
[email protected]+1 !=
[email protected] ) set
[email protected]$, ","+
[email protected]$;
}
return
[email protected]$;
}
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] );
mes "^FF0000 BILLING LIST^000000";
mes "^00FF00____________________________^000000";
for( set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1 )
mes "^FF0000"
[email protected]_quantity[@i]+" x ^0000FF"+getitemname( @bought_nameid[@i] )+"^000000";
mes "^00FF00____________________________^000000";
if( getitemname( atoi( @Currency$ ) ) != "null" )
mes "Total Cost : ^0000FF"+ValueConvert( @TotalCost )+" x "+getitemname( atoi( @Currency$ ) )+"^000000";
else if( getitemname( atoi( @Currency$ ) ) == "null" ){
mes "Total Cost : ^0000FF"+ValueConvert( @TotalCost )+" "
[email protected]$+"^000000";
}
mes "^00FF00____________________________^000000";
if( ValidateCost( @Currency$,@TotalCost ) ){
if( getitemname( atoi( @Currency$ ) ) != "null" )
mes "[ ^FF0000X^000000 ] Insufficient ^0000FF"+getitemname( atoi( @Currency$ ) )+"^000000";
else{
mes "[ ^FF0000X^000000 ] Insufficient ^0000FF"
[email protected]$+"^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];
message strcharinfo(0),"Purchased "+getarraysize( @bought_nameid )+" Items.";
mes "Thank you for shopping.";
}
}
ClearData();
close;
}
- script qwerty -1,{
OnPCKillEvent:
if ( strcharinfo(3) == "guild_vs3" ) {
set pvppoint,pvppoint+1;
dispbottom "You have gained 1 Points. Total "+pvppoint+" Point";
end;
}
}
// ---------------------------------------------------
- script pointscheck -1,{
OnInit:
bindatcmd("pc","pointscheck::OnAtcommand");
end;
OnAtcommand:
message strcharinfo(0),"You currently have "+pvppoint+" PvP Points";
end;
}