Why this bugs
#1

Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(vehicleid) == 418) //BMX
    {
        if(GetPlayerScore(playerid) < 50)
        {
            RemovePlayerFromVehicle(playerid);
            SendClientMessage(playerid,0xAA3333AA,"You need 50 score to drive this car.");
        }
        SetTimerEx("wincash", 60000, true, "i", playerid);
    }
    return 1;
}
//Now outside any callback.
forward wincash(playerid);
public wincash(playerid)
{
    GivePlayerMoney(playerid, 20);
    return 1;
}


Why this bugs ?
When i sit in car i get 20 . but i need to make when i sit in car and when 1 Minute runs out then i get money
Reply
#2

The timer shouldn't be called before 60000 milliseconds has passed, but if it does, you could always make a global tickcount variable to check if 60000 milliseconds has indeed passed:

On top of your script:
pawn Код:
new
    gTickCount;
Above the SetTimerEx-line:
pawn Код:
gTickCount = tickcount();
And here's the timer function:
pawn Код:
forward wincash(playerid);
public wincash(playerid)
{
    if(( tickcount() - gTickCount ) > 60000 )
    GivePlayerMoney( playerid, 20 );
    return 1;
}
I hope this works for you.
Reply
#3

First:
WHAT Do you want to do? фO
I dont get it ...
Reply
#4

Код:
#include <a_samp>

#define FILTERSCRIPT
new gTickCount;
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(vehicleid) == 418) //BMX
    {
        if(GetPlayerScore(playerid) < 50)
        {
            RemovePlayerFromVehicle(playerid);
            SendClientMessage(playerid,0xAA3333AA,"You need 50 score to drive this car.");
        }
        gTickCount = tickcount();
    }
    return 1;
}
forward wincash(playerid);
public wincash(playerid)
{
    if(( tickcount() - gTickCount ) > 60000 )
    GivePlayerMoney( playerid, 20 );
    return 1;
}
Good Code ?
Reply
#5

1st Dont set looping timer, "true" means it will loop untill you kill it, also put return 1; if score is lower then 50, else it will start timer anyways, and will get cash, also in wincash(playerid) check if player is still in the same vehicle
Reply
#6

Quote:
Originally Posted by ikey07
Посмотреть сообщение
1st Dont set looping timer, "true" means it will loop untill you kill it
What if he wants to loop it?

Quote:
Originally Posted by truckingserver
Посмотреть сообщение
Good Code ?
Almost. You shouldn't remove your SetTimer even though you added the tickcount.
Reply
#7

I need to make after one minute runs out ( When im in car ) to receive money,
Reply
#8

Код:
#include <a_samp>

#define FILTERSCRIPT
new gTickCount;
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(vehicleid) == 418) //BMX
    {
        if(GetPlayerScore(playerid) < 50)
        {
            RemovePlayerFromVehicle(playerid);
            SendClientMessage(playerid,0xAA3333AA,"You need 50 score to drive this car.");
        }
        gTickCount = tickcount();
    }
    return 1;
}
forward wincash(playerid);
public wincash(playerid)
{
    if(( tickcount() - gTickCount ) > 60000 )
    GivePlayerMoney( playerid, 20 );
    return 1;
}
Didint get money at all
Reply
#9

Here, let me give a sample code:
pawn Код:
#include <a_samp>

#define FILTERSCRIPT
new gTickCount;
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(vehicleid) == 418) //BMX
    {
        if(GetPlayerScore(playerid) < 50)
        {
            RemovePlayerFromVehicle(playerid);
            SendClientMessage(playerid,0xAA3333AA,"You need 50 score to drive this car.");
        }
        gTickCount = tickcount();
        SetTimerEx("wincash", 60000, false, "i", playerid);
    }
    return 1;
}
forward wincash(playerid);
public wincash(playerid)
{
    if(( tickcount() - gTickCount ) > 60000 )
    GivePlayerMoney( playerid, 20 );
    return 1;
}
Reply
#10

Quote:
Originally Posted by LarzI
Посмотреть сообщение
Here, let me give a sample code:
pawn Код:
#include <a_samp>

#define FILTERSCRIPT
new gTickCount;
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new vehicleid = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(vehicleid) == 418) //BMX
    {
        if(GetPlayerScore(playerid) < 50)
        {
            RemovePlayerFromVehicle(playerid);
            SendClientMessage(playerid,0xAA3333AA,"You need 50 score to drive this car.");
        }
        gTickCount = tickcount();
        SetTimerEx("wincash", 60000, false, "i", playerid);
    }
    return 1;
}
forward wincash(playerid);
public wincash(playerid)
{
    if(( tickcount() - gTickCount ) > 60000 )
    GivePlayerMoney( playerid, 20 );
    return 1;
}



Now its ok ))))))))
but i get money only 1 time ,
i need to get every minute (((((((((
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)