Mozago
Новичок
Думаю многим новичкам будет полезен данный топик.
Я сам учился когда-то по таким же урокам.
В данной тебе я хочу показать как стоит оптимизировать , а как нет.
1. Возвраты:
Во всех модах данные функции выглядят примерно так:
Давайте посмотрим как же она будет выглядеть в оптимизированном варианте:
Второй вариант работает намного быстрее первого.
Так же можно сделать и с другими функциями:
Что у нас было:
Что у нас стало:
3. Получение имени игрока.
Не раз замечал что многие скриптеры/новичка для получения имени игрока используют данную функцию
Данная функция бесполезна, она только убивает ваш сервер.
Как же нам быть?
Решение этой проблеме придумал OKStyle
Давайте посмотрим что он придумал:
В enum pInfo создаем переменную:
В public OnPlayerConnect
Вот и все, пример использования:
Так же для упрощения работы можно сделать макрос:
Теперь хотел бы объяснить новичкам как не стоит делать:
Я видел много новых уроков об "оптимизации" от быдлокодеров.
не буду называть поименно, дабы не позорить их публично.
Они говорят нам что замена
является оптимизацией..
Это глупость, не расходуйте свое время зря, от этого вы ничего не получите.
Так же:
Многие говорят что данный макрос "оптимизирует" паблики:
Использование:
Так данное действие так же не оптимизирует ваш мод, создание макросов является лишь упрощением написания функций и не более.
Если у вас будут какие либо вопросы задавайте в тему и если собрались заняться оптимизацией своего мода, узнайте правильно ли вы делаете, действительно ли это оптимизирует мод или нет.
Надеюсь этот урок будет полезен хоть кому нибудь.
Я сам учился когда-то по таким же урокам.
В данной тебе я хочу показать как стоит оптимизировать , а как нет.
1. Возвраты:
Во всех модах данные функции выглядят примерно так:
PHP:
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
GivePlayerWeapon(i, 24, 1);
}
}
PHP:
for (new i = GetMaxPlayers()-1; i != -1; --i)
{
if(!IsPlayerConnected(i)) continue; //Если игрок не подключен, то цикл пропустит итерацию
GivePlayerWeapon(i, 24, 1);
}
Так же можно сделать и с другими функциями:
Что у нас было:
PHP:
if (IsPlayerInAnyVehicle(playerid))
{
new vehicleid = GetPlayerVehicleID(playerid);
SetVehiclePos(vehicleid, 0.0, 0.0, 10.0);
}
PHP:
new vehicleid = GetPlayerVehicleID(playerid);
if (vehicleid) SetVehiclePos(vehicleid, 0.0, 0.0, 10.0);
Не раз замечал что многие скриптеры/новичка для получения имени игрока используют данную функцию
PHP:
PlayerName(playerid)
{
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
return PlayerName;
}
Как же нам быть?
Решение этой проблеме придумал OKStyle
Давайте посмотрим что он придумал:
В enum pInfo создаем переменную:
PHP:
pName[MAX_PLAYER_NAME]
PHP:
GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);// узнаем имя подключившегося игрока и записываем в нашу переменную.
PHP:
format(string, sizeof(string), "Меня зовут: %s", PlayerInfo[playerid][pName]);
SendClientMessage(playerid,0xFFFFFFFF,string);
PHP:
#define PlayerName(%0) PlayerInfo[%0][pName]
Я видел много новых уроков об "оптимизации" от быдлокодеров.
не буду называть поименно, дабы не позорить их публично.
Они говорят нам что замена
PHP:
1/true
0/false
Это глупость, не расходуйте свое время зря, от этого вы ничего не получите.
Так же:
Многие говорят что данный макрос "оптимизирует" паблики:
PHP:
#define publics:%0(%1) forward %0(%1); public %0(%1)
PHP:
publics: Test()
{
}
Если у вас будут какие либо вопросы задавайте в тему и если собрались заняться оптимизацией своего мода, узнайте правильно ли вы делаете, действительно ли это оптимизирует мод или нет.
Надеюсь этот урок будет полезен хоть кому нибудь.
