• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Оптимизация кода или сделать как лучше

Dmitriy Makarov

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

Пытаюсь сделать команду /hi, которая будет выполняться через согласие "Y/N", но сталкиваюсь с проблемами, что один игрок не воспроизводит анимацию пожатия руки.
C++:
CMD:hi(playerid, params[])
{
    // Тут всякие проверки
    if(GetPVarInt(playerid, "sendask") > -1) return SCM(playerid, COLOR_GREY, "Вы уже делали кому-то предложение"); // Делаю проверку на то, что я не делал до этого другому предложение
    if(GetPVarInt(params[0], "getask") > -1) return SCM(playerid, COLOR_GREY, "Игроку уже делают предложение"); // Делаю проверку на то, что игроку(params[0]) не делают предложение (руки и серда, хы)
    SetPVarInt(playerid, "sendask", params[0]); // "Активирую" PVar sendask
    SetPVarInt(params[0], "getask", playerid); // Тут тоже самое
    SetPVarInt(params[0], "asktype", 2); // Это switch, код покажу ниже
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerFacingAngle(playerid, a); // Беру FacingAngle
    GetPlayerPos(playerid, x, y, z); // Беру коорды
    x = x + (1.0 * floatsin(-a, degrees)); // Тут крч я ТПхаю params[0] к себе перед собой. Шершняга помог
    y = y + (1.0 * floatcos(-a, degrees)); // Тоже самое с Y
    SetPlayerPos(params[0], x, y, z); // Меняю его коорды (ТПхаю перед собой)
    SetPlayerFacingAngle(params[0], a + 180.0); // Поворачиваю его лицом к себе
    new string[86];
    format(string, sizeof(string), "%s пожал(а) руку %s", pInfo[playerid][pName], pInfo[params[0]][pName]);
    ProxDetector(10.0, playerid, string,  0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
    ApplyAnimation(playerid, "GANGS", "hndshkfa", 4.1, 0, 0, 0, 0, 0); // Воспроизвожу анимацию пожатия руки
    ApplyAnimation(params[0], "GANGS", "hndshkfa", 4.1, 0, 0, 0, 0, 0); // Тут уже тот чел её воспроизводит
    return 1;
}
C++:
// OnPlayerKeyStateChange
// Тут где-то действие на Y, N есть, но это не важно, важно действие на эти кнопки

switch(asktype)
{
    // Тут case 1. Там другое действие совсем не относящее к команде /hi
    case 2:
    {
        // И тут мне нужно, чтобы когда params[0] с команды /hi нажимал на Y
        // Код с /hi выполнялся дальше, т.е этот код:
        /*
        new Float:x, Float:y, Float:z, Float:a;
        GetPlayerFacingAngle(playerid, a);
        GetPlayerPos(playerid, x, y, z);
        x = x + (1.0 * floatsin(-a, degrees));
        y = y + (1.0 * floatcos(-a, degrees));
        SetPlayerPos(params[0], x, y, z);
        SetPlayerFacingAngle(params[0], a + 180.0);
        new string[86];
        format(string, sizeof(string), "%s пожал(а) руку %s", pInfo[playerid][pName], pInfo[params[0]][pName]);
        ProxDetector(10.0, playerid, string,  0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF, 0xDD90FFFF);
        ApplyAnimation(playerid, "GANGS", "hndshkfa", 4.1, 0, 0, 0, 0, 0);
        ApplyAnimation(params[0], "GANGS", "hndshkfa", 4.1, 0, 0, 0, 0, 0);
        */
        // Пару дней уже пытаюсь представить это, никак не могу.
    }
}
 
Сверху Снизу