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

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

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

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

Мануал Создание актёра и разговор с ним Без пикапа

Статус
В этой теме нельзя размещать новые ответы.

Alex_Lincoln

Компетентный
Система актера на сервер суть актера будет подсказывать игрокам что да и как
Автор Олежка

Обязателен include a_actor

Добавим к инклудам:
PHP:
#include  a_actor
В начало мода:

PHP:
new bool: bot[MAX_PLAYERS];
new boty[MAX_PLAYERS];
В public OnGameModeInit

PHP:
SetTimer("SecTimer", 1000, 1);
CreateActor(60, 1953.7014,1340.8524,15.3746,302.5011);
ВНИМАНИЕ!!! Вместо данных координатов укажите свои координаты и угол поворота актёра! И скин свой выберите!!
Сама функция:

PHP:
CreateActor(скин, координата Х, координата У, координата Z, угол поворота);
В public OnPlayerConnect

PHP:
bot[playerid] = false;
boty[playerid] = 0;
В public OnDialogResponse
• если у вас стоит switch(dialogid), то

PHP:
case 1521:
{
    if(!response)
    {
        bot[playerid] = false;
        boty[playerid] = 10;
        return 1;
    }
    bot[playerid] = true;
    switch(listitem)
    {
        case 0: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "Мне зовут Oliver. Моя фамилия Green. Я живу не подолёку.", "Ясно", "");
        case 1: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "Иди в мэрию. Там тебе всё покажут и расскажут.", "Ясно", "");
        case 2: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "Возле Глен-Парка есть ночлежка. Таксист отвезёт.", "Ясно", "");
        case 3: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "В мэрии. Там всё показано. Иди да прочитай.", "Ясно", "");
        case 4: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "Нет, а вот лесопилка без работяг. Дуй туда!", "Ясно", "");
        case 5: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "Меня кстате Oliver  зовут.", "Ясно", "");
    }
}
case 1522:
{
    bot[playerid] = false;
    boty[playerid] = 10;
    return 1;
}
• если у вас перечисление (типа if(dialogid == ..), то

PHP:
if(dialogid == 1521)
{
    if(!response)
    {
        bot[playerid] = false;
        boty[playerid] = 10;
        return 1;
    }
    bot[playerid] = true;
    switch(listitem)
    {
        case 0: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "Мне зовут Oliver. Моя фамилия Green. Я живу не подолёку.", "Ясно", "");
        case 1: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "Иди в мэрию. Там тебе всё покажут и расскажут.", "Ясно", "");
        case 2: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "Возле Глен-Парка есть ночлежка. Таксист отвезёт.", "Ясно", "");
        case 3: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "В мэрии. Там всё показано. Иди да прочитай.", "Ясно", "");
        case 4: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "Нет, а вот лесопилка без работяг. Дуй туда!", "Ясно", "");
        case 5: ShowPlayerDialog(playerid, 1522, DIALOG_STYLE_MSGBOX, "Разговор с ботом:", "Меня кстате Oliver  зовут.", "Ясно", "");
    }
}
else if(dialogid == 1522)
{
    bot[playerid] = false;
    boty[playerid] = 10;
    return 1;
}
Функция: в конец мода

PHP:
stock PlayerToActor(Float:radi, playerid, actorid)
{
        if(IsPlayerConnected(playerid))
        {
                new Float:pos[3],Float:actpos[3],Float:temppos[3];
                GetPlayerPos(playerid, actpos[0], actpos[1], actpos[2]);
                GetActorPos(actorid, pos[0], pos[1], pos[2]);
                temppos[0] = (actpos[0] -pos[0]); temppos[1] = (actpos[1] -pos[1]); temppos[2] = (actpos[2] -pos[2]);
                if (((temppos[0] < radi) && (temppos[0] > -radi)) && ((temppos[1] < radi) && (temppos[1] > -radi)) && ((temppos[2] < radi) && (temppos[2] > -radi))) return true;
        }
        return false;
}
Далее в конце мода создаём паблик:

PHP:
forward SecTimer();
public SecTimer()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(PlayerToActor(1.2, i, 0))
        {
            if(bot[i] == true) return 1;
            if(boty[i] > 0) return 1;
            ShowPlayerDialog(i, 1521, DIALOG_STYLE_LIST, "Oliver: - Что-то хотел?","Кто ты?\nЯ только прилетел, где тут можно оформить документы?\nГде мне можно переночевать?\nКак мне устроиться на работу?\nУ тебя нет для меня работы?\nНет-нет. Нечего не хотел.", "Выбрать", "Отмена");
            bot[i] = true;
        }
        boty[i] --;
    }
    return 1;
}
У кого есть foreach, то вместо паблика выше - паблик ниже:

PHP:
forward SecTimer();
public SecTimer()
{
    foreach(Player, i)
    {
        if(PlayerToActor(1.2, i, 0))
        {
            if(bot[i] == true) return 1;
            if(boty[i] > 0) return 1;
            ShowPlayerDialog(i, 1521, DIALOG_STYLE_LIST, "Oliver: - Что-то хотел?","Кто ты?\nЯ только прилетел, где тут можно оформить документы?\nГде мне можно переночевать?\nКак мне устроиться на работу?\nУ тебя нет для меня работы?\nНет-нет. Нечего не хотел.", "Выбрать", "Отмена");
            bot[i] = true;
        }
        boty[i] --;
    }
    return 1;
}


 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу