Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 4 из 4 ПерваяПервая ... 234
Показано с 31 по 38 из 38
  1. #31
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    607
    Репутация:
    289 ±
    Хотел бы дополнить, что помимо основной защиты (т.е. fileguard), стоит добавить защиту от идентичных имен.

    Допустим, что есть файл с именем file1.inc, но помимо него есть какая-то папка, в которой содержится файл с идентичным названием.
    Из этих файлов загрузится тот, который подключён раньше.

    Пример:
    PHP код:
    #include <file1>          // Файл будет загружен
    #include "folder/file1"  // Увы, но файл не будет загружен. 
    Фикс данной ошибки:
    PHP код:
    #if defined _inc_file1
         #undef _inc_file1
    #endif 
    Вы, наверное, видели, что в некоторых файлах YSI используется данный код.

    Впрочем, это лишь для тех, кто до сих пор пользуется старым компилятором. В компиляторе от Zeex данная ошибка устранена: отключена автоматическая генерация _inc_* (однако, используя compatibility mode, можно включить).

  2. Пользователь сказал cпасибо:
    Nexius_Tailer (25.08.2016)
  3. #32
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Онлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,652
    Репутация:
    2144 ±
    Добавил правило №9 - поместил его в середину списка после других правил, связанных с константами.
    Константы, обозначающие неправильные значения, должны быть равны -1.
    Рассмотрим это правило на примере константы, означающей, что у игрока нет дома.
    Плохой пример:
    PHP код:
    const MAX_HOUSES 100// На сервере всего 100 домов.
    const INVALID_HOUSE_ID 255// Если в player_info[playerid][pHouseKey] число 255, то у игрока нет дома. Почему бы и нет? 
    Но что, если вы потом захотите создать больше 255 домов? Сделаете 255-й дом на координатах, куда не сможет пробраться обычный игрок (например, под землёй)? Это уже костыль. Решается же эта проблема очень просто.
    Хороший пример:
    PHP код:
    const MAX_HOUSES 300;
    const 
    INVALID_HOUSE_ID = -1// Число -1 не будет конфликтовать с макс. кол-вом домов, т.к. число домов не может быть отрицательным. 
    Похожая проблема была в моде GodFather (интересно, кто-нибудь из "нынешнего поколения" видел этот мод?): там числом 255 обозначался неправильный ID игрока. Потом вышел SA-MP 0.3a, в котором к серверу могли подключиться до 500 игроков - тогда 255 перестал быть неправильным ID, что приводило к багам и весьма неожиданным последствиям для тех, кому не повезло зайти под 255-м ID.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    346
    Репутация:
    106 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Добавил правило №9 - поместил его в середину списка после других правил, связанных с константами.
    Можно также и 65535 использовать вполне, в отличие от 255 это число почти недостягаемо для обычных идов чего-либо
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  5. #34
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    607
    Репутация:
    289 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Можно также и 65535 использовать вполне, в отличие от 255 это число почти недостягаемо для обычных идов чего-либо
    Если честно, то лучше использовать всё разумно, а не так, как это делают многие: изменяют размерность массива, забывая о данных числах.

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    346
    Репутация:
    106 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Если честно, то лучше использовать всё разумно, а не так, как это делают многие: изменяют размерность массива, забывая о данных числах.
    Суть большинства из пунктов темы в принципе опирается на разумное написание кода. Просто я к тому, что конкретные числа (именно -1 или именно какое-либо ещё) абсолютно непринципиальны, главное просто не делать откровенно тупых действий
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  7. #36
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Онлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,652
    Репутация:
    2144 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Можно также и 65535 использовать вполне, в отличие от 255 это число почти недостягаемо для обычных идов чего-либо
    Вот только оно всё равно остаётся досягаемым, "почти" не считается. Рано или скоро 70-100 тыс. игроков на сервере станут нормой - пусть даже и не в SA-MP, а в каком-нибудь другом мультиплеере, но рано или поздно этот момент наступит.

    Думать нужно не исходя из современных реалий, а с расчётом на будущее. И не столько для того, чтобы потом не переписывать свой код (SA-MP стабильно стагнирует, и я очень сомневаюсь, что появится ещё один мультиплеер с таким же плохо продуманным API), сколько чтобы не пришлось переучиваться со старых "вредных" привычек.
    Предусмотрительность - одно из качеств, выделяющих хорошего программиста. Это уже давно стало аксиомой.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  8. #37
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    561
    Репутация:
    272 ±
    Цитата Сообщение от Seregamil
    кому как удобно пусть так и оформляют
    Да я внатуре отбитый даун был. Или есть.

  9. #38
    Аватар для Пельмень
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.12.2013
    Сообщений
    181
    Репутация:
    112 ±
    Как на счёт самого элементарного обнуления enum? Как тут щас в сампе принятно? Через цикл обнулять или через какой ни будь memcpy
    Почему бы просто не делать так?
    PHP код:
    new eInfo[MAX_PLAYERS][enumInfo],
    eResetData[enumInfo];
    eInfo[playerid] = eResetData

 

 
Страница 4 из 4 ПерваяПервая ... 234

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

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

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

Метки этой темы

Ваши права

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