PDA

Просмотр полной версии : [Вопрос] Индикатор



Killer
19.05.2017, 09:04
Помогите пожалуйста доработать индикатор.

Вот сам индикатор, который должен до 100 % доходить,


LoadBenz[playerid][1] = CreatePlayerTextDraw(playerid, 477.143493, 378.166656, "usebox");
PlayerTextDrawLetterSize(playerid, LoadBenz[playerid][1], 0.000000, 2.830372);
PlayerTextDrawTextSize(playerid, LoadBenz[playerid][1], 187.751098, 0.000000);
PlayerTextDrawAlignment(playerid, LoadBenz[playerid][1], 1);
PlayerTextDrawColor(playerid, LoadBenz[playerid][1], 0);
PlayerTextDrawUseBox(playerid, LoadBenz[playerid][1], true);
PlayerTextDrawBoxColor(playerid, LoadBenz[playerid][1], -2030618337);
PlayerTextDrawSetShadow(playerid, LoadBenz[playerid][1], 0);
PlayerTextDrawSetOutline(playerid, LoadBenz[playerid][1], 0);
PlayerTextDrawFont(playerid, LoadBenz[playerid][1], 0);

Запуск индикатора


CMD:testing(playerid)
{
SetTimerEx("ProgressLoad",100,false,"i",playerid);
SendClientMessage(playerid,-1,!"Loading");
}

Паблик, который нужно исправить, но пример дан:


forward ProgressLoad(playerid);
public ProgressLoad(playerid)
{
static Float: progress;
PlayerTextDrawTextSize(playerid, LoadBenz[playerid][1], (477.143493 = (( 102 * Progress) / 100)), 0.0);
PlayerTextDrawShow(playerid, LoadBenz[playerid][1]);
if(progress < 100.0) SetTimerEx("ProgressLoad",100,false,"i",playerid);
else SendClientMessage(playerid, -1,"çàãðóçèëñÿ");
}

TextSize - Тут я намудил многое, help..

Long-
19.05.2017, 10:38
можно задебажить все значения и выяснить причину, а можно гадать сутками и ничего не делать :)

Killer
19.05.2017, 13:07
можно задебажить все значения и выяснить причину, а можно гадать сутками и ничего не делать :)

Я понял точку вашего зрения. Если вы не можете помочь, зачем обсуждать?

Мне нужно функция Progress, ибо я делаю не так -как надо!

ziggi
19.05.2017, 13:22
forward ProgressLoad(playerid);
public ProgressLoad(playerid)
{
new Float:progress = GetPVarFloat(playerid, "progress_load");
progress += 1.0;
SetPVarFloat(playerid, "progress_load", progress);

PlayerTextDrawTextSize(playerid, LoadBenz[playerid][1], 477.143493 + progress, 0.0);
PlayerTextDrawShow(playerid, LoadBenz[playerid][1]);

if (progress < 100.0) {
SetTimerEx("ProgressLoad", 100, false, "i", playerid);
} else {
SendClientMessage(playerid, -1,"çàãðóçèëñÿ");
DeletePVar(playerid, "progress_load");
}
}

Killer
19.05.2017, 14:02
Исправил, закройте.

DeimoS
19.05.2017, 15:29
Можно и без pVar реализовать


CMD:testing(playerid)
{
SetTimerEx("ProgressLoad", 100, false, "if", playerid, 0.0);
SendClientMessage(playerid, -1, !"Loading");
}


forward ProgressLoad(playerid, Float:progress);
public ProgressLoad(playerid, Float:progress)
{
PlayerTextDrawTextSize(playerid, LoadBenz[playerid][1], 477.143493 + progress, 0.0);
PlayerTextDrawShow(playerid, LoadBenz[playerid][1]);

if(floatcmp(progress, 100.0) == -1)
SetTimerEx("ProgressLoad", 100, false, "if", playerid, progress+=1.0);
else
SendClientMessage(playerid, -1,"загрузился");
return 1;
}