[AJUDA] Problema com uma CallBack - Loteria! -
[DkS]JR_Junior - 02.10.2012
Olб pessoal, nгo estou entendendo uma coisa que estб acontecendo com uma callback que editei pra passar as informaзхes da loteria, quando ela sorteia um nъmero!
O que estб acontecendo? Eu seto um numero para ser sorteado, por exemplo o 20 e faзo o teste com 2 players online, ou seja, eu e outra pessoa, jб fiz com mais e deu a mesma coisa:
Todos os players ficam com o nъmero 20 e eu executo a CallBack pra efetuar o sorteio e dar a grana pra os 2 players, no caso, os quais possuem o nъmero sorteado, mas sу um estб recebendo (Eu, no caso) e sу um aparece na lista de ganhadores e na verdade eu defini pra todos que tiverem o nъmero serem sorteados! Nгo sei o que fazer mais, jб tentei de tudo, tenho vбrias Callbacks nesse mesmo estilo e nunca me deram problemas como esse!
Quem puder me ajudar eu ficarei muito feliz, sу postei aqui porque realmente me quebrou a cabeзa essa parada!
Aqui vai uma cуpia do script, bem como ela estб aqui:
Os comandos pra executar a Loteria manualmente:
pawn Код:
if(strcmp(cmd, "/test2", true) == 0)//Aqui eu executo a Callback...
{
Lotto(20);
return 1;
}
if(strcmp(cmd, "/test1", true) == 0)//Primeiro seto o nъmero pra todos online....
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
PlayerInfo[i][pLottoNr] = 20;
}
}
A CallBack da Loteria:
pawn Код:
public Lotto(number)
{
new JackpotFallen = 0;
DeletarArmasAoMorrer();
new string[256];
//new strtext[256];
new rand = random(10000);
new winner[MAX_PLAYER_NAME];
format(string, sizeof(string), "||LOTЙRICA||: O nъmero sorteado de hoje foi: %d", number);
OOCOff(COLOR_WHITE, string);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
SendClientMessage(i,COLOR_YELLOW2, "||===========| GANHADORES |===========||");
if(PlayerInfo[i][pLottoNr] == number)
{
GetPlayerName(i, winner, sizeof(winner));
format(string, 256, "|| %s - R$%d Reais", winner, Jackpot);
//strcat(strtext, string);
JackpotFallen++;
}
if(JackpotFallen != 0)
{
SendClientMessage(i,COLOR_WHITE, string);
PlayerPlaySound(i,1057,0.0,0.0,0.0);
}
if(JackpotFallen == 0)
{
SendClientMessage(i,COLOR_WHITE, "|| Nenhuma pessoa foi Sorteada! ||");
PlayerPlaySound(i,1057,0.0,0.0,0.0);
}
SendClientMessage(i,COLOR_YELLOW2, "||===================================||");
if(PlayerInfo[i][pLottoNr] == number)
{
format(string, sizeof(string), "||DKS||: Parabйns! Vocк ganhou R$%d Reais da Loteria!", Jackpot);
SendClientMessage(i, COLOR_WHITE, string);
SafeGivePlayerReal(i, Jackpot);
}
PlayerInfo[i][pLottoNr] = 0;
Jackpot += rand;
format(string, sizeof(string), "||LOTЙRICA||: O prкmio mudou para R$%d Reais! O prуximo sorteio serб daqui 1 hora!", Jackpot);
OOCOff(COLOR_LIGHTBLUE, string);
return 1;
}
}
return 1;
}
Re: [AJUDA] Problema com uma CallBack - Loteria! -
arakuta - 02.10.2012
Tem um /admins funcional?
Estude-o e vocк vai conseguir fazer seu /loteria funfar pra mais de 1 player ^^
Re: [AJUDA] Problema com uma CallBack - Loteria! -
[DkS]JR_Junior - 02.10.2012
Exatamente amigгo, a de Admins foi minha base, mas nгo tem jeito veio, dб uma olhada:
pawn Код:
if (strcmp(cmd, "/admins1", true) == 0)
{
new count = 0;
if(IsPlayerConnected(playerid))
{
SendClientMessage(playerid, COLOR_RED, " ");
SendClientMessage(playerid, COLOR_YELLOW2, "||==========| ADMINS ONLINE |==========||");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pAdmin] >= 1 && PlayerInfo[i][pAdmin] != 7 && Afk[i] ==0 && PlayerInfo[playerid][pMascarado] == 0)
{
new admtext[40];
if(PlayerInfo[i][pAdmin] == 6) { admtext = "{EEDD82}Proprietбrio{FFFFFF}"; }
else if(PlayerInfo[i][pAdmin] == 5) { admtext = "{EEDD82}Elite{FFFFFF}"; }
else if(PlayerInfo[i][pAdmin] == 4) { admtext = "{EEDD82}Sub-Elite{FFFFFF}"; }
else if(PlayerInfo[i][pAdmin] == 3) { admtext = "{EEDD82}Moderador{FFFFFF}"; }
else if(PlayerInfo[i][pAdmin] == 2) { admtext = "{EEDD82}Sub-Moderador{FFFFFF}"; }
else if(PlayerInfo[i][pAdmin] == 1) { admtext = "{EEDD82}Recruta{FFFFFF}"; }
GetPlayerName(i, sendername, sizeof(sendername));
if(PlayerInfo[i][pAdmin] >= 1 && PlayerInfo[i][pAdmin] <= 6 && PlayerInfo[i][pMascarado] == 0)
{
format(string, 80, "|| %s (%s) - Disponнvel", sendername, admtext);
SendClientMessage(playerid, COLOR_WHITE, string);
count++;
}
}
if(PlayerInfo[i][pAdmin] >= 1 && PlayerInfo[i][pAdmin] != 7 && Afk[i]==1 && PlayerInfo[i][pMascarado] == 0)
{
new admtext[40];
if(PlayerInfo[i][pAdmin] == 6) { admtext = "{EEDD82}Proprietбrio{FFFFFF}"; }
else if(PlayerInfo[i][pAdmin] == 5) { admtext = "{EEDD82}Elite{FFFFFF}"; }
else if(PlayerInfo[i][pAdmin] == 4) { admtext = "{EEDD82}Sub-Elite{FFFFFF}"; }
else if(PlayerInfo[i][pAdmin] == 3) { admtext = "{EEDD82}Moderador{FFFFFF}"; }
else if(PlayerInfo[i][pAdmin] == 2) { admtext = "{EEDD82}Sub-Moderador{FFFFFF}"; }
else if(PlayerInfo[i][pAdmin] == 1) { admtext = "{EEDD82}Recruta{FFFFFF}"; }
GetPlayerName(i, sendername, sizeof(sendername));
if(PlayerInfo[i][pAdmin] >= 1 && PlayerInfo[i][pAdmin] <= 6 && PlayerInfo[playerid][pMascarado] == 0)
{
format(string, 80, "|| %s (%s) - Ausente", sendername, admtext);
SendClientMessage(playerid, COLOR_WHITE, string);
count++;
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
}
}
}
}
}
if(count == 0)
SendClientMessage(playerid, COLOR_YELLOW2, "|| Nгo hб Admins online no momento! ||");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
return SendClientMessage(playerid, COLOR_YELLOW2, "||===================================||");
}
Re: [AJUDA] Problema com uma CallBack - Loteria! -
arakuta - 02.10.2012
Fiz aqui rapidinho, ve se funciona e tenta readptar ^^
pawn Код:
new numeros[5][1] =
{
{1},{2},{3},{4},{5}
};
pawn Код:
CMD:sorteio(playerid,params[])
{
new sorteado = random(sizeof(numeros));
new lotto[64];
format(lotto,sizeof lotto,"O nъmero %i foi sorteado!",numeros[sorteado][0]);
SendClientMessageToAll(-1,lotto);
new foisorteado = numeros[sorteado][0];
DarPremio(playerid,foisorteado);
return 1;
}
pawn Код:
stock DarPremio(playerid,foisorteado)
{
new count = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(PlayerInfo[playerid][numeroloteria] == foisorteado)
{
new informar[128];
new nome[24];
GetPlayerName(playerid,nome,sizeof nome);
format(informar,sizeof(informar),"Parabйns para %s! Ganhou nada no sorteio!",nome);
SendClientMessageToAll(-1,informar);
count ++;
}
}
if(count == 0)
{
SendClientMessageToAll(-1,"Ninguйm ganhou na loteria!");
return 1;
}
return 1;
}
Aqui ele so faz o sorteio de um numero random!
Retira a condiзгo da playerinfo que todos os players serгo sorteados (faзa isso pra um teste)
Qualquer coisa tamo ae
@@ EDIT @@
Esqueci de checar se o player ta conectado ali no loop... Ele vai floodar se nгo checar entгo coloca a condiзгo if(IsPlayerConnected(i)) dentro do loop... Abraзos
Re: [AJUDA] Problema com uma CallBack - Loteria! -
ForT - 02.10.2012
O correto seria sem o return 1; dentro do loop.
pawn Код:
public Lotto(number)
{
new JackpotFallen = 0;
DeletarArmasAoMorrer();
new string[256];
//new strtext[256];
new rand = random(10000);
new winner[MAX_PLAYER_NAME];
format(string, sizeof(string), "||LOTЙRICA||: O nъmero sorteado de hoje foi: %d", number);
OOCOff(COLOR_WHITE, string);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
SendClientMessage(i,COLOR_YELLOW2, "||===========| GANHADORES |===========||");
if(PlayerInfo[i][pLottoNr] == number)
{
GetPlayerName(i, winner, sizeof(winner));
format(string, 256, "|| %s - R$%d Reais", winner, Jackpot);
//strcat(strtext, string);
JackpotFallen++;
}
if(JackpotFallen != 0)
{
SendClientMessage(i,COLOR_WHITE, string);
PlayerPlaySound(i,1057,0.0,0.0,0.0);
}
if(JackpotFallen == 0)
{
SendClientMessage(i,COLOR_WHITE, "|| Nenhuma pessoa foi Sorteada! ||");
PlayerPlaySound(i,1057,0.0,0.0,0.0);
}
SendClientMessage(i,COLOR_YELLOW2, "||===================================||");
if(PlayerInfo[i][pLottoNr] == number)
{
format(string, sizeof(string), "||DKS||: Parabйns! Vocк ganhou R$%d Reais da Loteria!", Jackpot);
SendClientMessage(i, COLOR_WHITE, string);
SafeGivePlayerReal(i, Jackpot);
PlayerInfo[i][pLottoNr] = 0;
}
}
}
Jackpot += rand;
format(string, sizeof(string), "||LOTЙRICA||: O prкmio mudou para R$%d Reais! O prуximo sorteio serб daqui 1 hora!", Jackpot);
OOCOff(COLOR_LIGHTBLUE, string);
return 1;
}
Re: [AJUDA] Problema com uma CallBack - Loteria! -
[DkS]JR_Junior - 05.10.2012
Bom galera, eu refiz de outra forma o sistema e agora estб legal, deixei mais realista, em vez de ser automбtico o sorteio e todos saberem quem ganhou agora cada pessoa que comprou o nъmero vai ter que digitar um comando depois do sorteio pra ver se o seu nъmero foi sorteado, se foi ele recebe a grana! 100% sem Bug!
Obrigado a todos que tentaram ajudar, + Reputaзгo pra todos! Valeu!