Przeglądaj źródła

* Fixed script command setd always assuming value parameter to be a string, which causes hexadecimal and octal numbers not being handled properly (topic:261833, followup to r14577 and r14578).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14581 54d463be-8e91-2dee-dedb-b68131a5f0ec
ai4rei 14 lat temu
rodzic
commit
6aabf7c260
2 zmienionych plików z 5 dodań i 5 usunięć
  1. 1 0
      Changelog-Trunk.txt
  2. 4 5
      src/map/script.c

+ 1 - 0
Changelog-Trunk.txt

@@ -1,6 +1,7 @@
 Date	Added
 
 2010/12/11
+	* Fixed script command setd always assuming value parameter to be a string, which causes hexadecimal and octal numbers not being handled properly (topic:261833, followup to r14577 and r14578). [Ai4rei]
 	* Updates to dynamic server information `ragsrvinfo` on SQL. [Ai4rei]
 	- Fixed exp and drop rates (int) getting truncated (short) when sent to char-server.
 	- Removed `motd` from `ragsrvinfo` as it is not dynamically changed by the server and as such can be read by 3rd party applications directly from conf/motd.txt if required.

+ 4 - 5
src/map/script.c

@@ -12355,10 +12355,9 @@ BUILDIN_FUNC(setd)
 {
 	TBL_PC *sd=NULL;
 	char varname[100];
-	const char *value, *buffer;
+	const char *buffer;
 	int elem;
 	buffer = script_getstr(st, 2);
-	value = script_getstr(st, 3);
 
 	if(sscanf(buffer, "%99[^[][%d]", varname, &elem) < 2)
 		elem = 0;
@@ -12373,10 +12372,10 @@ BUILDIN_FUNC(setd)
 		}
 	}
 
-	if(varname[strlen(varname)-1] != '$') {
-		setd_sub(st,sd, varname, elem, (void *)atoi(value),NULL);
+	if( is_string_variable(varname) ) {
+		setd_sub(st, sd, varname, elem, (void *)script_getstr(st, 3), NULL);
 	} else {
-		setd_sub(st,sd, varname, elem, (void *)value,NULL);
+		setd_sub(st, sd, varname, elem, (void *)script_getnum(st, 3), NULL);
 	}
 	
 	return 0;