//===== Hercules Script ======================================= //= Sample: CheckWeight //===== By: ================================================== //= Hercules Dev Team //===== Current Version: ===================================== //= 20121113 //===== Description: ========================================= //= Demonstrates 'checkweight' command. //============================================================ prontera,161,181,6 script ChkSpace 763,{ function ChkResult; function FinalReport; L_RESET: resetlvl(1); getinventorylist; for(set .@i,0; .@i < @inventorylist_count; set .@i,.@i+1){ delitem(@inventorylist_id[.@i],@inventorylist_amount[.@i]); //clear inventory } L_TEST1: //basic backward chk .@testid = 0; .@succes = 0; .@ret = checkweight(512,10); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success .@ret = checkweight("Apple",10); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success .@ret = checkweight(6320,33000); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure too many item amount item weight=0 .@ret = checkweight("Premium_Reset_Stone",33000); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure too many item amount .@ret = checkweight(717,500); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success weight based on max weight=2030 .@ret = checkweight(717,1000); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure weight based on max weight=2030 .@ret = checkweight(2794,100); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success .@ret = checkweight(2794,101); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure (with MAX_INVENTORY = 100) .@ret = checkweight(-1,1); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure invalide item id .@ret = checkweight(512,0); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure invalide amount debugmes "End backward test"; FinalReport(.@testid,.@succes); L_TEST2: //update using list test .@testid = 0; .@succes = 0; .@ret = checkweight(512,10,513,10); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success .@ret = checkweight("Apple",10,"Banana",10); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success .@ret = checkweight(512,80,513,33000); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure .@ret = checkweight("Apple",80,"Banana",33000); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure too many item amount .@ret = checkweight("Apple",10,"Banana",21,512); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure invalid nb of args .@ret = checkweight(717,500,716,100); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be succes weight 1800/2030 .@ret = checkweight(717,500,716,500); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure weight 3000/2030 .@ret = checkweight(2794,95,2795,5); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success .@ret = checkweight(2794,95,2795,10); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure (with MAX_INVENTORY = 100) .@ret = checkweight(512,1,-1,1); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure invalide item id .@ret = checkweight(512,1,513,0); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure invalide amount .@ret = checkweight(6320,31000,6320,2000); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure overamount inventory .@ret = checkweight(512,1,513,1,514,1,515,1); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be sucess debugmes "End update by list tests"; FinalReport(.@testid,.@succes); L_TEST3: //update using array tests .@testid = 0; .@succes = 0; setarray .@item[0], 512,513,514,515; setarray .@count[0], 1,5,9,12; .@ret = checkweight2(.@item,.@count); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be sucess cleararray .@item[0], 0, 4; cleararray .@count[0], 0, 4; setarray .@item[0], 512,513,514,515; setarray .@count[0], 1,5,-1,12; .@ret = checkweight2(.@item,.@count); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, invalide amout cleararray .@item[0], 0, 4; cleararray .@count[0], 0, 4; setarray .@item[0], 512,513,514,-1; setarray .@count[0], 1,5,15,12; .@ret = checkweight2(.@item,.@count); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, invalide id cleararray .@item[0], 0, 4; cleararray .@count[0], 0, 4; setarray .@item[0], 717,715,716,714; setarray .@count[0], 300,300,300,300; .@ret = checkweight2(.@item,.@count); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, total by weight cleararray .@item[0], 0, 4; cleararray .@count[0], 0, 4; setarray .@item[0], 6320,6320; setarray .@count[0], 31000,2000; .@ret = checkweight2(.@item,.@count); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, total by weight cleararray .@item[0], 0, 2; cleararray .@count[0], 0, 2; setarray .@item[0], 2794,2795; setarray .@count[0], 95,5; .@ret = checkweight2(.@item,.@count); set .@succes,.@succes+ChkResult(.@testid++,1,.@ret); //should be success setarray .@count[0], 95,10; .@ret = checkweight2(.@item,.@count); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure overamount item cleararray .@item[0], 0, 2; cleararray .@count[0], 0, 2; setarray .@item[0], 6320,6320,512; setarray .@count[0], 1,3; .@ret = checkweight2(.@item,.@count); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, size mistmatch cleararray .@item[0], 0, 3; cleararray .@count[0], 0, 2; setarray .@item[0], 6320,6320; setarray .@count[0], 1,3,5; .@ret = checkweight2(.@item,.@count); set .@succes,.@succes+ChkResult(.@testid++,0,.@ret); //should be failure, size mistmatch debugmes "End update by array tests"; FinalReport(.@testid,.@succes); L_FINAL: 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; } }