SA-MP Forums Archive
TextDrawSetString, IsPlayerInArea, and more bugs! - 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)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: TextDrawSetString, IsPlayerInArea, and more bugs! (/showthread.php?tid=77802)



TextDrawSetString, IsPlayerInArea, and more bugs! - Remi-X - 14.05.2009

Big problem:
With a lotos functions, as TextDrawSetString, Godmode, IsPlayerInArea, and more, will everything only work on PlayerID 0. If i'm playerid 1, none of these functions will work.

What can the fault be?


Re: TextDrawSetString, IsPlayerInArea, and more bugs! - Dreftas - 14.05.2009

Why don't you show the code?


Re: TextDrawSetString, IsPlayerInArea, and more bugs! - Remi-X - 14.05.2009

Quote:
Originally Posted by Dreftas
Why don't you show the code?
I don't know why that must be needed, but here it is:
pawn Код:
new Text:CarBar[MAX_PLAYERS];
new Text:CarBarBG;
new Text:CarBarBorder;
new Text:HealthBarBG;
new Text:ArmourBarBG;
new Text:TextdrawMoney[MAX_PLAYERS];
new Text:HealthBar[MAX_PLAYERS];
new Text:ArmourBar[MAX_PLAYERS];

forward PlayerStats(playerid);
forward AreaCheck(playerid);
forward MoneyCheck(playerid);

public OnGameModeInit()
{
  //CarHealth Border
    CarBarBorder = TextDrawCreate(546.000000,41.000000,".");
    TextDrawAlignment(CarBarBorder,1);
    TextDrawBackgroundColor(CarBarBorder,BLACK);
    TextDrawFont(CarBarBorder,3);
    TextDrawLetterSize(CarBarBorder,0.06,2.9);
    TextDrawColor(CarBarBorder,BLACK);
    TextDrawSetOutline(CarBarBorder,1);
    TextDrawSetProportional(CarBarBorder,1);
    TextDrawSetShadow(CarBarBorder,1);

    //CarHealth BackGround
    CarBarBG = TextDrawCreate(548.000000,42.000000,".");
    TextDrawAlignment(CarBarBG,1);
    TextDrawBackgroundColor(CarBarBG,GRAY);
    TextDrawFont(CarBarBG,3);
    TextDrawLetterSize(CarBarBG,0.058,2.549999);
    TextDrawColor(CarBarBG,GRAY);
    TextDrawSetOutline(CarBarBG,1);
    TextDrawSetProportional(CarBarBG,1);
    TextDrawSetShadow(CarBarBG,1);
    //Health BackGround
    HealthBarBG = TextDrawCreate(548.000000,52.000000,"...................................................................................................");
    TextDrawAlignment(HealthBarBG,1);
    TextDrawBackgroundColor(HealthBarBG,GRAY);
    TextDrawFont(HealthBarBG,3);
    TextDrawLetterSize(HealthBarBG,0.058,2.549999);
    TextDrawColor(HealthBarBG,GRAY);
    TextDrawSetOutline(HealthBarBG,1);
    TextDrawSetProportional(HealthBarBG,1);
    TextDrawSetShadow(HealthBarBG,1);

    //Armour BackGround
    ArmourBarBG = TextDrawCreate(548.000000,30.500000,"...................................................................................................");
    TextDrawAlignment(ArmourBarBG,1);
    TextDrawBackgroundColor(ArmourBarBG,GRAY);
    TextDrawFont(ArmourBarBG,3);
    TextDrawLetterSize(ArmourBarBG,0.058,2.549999);
    TextDrawColor(ArmourBarBG,GRAY);
    TextDrawSetOutline(ArmourBarBG,1);
    TextDrawSetProportional(ArmourBarBG,1);
    TextDrawSetShadow(ArmourBarBG,1);

    SetTimer("PlayerStats", 1000, true);
    SetTimer("AreaCheck", 1000, true);
    SetTimer("MoneyCheck", 500, true);
}

public OnPlayerConnect(playerid)
{
//Money TextDraw
    TextdrawMoney[playerid] = TextDrawCreate(498.600000,76.000000,"$00000000");
    TextDrawAlignment(TextdrawMoney[playerid],0);
    TextDrawBackgroundColor(TextdrawMoney[playerid],BLACK);
    TextDrawFont(TextdrawMoney[playerid],3);
    TextDrawLetterSize(TextdrawMoney[playerid],0.59,2.45);
    TextDrawColor(TextdrawMoney[playerid],WHITE);
    TextDrawSetOutline(TextdrawMoney[playerid],1);
    TextDrawSetProportional(TextdrawMoney[playerid],1);

    //HealthBar
    HealthBar[playerid] = TextDrawCreate(548.000000,52.000000,"...................................................................................................");
    TextDrawAlignment(HealthBar[playerid],1);
    TextDrawBackgroundColor(HealthBar[playerid],WHITE);
    TextDrawFont(HealthBar[playerid],3);
    TextDrawLetterSize(HealthBar[playerid],0.058,2.549999);
    TextDrawColor(HealthBar[playerid],WHITE);
    TextDrawSetOutline(HealthBar[playerid],1);
    TextDrawSetProportional(HealthBar[playerid],1);
    TextDrawSetShadow(HealthBar[playerid],1);

    //ArmourBar
    ArmourBar[playerid] = TextDrawCreate(548.000000,30.500000,"...................................................................................................");
    TextDrawAlignment(ArmourBar[playerid],1);
    TextDrawBackgroundColor(ArmourBar[playerid],WHITE);
    TextDrawFont(ArmourBar[playerid],3);
    TextDrawLetterSize(ArmourBar[playerid],0.058,2.549999);
    TextDrawColor(ArmourBar[playerid],WHITE);
    TextDrawSetOutline(ArmourBar[playerid],1);
    TextDrawSetProportional(ArmourBar[playerid],1);
    TextDrawSetShadow(ArmourBar[playerid],1);
   
    //CarHealthBar
    CarBar[playerid] = TextDrawCreate(548.000000,42.000000,"...................................................................................................");
    TextDrawAlignment(CarBar[playerid],1);
    TextDrawBackgroundColor(CarBar[playerid],WHITE);
    TextDrawFont(CarBar[playerid],3);
    TextDrawLetterSize(CarBar[playerid],0.058,2.549999);
    TextDrawColor(CarBar[playerid],WHITE);
    TextDrawSetOutline(CarBar[playerid],1);
    TextDrawSetProportional(CarBar[playerid],1);
    TextDrawSetShadow(CarBar[playerid],1);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    TextDrawHideForPlayer(playerid,ArmourBarBG);
    TextDrawDestroy(CarBar[playerid]);
    TextDrawHideForPlayer(playerid,CarBarBorder);
    TextDrawHideForPlayer(playerid,CarBarBG);
    TextDrawDestroy(TextdrawMoney[playerid]);
    TextDrawDestroy(HealthBar[playerid]);
    TextDrawDestroy(ArmourBar[playerid]);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    TextDrawShowForPlayer(playerid,HealthBarBG);
    TextDrawShowForPlayer(playerid,ArmourBarBG);
    TextDrawHideForPlayer(playerid,CarBar[playerid]);
    TextDrawHideForPlayer(playerid,CarBarBorder);
    TextDrawHideForPlayer(playerid,CarBarBG);
    TextDrawShowForPlayer(playerid,TextdrawMoney[playerid]);
    TextDrawSetString(HealthBar[playerid],"...................................................................................................");
    TextDrawSetString(ArmourBar[playerid],"...................................................................................................");
    TextDrawShowForPlayer(playerid,HealthBar[playerid]);
    TextDrawShowForPlayer(playerid,ArmourBar[playerid]);
    return 1;
}

public PlayerStats(playerid)
{
    new Float:Health[MAX_PLAYERS];
    new Float:Armour[MAX_PLAYERS];
    GetPlayerHealth(playerid, Health[playerid]);
    GetPlayerArmour(playerid, Armour[playerid]);

    //HealthBar
    if(Health[playerid] == 100){TextDrawSetString(HealthBar[playerid],"...................................................................................................");}
    else if(Health[playerid] >= 99){TextDrawSetString(HealthBar[playerid],"...................................................................................................");}
    else if(Health[playerid] >= 98){TextDrawSetString(HealthBar[playerid],"..................................................................................................");}
//blah
    else if(Health[playerid] >= 2){TextDrawSetString(HealthBar[playerid],"..");}
    else if(Health[playerid] >= 1){TextDrawSetString(HealthBar[playerid],".");}
    else if(Health[playerid] >= 0){TextDrawHideForPlayer(playerid,HealthBar[playerid]);}

    //ArmourBar
    if(Armour[playerid] >= 100){TextDrawSetString(ArmourBar[playerid],"...................................................................................................");}
    else if(Armour[playerid] >= 99){TextDrawSetString(ArmourBar[playerid],"...................................................................................................");}
//blah
    else if(Armour[playerid] >= 3){TextDrawSetString(ArmourBar[playerid],"...");}
    else if(Armour[playerid] >= 2){TextDrawSetString(ArmourBar[playerid],"..");}
    else if(Armour[playerid] >= 1){TextDrawSetString(ArmourBar[playerid],".");}

    //Health adding
    if(Health[playerid] < 100.0)
    {
        SetPlayerHealth(playerid,Health[playerid]+1.0);
    }

    if(IsPlayerInAnyVehicle(playerid))
    {
        new Float:CarHealth[MAX_PLAYERS];
        GetVehicleHealth(GetPlayerVehicleID(playerid), CarHealth[playerid]);

        //CarHealthBar
        if(CarHealth[playerid] >= 1000.0){TextDrawSetString(CarBar[playerid],"...................................................................................................");}
        else if(CarHealth[playerid] >= 990.0){TextDrawSetString(CarBar[playerid],"...................................................................................................");}
//Blah
        else if(CarHealth[playerid] >= 20.0){TextDrawSetString(CarBar[playerid],"..");}
        else if(CarHealth[playerid] >= 10.0){TextDrawSetString(CarBar[playerid],".");}
        else if(CarHealth[playerid] >= 0.0)
        {
            TextDrawHideForPlayer(playerid,CarBar[playerid]);
            TextDrawHideForPlayer(playerid,CarBarBorder);
            TextDrawHideForPlayer(playerid,CarBarBG);
        }

        //SetHealth
        if(InArea[playerid] == false)
        {
            if(CarHealth[playerid] < 1000.0)
            {
                SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
            }
        }
    }
    return 1;
}

public AreaCheck(playerid)
{
    new Float:px, Float:py, Float:pz;
    GetPlayerPos(playerid, px, py, pz);
    if(px <= 435.8742 && px >= -69.6844 && py <= 2145.3838 && py >= 1632.2196)
    {
        InArea[playerid] = true;
        if(WeaponGived[playerid] == false)
        {
            GivePlayerWeapon(playerid, 29, 1000);
            GivePlayerWeapon(playerid, 31, 500);
            WeaponGived[playerid] = true;
        }
    }
}

public MoneyCheck(playerid)
{
    new PlayerMoneyCheck[MAX_PLAYERS];
    new string[256];
    PlayerMoneyCheck[playerid] = GetPlayerMoney(playerid);
    format(string, sizeof(string), "$%08d", PlayerMoneyCheck[playerid]);
    TextDrawSetString(TextdrawMoney[playerid], string);
}
So, that was a lot of code. TextDrawSetString, Health Adding and cargod, and IsPlayerInArea only works for playerid 0, all players above 0 will not have all this things. They see only the textdraws, but it never changes.


Re: TextDrawSetString, IsPlayerInArea, and more bugs! - Joe Staff - 14.05.2009

SetTimer("PlayerStats", 1000, true);
SetTimer("AreaCheck", 1000, true);
SetTimer("MoneyCheck", 500, true);

playerid isn't being acknowledged here, look up SetTimerEx in wiki.sa-mp.com


Re: TextDrawSetString, IsPlayerInArea, and more bugs! - Remi-X - 14.05.2009

Ok, i shall try it if i know how to use that.
(funcname[], interval, repeating, const format[], {Float,_}:...)
I understand the first 3, but where for is the fourth and fifth? I don't know how to use that?


Re: TextDrawSetString, IsPlayerInArea, and more bugs! - Weirdosport - 14.05.2009

Example:

pawn Код:
SetTimerEx("Function", 1000, 0, "d", playerid);
//SetTimerEx("Name", time(ms), repeat?, d = integer s = string, contents of integers/strings separated by commas)
//SetTimerEx("Bob", 1000, 1, "dfffs", playerid, 0.0, 5.0, 10.0, "hey you guys")

...

forward Function;
public Function(playerid)
{

}



Re: TextDrawSetString, IsPlayerInArea, and more bugs! - Remi-X - 14.05.2009

Must i place that than in OnPlayerConnect? Because i get the Undefined symbol(playerid) error when i place it into my GM..


Re: TextDrawSetString, IsPlayerInArea, and more bugs! - Badger(new) - 14.05.2009

replace the settimers, which are for players, with SetTimerEx, so:
Код:
Replace:
SetTimer("MoneyCheck", 500, true);
With:
SetTimer("MoneyCheck", 500, true,"d",playerid);
and since that requires a playerid, put it under OnPlayerConnect Instead of OnGameModeInit. Or OnPlayerSpawn. Just whenever you want it to start, as long as it's a callback that is for a certain player.