16.03.2014, 06:52
Проблема с SetObjectMaterialText.
После нескольких подряд изменений одного из параметров одного и тоже объекта перестаёт работать ф-ия SetObjectMaterialText.
Допустим поменял цвет шрифта, через пару секунд поменял снова цвет шрифта этого же объекта и ф-ия SetObjectMaterialText перестаёт работать полностью.
Кто сталкивался?
Пробовал ставить перед SetObjectMaterialText(objectid, text, materialindex, materialsize, fontface, fontsize, bold, fontcolor, backcolor, textalignment);
SetObjectMaterial(objectid, 0, 0, "none", "none", 0);
и
SetObjectMaterialText(objectid, "none", materialindex, materialsize, "Calibri", 28, 0, 0xFFFF8200, 0xFFFAFAFA, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
и
защиту от ввода одинаковых параметров
Ни чего не помогает.
вот полный код
Такое ощущение что надо ставить защиту от частого изменения параметров.
После нескольких подряд изменений одного из параметров одного и тоже объекта перестаёт работать ф-ия SetObjectMaterialText.
Допустим поменял цвет шрифта, через пару секунд поменял снова цвет шрифта этого же объекта и ф-ия SetObjectMaterialText перестаёт работать полностью.
Кто сталкивался?
Пробовал ставить перед SetObjectMaterialText(objectid, text, materialindex, materialsize, fontface, fontsize, bold, fontcolor, backcolor, textalignment);
SetObjectMaterial(objectid, 0, 0, "none", "none", 0);
и
SetObjectMaterialText(objectid, "none", materialindex, materialsize, "Calibri", 28, 0, 0xFFFF8200, 0xFFFAFAFA, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
и
защиту от ввода одинаковых параметров
Ни чего не помогает.
вот полный код
pawn Код:
stock SetObjectMaterialTextEx(playerid, objectid, text[], materialindex, materialsize,
fontface[], fontsize, bold, fontcolor, backcolor, textalignment)
{
new timers = GetTickCount();
if(ANTIFLOOD == 1)
{
if((GetTickCount() - GetPVarInt(playerid, "ObjectMaterial")) < 2000)
{
SendClientMessage(playerid, COLOR_RED, "CEPBEP: {800000}Вы можете использовать SetObjectMaterialText только раз в две секунды.");
return 0;
}
}//флуд конец
/*format(strings, sizeof(strings), "SetObjectMaterialText(%d[%d], %s[%s])",
objectid, LastPosterInfo[NP[playerid]][ppObjectID],
text, LastPosterInfo[NP[playerid]][ppText]);
SendClientMessage(playerid, -1, strings);
format(strings, sizeof(strings), "SetObjectMaterialText(fontface: %s[%s], fontsize: %d[%d])",
fontface, LastPosterInfo[NP[playerid]][ppFont],
fontsize, LastPosterInfo[NP[playerid]][ppSize]);
SendClientMessage(playerid, -1, strings);
format(strings, sizeof(strings), "SetObjectMaterialText(fontcolor: %x[%x], backcolor: %x[%x])",
fontcolor, LastPosterInfo[NP[playerid]][ppColor],
backcolor, LastPosterInfo[NP[playerid]][ppBack]);
SendClientMessage(playerid, -1, strings);*/
if( objectid == LastPosterInfo[NP[playerid]][ppObjectID] &&
!strcmp(text, LastPosterInfo[NP[playerid]][ppText], true) &&
!strcmp(fontface, LastPosterInfo[NP[playerid]][ppFont], true) &&
fontsize == LastPosterInfo[NP[playerid]][ppSize] &&
fontcolor == LastPosterInfo[NP[playerid]][ppColor] &&
backcolor == LastPosterInfo[NP[playerid]][ppBack]
) { SendClientMessage(playerid, -1, "Ни чего не изменено"); return 0; }
LastPosterInfo[NP[playerid]][ppObjectID] = objectid;
strmid(LastPosterInfo[NP[playerid]][ppText], text, 0, 128, 255);
strmid(LastPosterInfo[NP[playerid]][ppFont], fontface, 0, 16, 255);
LastPosterInfo[NP[playerid]][ppSize] = fontsize;
LastPosterInfo[NP[playerid]][ppColor] = fontcolor;
LastPosterInfo[NP[playerid]][ppBack] = backcolor;
//SetObjectMaterial(objectid, 0, 0, "none", "none", 0);
//SetObjectMaterialText(objectid, "none", materialindex, materialsize, "Calibri", 28, 0, 0xFFFF8200, 0xFFFAFAFA, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
SetPVarInt(playerid, "ObjectMaterial", GetTickCount());
return SetObjectMaterialText(objectid, text, materialindex, materialsize, fontface, fontsize, bold, fontcolor, backcolor, textalignment);
//return 1;
}