Try this. Not tested though.
map,x,y,z script Name 100,{
setarray .@v, 1234,100, 4321,1000; //<ItemID>,<Zeny>{...}
set .@n$, "[Valkyrie Helm Changer]";
for ( set .@i, 0; .@i < getarraysize(.@v); set .@i, .@i + 2 )
{
set .@menu$, .@menu$ + getitemname(.@v[.@i]) + ":";
if ( countitem(.@v[.@i]) > 0 ) setarray .@tmp[getarraysize(.@tmp), .@v[.@i];
}
mes .@n$;
mes "Which Valkyrie Helm would you like to have?";
set .@j, select ( .@menu$ ) - 1;
set .@k, 0;
if ( getarraysize(.@tmp) > 1 )
{
set .@menu$, "";
for ( set .@i, 0; .@i < getarraysize(.@tmp); set .@i, .@i + 1 )
set .@menu$, .@menu$ + getitemname(.@tmp[.@i]) + ":";
mes .@n$;
mes "There are more than one Valkyrie Helm in your inventory.";
mes "Please select one to be exchanged.";
set .@k, select ( .@menu$ ) - 1;
}
next;
mes .@n$;
if ( !.@tmp ) { mes "You need a Valkyrie Helm to use my services."; close; }
if ( Zeny < .@v[.@j+1] ) { mes "You need " + .@v[.@j+1] + "z to use my services."; close; }
mes "Thank you!";
close2;
delitem .@tmp[.@k], 1;
getitem .@v[.@j], 1;
set Zeny, Zeny - .@v[.@j+1];
end;
}