Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 80 из 133 ПерваяПервая ... 30 70 78 79 80 81 82 90 130 ... ПоследняяПоследняя
Показано с 791 по 800 из 1325
  1. #791
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от _lizard Посмотреть сообщение
    Где-то на этом форуме видел, где рассказывалось о способе нумерации диалогов с помощью enum, можете дать ссылку, кто помнит? Гугл подвёл
    Так а что там рассказывать? Перечисление (enum) можно представить как набор именных констант. Работа с перечислением будет ижти по тому же принципу, что и работа, например, с макросами, только, в случае с перечислением, нумерация будет происходить автоматически (если ты, конечно, не укажешь ID вручную).

    Крч:
    PHP код:
    enum
    {
       
    dSomeDialog1,// Пример ID 0
       
    dSomeDialog2,// Пример ID 1
       
    dSomeDialog3,// Пример ID 2
       
    dSomeDialog4// Пример ID 3
    }; 
    И дальше просто

    PHP код:
    ShowPlayerDialog(playeriddSomeDialog1, ...);

    public 
    OnDialogResponse(...)
    {
        switch(
    dialogid)
        {
            case 
    dSomeDialog1:
            {
                
    //Действие
            
    }
        }
        return 
    1;

    Хотя я бы советовал использовать диалоговые процессоры, ибо с ними действие диалога (код, что обычно в OnDialogResponse) можно хранить рядом с диалогом
     Типа такого

    + если дружишь с автоматонами, можно код сделать ещё и более логичным в случае, когда для какого-то действия требуется несколько диалогов (например, выдачи админки через диалоги, где сначала вводишь ID игрока в один диалог, а потом уровень в другой), ибо все диалоги можно обозвать одинаковым именем и не придётся помнить 10-ок названий диалогов для одного действия.
     Пример:
    PHP код:
    CMD:mycommand(playeridparams[])
    {
        
    ShowPlayerDialog(playerid"dSomeDialog"DIALOG_STYLE_INPUT"Заголовок""Текст первого диалога""Далее""Закрыть");
        
    state SomeDialog:stage_one;
        return 
    1;
    }

    DialogResponse:dSomeDialog() <SomeDialog:stage_one>
    {
        if(!
    response)
            return 
    1;
        else
        {
            
    ShowPlayerDialog(playerid"dSomeDialog"DIALOG_STYLE_INPUT"Заголовок""Текст второго диалога""Далее""Назад");
            
    state SomeDialog:stage_two;
        }
        return 
    1;
    }

    DialogResponse:dSomeDialog() <SomeDialog:stage_two>
    {
        if(!
    response)
        {
            
    ShowPlayerDialog(playerid"dSomeDialog"DIALOG_STYLE_INPUT"Заголовок""Текст первого диалога""Далее""Закрыть");
            
    state SomeDialog:stage_one;
        }
        else
        {
            
    //И так сколько угодн раз
        
    }
        return 
    1;



    Об автоматонах можно прочесть здесь
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  2. Пользователь сказал cпасибо:
    _lizard (20.03.2017)
  3. #792
    Аватар для nikc
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2017
    Сообщений
    10
    Репутация:
    0 ±
    Здравствуйте , подскажите как реализовать проверку заняты ли определенные авто игроком? т.е игрок вводит команду проверяются все авто с определенным типом авто(например 411) и эти авто проверяются на занятость? подскажите как реализовать только циклом в цикле или есть другой вариант?

    щас реализовал так:

    PHP код:
    new r;
                for(new 
    0GetPlayerPoolSize(); <= ji++)
                {
                     new 
    p;
                     while (
    3) {
                          if(
    IsPlayerInVehicle(iaVeh[p])) r++;
                          
    p++;
                     }
                }
                   new 
    mss[128];
                
    format(mss,sizeof(mss),"Всего свободных авто %d",3-r);
                
    SendClientMessage(playerid,-1,mss); 

  4. #793
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Можешь вести статистику прямо при посадке в авто того или иного человека.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. #794
    Аватар для Alpano
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.02.2017
    Сообщений
    123
    Репутация:
    16 ±
    переменная CarOwner[MAX_VEHICLES];

    при посадке человека за руль ставим
    PHP код:
    CarOwner[vehicleid] = playerid
    при выходе
    PHP код:
    CarOwner[vehicleid] = INVALID_PLAYER_ID
    ну и не забываем при удалении тачки/OnVehicleSpawn так-же
    PHP код:
    CarOwner[vehicleid] = INVALID_PLAYER_ID
    Ну и на всякий не забываем, перед использованием проверять: (этож samp)
    PHP код:
    GetPlayerVehicleId(CarOwner[vehicleid]) 
    MyProject:
    DriftEmpire©

    Ленивые всё делают быстро, чтобы поскорее избавиться от работы.
    И делают качественно, чтобы потом не переделывать.

  6. #795
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ему нужно проверять тип авто, а не какое-то определённое же. С твоим вариантом цикл всё равно неизбежен.

    Если нужно подсчитать только для какого-то одного типа авто, то просто создаёшь для него переменную и устанавливаешь этой переменной значение, равное числу автомобилей с таким типом на сервере. Далее просто отнимаешь от этой переменной единицу при посадке в авто с таким типом и прибавляешь при выходе/респавне
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  7. #796
    Аватар для nikc
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2017
    Сообщений
    10
    Репутация:
    0 ±
    Здравствуйте. Подскажите пишу систему и нужно чтобы авто постоянно было неподвижно, т.е. чтобы посторонние игроки не могли сдвинуть его с места. Пытался реализовать с помощью OnUnoccupiedVehicleUpdate(вызывается как игрок двигает т/c) но как только я подхожу к автомобилю и чуть его касаюсь начинается постоянный респавн этого авто. Подскажите что я делаю не так?Или можно реализовать как то по другому?

    PHP код:
    public OnUnoccupiedVehicleUpdate(vehicleidplayeridpassenger_seatFloat:new_xFloat:new_yFloat:new_zFloat:vel_xFloat:vel_yFloat:vel_z)
    {
        static 
    Float:xFloat:yFloat:z;
        
    GetVehiclePos(vehicleidxyz); //узнаем старые координаты
            
    return SetVehiclePos(vehicleidxyz); //Вернем авто на прежние координаты


  8. #797
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от nikc Посмотреть сообщение
    Здравствуйте. Подскажите пишу систему и нужно чтобы авто постоянно было неподвижно, т.е. чтобы посторонние игроки не могли сдвинуть его с места. Пытался реализовать с помощью OnUnoccupiedVehicleUpdate(вызывается как игрок двигает т/c) но как только я подхожу к автомобилю и чуть его касаюсь начинается постоянный респавн этого авто. Подскажите что я делаю не так?Или можно реализовать как то по другому?

    PHP код:
    public OnUnoccupiedVehicleUpdate(vehicleidplayeridpassenger_seatFloat:new_xFloat:new_yFloat:new_zFloat:vel_xFloat:vel_yFloat:vel_z)
    {
        static 
    Float:xFloat:yFloat:z;
        
    GetVehiclePos(vehicleidxyz); //узнаем старые координаты
            
    return SetVehiclePos(vehicleidxyz); //Вернем авто на прежние координаты

    Ну так правильно ты его чутка двинул он начал выполнение кода, а в выполнении кода ты его ещё раз двигаешь и начинается целая рекурсия,
    тебе надо просто перехватить SetVehiclePos и поставить там флаг паузы на секунды 3 или 4, потом в OnUnoccupiedVehicleUpdate добавить в самом начале условие что мол машина на паузе или нет.

    Я точно не уверен, но по описанию каллбека я должен быть прав.

    p.s. так же при выполнении OnPlayerVehicleEnter добавляй флаг паузы, раз ты говоришь что обычного прикосновения его торчить начинает)

    Ещё тут почитай вики, возможно просто надо отключать синхру и не чего больше не делать.
    Последний раз редактировалось vovandolg; 27.03.2017 в 22:42.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  9. #798
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Ещё тут почитай вики, возможно просто надо отключать синхру и не чего больше не делать.
    При отключении только синхры (если просто 0 возвращать) он не будет двигаться только для других игроков.

    Можно попробовать воздействовать на самого игрока, например при попытке движения незанятого авто выдавать ему нулевую скорость или анимку чистить, но второе будет сильно заметно и неестественно.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  10. #799
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    Если я не знаю какое кол-во аргументов будет введено в функцию, как это сделать?

  11. #800
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от BadPawn Посмотреть сообщение
    Если я не знаю какое кол-во аргументов будет введено в функцию, как это сделать?
    Вот тут очень давно я пытался объяснить это (почитай всё, что ниже того поста)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 80 из 133 ПерваяПервая ... 30 70 78 79 80 81 82 90 130 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •