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

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

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

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

Мануал Новые причины смерти / custom death message

OKStyle

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

Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!


Вариант 1

PHP:
public OnFilterScriptInit()
{
    ConnectNPC("Killer", "blank"); // в папке npcmodes должен лежать blank.amx (пустой файл бота)
    return 1;
}
public OnFilterScriptExit()
{
    new PlayerName[MAX_PLAYER_NAME];
    for(new i = GetPlayerPoolSize(); i != -1; i--)
    {
        if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
        GetPlayerName(i, PlayerName, sizeof(PlayerName));
        if(!strcmp(PlayerName, "Killer", true)) Kick(i);
    }
    return 1;
}
public OnPlayerSpawn(playerid)
{
    if(IsPlayerNPC(playerid))
    {
        new KillerName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, KillerName, sizeof(KillerName));
        if(!strcmp(KillerName, "Killer", true)) SetPlayerColor(playerid, 0xFFFFFF00);
    }
    return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
    if(killerid == INVALID_PLAYER_ID)
    {
        new KillerName[MAX_PLAYER_NAME];
        for(new i = GetPlayerPoolSize(); i != -1; i--)
        {
            if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
            GetPlayerName(i, KillerName, sizeof(KillerName));
            if(!strcmp(KillerName, "Killer", true))
            {
                killerid = i;
                break;
            }
        }
        switch(reason)
        {
            case 49: SetPlayerName(killerid, "SbitMashinoy");
            case 50: SetPlayerName(killerid, "RazrublenVintami");
            case 51: SetPlayerName(killerid, "Vzorvalsa");
            case 53: SetPlayerName(killerid, "Utonul");
            case 54: SetPlayerName(killerid, "Razbilsa");
            case 200: SetPlayerName(killerid, "Podkluchilsa");
            case 201: SetPlayerName(killerid, "Otkluchilsa");
            default: SetPlayerName(killerid, "Ue*alsa");
        }
        SendDeathMessage(playerid, killerid, reason);
        SetPlayerName(killerid, "Killer");
    }
    else SendDeathMessage(killerid, playerid, reason);
    return 1;
}
Автор: OKStyle

Вариант 2

PHP:
public OnFilterScriptInit()
{
    ConnectNPC("SbitMashinoy", "blank");
    ConnectNPC("RazrublenVintami", "blank");
    ConnectNPC("Vzorvalsa", "blank");
    ConnectNPC("Utonul", "blank");
    ConnectNPC("Razbilsa", "blank");
    ConnectNPC("Podkluchilsa", "blank");
    ConnectNPC("Otkluchilsa", "blank");
    ConnectNPC("Ue*alsa", "blank");
    return 1;
}
public OnFilterScriptExit()
{
    new PlayerName[MAX_PLAYER_NAME];
    for(new i = GetPlayerPoolSize(); i != -1; i--)
    {
        if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
        GetPlayerName(i, PlayerName, sizeof(PlayerName));
        if(!strcmp(PlayerName, "SbitMashinoy", true)
        || !strcmp(PlayerName, "RazrublenVintami", true)
        || !strcmp(PlayerName, "Vzorvalsa", true)
        || !strcmp(PlayerName, "Utonul", true)
        || !strcmp(PlayerName, "Razbilsa", true)
        || !strcmp(PlayerName, "Podkluchilsa", true)
        || !strcmp(PlayerName, "Otkluchilsa", true)
        || !strcmp(PlayerName, "Ue*alsa", true)) Kick(i);
        else continue;
    }
    return 1;
}
public OnPlayerSpawn(playerid)
{
    if(IsPlayerNPC(playerid))
    {
        new KillerName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, KillerName, sizeof(KillerName));
        if(!strcmp(PlayerName, "SbitMashinoy", true)
        || !strcmp(PlayerName, "RazrublenVintami", true)
        || !strcmp(PlayerName, "Vzorvalsa", true)
        || !strcmp(PlayerName, "Utonul", true)
        || !strcmp(PlayerName, "Razbilsa", true)
        || !strcmp(PlayerName, "Podkluchilsa", true)
        || !strcmp(PlayerName, "Otkluchilsa", true)
        || !strcmp(PlayerName, "Ue*alsa", true)) SetPlayerColor(playerid, 0xFFFFFF00);
    }
    return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
    if(killerid == INVALID_PLAYER_ID)
    {
        new KillerName[MAX_PLAYER_NAME];
        switch(reason)
        {
            case 49:
            {
                for(new i = GetPlayerPoolSize(); i != -1; i--)
                {
                    if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
                    GetPlayerName(i, KillerName, sizeof(KillerName));
                    if(!strcmp(KillerName, "SbitMashinoy", true))
                    {
                        killerid = i;
                        break;
                    }
                }
            }
            case 50:
            {
                for(new i = GetPlayerPoolSize(); i != -1; i--)
                {
                    if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
                    GetPlayerName(i, KillerName, sizeof(KillerName));
                    if(!strcmp(KillerName, "RazrublenVintami", true))
                    {
                        killerid = i;
                        break;
                    }
                }
            }
            case 51:
            {
                for(new i = GetPlayerPoolSize(); i != -1; i--)
                {
                    if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
                    GetPlayerName(i, KillerName, sizeof(KillerName));
                    if(!strcmp(KillerName, "Vzorvalsa", true))
                    {
                        killerid = i;
                        break;
                    }
                }
            }
            case 53:
            {
                for(new i = GetPlayerPoolSize(); i != -1; i--)
                {
                    if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
                    GetPlayerName(i, KillerName, sizeof(KillerName));
                    if(!strcmp(KillerName, "Utonul", true))
                    {
                        killerid = i;
                        break;
                    }
                }
            }
            case 54:
            {
                for(new i = GetPlayerPoolSize(); i != -1; i--)
                {
                    if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
                    GetPlayerName(i, KillerName, sizeof(KillerName));
                    if(!strcmp(KillerName, "Razbilsa", true))
                    {
                        killerid = i;
                        break;
                    }
                }
            }
            case 200:
            {
                for(new i = GetPlayerPoolSize(); i != -1; i--)
                {
                    if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
                    GetPlayerName(i, KillerName, sizeof(KillerName));
                    if(!strcmp(KillerName, "Podkluchilsa", true))
                    {
                        killerid = i;
                        break;
                    }
            }
            case 201:
            {
                for(new i = GetPlayerPoolSize(); i != -1; i--)
                {
                    if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
                    GetPlayerName(i, KillerName, sizeof(KillerName));
                    if(!strcmp(KillerName, "Otkluchilsa", true))
                    {
                        killerid = i;
                        break;
                    }
            }
            default:
            {
                for(new i = GetPlayerPoolSize(); i != -1; i--)
                {
                    if(!IsPlayerConnected(i) || !IsPlayerNPC(i)) continue;
                    GetPlayerName(i, KillerName, sizeof(KillerName));
                    if(!strcmp(KillerName, "Ue*alsa", true))
                    {
                        killerid = i;
                        break;
                    }
            }
        }
        SendDeathMessage(playerid, killerid, reason);
    }
    else SendDeathMessage(killerid, playerid, reason);
    return 1;
}
Автор: OKStyle

Чуть доработал, убрав код вида:
PHP:
if(strcmp(KillerName, "Ue*alsa", true) != 0) continue;
else if(strcmp(KillerName, "Ue*alsa", true) == 0)
и устаревшие циклы.

P.S. Для русских сообщений нужен плагин Romanius'а или Криптодена для русских ников (на крэкнутом сервере не проверял).
 
Сверху Снизу