Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Лейбл над целью

OKStyle

Адвокат по делам семейным
Administrator
Wiki Team
Регистрация
4 Мар 2011
Сообщения
7,094
Лучшие ответы
226
Репутация
2,455
Награды
11
В общем, пытался сделать с векторами камеры - какая-то фигня получалась... Вот набросочек, доработать бы надо в идеале. Код должен показывать 3д-текст над игроком, в которого целишься.

PHP:
#define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define RELEASED(%0)     (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
//
    if(!IsPlayerInAnyVehicle(playerid))
    {
        new PlayerText3D:snipertext[MAX_PLAYERS];
        if(newkeys & KEY_HANDBRAKE || PRESSED(KEY_HANDBRAKE))
        {
            new Float:X, Float:Y, Float:Z, targetid = GetPlayerTargetPlayer(playerid), PlayerName[MAX_PLAYER_NAME];
            if(targetid != INVALID_PLAYER_ID)
            {
                GetPlayerPos(targetid, X, Y, Z);
                GetPlayerName(targetid, PlayerName, sizeof(PlayerName));
                snipertext[targetid] = CreatePlayer3DTextLabel(playerid, PlayerName, 0xFF0000FF, X, Y, Z + 0.25, 300.0, targetid);
                return 1;
            }
            else
            {
                new Float:TargetDistance[43] =
                {8.5, 8.5, 8.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                0.0, 0.0, 35.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
                55.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
                for(new i = GetMaxPlayers() - 1; i != -1; i--)
                {
                    if(!IsPlayerConnected(i) || !IsPlayerStreamedIn(playerid, i)) continue;
                    GetPlayerPos(i, X, Y, Z);
                    new Float:dist = GetPlayerDistanceFromPoint(playerid, X, Y, Z);
                    if(dist > TargetDistance[GetPlayerWeapon(playerid)])
                    {
                        new Float:Px, Float:Py, Float: Pa, Float:Sa;
                        GetPlayerPos(playerid, Px, Py, Pa);
                        Pa = floatabs(atan((Y-Py)/(X-Px)));
                        if(X <= Px && Y >= Py) Pa = floatsub(180, Pa);
                        else if(X < Px && Y < Py) Pa = floatadd(Pa, 180);
                        else if(X >= Px && Y <= Py) Pa = floatsub(360.0, Pa);
                        Pa = floatsub(Pa, 90.0);
                        if(Pa >= 360.0) Pa = floatsub(Pa, 360.0);
                        GetPlayerFacingAngle(playerid, Sa);
                        if(Sa + 2.0 > Pa && Pa > Sa - 2.0)
/*
                        new Float:fPX, Float:fPY, Float:fPZ;
                        GetPlayerCameraPos(playerid, fPX, fPY, fPZ);

                        new Float:fVX, Float:fVY, Float:fVZ;
                        GetPlayerCameraFrontVector(playerid, fVX, fVY, fVZ);

                        if(fPX + fVX == X && fPY + fVY == Y && fPZ + fVZ == Z)
                        {
                            GetPlayerName(i, PlayerName, sizeof(PlayerName));
                            snipertext[i] = CreatePlayer3DTextLabel(playerid, PlayerName, 0x00FF00FF, X, Y, Z + 0.25, 300.0, i);
                        }
*/
                        return 1;
                    }
                }
            }
        }
        else if((oldkeys & KEY_HANDBRAKE && newkeys != KEY_HANDBRAKE) || RELEASED(KEY_HANDBRAKE))
        {
            for(new i = GetMaxPlayers() - 1; i != -1; i--)
            {
                if(snipertext[i] != PlayerText3D:INVALID_3DTEXT_ID) DeletePlayer3DTextLabel(playerid, snipertext[i]);
            }
            return 1;
        }
    }
//
Автор: OKStyle

P.S. Чтобы писался лейбл над игроком, который ещё не взят в таргет (повреждения наносятся ещё до появления таргета) или вообще никогда взят не будет в таргет (снайперка).
 
Сверху Снизу