//===== Hercules Script =======================================
//= Sample: CheckWeight
//===== By: ==================================================
//= Hercules Dev Team
//===== Current Version: =====================================
//= 20131225
//===== Description: =========================================
//= Demonstrates 'checkweight' command.
//============================================================
prontera,161,181,6 script ChkSpace 4_M_JPN,{
function ChkResult;
function FinalReport;
// Reset
resetlvl(1);
getinventorylist;
for (.@i = 0; .@i < @inventorylist_count; ++.@i) {
delitem(@inventorylist_id[.@i], @inventorylist_amount[.@i]); //clear inventory
}
//basic backward chk
.@testid = 0;
.@succes = 0;
.@ret = checkweight(Apple, 10);
.@succes += ChkResult(.@testid++, 1, .@ret); //should be success
.@ret = checkweight("Apple", 10);
.@succes += ChkResult(.@testid++, 1, .@ret); //should be success
.@ret = checkweight(Premium_Reset_Stone, 33000);
.@succes += ChkResult(.@testid++, 0, .@ret); //should be failure too many item amount item weight=0
.@ret = checkweight("Premium_Reset_Stone", 33000);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure too many item amount
.@ret = checkweight(Blue_Gemstone, 500);
.@success += ChkResult(.@testid++, 1, .@ret); //should be success weight based on max weight=2030
.@ret = checkweight(Blue_Gemstone, 1000);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure weight based on max weight=2030
.@ret = checkweight(Magic_Stone_Ring, 100);
.@success += ChkResult(.@testid++, 1, .@ret); //should be success
.@ret = checkweight(Magic_Stone_Ring, 101);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure (with MAX_INVENTORY = 100)
.@ret = checkweight(-1, 1);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure invalid item id
.@ret = checkweight(Apple, 0);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure invalid amount
debugmes "End backward test";
FinalReport(.@testid, .@succes);
//update using list test
.@testid = 0;
.@succes = 0;
.@ret = checkweight(Apple, 10, Banana, 10);
.@success += ChkResult(.@testid++, 1, .@ret); //should be success
.@ret = checkweight("Apple", 10, "Banana", 10);
.@success += ChkResult(.@testid++, 1, .@ret); //should be success
.@ret = checkweight(Apple, 80, Banana, 33000);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure
.@ret = checkweight("Apple", 80, "Banana", 33000);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure too many item amount
.@ret = checkweight("Apple", 10, "Banana", 21, Apple);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure invalid nb of args
.@ret = checkweight(Blue_Gemstone, 500, Red_Gemstone, 100);
.@success += ChkResult(.@testid++, 1, .@ret); //should be succes weight 1800/2030
.@ret = checkweight(Blue_Gemstone, 500, Red_Gemstone, 500);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure weight 3000/2030
.@ret = checkweight(Magic_Stone_Ring, 95, Green_Apple_Ring, 5);
.@success += ChkResult(.@testid++, 1, .@ret); //should be success
.@ret = checkweight(Magic_Stone_Ring, 95, Green_Apple_Ring, 10);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure (with MAX_INVENTORY = 100)
.@ret = checkweight(Apple, 1, -1, 1);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure invalid item id
.@ret = checkweight(Apple, 1, Banana, 0);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure invalid amount
.@ret = checkweight(Premium_Reset_Stone, 31000, Premium_Reset_Stone, 2000);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure overamount inventory
.@ret = checkweight(Apple, 1, Banana, 1, Grape, 1, Carrot, 1);
.@success += ChkResult(.@testid++, 1, .@ret); //should be sucess
debugmes "End update by list tests";
FinalReport(.@testid, .@succes);
//update using array tests
.@testid = 0;
.@succes = 0;
setarray .@item[0], Apple, Banana, Grape, Carrot;
setarray .@count[0], 1, 5, 9, 12;
.@ret = checkweight2(.@item, .@count);
.@success += ChkResult(.@testid++, 1, .@ret); //should be sucess
cleararray .@item[0], 0, 4;
cleararray .@count[0], 0, 4;
setarray .@item[0], Apple, Banana, Grape, Carrot;
setarray .@count[0], 1, 5, -1, 12;
.@ret = checkweight2(.@item, .@count);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure, invalid amout
cleararray .@item[0], 0, 4;
cleararray .@count[0], 0, 4;
setarray .@item[0], Apple, Banana, Grape, -1;
setarray .@count[0], 1, 5, 15, 12;
.@ret = checkweight2(.@item, .@count);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure, invalid id
cleararray .@item[0], 0, 4;
cleararray .@count[0], 0, 4;
setarray .@item[0], Blue_Gemstone, Yellow_Gemstone, Red_Gemstone, Emperium;
setarray .@count[0], 300, 300, 300, 300;
.@ret = checkweight2(.@item, .@count);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure, total by weight
cleararray .@item[0], 0, 4;
cleararray .@count[0], 0, 4;
setarray .@item[0], Premium_Reset_Stone, Premium_Reset_Stone;
setarray .@count[0], 31000, 2000;
.@ret = checkweight2(.@item, .@count);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure, total by weight
cleararray .@item[0], 0, 2;
cleararray .@count[0], 0, 2;
setarray .@item[0], Magic_Stone_Ring, Green_Apple_Ring;
setarray .@count[0], 95, 5;
.@ret = checkweight2(.@item, .@count);
.@success += ChkResult(.@testid++, 1, .@ret); //should be success
setarray .@count[0], 95, 10;
.@ret = checkweight2(.@item, .@count);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure overamount item
cleararray .@item[0], 0, 2;
cleararray .@count[0], 0, 2;
setarray .@item[0], Premium_Reset_Stone, Premium_Reset_Stone, Apple;
setarray .@count[0], 1, 3;
.@ret = checkweight2(.@item, .@count);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure, size mistmatch
cleararray .@item[0], 0, 3;
cleararray .@count[0], 0, 2;
setarray .@item[0], Premium_Reset_Stone, Premium_Reset_Stone;
setarray .@count[0], 1, 3, 5;
.@ret = checkweight2(.@item, .@count);
.@success += ChkResult(.@testid++, 0, .@ret); //should be failure, size mistmatch
debugmes "End update by array tests";
FinalReport(.@testid, .@succes);
end;
function ChkResult {
.@tid = getarg(0);
.@expected = getarg(1);
.@ret = getarg(2);
.@sucess = (.@ret==.@expected);
debugmes "Test "+.@tid+" = "+(.@sucess?"Sucess":"Fail");
return .@sucess;
}
function FinalReport {
.@tdone = getarg(0);
.@succes = getarg(1);
debugmes "Results = Pass : "+.@succes+"/"+.@tdone+" Fails : "+(.@tdone-.@succes)+"/"+.@tdone;
if(.@succes != .@tdone) { debugmes "Some failure as occured, enable chkresult print to found out"; }
return;
}
}