Если создать 3d текст для игрока, то только ему он и будет виден. Это не учел.
Если только так
Но текст не обновляетсяPHP код:
for(new i = 0; i < MAX_PLAYERS; i++)
HUD3D[playerid] = CreateDynamic3DTextLabel("•", -1, 0.0, 0.0, 0.05, 25, .attachedplayer = playerid, .playerid = i);
Предлагаю использовать OnPlayerStreamIn/OnPlayerStreamOut, а не OnPlayerSpawn. Тогда и циклы никакие использовать не нужно будет, и будут известны нужные ID
А создавать нужно двумерный массив, ибо для одного админа потребуется создать большое число 3d текстов для каждого игрока. То бишь, запись должна выглядеть так:
PHP код:
HUD3D[id_админа][id_игрока] = CreateDynamic3DTextLabel(...);
Последний раз редактировалось DeimoS; 17.09.2016 в 23:04.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Я об этом явно написал в этом посте: "Параметр playerid в функции CreateDynamic3DTextLabel обозначает для какого игрока этот 3D текст будет создан. То есть для кого он будет виден. ". Не знаю как это можно было не учесть...
Ты сам себе придумал проблему и пытаешься её решить, твой код записывается так:
Было бы проще, если бы ты сразу написал то, чего ты хочешь добиться.PHP код:
HUD3D[playerid] = CreateDynamic3DTextLabel("•", -1, 0.0, 0.0, 0.05, 25, .attachedplayer = playerid);
Обновление будет?
- - - Добавлено - - -PHP код:
foreach(Player, i)
UpdateDynamic3DTextLabelText(HUD3D[playerid][i], 0xFFFFFFAA, string_hud);
И показал сам код. Прикреплять текст к игроку и так мог, а вот разное отображения для разных игроков нет.
Благодаря вам в мире сейчас грустит один маленький Дэймос. Надеюсь вы довольны :'(
Повторяю ещё раз, проще всё сделать через OnPlayerStreamIn/OnPlayerStreamOut. Вот как всё будет выглядеть:
Обновление делаешь через секундный таймер (можно для пущего эффекта создать итератор, в котором будут хранится ID всех админов + итератор, в котором будет хранится инфа о том, для кого был создан 3d текст. И уже этими итераторами будешь обновлять. Сам над оптимизацией подумай, крч) и через какой-нибудь OnPlayerWeaponShot.PHP код:
new Text3D:HUD_3D[MAX_PLAYERS][MAX_PLAYERS] =
{
{Text3D:-1, Text3D:-1, ...},
{Text3D:-1, Text3D:-1, ...},
...
};
public OnPlayerStreamIn(playerid, forplayerid)
{
if(pInfo[forplayerid][pAdmin])
{
HUD_3D[forplayerid][playerid] = CreateDynamic3DTextLabel("•", -1, 0.0, 0.0, 0.05, 25, playerid, forplayerid);
}
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
if(pInfo[forplayerid][pAdmin])
{
DestroyDynamic3DTextLabel(HUD_3D[forplayerid][playerid]);
HUD_3D[forplayerid][playerid] = Text3D:-1;
}
return 1;
}
Поясняю зачем: урон, который игрок получил не от другого игрока, не особо важен для админов, нежели урон, который игрок получил от игроков. Если обновлять в секундном таймере весь урон - урон от попаданий будет отображаться с запозданием.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
m1n1vv (20.09.2016)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)