KoRoLe

Kill List на TextDraws

В теме 2 сообщения

Спойлер

#include <a_samp>
#include <foreach>
#include <dc_cmd>// Если такой командный процессор
#include <sscanf2>

#define PlayerFraction(%0) PlayerInfo[%0][pMember] // заменяйте на свой массив
#define MAX_KILL_LIST_LINES 5 // кол-во текстдравов, которые будут выводиться на экран
main() {}
#if MAX_KILL_LIST_LINES <= 0
    #error MAX_KILL_LIST_LINES must be > 0
#endif
#endif

enum pInfo // убрать, заменить на своё
{
    pMember
};
new PlayerInfo[MAX_PLAYERS][pInfo]; // убрать, заменить на своё

new Kill_List_PPos[MAX_PLAYERS],                            PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME],
       Text:Kill_List_Box[MAX_KILL_LIST_LINES],                    Text:Kill_List_Text[MAX_PLAYERS][MAX_KILL_LIST_LINES],
       Kill_List_Line_Text[MAX_KILL_LIST_LINES][MAX_PLAYERS][64],    KL_Player[MAX_PLAYERS],
       captureteam[2]; // убрать; заменить на своё  

 

Спойлер

for(new i;i<MAX_KILL_LIST_LINES;i++) TextDrawDestroy(Kill_List_Box[i]);  

 

Спойлер

static const Float:posse[2] = { 0.25, -10.916657 }; // посчитал расстояние между двумя текстдравами и создал их циклом
    for(new i;i<MAX_KILL_LIST_LINES;i++)
    {
        Kill_List_Box[i] = TextDrawCreate(360.000000 + i*posse[0], 197.166671+i*posse[1], "i");
        TextDrawLetterSize(Kill_List_Box[i], 31.394374, 1.745834);
        TextDrawAlignment(Kill_List_Box[i], 1);
        TextDrawColor(Kill_List_Box[i], 255);
        TextDrawSetShadow(Kill_List_Box[i], 0);
        TextDrawSetOutline(Kill_List_Box[i], 1);
        TextDrawBackgroundColor(Kill_List_Box[i], 51);
        TextDrawFont(Kill_List_Box[i], 2);
        TextDrawSetProportional(Kill_List_Box[i], 1);
    }  

 

Спойлер

KL_Player[playerid] = 1; // включена ли функция показа текстдравов, 1 - вкл, 0 - выкл
    GetPlayerName(playerid,PlayerName[playerid],MAX_PLAYER_NAME); // убрать, если в моде есть свой массив, в котором хранятся ники
    Kill_List_PPos[playerid] = 0; // с какого места будет начинаться показ текстдравов, советую только с 0
    static const Float:posse[2] = { 0.25, -10.916657 };  // расчитал расстояние между двумя текстдравами и создал их циклом
    for(new i;i<MAX_KILL_LIST_LINES;i++)
    {
        Kill_List_Text[playerid][i] = TextDrawCreate(458.125000+posse[0]*i, 201.833343+posse[1]*i, "Unknown");
        TextDrawLetterSize(Kill_List_Text[playerid][i], 0.122500, 0.742499);
        TextDrawAlignment(Kill_List_Text[playerid][i], 2);
        TextDrawColor(Kill_List_Text[playerid][i], -1);
        TextDrawSetShadow(Kill_List_Text[playerid][i], 0);
        TextDrawSetOutline(Kill_List_Text[playerid][i], 1);
        TextDrawBackgroundColor(Kill_List_Text[playerid][i], 51);
        TextDrawFont(Kill_List_Text[playerid][i], 2);
        TextDrawSetProportional(Kill_List_Text[playerid][i], 1);
    }  

 

Спойлер

KL_Player[playerid] = 1;
    Kill_List_PPos[playerid] = 0;
    for(new i;i<MAX_KILL_LIST_LINES;i++)
    {
        Kill_List_Line_Text[i][playerid][0] = EOS;
        TextDrawHideForPlayer(playerid,Kill_List_Box[i]);
        TextDrawDestroy(Kill_List_Text[playerid][i]);
    }  

 

Спойлер

if(((captureteam[0] == PlayerFraction(playerid) && captureteam[1] == PlayerFraction(killerid))||(captureteam[1] == PlayerFraction(playerid) && captureteam[0] == PlayerFraction(killerid)))&&PlayerFraction(playerid) != 0&&PlayerFraction(killerid) != 0)
    {
        Kill_List(playerid,killerid,-1,-1);
     }  

 

Спойлер

//DC_CMD
CMD:klclear(playerid)
{
    for(new i;i<MAX_KILL_LIST_LINES;i++)
    {
        TextDrawHideForPlayer(playerid,Kill_List_Text[playerid][i]);
        TextDrawHideForPlayer(playerid,Kill_List_Box[i]);
    }
    Kill_List_PPos[playerid] = 0;
    SendClientMessage(playerid, 0x00ff00,"Вы очистили свой Килл Лист!");
    return 1;
}
CMD:kl(playerid)
{
    if(KL_Player[playerid] == 1)
    {
        KL_Player[playerid] = 0;
        SendClientMessage(playerid, 0xff00ff,"[KL]{ffffff}Вы успешно выключили свой Килл Лист!");
    }
    else
    {
    KL_Player[playerid] = 1;
    SendClientMessage(playerid, 0xff00ff,"[KL]{ffffff}Вы успешно включили свой Килл Лист!");
}
return 1;
}
//CMD
if(!strcmp("/klclear",cmdtext,true))
{
    for(new i;i<MAX_KILL_LIST_LINES;i++)
    {
        TextDrawHideForPlayer(playerid,Kill_List_Text[playerid][i]);
        TextDrawHideForPlayer(playerid,Kill_List_Box[i]);
    }
    Kill_List_PPos[playerid] = 0;
    SendClientMessage(playerid, 0x00ff00,"Вы очистили свой Килл Лист!");
    return 1;
}
else if(!strcmp("/kl",cmdtext,true))
{
    if(KL_Player[playerid] == 1)
    {
        KL_Player[playerid] = 0;
        SendClientMessage(playerid, 0xff00ff,"[KL]{ffffff}Вы успешно выключили свой Килл Лист!");
    }
    else
    {
        KL_Player[playerid] = 1;
        SendClientMessage(playerid, 0xff00ff,"[KL]{ffffff}Вы успешно включили свой Килл Лист!");
    }
    return 1;
}
return 1;
}  
Этот stock можно в конец мода
PHP код:
stock Kill_List(playerid,killerid,teamone,teamtwo)
{
    new KL_string[64];
    format(KL_string,sizeof(KL_string),"%s kill %s",PlayerName[killerid],PlayerName[playerid]);
    foreach(new i:Player)
    {
        if(KL_Player[i] == 1 && ((PlayerFraction(i) == teamone || PlayerFraction(i) == teamtwo) ||  (teamone == -1 && teamtwo == -1)))
        {
            if(MAX_KILL_LIST_LINES-1-Kill_List_PPos[i] == 0)
            {
                for(new k=MAX_KILL_LIST_LINES-1;k!=0;k--)
                {
                    strmid(Kill_List_Line_Text[k][i],Kill_List_Line_Text[k-1][i],0,64);
                }
                strmid(Kill_List_Line_Text[0][i],KL_string,0,64);
            }
            else
                strmid(Kill_List_Line_Text[MAX_KILL_LIST_LINES-1-Kill_List_PPos[i]-1][i],KL_string,0,64);
            for(new j=MAX_KILL_LIST_LINES-1-Kill_List_PPos[i]-1,k=0;k!=Kill_List_PPos[i]+1;j++,k++)
            {
                if(j<0)j=0;
                TextDrawSetString(Kill_List_Text[i][k],Kill_List_Line_Text[j][i]);
                TextDrawShowForPlayer(i,Kill_List_Text[i][k]);
                TextDrawShowForPlayer(i,Kill_List_Box[k]);
            }
            Kill_List_PPos[i]++;
            if(Kill_List_PPos[i] == MAX_KILL_LIST_LINES) Kill_List_PPos[i] = MAX_KILL_LIST_LINES-1;
        }
    }
    return 1;
}  

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не помешал бы скрин

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • KAIF
      От KAIF


      Скачать файл GTA RolePlay-МОД,СБОРКА
      !!!!!ВСЕГО ОДНА КОПИЯ!!!! 
      Единственный мод GTA RP.
       
      Фракции:
      Правительство
      ГИБДД
      Полиция Южного
      ФСБ
      ЦГБ-А
      Автошкола
      Китайская мафия
      Русская Мафия
      Итальянская Мафия
      Американская Мафия
      Чеченская Мафия
      ВВС
      МЧС
      ОПГ Тяп-Ляп
      ОПГ Хади-Такташ
      СМИ Южного
      ФСИН
      В комплекте идёт СБОРКА И МОД.
      Единственный мод GTA RP.
      Добавил KAIF Добавлено 01.01.2024 Категория Моды Автор Aleksandr  
    • KAIF
      От KAIF
      !!!!!ВСЕГО ОДНА КОПИЯ!!!! 
      Единственный мод GTA RP.
       
      Фракции:
      Правительство
      ГИБДД
      Полиция Южного
      ФСБ
      ЦГБ-А
      Автошкола
      Китайская мафия
      Русская Мафия
      Итальянская Мафия
      Американская Мафия
      Чеченская Мафия
      ВВС
      МЧС
      ОПГ Тяп-Ляп
      ОПГ Хади-Такташ
      СМИ Южного
      ФСИН
      В комплекте идёт СБОРКА И МОД.
      Единственный мод GTA RP.
    • Узбек
      От Узбек
      Всем добрый вечер ребят! 
      Я начинающий, сегодня я вам сливаю команду 2(шт) на технические работы
      Ловите