Как сделать код лесенкой pawno
SamPawno
Оптимизации Pawn Кода
Описание: Основы скриптинга
Модератор: SJplayer
#1 Дим » 20 апреля 2013, 20:25
Для начала, немного советов.
Совет #1:
Используйте в скрипте/моде как можно меньше таймеров. Каждый таймер способствует постепенному нарастанию грыжи у сервера.
Совет #2:
Функции которые не используются в таймерах, помещайте в stock а не в public
Совет #3:
При создании массивов типа:
Совет #5:
В некоторых случаях лучше использовать функцию напрямую, чем заводить для неё переменную.
Пример:
Совет #6:
Если в переменной может быть значение только 0 или 1, используйте тип переменной bool.
Пример:
PlayerInfo [ playerid ][ pDriving ];
/* Права на машину, они либо есть, либо их нет.
Поэтому pDriving в enum’е лучше пометить типом bool:pDriving */
// С обычными переменными аналогично
Совет #7:
Старайтесь меньше использовать такие константы как MAX_PLAYERS, MAX_VEHICLES и т.п.
Лучше сделать так:
#undef MAX_PLAYERS
#define MAX_PLAYERS 20
Совет #8:
Старайтесь использовать стандартные функции, в большинстве случаев они быстрее чем их аналоги написанные сторонними скриптерами.
Яркий пример:
PlayerToPoint и IsPlayerRangeOfPoint
Совет #9:
В некоторых случаях лучше использовать switch нежели if/else
Пример:
if( var1 == 1 ) print ( «1» );
else if ( var1 == 2 ) print ( «2» );
else if ( var1 == 3 ) print ( «3» );
else print ( «4» );
Лучше записать так:
switch( var1 )
<
case 1 : print ( «1» );
case 2 : print ( «2» );
case 3 : print ( «3» );
default : print ( «4» );
>
Совет #11:
В большинстве случаев, использование паблика OnPlayerUpdate не оправдывает само себя, поэтому лучше с ним не злоупотреблять.
Совет #12:
Никогда не используйте цикл в цикле.
Пример:
for( new i = 0 ; i MAX_PLAYERS ; i ++)
<
for ( new z = 0 ; z MAX_PLAYERS ; z ++) // Этот цикл выполнится 500 по 500 (т.е. 500 раз по 500)
<
>
>
Совет #13:
Если вы часто используете один и тот же код, лучше создать для него функцию.
Пользуясь этими советами, вы добьётесь большей эффективности скриптинга. Как в быстродействии, так и в визуальном восприятии кода.
А теперь пара приёмов «оптимизированного» кода.
switch( var1 )
<
case 0 : var1 = 1 ;
case 1 : var1 = 1 ;
case 2 : var1 = 1 ;
case 3 : var1 = 2 ;
case 4 : var1 = 2 ;
.
>
Лучше записать так:
Можно записать так:
for( new i ; i MAX_PLAYERS ; i ++)
new PlayerName [ MAX_PLAYERS ][ MAX_PLAYER_NAME ];
Далее в OnPlayerConnect ‘e записываем никнейм игрока в массив:
При каждом изменении ника по сценарию мода также добавляем эту строку (например в команду / setname )
При выходе игрока нужно очистить его ячейку в массиве:
PlayerName [ playerid ][ 0 ] = 0 ;
Для этого создаем глобальный двумерный массив:
Начало
Для начала, нужно скачать саму программу. *Кликабельно*
Далее, логично будет ее установить.
После установки, запускаем программу.
После того, как мы насладились этим прекрасным интерфейсом, следует нажать на этот значок:
Открывается такое меню, в котором нам нужно ввести pawn и установить первое расширение в списке.
Теперь перезапускаем программу, жмем Файл > Открыть папку, и открываем папку с вашим сервером.
Теперь мы можем открыть наш мод, если виден синтаксис павна, то мы все сделали правильно 🙂
Теперь нужно настроить компилирование, для этого заходим в Задачи > Настроить задачи.
Далее тыкаем все как на скринах ниже:
У нас открылся файл tasks.json
Содержимое этого файла нужно заменить на следующее и сохранить:
Основная часть закончена, теперь нужно забиндить клавишу F5 под компилирование.
Для этого переходим в Файл > Параметры > Сочетание клавиш
Теперь нужно кликнуть по keybindings.json
Откроется полный список биндов, и пустой список справа. Вставляем следующий код в список справа, не забываем сохранить все это.
Кодировка
Переходим в Файл > Параметры > Параметры
И добавляем в поле справа следующую строчку, и так же не забываем сохранять все это:
Теперь остается выбрать сборку Pawn по умолчанию.