Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 15
  1. #1
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±

    Pickup Stop Flood (Анти повторный подбора пикапов)

    Описание: Инклюд предотвращает повторный вызов пикапа. Чтобы пикап повторно сработал нужно отойти от него на определенное расстояние. Инклюд в реализации довольно прост, любой скриптер сможет реализовать такую систему, данное решение скорей всего для новичков. Писал несколько месяцев назад, сегодня вспомнил про него и решил поделится.

    Подключение:
    PHP код:
    После
    #include <a_samp>
    #include <streamer> (Не обязательно)

    Добавить
    #include <pickup_stop_flood> 
    Ссылки:
    pastebin: тык
    yandex: тык

    Важно: Этот фикс не вызывает пикап через определенное количество секунд, а срабатывает исключительно на определенное расстояние (расстояние можно менять в самом инклюде).

    П.С Писал для себя, возможно где-то есть в интернете похожий принцип, тогда уж извините и снесите тему.
    Последний раз редактировалось vasyok28; 27.02.2017 в 18:17.

  2. 2 пользователя(ей) сказали cпасибо:
    Guldan (27.02.2017) Web (27.02.2017)
  3. #2
    Аватар для Guldan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.11.2016
    Сообщений
    43
    Репутация:
    2 ±
    static bool:sf__PlayerPickUp[MAX_PLAYERS char];
    Вот интересно ты создал static bool:sf__PlayerPickUp[MAX_PLAYERS char]; как char
    есть ли разница использовать его как sf__PlayerPickUp[playerid] = false; или же sf__PlayerPickUp{playerid} = false;

    for(new i, p = GetPlayerPoolSize()+1; i < p; i++)
    Чем for(new i, p = GetPlayerPoolSize()+1; i < p; i++) лучше этого for(new i, p = GetPlayerPoolSize(); i <= p; i++)
    Ну да это мелочи, прост видел подобную ситуацию в уроках Кортеза

    new Float:sf__p_x, Float:sf__p_y, Float:sf__p_z;
    В таймере лучше уже static

    И да не люблю нагружать мод лишними таймерами, за старание + конечно
    Последний раз редактировалось Guldan; 27.02.2017 в 11:00.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Guldan Посмотреть сообщение
    Вот интересно ты создал static bool:sf__PlayerPickUp[MAX_PLAYERS char]; как char
    есть ли разница использовать его как sf__PlayerPickUp[playerid] = false; или же sf__PlayerPickUp{playerid} = false;
    Естественно есть. Найди на форуме статью о char и прочти. Там всё описано
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    1. Привык использовать bool+char исключительно только в иклюдах, и чтобы не словить переполнение массив, типа чтобы не превышать размер. Без разницы что использовать ([] или {})

    2. Тут уже по привычки, в свое время читал как работают условие, может я не прав в данном случае, но я вижу твое условие как меньше или равно (< || ==) Две условие. (Но скорей всего моя привычка)

    3. Насчет static не знаю, может быть, но все равно переменные будут видны только в теле цикла. Насчет таймеров тоже так думал, но это если запустить мод на калькуляторе, на крайняк можно и общий таймер засунуть проверку и поставить еще проверку на иклюду.

    - - - Добавлено - - -

    Хотя насчет [] и {} загнул, опечаточка получается в инклюде размер массив указал, а вот обращаюсь не к байтам массива, поправьте меня если я не прав

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от vasyok28 Посмотреть сообщение
    Без разницы что использовать ([] или {})
    На сколько я знаю если ты "зачаровал" массив то и юзать его надо в дальнейшем через {} такие скобки,
    по крайней мере будут косяки если не правильно скобки ставить(из личного опыта).
    Так что есть разница.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от Guldan Посмотреть сообщение
    Чем for(new i, p = GetPlayerPoolSize()+1; i < p; i++) лучше этого for(new i, p = GetPlayerPoolSize(); i <= p; i++)
    Ну да это мелочи, прост видел подобную ситуацию в уроках Кортеза
    Не особая разница. Лучше уже вообще вот так:
    PHP код:
    for(new GetPlayerPoolSize(); != -1; --i

    По коду:

    PHP код:
    for(new iGetPlayerPoolSize()+1pi++) // <-
        
    {
            if(!
    IsPlayerConnected(i) || sf__PlayerPickUp[i] == false) continue;
           
            new 
    Float:sf__p_xFloat:sf__p_yFloat:sf__p_z// <- 
    Не надо так. Переменные будут создаваться и удаляться по началу и завершению каждой итерации, что в разы всё замедлит. Создавать их лучше до или в шапке цикла, пример:
    PHP код:
    for(new iGetPlayerPoolSize()+1Float:sf__p_xFloat:sf__p_yFloat:sf__p_zpi++) // <-
        
    {
            if(!
    IsPlayerConnected(i) || sf__PlayerPickUp[i] == false) continue;
           
            
    //... 
    Вот это, как я понимаю, определение расстояния по x и y:
    PHP код:
    if(floatsqroot(floatadd(floatpower(sf__x[i]-sf__p_x2), floatpower(sf__y[i]-sf__p_y2))) > LossPickup
    Для этого давно есть готовая функция VectorSize:
    PHP код:
    if(VectorSize(sf__x[i] - sf__p_xsf__y[i] - sf__p_y0.0) > LossPickup
    А так в целом неплохо, молодец)
    Последний раз редактировалось Nexius_Tailer; 27.02.2017 в 17:29.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Не особая разница. Лучше уже вообще вот так:
    PHP код:
    for(new GetPlayerPoolSize(); != -1; --i

    По коду:

    PHP код:
    for(new iGetPlayerPoolSize()+1pi++) // <-
        
    {
            if(!
    IsPlayerConnected(i) || sf__PlayerPickUp[i] == false) continue;
           
            new 
    Float:sf__p_xFloat:sf__p_yFloat:sf__p_z// <- 
    Не надо так. Переменные будут создаваться и удаляться по началу и завершению каждой итерации, что в разы всё замедлит. Создавать их лучше до или в шапке цикла, пример:
    PHP код:
    for(new iGetPlayerPoolSize()+1Float:sf__p_xFloat:sf__p_yFloat:sf__p_zpi++) // <-
        
    {
            if(!
    IsPlayerConnected(i) || sf__PlayerPickUp[i] == false) continue;
           
            
    //... 
    Вот это, как я понимаю, определение расстояния по x и y:
    PHP код:
    if(floatsqroot(floatadd(floatpower(sf__x[i]-sf__p_x2), floatpower(sf__y[i]-sf__p_y2))) > LossPickup
    Для этого давно есть готовая функция VectorSize:
    PHP код:
    if(VectorSize(sf__x[i] - sf__p_xsf__y[i] - sf__p_y0.0) > LossPickup
    А так в целом неплохо, молодец)
    Насчет переменных тупанул жестко) И про расстояние тоже) Пасиб

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

    Статус
    Оффлайн
    Регистрация
    22.11.2016
    Сообщений
    43
    Репутация:
    2 ±
    Вася опыта наберется с этого поста, не ну а как еще, часто вкладывайте свои работы, вас будут делать замечание, давать годные советы

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

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

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

    Steve Pavlina

  11. Пользователь сказал cпасибо:
    Daniel_Cortez (28.02.2017)
  12. #10
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Как ещё? Смотреть чужие темы и изучать советы, что давали там? А не забивать форум однотипными темами.
    Это к слову о "часто выкладывайте свои работы". Выкладывать нужно лишь годное. Иначе рано или поздно вас просто пошлют, а ваши темы удалят, если они не будут иметь пользы и будут создаваться лишь для того, чтоб получить советы
    Нигде не подписано самим автором, что он "сливает"/выкидывает (что в принципе одно и тоже) нам какую-то работу как мусор. Скорее всего это действительно имеет какой-то интерес для какой-то части пользователей. А не выкладывание тем и опыт лишь на чужих противоречит друг другу: не будет тем, не будет и материала, который можно изучать. Так что это как-бы звенья одной цепи.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  13. Пользователь сказал cпасибо:
    Guldan (28.02.2017)
 

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

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

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

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

Ваши права

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