Browse Source

-Adding checkweight2 and upgrading chekweight to read list of item tid:59194.
Check npt_chekweight for exemple of usage.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16941 54d463be-8e91-2dee-dedb-b68131a5f0ec

glighta 12 years ago
parent
commit
eebeb88cdb
2 changed files with 441 additions and 180 deletions
  1. 164 0
      doc/sample/npc_test_chekweight.txt
  2. 277 180
      src/map/script.c

+ 164 - 0
doc/sample/npc_test_chekweight.txt

@@ -0,0 +1,164 @@
+//===== rAthena Script =======================================
+//= Sample: ChekWeight
+//===== By: ==================================================
+//= rAthena Dev Team
+//===== Current Version: =====================================
+//= 20121113
+//===== Description: ========================================= 
+//= Demonstrates ChekWeight commands.
+//============================================================
+
+new_1-1,56,106,5	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;
+	}
+}

File diff suppressed because it is too large
+ 277 - 180
src/map/script.c


Some files were not shown because too many files changed in this diff