Kazon
Компетентный
Здравствуйте пользователи Pawno-Info.ru данный урок будет про оптимизацию мод и не как остальные уроки а здесь будет описана максимальная оптимизация мода.
И так начнём
*2 Так же функции которые не вызываются таймерами лучше помещать в stock чем в public кроме стандартных функции!
*3 Так же я наблюдал такое действие использование forward'a для стандартных функций к примеру OnPlayerConnect но запомните стандартные функции не требуется форвардить!
*9 Лучше использовать стандартные функции Pawn чем функции других разработчиков так как стандартные работаю намного быстрее(В большинстве случаев)
*10 Часто видел цикл в цикле лучше так не делать лучше использовать их отдельно
*12 Мод лучше всего использовать на MySql чем на MxIni так как MySql работает в 10 раз(К примеру) быстрее и им легче пользоваться чем MxIni но многие новички думают что это сложно но это не так. Как пользоваться MySql вам объяснит Tracker1 Тык
*14 И на по следок ZCMD. ZCMD - это командный процессор который позволяет писать с помощью параметров то есть вы можете писать команду так же только вам уже не надо использовать там переменные вместо переменных уже надо использовать параметры params[0]; об этом вам расскажет James_Braga Тык
На сегодня всё ждите следующего урока
И так начнём
Используйте в скрипте/моде как можно меньше таймеров. Каждый таймер способствует постепенному нарастанию грыжи у сервера. Про это я подробно описал в своей теме Тык
*3 Так же я наблюдал такое действие использование forward'a для стандартных функций к примеру OnPlayerConnect но запомните стандартные функции не требуется форвардить!
Почему не следует использовать строки длинной в 256 ячеек. Этому нас научит Tracker1 в своей теме Тык
Многие пользователи Pawno не соблюдают табуляцию они предпочитают в место этого использовать #pragma tabsize 0 но эта функция не слабо нагружает мод. Как соблюдать табуляцию вам покажет Saimon_Jones. Тык
В некоторых случаях лучше использовать функцию напрямую, чем заводить для неё переменную.
Пример:
Как видите зачем нам здесь ещё нужна переменная? Если функцию можно использовать на прямую
А так же лучше использовать
чем
И если все это соединить то мы получим такой код
и запомните если у вас выполняется 1 функция то скобки { или } можно не употре***ть
Пример:
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 или 0 но зачем? Если переменная равна 1 или 0 то лучше её помещать в bool:.
Пример:
Раньше:
Сейчас:
Пример:
Раньше:
PHP:
new skin;
PHP:
new bool:skin;
Оптимизация циклов думаю уже многие знают что циклы в уменьшение работаю быстрее и лучше использовать GetMaxPlayersЧем MAX_PLAYERSТак как GetMaxPlayers узнаёт количество онлайн игроков на сервере а MAX_PLAYERS по умолчанию равно 500 и естественно с GetMaxPlayers наш цикл будет работать намного быстрее
Пример как пользуются многие пользователи
Пример в оптимизированном виде:
(OkStyle) Как видите здесь у нас уменьшение идёт в минус и ещё у нас здесь GetMaxPlayers а не MAX_PLAYERS и этот цикл будет работать в 2 ато и 3 раза быстрее чем MAX_PLAYERS а и ещё если вы хотите вашу переменную сделать равной 0 то не надо делать так
new i = 0; переменную не надо приравнивать нулю так как она по стандарту и так равна 0
Пример как пользуются многие пользователи
PHP:
for(new i = 0; i < MAX_PLAYERS; i++)
PHP:
for(new i = GetMaxPlayers() - 1; i != -1; i--)
new i = 0; переменную не надо приравнивать нулю так как она по стандарту и так равна 0
Лучше в моде использовать 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);
}
Если вы часто используете один и тот же код лучше для него сделать функцию к примеру stock многие узнают имя игрока так
и все время когда им надо узнать имя игрока они пишут этот код а не легче сделать его как функцию? К примеру:
Теперь чтобы узнать имя игрока нам всего лишь надо написать sendername(playerid)
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;
}
*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 Тык
На сегодня всё ждите следующего урока
Последнее редактирование:
