Help for item

make a box with type 18

then in the script field use

Code:
getitem2 Valkyrie_Armor, 1,1,7,0, 0,0,0,0;
 
[cbox]prontera,156,178,5 script Sample 757,{
for( .@i = 0; .@i < .item_id_size; .@i++ ){
mes .item_amount[.@i]+" x "+getitemname( .item_id[.@i] );
if( countitem( .item_id[.@i] ) < .item_amount[.@i] ) .@failed = 1;
}
if( !.@failed ){
mes "Please wait...";
progressbar "FFFFFF",10;
for( .@i = 0; .@i < .item_id_size; .@i++ )
delitem .item_id[.@i],.item_amount[.@i];
if( rand( 100 ) < .craft_rate ){
mes "Gained 1 items.";
getitem .craft_gain,1;
}else{
mes "Failed";
}
}
close;

OnInit:
// craft settings
.craft_rate = 50;
setarray .item_id,30005;
setarray .item_amount,10;
.item_id_size = getarraysize( .item_id );

// item gain
.craft_gain = 30004;
end;
}
[/cbox]

 

+7 Valkyrie armor put in the Box using crafting and delete the +7 Valkyrie armor.
when get the valkyrie armor box use it you get +7 valkyrie armor.
 
Last edited by a moderator:
if you crafting the +7 valkyrie armor fail the +7 valkyrie armor not lost and  the box empty is lost  

if success the crafting same loss +7 valkyrie armor and box empty and get box of valkyrie

[cbox]
prontera,142,177,5 script Sample1 757,{

for( .@i = 0; .@i < .item_id_size; .@i++ ){
mes .item_amount[.@i]+" x "+getitemname( .item_id[.@i] );
if( countitem( .item_id[.@i] ) < .item_amount[.@i] ) .@failed = 1;
}
if( !.@failed ){
mes "Please wait...";
progressbar "FFFFFF",10;
for( .@i = 0; .@i < .item_id_size; .@i++ )
delitem .item_id[.@i],.item_amount[.@i];
if( rand( 100 ) < .craft_rate ){
failedrefitem .@part;
mes "Gained 1 items.";
getitem .craft_gain,1;
}else{
mes "Failed";
}
}
close;

OnInit:
// craft settings
.craft_rate = 50;
setarray .item_id,box empty;
setarray .item_amount,10;
.item_id_size = getarraysize( .item_id );

// item gain
.craft_gain = box of valkyrie;
end;
}[/cbox]

 
Last edited by a moderator:
then you need to make 12 items

1 to catch the valkyrie in the inventory

11 for the box to open with different refine rates -> 0~10

Code:
/*replace into item_db2 ( id, name_english, name_japanese, type, price_buy, price_sell, weight, equip_upper, script ) values( 31000, 'Valkyrie_box_catch', 'Valkyrie_box_catch', 11, 1,1,10, 63, 'callfunc "catch_valkyrie_armor";' ),( 31001, 'Valkyrie_box_open_0', 'Valkyrie_box_open_0', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31001, 0;' ),( 31002, 'Valkyrie_box_open_1', 'Valkyrie_box_open_1', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31002, 1;' ),( 31003, 'Valkyrie_box_open_2', 'Valkyrie_box_open_2', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31003, 2;' ),( 31004, 'Valkyrie_box_open_3', 'Valkyrie_box_open_3', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31004, 3;' ),( 31005, 'Valkyrie_box_open_4', 'Valkyrie_box_open_4', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31005, 4;' ),( 31006, 'Valkyrie_box_open_5', 'Valkyrie_box_open_5', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31006, 5;' ),( 31007, 'Valkyrie_box_open_6', 'Valkyrie_box_open_6', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31007, 6;' ),( 31008, 'Valkyrie_box_open_7', 'Valkyrie_box_open_7', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31008, 7;' ),( 31009, 'Valkyrie_box_open_8', 'Valkyrie_box_open_8', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31009, 8;' ),( 31010, 'Valkyrie_box_open_9', 'Valkyrie_box_open_9', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31010, 9;' ),( 31011, 'Valkyrie_box_open_10', 'Valkyrie_box_open_10', 11, 1,1,10, 63, 'callfunc "get_valkyrie_armor", 31011, 10;' );*/function	script	catch_valkyrie_armor	{	getinventorylist;	for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) {		if ( @inventorylist_id[.@i] == Valkyrie_Armor ) {			delitem2 @inventorylist_id[.@i], 1, @inventorylist_identify[.@i], @inventorylist_refine[.@i], @inventorylist_attribute[.@i], @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i];			getitem2 31001 + @inventorylist_refine[.@i], 1, 1, 0, 0, @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i];			delitem Valkyrie_box_catch, 1;			end;		}	}	dispbottom "You don't have "+ getitemname(Valkyrie_Armor) +" in your inventory";	end;}function	script	get_valkyrie_armor	{	getinventorylist;	for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) {		if ( @inventorylist_id[.@i] == getarg(0) ) {			delitem2 @inventorylist_id[.@i], 1, 1, 0, 0, @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i];			getitem2 Valkyrie_Armor, 1, 1, getarg(1), 0, @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i];			end;		}	}	dispbottom "shouldn't reach here ... if reach here, then its bug";	end;}
EDITED ...
 
Last edited by a moderator:
i think he means... he want to put the valkyrie armor into box... then when he open the box the valkyrie he get but the box will disappear... i think that is he want to do...

 
yeah ... I did that without having to talk to npc ...

just double click the item will do ...

 
function script catch_valkyrie_armor {
getinventorylist;
for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) {
if ( @inventorylist_id[.@i] == Valkyrie_Armor ) {
delitem2 @inventorylist_id[.@i], 1, @inventorylist_identify[.@i], @inventorylist_refine[.@i], @inventorylist_attribute[.@i], @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i];
getitem2 31001 + @inventorylist_refine[.@i], 1, 1, 0, 0, @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i];
delitem Valkyrie_box_catch, 1;
end;
}
}
dispbottom "You don't have "+ getitemname(Valkyrie_Armor) +" in your inventory";
end;
}

if you use the valkyrie_box_catch we need 10pcs valkyrie_box_catch if you dont have 10pcs =  dispbottom "You don't have "+ getitemname(valkyrie_box_catch 10pcs) +" in your inventory";

like dispbottom "You don't have "+ getitemname(Valkyrie_Armor) +" in your inventory";

if work the valkyrie_box_catch you delitem Valkyrie_box_catch 10pcs.

 
well, the reason that I used getinventorylist; is to retain the slotted cards while being store inside the box

so its kinda hard to have multiple valkyrie armor in a single box

and no .... just 1 piece of item id 31000 and 1 valkyrie_armor will do the trick ..

valkyrie_armor +0 will get id 31001

valkyrie_armor +7 will get id 31008

I've tested in my test server of course

 
how to add

if you use the valkyrie_box_catch we need 10pcs valkyrie_box_catch if you dont have 10pcs = dispbottom "You don't have "+ getitemname(valkyrie_box_catch 10pcs) +" in your inventory";

like dispbottom "You don't have "+ getitemname(Valkyrie_Armor) +" in your inventory";

if work the valkyrie_box_catch you delitem Valkyrie_box_catch 10pcs.

[cbox]function script catch_valkyrie_armor {
getinventorylist;
for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) {
if ( @inventorylist_id[.@i] == 2357 ) {
delitem2 @inventorylist_id[.@i], 1, @inventorylist_identify[.@i], @inventorylist_refine[.@i], @inventorylist_attribute[.@i], @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i];
getitem2 30101 + @inventorylist_refine[.@i], 1, 1, 0, 0, @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i];
delitem 30100, 10;
end;
}
}
dispbottom "You don't have "+ getitemname(2357) +" in your inventory";
end;
}

function script get_valkyrie_armor {

getitem2 2357, 1, 1, getarg(1), 0, @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i];
}
[/cbox]

 
Back
Top