[Ajuda] pq vale o ultimo que logou?
#1

criei um sistema de payday e separei os salarios de cada emprego... porйm o que acontece й, o ultimo player que entrar "seta" para todos o emprego dele... se eu sou desempregado mas entra um detetive eu recebo o salario de detetive... wtf, fiz assim:

em ongamemodeinit
pawn Код:
SetTimer("PayDay", 60000, true);
pawn Код:
forward PayDay(playerid);
public PayDay(playerid)
{

   
   for(new i=0; i< MAX_PLAYERS; i++)
   {
   if(IsPlayerConnected(i))
   {  
   TextDrawShowForPlayer(i, textopayday);
   SalarioHacker(i);
   SalarioDesemp(i);
   SalarioAdvogado(i);
   SalarioCaminhoneiro(i);
   SalarioDetetive(i);
   SalarioPescador(i);
   SalarioCacador(i);
   SalarioLadrao(i);
   timerpayday = SetTimer("DestruirTextPayDay", 20000, false);
  }
  }
  }
As stocks estao assim:
pawn Код:
stock SalarioDesemp(playerid)
{
  new string[128];
  if(pEmprego[playerid][Emprego] == 0)
  {
  GivePlayerMoney(playerid, SDESEMP);
  pDados[playerid][Dinheiro] += SDESEMP;
  format(string, sizeof(string), "~b~Voce e ~r~%s ~b~e recebeu seu salario de ~g~$%i", GetEmpName(pEmprego[playerid][Emprego]),SDESEMP);
  TextDrawSetString(Text:textopayday, string);

 }
}
Reply
#2

Acho que estб assim porque vocк criou esse Loop para todos os players.
Troca (i) para (playerid)
Reply
#3

Quote:
Originally Posted by johntrybescripter
Посмотреть сообщение
criei um sistema de payday e separei os salarios de cada emprego... porйm o que acontece й, o ultimo player que entrar "seta" para todos o emprego dele... se eu sou desempregado mas entra um detetive eu recebo o salario de detetive... wtf, fiz assim:

em ongamemodeinit
pawn Код:
SetTimer("PayDay", 60000, true);
pawn Код:
forward PayDay(playerid);
public PayDay(playerid)
{

   
   for(new i=0; i< MAX_PLAYERS; i++)
   {
   if(IsPlayerConnected(i))
   {  
   TextDrawShowForPlayer(i, textopayday);
   SalarioHacker(i);
   SalarioDesemp(i);
   SalarioAdvogado(i);
   SalarioCaminhoneiro(i);
   SalarioDetetive(i);
   SalarioPescador(i);
   SalarioCacador(i);
   SalarioLadrao(i);
   timerpayday = SetTimer("DestruirTextPayDay", 20000, false);
  }
  }
  }
As stocks estao assim:
pawn Код:
stock SalarioDesemp(playerid)
{
  new string[128];
  if(pEmprego[playerid][Emprego] == 0)
  {
  GivePlayerMoney(playerid, SDESEMP);
  pDados[playerid][Dinheiro] += SDESEMP;
  format(string, sizeof(string), "~b~Voce e ~r~%s ~b~e recebeu seu salario de ~g~$%i", GetEmpName(pEmprego[playerid][Emprego]),SDESEMP);
  TextDrawSetString(Text:textopayday, string);

 }
}
porque voce nao faz uma stock geral para todos os empregos em vez de voce estar a separar, assim voce checa cada emprego tipo:

pawn Код:
if(pEmprego[playerid][Emprego] == 0)
  {
 

 }
else if(pEmprego[playerid][Emprego] == 1)
  {
 

 }
Reply
#4

eu tentei criar tb sendo "playerid", mas sу paga salario pro primeiro que entrar.. e quando ele sai paga para o segundo que entrou... mas nunca para todos... em i paga o salario para todos mas conforme o emprego do ultimo player que entrou! pqp!



Tive que usar sua imagem!
Reply
#5

Troque
PHP код:
forward PayDay(playerid);
public 
PayDay(playerid
Para
PHP код:
forward PayDay();
public 
PayDay() 
Nгo hб motivo de usar playerid.

@Edit
PHP код:
forward PayDay();
public 
PayDay()

    for(new 
i=0iMAX_PLAYERSi++)
    {
        if(
IsPlayerConnected(i))
        {   
            
TextDrawShowForPlayer(itextopayday);
            if(
pEmprego[i][Emprego] == 0)
            {
                
SalarioHacker(i);
            }
            else if(
pEmprego[i][Emprego] == 1)
            {
                
SalarioDesemp(i);
            }
            
SalarioAdvogado(i);
            
SalarioCaminhoneiro(i);
            
SalarioDetetive(i);
            
SalarioPescador(i);
            
SalarioCacador(i);
            
SalarioLadrao(i);
            
timerpayday SetTimer("DestruirTextPayDay"20000false);
        }
    }

Faзa a verificaзгo da profissгo igual o cуdigo acima
Reply
#6

Eu fiz isso, porem como estou sozinho agora nao da pra saber se mais de dois players recebem... sу tem 1 detalhe, sу abre o text de "desempregado" mas eu recebo o valor normal.. sу o text..

eu devo tirar o playerid das stock tb? e fazer por i ?
Reply
#7

Nгo, as stocks vocк deixa com playerid.
Reply
#8

eu deixo a stock verificando tb? tipo assim:

pawn Код:
stock SalarioDesemp(playerid)
{
  new string[128];
  if(pEmprego[playerid][Emprego] == 0)
  {
  GivePlayerMoney(playerid, SDESEMP);
  pDados[playerid][Dinheiro] += SDESEMP;
  format(string, sizeof(string), "~b~Voce e ~r~%s ~b~e recebeu seu salario de ~g~$%i", GetEmpName(pEmprego[playerid][Emprego]),SDESEMP);
  TextDrawSetString(Text:textopayday, string);
  TextDrawShowForPlayer(playerid, textopayday);
  }
}
ou deixo assim:
pawn Код:
stock SalarioDesemp(playerid)
{
  new string[128];
  GivePlayerMoney(playerid, SDESEMP);
  pDados[playerid][Dinheiro] += SDESEMP;
  format(string, sizeof(string), "~b~Voce e ~r~%s ~b~e recebeu seu salario de ~g~$%i", GetEmpName(pEmprego[playerid][Emprego]),SDESEMP);
  TextDrawSetString(Text:textopayday, string);
  TextDrawShowForPlayer(playerid, textopayday);
 
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)