Ayuda con public
#1

Hola tengo este sistema de PD echo por mi; pero tiene errores, cuando llega el PD a todo el mundo solo muestra; pero en realidad solo se lo esta dando a 1 sola persona.
їCual es el error y como lo corrijo?

Quote:

public PayDay(playerid)
{
if (PlayerInfo[playerid][pCellplan] == 2)
{
new string [128];
new payday = 100*PlayerInfo[playerid][pLevel];
new plan = 10;
new total = payday-plan;
PlayerInfo[playerid][pAccount]=PlayerInfo[playerid][pAccount]+total;
PlayerInfo[playerid][pExp]++;
SendClientMessageToAll(COLOR_RED,"|_______________ __Pago_Diario_________________|");
format(string, sizeof(string), "|Pago del estado: $%d Balance de cuenta: %d", payday, PlayerInfo[playerid][pAccount]);
SendClientMessageToAll(COLOR_RED, string);
format(string, sizeof(string), "|Plan celular: $-10 Total: $%d", total);
SendClientMessageToAll(COLOR_RED, string);
PlayerPlayMusic(playerid);
}
else
{
new string [128];
new payday = 100*PlayerInfo[playerid][pLevel];
PlayerInfo[playerid][pAccount]=PlayerInfo[playerid][pAccount]+payday;
PlayerInfo[playerid][pExp]++;
SendClientMessageToAll(COLOR_RED,"|_______________ __Pago_Diario_________________|");
format(string, sizeof(string), "|Pago del estado: $%d |Cuenta bancaria: %d", payday, PlayerInfo[playerid][pAccount]);
SendClientMessageToAll(COLOR_RED, string);
format(string, sizeof(string), "|Total: $%d", payday);
SendClientMessageToAll(COLOR_RED, string);
PlayerPlayMusic(playerid);
}

}

Reply
#2

El problema es el parбmetro "playerid", en este caso no es necesario crear un argumento asн, se crea un bucle

pawn Код:
public PayDay()
{
    new string [128];
    for(new i; i < GetMaxPlayers(); i++) if(IsPlayerConnected(i)) {
        if(PlayerInfo[i][pCellplan] == 2){
            new payday = 100*PlayerInfo[i][pLevel];
            new plan = 10;
            new total = payday-plan;
            PlayerInfo[i][pAccount]=PlayerInfo[i][pAccount]+total;
            PlayerInfo[i][pExp]++;
            SendClientMessage(i, COLOR_RED,"|_______________ __Pago_Diario_________________|");
            format(string, sizeof(string), "|Pago del estado: $%d Balance de cuenta: %d", payday, PlayerInfo[i][pAccount]);
            SendClientMessage(i, COLOR_RED, string);
            format(string, sizeof(string), "|Plan celular: $-10 Total: $%d", total);
            SendClientMessage(i, COLOR_RED, string);
            PlayerPlayMusic(i);
        }
        else
        {
            new payday = 100*PlayerInfo[i][pLevel];
            PlayerInfo[i][pAccount]=PlayerInfo[i][pAccount]+payday;
            PlayerInfo[i][pExp]++;
            SendClientMessage(i, COLOR_RED,"|_______________ __Pago_Diario_________________|");
            format(string, sizeof(string), "|Pago del estado: $%d |Cuenta bancaria: %d", payday, PlayerInfo[i][pAccount]);
            SendClientMessage(i, COLOR_RED, string);
            format(string, sizeof(string), "|Total: $%d", payday);
            SendClientMessage(i, COLOR_RED, string);
            PlayerPlayMusic(i);
        }
    }
}
Reply
#3

Esta bien, pero ahora el PD llega doble, їQue puede ser?
Reply
#4

Antes de agregar el bucle? si tu PayDay llega cuando el minuto esta a 0 es posible que llegue dos veces por los 30 segundos o algo asi dependiendo de tu timer, si es asi intenta esto >

pawn Код:
new PayDayFinish = 0;

public PayDay()
{
    if(PayDayFinish == 1)
    {
        PayDayFinish = 0;
        return 0;
    }
    PayDayFinish=1;

    new string [128];
    for(new i; i < GetMaxPlayers(); i++) if(IsPlayerConnected(i)) {
        if(PlayerInfo[i][pCellplan] == 2){
            new payday = 100*PlayerInfo[i][pLevel];
            new plan = 10;
            new total = payday-plan;
            PlayerInfo[i][pAccount]=PlayerInfo[i][pAccount]+total;
            PlayerInfo[i][pExp]++;
            SendClientMessage(i, COLOR_RED,"|_______________ __Pago_Diario_________________|");
            format(string, sizeof(string), "|Pago del estado: $%d Balance de cuenta: %d", payday, PlayerInfo[i][pAccount]);
            SendClientMessage(i, COLOR_RED, string);
            format(string, sizeof(string), "|Plan celular: $-10 Total: $%d", total);
            SendClientMessage(i, COLOR_RED, string);
            PlayerPlayMusic(i);
        }
        else
        {
            new payday = 100*PlayerInfo[i][pLevel];
            PlayerInfo[i][pAccount]=PlayerInfo[i][pAccount]+payday;
            PlayerInfo[i][pExp]++;
            SendClientMessage(i, COLOR_RED,"|_______________ __Pago_Diario_________________|");
            format(string, sizeof(string), "|Pago del estado: $%d |Cuenta bancaria: %d", payday, PlayerInfo[i][pAccount]);
            SendClientMessage(i, COLOR_RED, string);
            format(string, sizeof(string), "|Total: $%d", payday);
            SendClientMessage(i, COLOR_RED, string);
            PlayerPlayMusic(i);
        }
    }
}
Reply
#5

Hola, el error sigue; el sv da un PD por cada jugador conectado.
Reply
#6

podrнas mostrarme el timer (en caso de que asн sea) de el sistema? el cуdigo lo que hace es darle un payday a cada jugador conectado.
Reply
#7

SetTimer("PayDay",3600000,1); Hay esta men.
Reply
#8

Me he dado cuenta que no es que de el PD doble, sino que muestra el PD de todos.

Edit:

Perdoname creo saber el error, soy un completo idiota.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)