KeyWorld - Feb 6, 2014 0:04
					
				
				
					Git version: 8fb2b31e8de73872baddc3d983a4eea5c359329d
Maybe related to the last script core update (array size limit), I found a bug while trying to copy a referenced array:
Script:[code=auto:0]
function	script	test	{
	// Get array size and display it
	.@count = getarraysize(getarg(0));
	debugmes "array size: " + .@count + ";";
	// Copy argument to .@array
	copyarray .@array, getarg(0), .@count;
	// Display getarg(0) content
	debugmes "----------------------------------";
	debugmes "getarg(0) :";
	for (.@i = 0; .@i < .@count; .@i++) {
		debugmes getelementofarray(getarg(0), .@i);
	}
	// Display .@array content
	debugmes "----------------------------------";
	debugmes ".@array:";
	for (.@i = 0; .@i < .@count; .@i++) {
		debugmes .@array[.@i];
	}
}
  
-	script	_	-1,{
OnInit:
	.@count = 20;
	for (.@i = 0; .@i < .@count; ++.@i) {
		.@array[.@i] = rand(10000);
	}
	callfunc("test", .@array);
}
[/code]
And logs:[code=auto:0]
[Debug]: script debug : 0 110343621 : array size: 20;
[Debug]: script debug : 0 110343621 : ----------------------------------
[Debug]: script debug : 0 110343621 : getarg(0) :
[Debug]: script debug : 0 110343621 : 6390
[Debug]: script debug : 0 110343621 : 9996
[Debug]: script debug : 0 110343621 : 9025
[Debug]: script debug : 0 110343621 : 8314
[Debug]: script debug : 0 110343621 : 7550
[Debug]: script debug : 0 110343621 : 2312
[Debug]: script debug : 0 110343621 : 8149
[Debug]: script debug : 0 110343621 : 3863
[Debug]: script debug : 0 110343621 : 6211
[Debug]: script debug : 0 110343621 : 1452
[Debug]: script debug : 0 110343621 : 8013
[Debug]: script debug : 0 110343621 : 7703
[Debug]: script debug : 0 110343621 : 2360
[Debug]: script debug : 0 110343621 : 1450
[Debug]: script debug : 0 110343621 : 6760
[Debug]: script debug : 0 110343621 : 2451
[Debug]: script debug : 0 110343621 : 9679
[Debug]: script debug : 0 110343621 : 6518
[Debug]: script debug : 0 110343621 : 232
[Debug]: script debug : 0 110343621 : 1001
[Debug]: script debug : 0 110343621 : ----------------------------------
[Debug]: script debug : 0 110343621 : .@array:
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[Debug]: script debug : 0 110343621 : 0
[/code]
				
							 
									
				
					
						Dastgir Pojee - Feb 6, 2014 3:07
					
				
				
					Havent tested, but according to doc,
it should be like
copyarray @array2[0],@array[2],2;
You are not putting brackets.
				
							 
									
				
					
						KeyWorld - Feb 6, 2014 7:21
					
				
				
					Bracket is optional.
But yeah I also tested with getelementofarray and it's the same result.
				
							 
									
				
					
						AnnieRuru - Feb 6, 2014 14:46
					
				
				
					if you report here, then its the same with rathena
because when I wrote that script with rathena emulator
[url="http://rathena.org/board/pastebin/jdsshuef1ic/"]http://rathena.org/board/pastebin/jdsshuef1ic/[/url]
I used $@tmp_array[code=auto:0]copyarray $@tmp_array, getarg(2), .@size;[/code][code=auto:0]function	script	test	{
	// Get array size and display it
	.@count = getarraysize(getarg(0));
	debugmes "array size: " + .@count + ";";
	// Copy argument to $@array
	copyarray $@tmp_aray, getarg(0), .@count;
	// Display getarg(0) content
	debugmes "----------------------------------";
	debugmes "getarg(0) :";
	for (.@i = 0; .@i < .@count; .@i++) {
		debugmes getelementofarray(getarg(0), .@i);
	}
	// Display $@array content
	debugmes "----------------------------------";
	debugmes "$@array:";
	for (.@i = 0; .@i < .@count; .@i++) {
		debugmes $@tmp_aray[.@i];
	}
}
  
-	script	_	-1,{
OnInit:
	.@count = 20;
	for (.@i = 0; .@i < .@count; ++.@i) {
		.@array[.@i] = rand(10000);
	}
	callfunc("test", .@array);
}[/code]this will work
although, I have no objections if hercules developer wants to fix this
because this bug also happens in rathena
				
							 
									
				
					
						Haru - Feb 6, 2014 19:29
					
				
				
					It happens because the arrays have the same name :x
				
							 
									
				
					
						AnnieRuru - Feb 6, 2014 19:33
					
				
				
					sry double post
but I think the problem lies somewhere else[code=auto:0]function	script	test	{
	// Get array size and display it
	.@count = getarraysize(getarg(0));
	debugmes "array size: " + .@count + ";";
	// Copy argument to $@array
	copyarray .@array_, getarg(0), .@count;
	// Display getarg(0) content
	debugmes "----------------------------------";
	debugmes "getarg(0) :";
	for (.@i = 0; .@i < .@count; .@i++) {
		debugmes getelementofarray(getarg(0), .@i);
	}
	// Display $@array content
	debugmes "----------------------------------";
	debugmes ".@array:";
	for (.@i = 0; .@i < .@count; .@i++) {
		debugmes .@array_[.@i];
	}
}
  
-	script	_	-1,{
OnInit:
	.@count = 20;
	for (.@i = 0; .@i < .@count; ++.@i) {
		.@array[.@i] = rand(10000);
	}
	callfunc("test", .@array);
}[/code]I just change .@array into .@array_
now it works o.O
EDIT : AHHH ~ !! Haru post faster than me
				
								
					
						This post has been edited by
						AnnieRuru
						on Feb 6, 2014 19:34					
									 
							 
									
				
					
						KeyWorld - Feb 7, 2014 9:39
					
				
				
					[quote name="Haru" timestamp="1391714979"]
It happens because the arrays have the same name :x[/quote]
Seems like it's the problem, but should not occur with .@array since they do not share the same scope.
				
							 
									
				
					
						Haru - Feb 8, 2014 3:37
					
				
				
					Yes, it *should* not occur, but it does because of a bug with scope handling by the copyarray function. I have a fix ready, but I want to test it a little, and possibly doublecheck if there's anything else that suffers the same problem. Commit is on my fork, at the tip of the copyarray-ref-fix branch, in case you want to see it. [url="https://github.com/MishimaHaruna/Hercules/commits/copyarray-ref-fix"]https://github.com/MishimaHaruna/Hercules/commits/copyarray-ref-fix[/url]
				
							 
									
				
					
						Haru - Mar 6, 2014 1:13
					
				
				
					Fixed in [url="https://github.com/HerculesWS/Hercules/commit/a1918e7"]https://github.com/HerculesWS/Hercules/commit/a1918e7[/url]