Overlapping text
#1

When using the command/viptex if I already have a text on the machine instead of delete text il overlaps ... How can I solve?
HTML Code:
CMD:vipname(playerid, params[])
{
    new
        text[6],
        vText,
        query[128];

		    if( PlayerInfo[ playerid ][ pDonateRank ] < 0 )
		return SendClientMessage(playerid, COLOR_WHITE, "Trebuie sa ai VIP !");

    new vehicleid = GetPlayerVehicleID(playerid);
    if(sscanf(params, "s[50]", text)) return SCM(playerid, COLOR_WHITE, "Info: /vipname [name]");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER && GetPlayerState(playerid) != PLAYER_STATE_PASSENGER) return SCM(playerid, COLOR_WHITE, "Nu te afli intr-un vehicul");
    {
        format(query, sizeof(query), "SELECT * FROM `cars` WHERE `id`='%d' ORDER BY `id`",playerid);
        if(OwnedVeh(vehicleid))
        {
            if(strlen(text) > 6) return SCM(playerid, COLOR_WHITE, "Ai depasit cele 6 caractere!");
            if(Viptext[playerid] == 0)
            {
                vText =CreateObject(19327, -2597.0762, -2630.4270, -5.3536, -87.6999, 90.4001, -97.1805);
                SetObjectMaterialText(vText, text, 0, 50, "Arial", 25, 1, 0xFFFFFFFF, 0, 1);
                AttachObjectToVehicle(vText, vehicleid, 0.0, -1.9, 0.3, 270.0, 0.0, 0.0);
            }
            else
            {
            if(Viptext[playerid] == 0)
            {
                vText =CreateObject(19327, -2597.0762, -2630.4270, -5.3536, -87.6999, 90.4001, -97.1805);
                SetObjectMaterialText(vText, text, 0, 50, "Arial", 25, 1, -16777216, 0, 1);
                AttachObjectToVehicle(vText, vehicleid, 0.000000, -1.634998, 0.394999, -78.364997, 0.000000, 0.000000);
            }
                else if(Viptext[playerid] == 0)
                {
                vText =CreateObject(19327, -2597.0762, -2630.4270, -5.3536, -87.6999, 90.4001, -97.1805);
                SetObjectMaterialText(vText, text, 0, 50, "Arial", 25, 1, -16777216, 0, 1);
                AttachObjectToVehicle(vText, vehicleid, 0.000000, 2.115000, 0.294999, -104.519912, -177.885086, 0.000000);
            }
 				format(query, sizeof(query), "UPDATE `cars` SET `Viptext`='%s' WHERE `ID`='%s'",Viptext[playerid], vText);
				mysql_query(SQL ,query);
        }
    }
  }
  return 1;
}
Reply
#2

Use

PHP Code:
DestroyObject(vText); 
before creating new text object.
Reply
#3

Well and where to put it I do not destroy the text elsewhere. Genus nor grab to put and delete
Reply
#4

PHP Code:
CMD:vipname(playeridparams[])
{
    new 
text[6], vTextquery[128];
    if( 
PlayerInfoplayerid ][ pDonateRank ] < )    return SendClientMessage(playeridCOLOR_WHITE"Trebuie sa ai VIP !");
    new 
vehicleid GetPlayerVehicleID(playerid);
    if(
sscanf(params"s[50]"text)) return SCM(playeridCOLOR_WHITE"Info: /vipname [name]");
    if(
GetPlayerState(playerid) != PLAYER_STATE_DRIVER && GetPlayerState(playerid) != PLAYER_STATE_PASSENGER) return SCM(playeridCOLOR_WHITE"Nu te afli intr-un vehicul");
    {
        
format(querysizeof(query), "SELECT * FROM `cars` WHERE `id`='%d' ORDER BY `id`",playerid);
        if(
OwnedVeh(vehicleid))
        {
            if(
strlen(text) > 6) return SCM(playeridCOLOR_WHITE"Ai depasit cele 6 caractere!");
            
DestroyObject(vText);
            
vText =CreateObject(19327, -2597.0762, -2630.4270, -5.3536, -87.699990.4001, -97.1805);
            
SetObjectMaterialText(vTexttext050"Arial"2510xFFFFFFFF01);
            
AttachObjectToVehicle(vTextvehicleid0.0, -1.90.3270.00.00.0);
            
format(querysizeof(query), "UPDATE `cars` SET `Viptext`='%s' WHERE `ID`='%s'",Viptext[playerid], vText);
            
mysql_query(SQL ,query);
        }
    }
    return 
1;

Reply
#5

No, all name overlap
Reply
#6

vText will always be 0 which is invalid objectid anyway. You should store the objectid globally.

pawn Code:
// global:
new gPlayer_VipObjectMaterial[MAX_PLAYERS];

// OnPlayerConnect:
gPlayer_VipObjectMaterial[playerid] = INVALID_OBJECT_ID;

// when destroying (on disconnect for example or anywhere else) without re-creating the object, always reset to avoid problems:
DestroyObject(gPlayer_VipObjectMaterial[playerid]);
gPlayer_VipObjectMaterial[playerid] = INVALID_OBJECT_ID;

// command /vipname
DestroyObject(gPlayer_VipObjectMaterial[playerid]);
gPlayer_VipObjectMaterial[playerid] = CreateObject(19327, -2597.0762, -2630.4270, -5.3536, -87.6999, 90.4001, -97.1805);
SetObjectMaterialText(gPlayer_VipObjectMaterial[playerid], text, 0, 50, "Arial", 25, 1, 0xFFFFFFFF, 0, 1);
AttachObjectToVehicle(gPlayer_VipObjectMaterial[playerid], vehicleid, 0.0, -1.9, 0.3, 270.0, 0.0, 0.0);
By the way, you don't need sscanf for a single string parameter. You can use isnull + params.
Reply
#7

Nice but why not save in mysql text
Code:
            format(query, sizeof(query), "UPDATE `cars` SET `Viptext`='%s' WHERE `ID`='%s'",Viptext[playerid], vText);
            mysql_query(SQL ,query);
Reply
#8

This line has no use, remove it:
pawn Code:
format(query, sizeof(query), "SELECT * FROM `cars` WHERE `id`='%d' ORDER BY `id`",playerid);
About the code in your post above, vText holds the text so it must be first and then the player's unique SQL ID and not the in-game ID.
Reply
#9

And how do I do?
Reply
#10

Bump
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)