SA-MP Forums Archive
[Ajuda] Times - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Times (/showthread.php?tid=509250)



Times - Paramount. - 26.04.2014

PHP код:
#include a_samp
#include sscanf2
#include zcmd
#include DOF2
#define MAX_TIMES               25
enum tInfo {
tKills,
tMortes,
tDinheiro,
tNivel,
tPontos,
tRank
};
new 
TimeInfo[MAX_TIMES][tInfo];
CMD:criartime(playerid,params[])
{
    
format(pArquivo,sizeof(pArquivo),CAMINHO_CONTAS,pNome(playerid));
    if(
PlayerInfo[playerid][pLider] == true) return SendClientMessage(playerid,-1,"Vocк jб й lider de um time.");
    new 
NomeTime[40],esc[40];
    if(
sscanf(params,"s",esc)) return SendClientMessage(playerid,-1,"Servidor: use /criartime [nome]");
    
format(NomeTime,sizeof(NomeTime),CAMINHO_TIMES,esc);
    
DOF2_CreateFile(esc);
    
DOF2_SetInt(esc,"Cofre",TimeInfo[MAX_TIMES][tDinheiro]); //239
    
DOF2_SetInt(esc,"Nivel",TimeInfo[MAX_TIMES][tNivel]); //240
    
DOF2_SaveFile();
    return 
1;

Код HTML:
C:\Users\Win 7\Desktop\samp\SAWARS\gamemodes\SAWARS.pwn(239) : error 032: array index out of bounds (variable "TimeInfo")
C:\Users\Win 7\Desktop\samp\SAWARS\gamemodes\SAWARS.pwn(240) : error 032: array index out of bounds (variable "TimeInfo")
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


2 Errors.
Minha idйia й fazer um comando que crie um time(clan) para um gamemode de TDM. Alguйm pode me explicar por que esses erros aparecem e como solucionar?


Re: Times - Dark.Angel - 26.04.2014

Sу procurar, tem varios...
https://sampforum.blast.hk/showthread.php?tid=372164


Re: Times - Fel486 - 26.04.2014

PHP код:
CMD:criartime(playerid,params[])
{
    
format(pArquivo,sizeof(pArquivo),CAMINHO_CONTAS,pNome(playerid));
    if(
PlayerInfo[playerid][pLider] == true) return SendClientMessage(playerid,-1,"Vocк jб й lider de um time.");
    new 
NomeTime[40],esc[40];
    if(
sscanf(params,"s",esc)) return SendClientMessage(playerid,-1,"Servidor: use /criartime [nome]");
    
format(NomeTime,sizeof(NomeTime),CAMINHO_TIMES,esc);
    new 
time GetPlayerTeam(playerid);
    
DOF2_CreateFile(esc);
    
DOF2_SetInt(esc,"Cofre",TimeInfo[time][tDinheiro]); //239
    
DOF2_SetInt(esc,"Nivel",TimeInfo[time][tNivel]); //240
    
DOF2_SaveFile();
    return 
1;




Re: Times - Paramount. - 26.04.2014

Quote:
Originally Posted by Dark.Angel
Посмотреть сообщение

Se vc prestar atenзгo, nao to pedindo um sistema pronto e ruim como esse q passou. Quero resolver os problemas do meu.

Sera que tem uma alma capacitada pra isso que possa me ajudar?



Quote:
Originally Posted by Fel486
Посмотреть сообщение
PHP код:
CMD:criartime(playerid,params[])
{
    
format(pArquivo,sizeof(pArquivo),CAMINHO_CONTAS,pNome(playerid));
    if(
PlayerInfo[playerid][pLider] == true) return SendClientMessage(playerid,-1,"Vocк jб й lider de um time.");
    new 
NomeTime[40],esc[40];
    if(
sscanf(params,"s",esc)) return SendClientMessage(playerid,-1,"Servidor: use /criartime [nome]");
    
format(NomeTime,sizeof(NomeTime),CAMINHO_TIMES,esc);
    new 
time GetPlayerTeam(playerid);
    
DOF2_CreateFile(esc);
    
DOF2_SetInt(esc,"Cofre",TimeInfo[time][tDinheiro]); //239
    
DOF2_SetInt(esc,"Nivel",TimeInfo[time][tNivel]); //240
    
DOF2_SaveFile();
    return 
1;


Ah taa.. vou testar obg,mas vc poderia me explicar o pq?


Re: Times - GWMPT - 26.04.2014

pawn Код:
#define MAX_TIMES               25
Ao declarar um vector
pawn Код:
new TimeInfo[MAX_TIMES][tInfo];
com o MAX_TIMES quer dizer que o vector vai entre o index 0 e o 24.
pawn Код:
DOF2_SetInt(esc,"Cofre",TimeInfo[MAX_TIMES][tDinheiro]); //239
DOF2_SetInt(esc,"Nivel",TimeInfo[MAX_TIMES][tNivel]); //240
Aqui estбs a tentar aceder o index 25, que nгo existe.


Re: Times - Fel486 - 26.04.2014

Ao meu haver, й porque vocк definiu o valor mбximo pra 25. Ou seja, o valor da array pode ser atй 24, porque o ъltimo valor conta como espaзo "vazio".

Basta observar quando fazemos isto:

PHP код:
for(new 0MAX_PLAYERSa++)
{
    
// ...

Em toda funзгo fazemos isso. Se esse MAX_PLAYERS fosse 5, por exemplo, o cуdigo checaria o A como 0, 1, 2, 3, 4.

Ou seja, seria ENQUANTO o "a" fosse menor que o MAX_PLAYERS, que й 5.


Re: Times - GWMPT - 26.04.2014

Quote:
Originally Posted by Fel486
Посмотреть сообщение
porque o ъltimo valor conta como espaзo "vazio".
Totalmente errado.
Nуs contamos a partir de um
O computador "conta" a partir de zero.

Portanto, o "ъltimo valor" nгo existe, porque nгo foi alocado na memуria.


Re: Times - Fel486 - 26.04.2014

Quote:
Originally Posted by Kikito
Посмотреть сообщение
Totalmente errado.
Nуs contamos a partir de um
O computador "conta" a partir de zero.

Portanto, o "ъltimo valor" nгo existe, porque nгo foi alocado na memуria.
Nгo dei contra-resposta na sua. Eu jб estava digitando e nгo atualizei.

Sim, por isso que eu falei "vazio", porque eu quis dizer que ele nгo utilize o ъltimo, apenas do 0 ao 24. Й um modo de falar.

Espero que nгo me leve a mal.


Re: Times - GWMPT - 26.04.2014

Quote:
Originally Posted by Fel486
Посмотреть сообщение
Й um modo de falar.
Ok, na boa