Вопросы

Хочу сделать чтобы на спавне был NPC и когда к нему подходишь, то можно было выбрать организацию куда вступить.

Скиньте пожалуйста код что как сделать.

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


Ссылка на сообщение

1 ответ на этот вопрос

  • 0

Данный код - пример, написанный для того, чтобы показать саму механику данной системы. Крайне не рекомендую его использовать по понятным причинам.

new auto_invite_actor;

public OnGameModeInit() {
    auto_invite_actor = CreateActor(/*id скина*//*x*//*y*//*z*//*угол поворота*/); //создаем самого NPC
    Create3DTextLabel("{ffffff}Нажмите 'ALT'"0xFFFFFFFF/*x*//*y*//*z*/40.000); //создаем 3d текст рядом с NPC
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
    switch(listitem) {
        case 1001: {
            if(!response)
                return 1;
            
            //тут код, который будет воспроизводиться при взаимодействии с актером.
        }
    }
    return 0;
}

// PRESSED(keys)
#define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
    if(PRESSED(KEY_WALK) && IsPlayerInRangeOfPoint(playerid, 5.0/*x*//*y*//*z*/)) //проверка на нажатие ALT возле актера (x, y, z - координаты NPC)
        return ShowPlayerDialog(playerid, 1001, DIALOG_STYLE_TABLIST, "{ffffff}Авто-инвайт""1. LSPD\n2. SFPD\n3. LVPD");

    return 1;
}

Отредактировано пользователем 𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.

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


Ссылка на сообщение

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

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

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

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


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

Войти

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


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

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

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

    • sergeenko
      От sergeenko
      Если писать просто команду /a, то выдаёт /a [текст]
      А если написать какой-то текст то ничего не просиходит
      Код:
       
      stock SendAdminMessage(color, text[]) {     foreach(new i: Player)     {         if(PI[i][data_CADMIN] != 1||PI[i][data_ADMLVL] >= 1)         {              SendClientMessage(i, color, text);         }     }     return 1; } Команда: CMD:a(playerid, params[]) {     if(PI[playerid][data_ADMLVL] > 1)     {         new text[90];         if(sscanf(params, "s[90]", text))             return SendClientMessage(playerid, CG, "Используйте /a [текст]");         if(antiflood[playerid] > 0)              return SendClientMessage(playerid, COLOR_BLACK,"Пожалуйста, подождите пару секунд...");         antiflood[playerid]++;         if(PI[playerid][data_LOGGED] == false)              return SendClientMessage(playerid, CG, "Вы не авторизированы. Пожалуйста авторизируйтесь.");         new string[19 + (20 + (-2) + 1 + (-2)) + (MAX_PLAYER_NAME + (-2) + 3 + (-2)) + 90];         format(string, sizeof(string), "[%s #%i] %s[%i]: %s", GSName[PI[playerid][data_ADMLVL]], PI[playerid][ADMINSNUMBER], PI[playerid][data_NAME], playerid, text);         return SendAdminMessage(COLOR_BLUE, string);     }     return 1;    }