committed fix for bug atDIVINE (kami no buggu)
This commit is contained in:
		| @@ -358,7 +358,23 @@ static cell AMX_NATIVE_CALL show_hudmessage(AMX *amx, cell *params) /* 2 param * | |||||||
| 	g_langMngr.SetDefLang(params[1]); | 	g_langMngr.SetDefLang(params[1]); | ||||||
| 	char* message = NULL; | 	char* message = NULL; | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Earlier versions would ignore invalid bounds. | ||||||
|  | 	 * Now, bounds are only checked for internal operations. | ||||||
|  | 	 *  "channel" stores the valid channel that core uses. | ||||||
|  | 	 *  "g_hudset.channel" stores the direct channel passed to the engine. | ||||||
|  | 	 */ | ||||||
|  | 	 | ||||||
| 	bool aut = (g_hudset.channel == -1) ? true : false; | 	bool aut = (g_hudset.channel == -1) ? true : false; | ||||||
|  | 	int channel = -1; | ||||||
|  | 	if (!aut) | ||||||
|  | 	{ | ||||||
|  | 		/** | ||||||
|  | 		 * guarantee this to be between 0-4 | ||||||
|  | 		 * if it's not auto, we don't care | ||||||
|  | 		 */ | ||||||
|  | 		channel = abs(g_hudset.channel % 5); | ||||||
|  | 	} | ||||||
| 	if (params[1] == 0) | 	if (params[1] == 0) | ||||||
| 	{ | 	{ | ||||||
| 		for (int i = 1; i <= gpGlobals->maxClients; ++i) | 		for (int i = 1; i <= gpGlobals->maxClients; ++i) | ||||||
| @@ -371,10 +387,12 @@ static cell AMX_NATIVE_CALL show_hudmessage(AMX *amx, cell *params) /* 2 param * | |||||||
| 				message = UTIL_SplitHudMessage(format_amxstring(amx, params, 2, len)); | 				message = UTIL_SplitHudMessage(format_amxstring(amx, params, 2, len)); | ||||||
| 				if (aut) | 				if (aut) | ||||||
| 				{ | 				{ | ||||||
| 					g_hudset.channel = pPlayer->NextHUDChannel(); | 					channel = pPlayer->NextHUDChannel(); | ||||||
| 					pPlayer->channels[g_hudset.channel] = gpGlobals->time; | 					pPlayer->channels[channel] = gpGlobals->time; | ||||||
|  | 					g_hudset.channel = channel; | ||||||
| 				} | 				} | ||||||
| 				pPlayer->hudmap[g_hudset.channel] = 0; | 				//don't need to set g_hudset! | ||||||
|  | 				pPlayer->hudmap[channel] = 0; | ||||||
| 				UTIL_HudMessage(pPlayer->pEdict, g_hudset, message); | 				UTIL_HudMessage(pPlayer->pEdict, g_hudset, message); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -394,10 +412,11 @@ static cell AMX_NATIVE_CALL show_hudmessage(AMX *amx, cell *params) /* 2 param * | |||||||
| 		{ | 		{ | ||||||
| 			if (aut) | 			if (aut) | ||||||
| 			{ | 			{ | ||||||
| 				g_hudset.channel = pPlayer->NextHUDChannel(); | 				channel = pPlayer->NextHUDChannel(); | ||||||
| 				pPlayer->channels[g_hudset.channel] = gpGlobals->time; | 				pPlayer->channels[channel] = gpGlobals->time; | ||||||
|  | 				g_hudset.channel = channel; | ||||||
| 			} | 			} | ||||||
| 			pPlayer->hudmap[g_hudset.channel] = 0; | 			pPlayer->hudmap[channel] = 0; | ||||||
| 			UTIL_HudMessage(pPlayer->pEdict, g_hudset, message); | 			UTIL_HudMessage(pPlayer->pEdict, g_hudset, message); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user