Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 33

Тема: LLSDM

  1. #11
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    503
    Репутация:
    75 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ну так я потому и предложил static enum, чтобы хотя бы ограничить область видимости констант до одного инклуда и перестраховаться на случай совпадения имён. Вреда от этого никакого не будет в любом случае.



    Никто в этой теме слона не раздувает, просто указывают на возможные недочёты.



    В подобных случаях обычно так и делают (если не всегда, то точно в подавляющем большинстве из тех случаев, что приходилось наблюдать).


    В догонку, ещё один бросившийся в глаза недочёт, о котором забыл написать в прошлый раз: функции и переменные названы в разнобой, как будто над кодом работали два разных человека, ни разу не видевшие код друг у друга.
    Например, в том же uiv.inc: "SetVehicleDrop", "TrunkOrRearDoorsOfVehicle", но "GetVehTrunk".
    Или в billboards.inc: массивы с координатами билбордов названы "billboard_objects", "billboard_objects_logo", "billboard_block_objs_t1" и т.д., но массив с информацией о билбордах почему-то назван "BillboardInfo", в стиле CamelCase, как будто это функция. И это не говоря о "BILLBOARDS_NUMS_LEADER" и "BILLBOARDS_NUMS_LOGO", которые не константы.

    Также не совсем понятно на счёт этого коммита:
    https://github.com/llsdm/LLSDM/commi...16e54895f59d09
    Зачем нужно было в одном месте оставлять "return SendClientMessage(...)" как есть, а в другом переделывать в "SendClientMessage(...);\return 1;" ?

    1. static enum с какой версии?
    2. Да, с названиями функций и переменных есть косяк. Поправлю.
    3. Когда создавал файл на gh, return был под SCM. Там это и поправил. Но со временем заметил неправильную табуляцию (4 пробела, а не таб). Поправил ее через сублайм, а сделать return SCM забыл.
    4. "BILLBOARDS_NUMS_LEADER" и "BILLBOARDS_NUMS_LOGO" в верхнем регистре, чтобы не копаться, а сразу видеть счетчики.

    Пару вопросов.
    1. Есть SetTimerEx с двумя параметрами: playerid, vehicleid. Если запустить его у разных игроков, то значения параметров для каждого игрока будут же свои на всей протяженности работы таймера? А то я чет запутался.
    2. Что проще? Сделать bodypart и свой урон в WeaponShot, или попытаться ловить фейковые пакеты TakeDamage?

  2. #12
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,999
    Репутация:
    2418 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    1. static enum с какой версии?
    С версии 3.10.2, которая вышла ещё 2 с половиной года назад.

    Цитата Сообщение от m1n1vv Посмотреть сообщение
    1. Есть SetTimerEx с двумя параметрами: playerid, vehicleid. Если запустить его у разных игроков, то значения параметров для каждого игрока будут же свои на всей протяженности работы таймера? А то я чет запутался.
    В таймерную функцию передаются те значения, которые были переданы в SetTimerEx(). Даже если для двух разных игроков создать два таймера с одной и той же таймерной функцией, это будут два разных таймера и для каждого из них в таймерную функцию будет передаваться свой ID игрока.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  3. #13
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    503
    Репутация:
    75 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    С версии 3.10.2, которая вышла ещё 2 с половиной года назад.


    В таймерную функцию передаются те значения, которые были переданы в SetTimerEx(). Даже если для двух разных игроков создать два таймера с одной и той же таймерной функцией, это будут два разных таймера и для каждого из них в таймерную функцию будет передаваться свой ID игрока.
    Значит ничего ставить не нужно. Но static enum не подойдет. В uiv_editor используются те константы. А по поводу WeaponShot и TakeDamage?
    Последний раз редактировалось m1n1vv; 13.08.2019 в 15:42.

  4. #14
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    503
    Репутация:
    75 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ну так я потому и предложил static enum, чтобы хотя бы ограничить область видимости констант до одного инклуда и перестраховаться на случай совпадения имён. Вреда от этого никакого не будет в любом случае.
    То есть мне в каждом инклуде можно все const перенести в static enum?

  5. #15
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,960
    Репутация:
    1809 ±
    Вообще, если ты пишешь код в инклудах, хорошим тоном будет вызывать все переменные из инклуда через функции, а не напрямую. Это обеспечит более лучшую зону видимости этих переменных (функции с ними можно будет вызывать даже до кода подключения инклуда) и в коде вне инклудов не появятся какие-то непонятные переменные, место инициализации которых придётся выискивать. И вот там уже static enum будет в тему (как и вообще использование static для всех переменных).
    ИМХО
    Последний раз редактировалось DeimoS; 14.08.2019 в 09:53.
    Связаться со мной в VK можно через личные сообщения этой группы

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

    Steve Pavlina

  6. #16
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    503
    Репутация:
    75 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Вообще, если ты пишешь код в инклудах, хорошим тоном будет вызывать все переменные из инклуда через функции, а не напрямую. Это обеспечит более лучшую зону видимости этих переменных (функции с ними можно будет вызывать даже до кода подключения инклуда) и в коде вне инклудов не появятся какие-то непонятные переменные, место инициализации которых придётся выискивать. И вот там уже static enum будет в тему (как и вообще использование static для всех переменных).
    ИМХО
    То есть это
    PHP код:
    stock IsPlayerAFK(playerid) return player_afk{playerid}; 
    будет лучше чем это?
    PHP код:
    #define IsPlayerAFK(%0)        player_afk{%0} 

  7. #17
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,960
    Репутация:
    1809 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    То есть это
    PHP код:
    stock IsPlayerAFK(playerid) return player_afk{playerid}; 
    будет лучше чем это?
    PHP код:
    #define IsPlayerAFK(%0)        player_afk{%0} 
    В плане зоны видимости - да, несомненно. От первого ты, возможно, и потеряешь, грубо говоря, пару тиков, но у тебя уже будет уверенность в том, что ты из любой точки скрипта можешь обратиться к функции и не забивать себе голову мыслями о том, находится ли код создания макроса выше твоего текущего кода или нет, что для паблик-мода, как мне кажется, особенно важно.
    Для той же системы аккаунта это создаёт дополнительное удобство - можно прописать запрос на сохранение данных в БД прямо внутри функции изменения каждой переменной и, вызывая функцию, у тебя всегда будут актуальные данные в БД.
    Связаться со мной в VK можно через личные сообщения этой группы

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

    Steve Pavlina

  8. Пользователь сказал cпасибо:
    m1n1vv (14.08.2019)
  9. #18
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    503
    Репутация:
    75 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    В плане зоны видимости - да, несомненно. От первого ты, возможно, и потеряешь, грубо говоря, пару тиков, но у тебя уже будет уверенность в том, что ты из любой точки скрипта можешь обратиться к функции и не забивать себе голову мыслями о том, находится ли код создания макроса выше твоего текущего кода или нет, что для паблик-мода, как мне кажется, особенно важно.
    Для той же системы аккаунта это создаёт дополнительное удобство - можно прописать запрос на сохранение данных в БД прямо внутри функции изменения каждой переменной и, вызывая функцию, у тебя всегда будут актуальные данные в БД.
    А как мне лучше реализовать свой урон? Через WeaponShot Или GiveDamage? Хочу каждой части тела свой урон, но тут для каждой группы анимаций нужно давать свои координаты. Еще учитывать дистанцию.
    АЧ на отключение Give/Take есть.

  10. #19
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    4,960
    Репутация:
    1809 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    А как мне лучше реализовать свой урон? Через WeaponShot Или GiveDamage? Хочу каждой части тела свой урон, но тут для каждой группы анимаций нужно давать свои координаты. Еще учитывать дистанцию.
    АЧ на отключение Give/Take есть.
    Я бы, наверное, через OnPlayerWeaponShot сделал, если интересует урон только от оружия.
    Но вообще уже довольно давно не ковырял эти коллбэки, так что не уверен, что мой выбор будет правильным в данном случае.

    Можешь просто сделать логирование и провести пару тестов, нанося нужный тебе урон. Ну и прикинуть уже в каком из коллбэков твоя система будет лучше работать и/или проще в реализации.
    Связаться со мной в VK можно через личные сообщения этой группы

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

    Steve Pavlina

  11. #20
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    503
    Репутация:
    75 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Я бы, наверное, через OnPlayerWeaponShot сделал, если интересует урон только от оружия.
    Но вообще уже довольно давно не ковырял эти коллбэки, так что не уверен, что мой выбор будет правильным в данном случае.

    Можешь просто сделать логирование и провести пару тестов, нанося нужный тебе урон. Ну и прикинуть уже в каком из коллбэков твоя система будет лучше работать и/или проще в реализации.
    Конечно в GiveDamage. Так уже есть bodypart. Еще WeaponShot вызывается до нанесения урона и с этим могут возникнуть проблемы.

 

 
Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

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

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

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

Ваши права

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