if(dialogid == NAVIDIALOGHAUS) { if(response) { for(new i=0; i<sizeof(hausInfo); i++) { if(!IsNumeric(inputtext))return SendClientMessage(playerid, COLOR_RED, "Du kannst nur Zahlen eingeben."); if(strval(inputtext) == hausInfo[i][hausnummer]) { SetPlayerCheckpoint(playerid, hausInfo[i][hx], hausInfo[i][hy], hausInfo[i][hz], 5); SendClientMessage(playerid, COLOR_WHITE, "Das Haus wurde auf der Karte markiert."); return 1; } else { SendClientMessage(playerid, COLOR_RED, "Die Hausnummer gibt es nicht."); break; } return 1; } } else { return 1; } }
if(dialogid == NAVIDIALOGHAUS)
{
if(response)
{
for(new i=0; i<sizeof(hausInfo); i++)
{
if(!IsNumeric(inputtext))return SendClientMessage(playerid, COLOR_RED, "Du kannst nur Zahlen eingeben.");
if(strval(inputtext) == hausInfo[i][hausnummer])
{
SetPlayerCheckpoint(playerid, hausInfo[i][hx], hausInfo[i][hy], hausInfo[i][hz], 5);
SendClientMessage(playerid, COLOR_WHITE, "Das Haus wurde auf der Karte markiert.");
return 1;
}
}
return SendClientMessage(playerid, COLOR_RED, "Die Hausnummer gibt es nicht.");
}
else
{
return 1;
}
}
//Define this if you dont have to number of your max houses.
#define MAX_HOUSES 200
for(new i=0; i<sizeof(MAX_HOUSES); i++)
Yes. That will happen as what your code does is that if the houseid is not found, It will break the loop. For example, if houseid 0 doesn't exists and 1 exists, It will stop the loop at 0. Try this
PHP код:
|
Dont run the loop size of HInfo. Run it to MAX_HOUSES.
PHP код:
|
C:\Users\Tobias\Desktop\SAMPServer\pawno\include\sscanf2.inc(149) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\SAMPServer\pawno\include\sscanf2.inc(193) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\SAMPServer\pawno\include\playerzone.inc(422) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\SAMPServer\pawno\include\playerzone.inc(445) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(781) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(968) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1059) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1086) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1148) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1223) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1700) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1704) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1708) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1712) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1718) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1730) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1734) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1740) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1746) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1753) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1757) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1839) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1864) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1924) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(1933) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(2487) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(3051) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(3098) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(3109) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(3132) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(3142) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(3149) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(3865) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(4214) : warning 219: local variable "i" shadows a variable at a preceding level C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(4214) : error 020: invalid symbol name "" C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(4214) : error 036: empty statement C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(4214) : error 017: undefined symbol "i" C:\Users\Tobias\Desktop\Scripting Server\gamemodes\Reallife.pwn(4214) : fatal error 107: too many error messages on one line Compilation aborted. Pawn compiler 3.2.3664 Copyright © 1997-2017, ITB CompuPhase 4 Errors. [Finished in 0.6s]
Those errors are not because of MAX_HOUSES. This is because of something else. Probably a misplaced bracket.
|
if(dialogid == NAVIDIALOGHAUS)
{
if(response)
{
new i;
for(i=0; i<MAX_HOUSES; i++)
{
if(!IsNumeric(inputtext))return SendClientMessage(playerid, COLOR_RED, "Du kannst nur Zahlen eingeben.");
if(strval(inputtext) == hausInfo[i][hausnummer])
{
SetPlayerCheckpoint(playerid, hausInfo[i][hx], hausInfo[i][hy], hausInfo[i][hz], 5);
SendClientMessage(playerid, COLOR_WHITE, "Das Haus wurde auf der Karte markiert.");
break;
}
}
if(i == MAX_HOUSES) return SendClientMessage(playerid, COLOR_RED, "Die Hausnummer gibt es nicht.");
return 1;
}
return 1;
}
Yeah sorry I forgot. It should be <MAX_HOUSES.
PHP код:
|
[debug] Run time error 4: "Array index out of bounds" [debug] Attempted to read/write array element at index 1000 in array of size 1000 [debug] AMX backtrace: [debug] #0 0003c658 in public OnDialogResponse (0, 48, 1, -1, 2993040) from Reallife.amx [debug] Run time error 4: "Array index out of bounds" [debug] Attempted to read/write array element at index 1000 in array of size 1000 [debug] AMX backtrace: [debug] #0 0003c658 in public OnDialogResponse (0, 48, 1, -1, 2993040) from Reallife.amx [debug] Run time error 4: "Array index out of bounds" [debug] Attempted to read/write array element at index 1000 in array of size 1000 [debug] AMX backtrace: [debug] #0 0003c658 in public OnDialogResponse (0, 48, 1, -1, 2993040) from Reallife.amx
if(!housInfo[strval(inputtext)][hx]) SendClientMessage(playerid, -1, "That house doesnt exist");
Add this:
PHP код:
|
You need to ensure the house exists before even checking for the number. For instance, if a player inputs 0 for example, all houses that aren't created will be considered in the loop.
|
new i;
for(i=0; i<MAX_HOUSES; i++)
for(new d=0; d < HOUSES; d++)
wtf is this:
PHP код:
PHP код:
|
Dont run the loop size of HInfo. Run it to MAX_HOUSES.
PHP код:
|
if(dialogid == NAVIDIALOGHAUS)
{
if (!response) return 1;
if(!IsNumeric(inputtext)) return SendClientMessage(playerid, COLOR_RED, "Du kannst nur Zahlen eingeben.");
new value = strval(inputtext);
for(new i=0; i<sizeof(hausInfo); i++)
{
if(value == hausInfo[i][hausnummer])
{
SetPlayerCheckpoint(playerid, hausInfo[i][hx], hausInfo[i][hy], hausInfo[i][hz], 5);
SendClientMessage(playerid, COLOR_WHITE, "Das Haus wurde auf der Karte markiert.");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_RED, "Die Hausnummer gibt es nicht.");
break;
}
return 1;
}
}