Bug chat
#1

Hi everyone, i'm having a little problem with my code.

When the string is less than 100 works ok, but when is more than 100 then send 2 messages like i want, but ignoring the format function, just 2 globals messages not ProxDetector.
Code:
                        format(string, sizeof(string), "%s dice: %s", PlayerName(playerid), text);
			while(string[t])
			{
				if(string[t] == '*' && string[t+1] != '*')
				{
				    if(l == 0){
						strdel(string,t,t+1);
						strins(string,"{7B49AA}",t);
					}
					else{
					    strdel(string,t,t+1);
						strins(string,"{FFFFFF}",t);
					}
					l++;
				}
				t++;
			}
			l=0;
			if(strlen(string) > 100){
   				strmid(Almac1,string,0,100);
	    		strmid(Almac2,string,100,200);
	    		ProxDetector(20.0, playerid, Almac1, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5);
	    		ProxDetector(20.0, playerid, Almac2, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5);
			}
			else{
				ProxDetector(20.0, playerid, string, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5);
			}
			return 0;
Thanks you.
Reply
#2

Please paste here the ProxDetector function.
Reply
#3

Code:
CallBack::ProxDetector(Float:radi, playerid, string[], col1, col2, col3, col4, col5)
{
	if(IsPlayerConnected(playerid))
	{
		new Float:posx, Float:posy, Float:posz;
		new Float:oldposx, Float:oldposy, Float:oldposz;
		new Float:tempposx, Float:tempposy, Float:tempposz;
		GetPlayerPos(playerid, oldposx, oldposy, oldposz);
		for(new i=0, _max=GetMaxPlayers();i<_max;i++)
		{
			if(IsPlayerConnected(i) && (GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i)))
			{
				if(!booleano[BigEar]{i})
				{
					GetPlayerPos(i, posx, posy, posz);
					tempposx = (oldposx -posx);
					tempposy = (oldposy -posy);
					tempposz = (oldposz -posz);
					if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16))){
						Mensaje(i, col1, string);
					}else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8))){
						Mensaje(i, col2, string);
					}else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4))){
						Mensaje(i, col3, string);
					}else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2))){
						Mensaje(i, col4, string);
					}else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))){
						Mensaje(i, col5, string);
					}
				}
				else
				{
					Mensaje(i, col1, string);
				}
			}
		}
	}
	return 1;
}
I was looking the server_log and i found this
Quote:

[20:06:12] [chat] [Alex_Wallace]: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa*aaaaa*
[20:06:12] [debug] Run time error 4: "Array index out of bounds"
[20:06:12] [debug] Accessing element at index 128 past array upper bound 127
[20:06:12] [debug] AMX backtrace:
[20:06:12] [debug] #0 000a6f74 in ?? () from PC-RP.amx
[20:06:12] [debug] #1 0000007d in public OnPlayerText () from PC-RP.amx

Reply
#4

How do you define Callback::X? If it is a define-pattern for public functions then `ProxDetector` is not the faulty function you are looking for.

Compile with debug info to get the exact line: https://github.com/Zeex/samp-plugin-...ith-debug-info
Re-compile script and restart server, post new logs.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)