Sign in to follow this  
Followers 0
KoRoLe

Kill List на TextDraws

2 posts in this topic

Спойлер

#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;
}  

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • AndryKrut007
      By AndryKrut007
      Добрых времени суток, наш проект активно ищет разработчиков в CRMP проект.
       
      Нам требуются:
       
      Pawn разработчик
       
      PR менеджер
       
      Разработчик лаунчера
       
      Управляющий разработчиками
       
      А также рассмотрим любые другие вакансии
       
      Писать: тг @derhid
    • August_Rothschild
      By August_Rothschild
      Всем привет , как заменять анимации в игре ? Имеется ввиду анимации танцев , как прочесть файлы с анимациями или как заменять определенную анимацию