PDA

Просмотр полной версии : [Вопрос] Создание текста на объектах



Jackal
20.11.2015, 14:51
При вводе команды, появляется только объект, но без текста. Как создать текст?



CMD:newtext(playerid)
{
new Float:pX,Float:pY,Float:pZ;
GetPlayerPos(playerid,Float:pX,Float:pY,Float:pZ);
new objectid = CreateDynamicObject(19353, Float:pX+3, Float:pY, Float:pZ, 0.0, 0.0, 0.0, 0, 0, -1, 200);
SetDynamicObjectMaterialText(objectid, 0, "{FF0000}Text", OBJECT_MATERIAL_SIZE_256x128, "Arial", 24, 1, 0xFFFFFFFF, 0, 0);
return 1;
}


streamer.inc


/*
* Copyright (C) 2014 Incognito
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

native SetDynamicObjectMaterialText(objectid, materialindex, const text[], materialsize = OBJECT_MATERIAL_SIZE_256x128, const fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);

Daniel_Cortez
20.11.2015, 15:08
В первую очередь проверьте, виден ли текст при таких же настройках (размер материала, шрифт, текст, размер шрифта, etc., цвет) на обычном объекте, а не на динамическом. Если на обычных объектах текст виден, а на динамических нет, то это баг стримера и вполне возможно, что его уже исправили в самой последней версии.

Jackal
20.11.2015, 16:10
В первую очередь проверьте, виден ли текст при таких же настройках (размер материала, шрифт, текст, размер шрифта, etc., цвет) на обычном объекте, а не на динамическом. Если на обычных объектах текст виден, а на динамических нет, то это баг стримера и вполне возможно, что его уже исправили в самой последней версии.

Попробовал ещё двумя способами, результата также нет.

1] Обычный объект:


CMD:newtext(playerid)
{
new Float:pX,Float:pY,Float:pZ;
GetPlayerPos(playerid,Float:pX,Float:pY,Float:pZ);
new objectid = CreateObject(19353, Float:pX+3,Float:pY,Float:pZ, 0.000000, 0.000000, 0.000000);
SetDynamicObjectMaterialText(objectid, 0, "{FF0000}Text", OBJECT_MATERIAL_SIZE_256x128, "Arial", 24, 1, 0xFFFFFFFF, 0, 0);
return 1;
}


2] Обычная функция:


CMD:newtext(playerid)
{
new Float:pX,Float:pY,Float:pZ;
GetPlayerPos(playerid,Float:pX,Float:pY,Float:pZ);
new objectid = CreateObject(19353, Float:pX+3,Float:pY,Float:pZ, 0.000000, 0.000000, 0.000000);
SetObjectMaterialText(objectid, "Text", 0, OBJECT_MATERIAL_SIZE_256x128, "Arial", 24, 1, 0xFFFF0000, 0xFF000000, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
return 1;
}

Mazzilla
20.11.2015, 19:03
CMD:newtext(playerid)
{
new Float:pX,Float:pY,Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
new objectid = CreateDynamicObject(19353, pX+3, pY, pZ, 0.0, 0.0, 0.0, 0, 0, -1, 200);
SetDynamicObjectMaterialText(objectid, 0, "{FF0000}Text", OBJECT_MATERIAL_SIZE_256x128, "Arial", 24, 1, 0xFFFFFFFF, 0, 0);
return 1;
}
А если так?

Jackal
20.11.2015, 19:11
CMD:newtext(playerid)
{
new Float:pX,Float:pY,Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
new objectid = CreateDynamicObject(19353, pX+3, pY, pZ, 0.0, 0.0, 0.0, 0, 0, -1, 200);
SetDynamicObjectMaterialText(objectid, 0, "{FF0000}Text", OBJECT_MATERIAL_SIZE_256x128, "Arial", 24, 1, 0xFFFFFFFF, 0, 0);
return 1;
}
А если так?

Спасибо, конечно, за участие, но нет, не помогло...

Daniel_Cortez
21.11.2015, 06:44
Сверил порядок аргументов с теми, что в статье на SA:MP wiki (SetObjectMaterialText), вроде бы всё сходится.
Скорее всего, объект просто не использует ту часть текстуры, на которой вы наносите текст. Попробуйте нанести текст по центру текстуры. Например, можно вставить в начало текста несколько символов переноса строки или поменять выравнивание текста (OBJECT_MATERIAL_TEXT_ALIGN_CENTER последним параметром в SetObjectMaterialText). Либо может помочь смена ID материала (3-й аргумент).

Jackal
22.11.2015, 09:46
Сверил порядок аргументов с теми, что в статье на SA:MP wiki (SetObjectMaterialText), вроде бы всё сходится.
Скорее всего, объект просто не использует ту часть текстуры, на которой вы наносите текст. Попробуйте нанести текст по центру текстуры. Например, можно вставить в начало текста несколько символов переноса строки или поменять выравнивание текста (OBJECT_MATERIAL_TEXT_ALIGN_CENTER последним параметром в SetObjectMaterialText). Либо может помочь смена ID материала (3-й аргумент).

Всё перепробовал, разные индексы, объекты, переносы строки, выравнивание по центру... результат один и тот же - при вводе команды, создается только объект и всё, текста нет.