Explorar o código

- pc_readdb will now cap experience required per level to UINT_MAX, it will warn the exp table has exp values above said limit.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5238 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex %!s(int64=19) %!d(string=hai) anos
pai
achega
4ccd4a6c5f
Modificáronse 2 ficheiros con 15 adicións e 1 borrados
  1. 2 0
      Changelog-Trunk.txt
  2. 13 1
      src/map/pc.c

+ 2 - 0
Changelog-Trunk.txt

@@ -6,6 +6,8 @@ GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALAR
 
 
 2006/02/09
+	* pc_readdb will now cap experience required per level to UINT_MAX, it will
+	  warn if the exp table has exp values above said limit. [Skotlex]
 	* Changed the default of skill_delay_attack_enable to no. [Skotlex]
 	* Code rewrites in mob_damage and party_exp_even_share for correctly
 	  handling overflow issues. Now uses UINT_MAX for range comparisons, as it

+ 13 - 1
src/map/pc.c

@@ -8047,10 +8047,22 @@ int pc_split_atoi(char *str,int *val, char sep, int max)
 
 int pc_split_atoui(char *str,unsigned int *val, char sep, int max)
 {
+	static int warning=0;
 	int i,j;
+	float f;
 	for (i=0; i<max; i++) {
 		if (!str) break;
-		val[i] = (unsigned int)atof(str);
+		f = atof(str);
+		if (f < 0)
+			val[i] = 0;
+		else if (f > UINT_MAX) {
+			val[i] = UINT_MAX;
+			if (!warning) {
+				warning = 1;
+				ShowWarning("pc_readdb (exp.txt): Required exp per level is capped to %d\n", UINT_MAX);
+			}
+		} else
+			val[i] = (unsigned int)f;
 		str = strchr(str,sep);
 		if (str)
 			*str++=0;