Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Оптимизация мода | Часть 1

Статус
В этой теме нельзя размещать новые ответы.

Kazon

Компетентный
Здравствуйте пользователи Pawno-Info.ru данный урок будет про оптимизацию мод и не как остальные уроки а здесь будет описана максимальная оптимизация мода.
И так начнём
Используйте в скрипте/моде как можно меньше таймеров. Каждый таймер способствует постепенному нарастанию грыжи у сервера. Про это я подробно описал в своей теме Тык
*2 Так же функции которые не вызываются таймерами лучше помещать в stock чем в public кроме стандартных функции!

*3 Так же я наблюдал такое действие использование forward'a для стандартных функций к примеру OnPlayerConnect но запомните стандартные функции не требуется форвардить!
Почему не следует использовать строки длинной в 256 ячеек. Этому нас научит Tracker1 в своей теме Тык
Многие пользователи Pawno не соблюдают табуляцию они предпочитают в место этого использовать #pragma tabsize 0 но эта функция не слабо нагружает мод. Как соблюдать табуляцию вам покажет Saimon_Jones. Тык
В некоторых случаях лучше использовать функцию напрямую, чем заводить для неё переменную.
Пример:
PHP:
new skin;
skin = GetPlayerSkin(playerid);
if(skin == 43){ SendClientMessage(playerid, -1, "У вас скин номер 43"); return true; }
Как видите зачем нам здесь ещё нужна переменная? Если функцию можно использовать на прямую
А так же лучше использовать
PHP:
return SendClientMessage(playerid, -1, " ");
чем
PHP:
SendClientMessage(playerid, 0xFF0000FF, " "); return true;
И если все это соединить то мы получим такой код
PHP:
if(GetPlayerSkin(playerid) == 43) return SendClientMessage(playerid, -1, "У вас скин номер 43");
и запомните если у вас выполняется 1 функция то скобки { или } можно не употре***ть
Наблюдал такую ситуацию что создавали просто переменную которая равна 1 или 0 но зачем? Если переменная равна 1 или 0 то лучше её помещать в bool:.
Пример:
Раньше:
PHP:
new skin;
Сейчас:
PHP:
new bool:skin;
Оптимизация циклов думаю уже многие знают что циклы в уменьшение работаю быстрее и лучше использовать GetMaxPlayersЧем MAX_PLAYERSТак как GetMaxPlayers узнаёт количество онлайн игроков на сервере а MAX_PLAYERS по умолчанию равно 500 и естественно с GetMaxPlayers наш цикл будет работать намного быстрее
Пример как пользуются многие пользователи
PHP:
for(new i = 0; i < MAX_PLAYERS; i++)
Пример в оптимизированном виде:
PHP:
for(new i = GetMaxPlayers() - 1; i != -1; i--)
(OkStyle) Как видите здесь у нас уменьшение идёт в минус и ещё у нас здесь GetMaxPlayers а не MAX_PLAYERS и этот цикл будет работать в 2 ато и 3 раза быстрее чем MAX_PLAYERS а и ещё если вы хотите вашу переменную сделать равной 0 то не надо делать так
new i = 0; переменную не надо приравнивать нулю так как она по стандарту и так равна 0
*9 Лучше использовать стандартные функции Pawn чем функции других разработчиков так как стандартные работаю намного быстрее(В большинстве случаев)
Лучше в моде использовать switch чем if/else if
Пример:
PHP:
if(Member == 0) return true;
else if(Member == 1) GivePlayerWeapon(playerid, 27, 100);
else if(Member == 2) GivePlayerWeapon(playerid, 27, 100);
else if(Member == 3) GivePlayerWeapon(playerid, 27, 100);
else if(Member == 4) GivePlayerWeapon(playerid, 27, 100);
else GivePlayerWeapon(playerid, 27, 100);
Лучше использовать этот код так:
PHP:
switch(Member)
{
    case 0: return true;
    case 1: GivePlayerWeapon(playerid, 27, 100);
    case 2: GivePlayerWeapon(playerid, 27, 100);
    case 3: GivePlayerWeapon(playerid, 27, 100);
    default: GivePlayerWeapon(playerid, 27, 100);
}
*10 Часто видел цикл в цикле лучше так не делать лучше использовать их отдельно
Если вы часто используете один и тот же код лучше для него сделать функцию к примеру stock многие узнают имя игрока так
PHP:
new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, sizeof(name));
и все время когда им надо узнать имя игрока они пишут этот код а не легче сделать его как функцию? К примеру:
PHP:
stock sendername(playerid) 
{ 
    new name[MAX_PLAYER_NAME]; 
    GetPlayerName(playerid, name, sizeof(name)); 
    return name; 
}
Теперь чтобы узнать имя игрока нам всего лишь надо написать sendername(playerid)

*12 Мод лучше всего использовать на MySql чем на MxIni так как MySql работает в 10 раз(К примеру) быстрее и им легче пользоваться чем MxIni но многие новички думают что это сложно но это не так. Как пользоваться MySql вам объяснит Tracker1 Тык

*13 Ещё я часто замечал такое
PHP:
if(IsPlayerConnected(playerid))
{
// Код
}
else { SendClientMessage(playerid, 0xFFFFFFFF, "Текст"); return true; }
Зачем так усложнять себе жизнь? Не легче сделать так:
PHP:
if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, 0xFFFFFFFF, "Текст");
// А дальше код

*14 И на по следок ZCMD. ZCMD - это командный процессор который позволяет писать с помощью параметров то есть вы можете писать команду так же только вам уже не надо использовать там переменные вместо переменных уже надо использовать параметры params[0]; об этом вам расскажет James_Braga Тык

На сегодня всё ждите следующего урока
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу