PDA

View Full Version : 3DTextLable


Alpay0098
01/04/2015, 07:09 PM
Hi,
I've got one problem that I couldn't fix them.
Someone please read below and please please fix them!
There's some 3DTextLables over House Pickups that Labels shows some information about House owner (You know what Im saying if you played in RolePlay servers)
But these 3DTextLables doesn't work and I still don't know what is problem. I've checked it for too many times but still have the same problem. (PAWN Compiler works properly and doesn't stop compiling and compiles)
Here are some codes about that.
Everything in codes has defined and doesn't have any problem.


Codes:
This code is when I wanna create a house : (doesn't spawn 3DTextLable)
CMD:createhouse(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 1337) return SendClientMessage(playerid, COLOR_GRAD1, " You are not authorized to use that command !");
new price, interiorid, houseid, Float:X, Float:Y, Float:Z, Float:A, check = 0;
if(sscanf(params, "dd", price, interiorid))
{
SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /createhouse [price] [interior id]");
SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /viewinterior [1-31]");
return 1;
}
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, A);
for(new i = 1; i < sizeof(HouseInfo); i++)
{
if(HouseInfo[i][hCreated] == 0)
{
check = 1;
houseid = i;
break;
}
}
if(!check) return SendClientMessage(playerid, COLOR_GRAD2, " 2000/2000 houses have already been created !");

HouseInfo[houseid][hOutsideX] = X;
HouseInfo[houseid][hOutsideY] = Y;
HouseInfo[houseid][hOutsideZ] = Z;
HouseInfo[houseid][hOutsideA] = A;
HouseInfo[houseid][hCreated] = 1;
HouseInfo[houseid][hValue] = price;
strdel(HouseInfo[houseid][hTag], 0, strlen(HouseInfo[houseid][hTag]));
strins(HouseInfo[houseid][hTag], "House", 0);
SetHouseInterior(houseid, interiorid);
if(HouseInfo[houseid][hOutsidePickup]) { DestroyDynamicPickup(HouseInfo[houseid][hOutsidePickup]); }
HouseInfo[houseid][hOutsidePickup] = CreateDynamicPickup(1273, 1, HouseInfo[houseid][hOutsideX], HouseInfo[houseid][hOutsideY], HouseInfo[houseid][hOutsideZ]);
new location[MAX_ZONE_NAME], string3[500];
Get2DZone(location, MAX_ZONE_NAME, HouseInfo[houseid][hOutsideX], HouseInfo[houseid][hOutsideY], HouseInfo[houseid][hOutsideZ]);
format(string3, sizeof(string3), "This property is for sale!\nAddress: %d %s\nType /buyhouse to buy it for $%d", houseid, location, HouseInfo[houseid][hValue]);
if(HouseInfoText3D[houseid]) { Delete3DTextLabel(HouseInfoText3D[houseid]); }
HouseInfoText3D[houseid] = Create3DTextLabel(string3, COLOR_HOUSETEXT, HouseInfo[houseid][hOutsideX], HouseInfo[houseid][hOutsideY], HouseInfo[houseid][hOutsideZ]+0.88, 20.0, 0, 1);
Update3DTextLabelText(HouseInfoText3D[houseid], COLOR_HOUSETEXT, string3);
format(string, sizeof(string), " You have created houseid %d with the price of $%d and interiorid %d", houseid, price, interiorid);
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}

This code is for LoadHouses in OnGameModeInit : (I don't does it have any relation with not showing 3DTextLable or does)
public LoadHouses()
{
new arrCoords[26][126], strFromFile2[256], File: file = fopen("houses.cfg", io_read);
if( file)
{
HouseInfo[0][hOutsidePickup] = CreateDynamicPickup(1273, 1, 0.0, 0.0, 0.0);
new idx = 1;
while (idx < sizeof(HouseInfo))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');
strmid(HouseInfo[idx][hOwner], arrCoords[0], 0, strlen(arrCoords[0]), 255);
HouseInfo[idx][hCreated] = strval(arrCoords[1]);
HouseInfo[idx][hOwned] = strval(arrCoords[2]);
HouseInfo[idx][hValue] = strval(arrCoords[3]);
HouseInfo[idx][hOutsideX] = floatstr(arrCoords[4]);
HouseInfo[idx][hOutsideY] = floatstr(arrCoords[5]);
HouseInfo[idx][hOutsideZ] = floatstr(arrCoords[6]);
HouseInfo[idx][hOutsideA] = floatstr(arrCoords[7]);
HouseInfo[idx][hInsideX] = floatstr(arrCoords[8]);
HouseInfo[idx][hInsideY] = floatstr(arrCoords[9]);
HouseInfo[idx][hInsideZ] = floatstr(arrCoords[10]);
HouseInfo[idx][hInsideA] = floatstr(arrCoords[11]);
HouseInfo[idx][hInterior] = strval(arrCoords[12]);
HouseInfo[idx][hLocked] = strval(arrCoords[13]);
HouseInfo[idx][hAlarm] = strval(arrCoords[14]);
HouseInfo[idx][hAlarmStatus] = strval(arrCoords[15]);
HouseInfo[idx][hCash] = strval(arrCoords[16]);
HouseInfo[idx][hMaterials] = strval(arrCoords[17]);
HouseInfo[idx][hPot] = strval(arrCoords[18]);
HouseInfo[idx][hCrack] = strval(arrCoords[19]);
HouseInfo[idx][hGun1] = strval(arrCoords[20]);
HouseInfo[idx][hGun2] = strval(arrCoords[21]);
HouseInfo[idx][hGun3] = strval(arrCoords[22]);
HouseInfo[idx][hGun4] = strval(arrCoords[23]);
strmid(HouseInfo[idx][hTag], arrCoords[24], 0, strlen(arrCoords[24]), 255);
new rpos = strfind(HouseInfo[idx][hTag], "\r", true);
new npos = strfind(HouseInfo[idx][hTag], "\n", true);
if(rpos != -1) { strdel(HouseInfo[idx][hTag], rpos, rpos+2); }
if(npos != -1) { strdel(HouseInfo[idx][hTag], npos, npos+2); }
HouseInfo[idx][hLevel] = strval(arrCoords[25]);
if(HouseInfo[idx][hOutsidePickup]) { DestroyDynamicPickup(HouseInfo[idx][hOutsidePickup]); }
HouseInfo[idx][hOutsidePickup] = CreateDynamicPickup(1273, 1, HouseInfo[idx][hOutsideX], HouseInfo[idx][hOutsideY], HouseInfo[idx][hOutsideZ]);
new location[MAX_ZONE_NAME], string3[500];
Get2DZone(location, MAX_ZONE_NAME, HouseInfo[idx][hOutsideX], HouseInfo[idx][hOutsideY], HouseInfo[idx][hOutsideZ]);
if(HouseInfo[idx][hOwned] == 1)
{
format(string3, sizeof(string3), "%s\nOwner: %s\nAddress: %d %s\nType /enter to go inside.", HouseInfo[idx][hTag], HouseInfo[idx][hOwner], idx, location);
HouseInfoText3D[idx] = Create3DTextLabel(string3, COLOR_HOUSETEXT, HouseInfo[idx][hOutsideX], HouseInfo[idx][hOutsideY], HouseInfo[idx][hOutsideZ]+0.88, 20.0, 0, 1);
Update3DTextLabelText(HouseInfoText3D[idx], COLOR_HOUSETEXT, string3);
}
else
{
format(string3, sizeof(string3), "This property is for sale!\nAddress: %d %s\nType /buyhouse to buy it for $%d", idx, location, HouseInfo[idx][hValue]);
HouseInfoText3D[idx] = Create3DTextLabel(string3, COLOR_HOUSETEXT, HouseInfo[idx][hOutsideX], HouseInfo[idx][hOutsideY], HouseInfo[idx][hOutsideZ]+0.88, 20.0, 0, 1);
Update3DTextLabelText(HouseInfoText3D[idx], COLOR_HOUSETEXT, string3);
}
format(string, sizeof(string), "%0.2f,%0.2f,%0.2f", HouseInfo[idx][hOutsideX], HouseInfo[idx][hOutsideY], HouseInfo[idx][hOutsideZ]);
if(strcmp(string, "0.00,0.00,0.00", true) == 0)
{
DestroyDynamicPickup(HouseInfo[idx][hOutsidePickup]);
Delete3DTextLabel(HouseInfoText3D[idx]);
}
idx++;
}
fclose(file);
}
return 1;
}
This code is for editing house : (It's like the previous code)
CMD:edithouse(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] >= 1337)
{
new tmp2[128];
new houseid;
if(sscanf(params, "s[128] ", tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /edithouse [action] [houseid]");
SendClientMessage(playerid, COLOR_GRAD2, "ACTIONS: entrance, interior, value");
return 1;
}
if(strcmp(tmp, "entrance", true) == 0)
{
if(sscanf(params, "s[8] d", tmp2, houseid))
{
SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /edithouse entrance [houseid]");
return 1;
}
new Float:X, Float:Y, Float:Z, Float:A;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, A);
if(HouseInfo[houseid][hCreated] == 0) return SendClientMessage(playerid, COLOR_GRAD1," That house has not even been created yet !");
HouseInfo[houseid][hOutsideX] = X;
HouseInfo[houseid][hOutsideY] = Y;
HouseInfo[houseid][hOutsideZ] = Z;
HouseInfo[houseid][hOutsideA] = A;
if(HouseInfo[houseid][hOutsidePickup]) { DestroyDynamicPickup(HouseInfo[houseid][hOutsidePickup]); }
HouseInfo[houseid][hOutsidePickup] = CreateDynamicPickup(1273, 1, HouseInfo[houseid][hOutsideX], HouseInfo[houseid][hOutsideY], HouseInfo[houseid][hOutsideZ]);
new location[MAX_ZONE_NAME], string3[500];
Get2DZone(location, MAX_ZONE_NAME, HouseInfo[houseid][hOutsideX], HouseInfo[houseid][hOutsideY], HouseInfo[houseid][hOutsideZ]);
Delete3DTextLabel(HouseInfoText3D[houseid]);
if(HouseInfo[houseid][hOwned] == 1)
{
format(string3, sizeof(string3), "%s\nOwner: %s\nAddress: %d %s\nType /enter to go inside.", HouseInfo[houseid][hTag], HouseInfo[houseid][hOwner], houseid, location);
HouseInfoText3D[houseid] = Create3DTextLabel(string3, COLOR_HOUSETEXT, HouseInfo[houseid][hOutsideX], HouseInfo[houseid][hOutsideY], HouseInfo[houseid][hOutsideZ]+0.88, 20.0, 0, 1);
Update3DTextLabelText(HouseInfoText3D[houseid], COLOR_HOUSETEXT, string3);
}
else
{
format(string3, sizeof(string3), "This property is for sale!\nAddress: %d %s\nType /buyhouse to buy it for $%d", houseid, location, HouseInfo[houseid][hValue]);
HouseInfoText3D[houseid] = Create3DTextLabel(string3, COLOR_HOUSETEXT, HouseInfo[houseid][hOutsideX], HouseInfo[houseid][hOutsideY], HouseInfo[houseid][hOutsideZ]+0.88, 20.0, 0, 1);
Update3DTextLabelText(HouseInfoText3D[houseid], COLOR_HOUSETEXT, string3);
}
format(string, sizeof(string), " You have moved houseid %d's entrance.", houseid);
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}
else if(strcmp(tmp, "interior", true) == 0)
{
new interiorid;
if(sscanf(params, "s[128] dd", tmp2, houseid, interiorid))
{
SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /edithouse interior [houseid] [interiorid]");
SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /viewinterior [1-31]");
return 1;
}
if(HouseInfo[houseid][hCreated] == 0) return SendClientMessage(playerid, COLOR_GRAD1, " That house has not even been created yet !");
SetHouseInterior(houseid, interiorid);
format(string, sizeof(string), " You have edited houseid %d's interiorid to %d.", houseid, interiorid);
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}
else if(strcmp(tmp, "value", true) == 0)
{
new value;
if(sscanf(params, "s[128] dd", tmp2, houseid, value))
{
SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /edithouse value [houseid] [new value]");
return 1;
}
if(HouseInfo[houseid][hCreated] == 0) return SendClientMessage(playerid, COLOR_GRAD1, " That house has not even been created yet !");
HouseInfo[houseid][hValue] = value;
new location[MAX_ZONE_NAME], string3[500];
Get2DZone(location, MAX_ZONE_NAME, HouseInfo[houseid][hOutsideX], HouseInfo[houseid][hOutsideY], HouseInfo[houseid][hOutsideZ]);
if(HouseInfo[houseid][hOwned] == 1)
{
format(string3, sizeof(string3), "%s\nOwner: %s\nAddress: %d %s\nType /enter to go inside.", HouseInfo[houseid][hTag], HouseInfo[houseid][hOwner], houseid, location);
Update3DTextLabelText(HouseInfoText3D[houseid], COLOR_HOUSETEXT, string3);
}
else
{
format(string3, sizeof(string3), "This property is for sale!\nAddress: %d %s\nType /buyhouse to buy it for $%d", houseid, location, HouseInfo[houseid][hValue]);
Update3DTextLabelText(HouseInfoText3D[houseid], COLOR_HOUSETEXT, string3);
}
format(string, sizeof(string), " You have edited houseid %d's value to $%d.", houseid, value);
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}
else
{
format(string, sizeof(string), " Invalid action \"%s\" !", tmp);
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Shoma dastresie kafi baraye anjame inkar ra ndarid !");
}
return 1;
}
And This code is for Saving houses on OnGameModeExit : (I don't think problem is from this code)
public SaveHouses()
{
new idx = 1;
new File:file;
file = fopen("houses.cfg", io_write);
fclose(file);
file = fopen("houses.cfg", io_append);
while(idx < sizeof(HouseInfo))
{
new coordsstring[512];
format(coordsstring, sizeof(coordsstring), "%s|%d|%d|%d|%f|%f|%f|%f|%f|%f|%f|%f|%d|%d|%d|%d|%d |%d|%d|%d|%d|%d|%d|%d|%s|%d\r\n",
HouseInfo[idx][hOwner],
HouseInfo[idx][hCreated],
HouseInfo[idx][hOwned],
HouseInfo[idx][hValue],
HouseInfo[idx][hOutsideX],
HouseInfo[idx][hOutsideY],
HouseInfo[idx][hOutsideZ],
HouseInfo[idx][hOutsideA],
HouseInfo[idx][hInsideX],
HouseInfo[idx][hInsideY],
HouseInfo[idx][hInsideZ],
HouseInfo[idx][hInsideA],
HouseInfo[idx][hInterior],
HouseInfo[idx][hLocked],
HouseInfo[idx][hAlarm],
HouseInfo[idx][hAlarmStatus],
HouseInfo[idx][hCash],
HouseInfo[idx][hMaterials],
HouseInfo[idx][hPot],
HouseInfo[idx][hCrack],
HouseInfo[idx][hGun1],
HouseInfo[idx][hGun2],
HouseInfo[idx][hGun3],
HouseInfo[idx][hGun4],
HouseInfo[idx][hTag],
HouseInfo[idx][hLevel]);
fwrite(file, coordsstring);
idx++;
}
fclose(file);
return 1;
}

Please help me if you can resolve this problem!

CrossOv3r
01/04/2015, 07:55 PM
Can't understand the objective of this, at "createhouse" cmd:

if(HouseInfoText3D[houseid]) { Delete3DTextLabel(HouseInfoText3D[houseid]); }

Anyway, why? lol. seems weird to me

Alpay0098
01/04/2015, 09:02 PM
You say if I delete this section everything will be OK?

Alpay0098
02/04/2015, 04:10 PM
Can't understand the objective of this, at "createhouse" cmd:

if(HouseInfoText3D[houseid]) { Delete3DTextLabel(HouseInfoText3D[houseid]); }

Anyway, why? lol. seems weird to me
I've tested that.
Unfortunately still doesn't work.
Help please.