SA-MP Forums Archive
SetTimerEx overwrites the last timer on that function? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: SetTimerEx overwrites the last timer on that function? (/showthread.php?tid=491320)



SetTimerEx overwrites the last timer on that function? - Hoborific - 30.01.2014

Title really explains everything, I have a money textdraw that indicates your money has increased, i'm player 1, if player 2 gets the textdraw after me, he gets a timer set which seems to kill my timer before it gets called, leaving the textdraw on my screen indefinitely.

pawn Код:
SetTimerEx("HideMoneyTXD",3000,0,"d",playerid);



Re: SetTimerEx overwrites the last timer on that function? - xF4Life - 30.01.2014

Try this:
Код:
SetTimerEx("HideMoneyTXD", 3000, false,"i",playerid);
and make your "forward" code return with an "1".


Re: SetTimerEx overwrites the last timer on that function? - Hoborific - 30.01.2014

The problem is it's calling for both players individually and works as such individually, but if they both get money at a similar time of each other it seems the last SetTimerEx is the only one to make it to being called.


Re: SetTimerEx overwrites the last timer on that function? - xF4Life - 30.01.2014

you have "forward HideMoneyTXD(playerid)"?


Re: SetTimerEx overwrites the last timer on that function? - CuervO - 30.01.2014

Is the textdraw a player defined variable?

The problem might reside in the fact that the there's only one textdraw for multiple players.

How does the HideMoneyTXD function work?


Re: SetTimerEx overwrites the last timer on that function? - Hoborific - 30.01.2014

It's so simple I don't understand why it doesn't work, here.

pawn Код:
new Text:TXD_MoneyChange[MAX_PLAYERS];

forward HUDCreate(playerid);
public HUDCreate(playerid)
{
    TXD_MoneyChange[playerid] = TextDrawCreate(606.000000, 96.000000, "-$1337");
    TextDrawAlignment(TXD_MoneyChange[playerid], 3);
    TextDrawBackgroundColor(TXD_MoneyChange[playerid], 255);
    TextDrawFont(TXD_MoneyChange[playerid], 2);
    TextDrawLetterSize(TXD_MoneyChange[playerid], 0.329999, 1.300000);
    TextDrawColor(TXD_MoneyChange[playerid], -16776961);
    TextDrawSetOutline(TXD_MoneyChange[playerid], 1);
    TextDrawSetProportional(TXD_MoneyChange[playerid], 1);
    TextDrawSetSelectable(TXD_MoneyChange[playerid], 0);
   
    // just other textdraws being created here
   
    return 1;
}

forward HideMoneyTXD(playerid);
public HideMoneyTXD(playerid)
{
    TextDrawHideForPlayer(playerid,TXD_MoneyChange[playerid]);
    return 1;
}

OnPlayerDialogResp

when login/reg
            HUDCreate(playerid);



Re: SetTimerEx overwrites the last timer on that function? - CuervO - 30.01.2014

Quote:
Originally Posted by Hoborific
Посмотреть сообщение
It's so simple I don't understand why it doesn't work, here.
While it might not be the solution (and defenitely not suggested) to your code a work around could be defining a variable to store the timer ID per player?

new hidetimer[MAX_PLAYERS char];
hidetimer[playerid] = SetTimerEx(...);

I don't understand how the timer could overlay the other, if they are both called at different times for different parameters.

Also consider using player textdraws for such things? They wont eat up your global textdraw limit and they get automatically destroyed when a player leaves the server.


Re: SetTimerEx overwrites the last timer on that function? - Hoborific - 30.01.2014

Because there's a hardcoded limit of 256 player textdraws, I have about 10 textdraws that could be displayed at any one time, so it's really limiting my max player limit, considering i've peaked over 50 before I would rather not limit to below that.


Re: SetTimerEx overwrites the last timer on that function? - CuervO - 30.01.2014

Quote:
Originally Posted by Hoborific
Посмотреть сообщение
Because there's a hardcoded limit of 256 player textdraws, I have about 10 textdraws that could be displayed at any one time, so it's really limiting my max player limit, considering i've peaked over 50 before I would rather not limit to below that.
Created Serverwise (Global) 2048
Created Serverwise (Per-Player) 256

https://sampwiki.blast.hk/wiki/Limits

That says 256 player textdraws per player. My interpretation could be wrong though :P


Re: SetTimerEx overwrites the last timer on that function? - Hoborific - 30.01.2014

oh wow, I didn't notice it was per player, I just checked from a_samp, Thank you I didn't realize that. it wont fix my problem but it certainly is a good discovery.