burnout
Компетентный
незнаю есть подобное на портале или нет искал не нашёл автор не я прозьба модераторам не удалять выложил для себя чтоб патом не искать
I. Проверка на что то
Это просто ужасный код мода GF, а теперь мы его оптимизируем:
Незначительно, но все равно снимает нагрузку хоть и малейшую, а если оптимизировать по такой схеме все проверки будет значительная оптимизация!
II. Оптимизируем OnDialogResponse
Вместо кода:
Делаем такой:
Это очень сильно снимает нагрузку если перевести весь public, switch работает быстрее if/else так что советую первести на swtich все что возможно.
III. Return's
Очень часто в моде return в такой форме:
а лучше первести в такую форму:
VI. Циклы
Буду краток и скажу, что заместо for(new i=0;i<MAX_PLAYERS;i++) нужно использовать инклюд foreach(он действует только на проверку игроков). Скачать его можно за этой ссылкой
V. Ранги в /d,/f,/r чатах
в GF есть вот такой очень жесткой код в котором отдельная проверка на каждый ранг:
А её лучше заменить на вот такое:
И так во всех чатах.
VI. Массивы
Теперь мы посмотрим в public OnPlayerCommandText и найдем там строки:
Массив в 256 строк, это очень жестоко т.к в команде максимально 128 символов, тем самым мы их заменяем на:
VII. Команды
Так же я не буду много говорить, просто скажу что найдите пару свободных недель и переводите мод на ZCMD + sscanf, урок по пользованию вы можете найти у нас на портале в этом же разделе.
VIII. format и ранги для Администрации
В GF а так же в некоторых модах очень много не нужных format*ов т.к они ничего не заменяют, советую поискать и исправить это.
Я уверен на 100% кто пишет RPG мод в /a чат а так же в команды наказания администрации записывает в таком виде каждый раз:
Хотя этим самым вы делаете большую нагрузку на мод, что бы избежать это, сделайте просто вот так:
I. Проверка на что то
PHP:
if(IsACop(playerid))
{
SendClientMessage(playerid, -1, "Ты коп!!!!!");
return 1;
}
PHP:
if(IsACop(playerid)) return SendClientMessage(playerid, -1, "Ты коп!!!11!!");
II. Оптимизируем OnDialogResponse
Вместо кода:
PHP:
if(dialogid == 0)
{
}
if(dialogid == 1)
{
}
PHP:
switch(dialogid)
{
case 0:
case 1:
}
III. Return's
Очень часто в моде return в такой форме:
PHP:
return 1;
return 0;
PHP:
return true;// return 1
return false;//return 0
VI. Циклы
Буду краток и скажу, что заместо for(new i=0;i<MAX_PLAYERS;i++) нужно использовать инклюд foreach(он действует только на проверку игроков). Скачать его можно за этой ссылкой
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
.V. Ранги в /d,/f,/r чатах
в GF есть вот такой очень жесткой код в котором отдельная проверка на каждый ранг:
PHP:
if(PlayerInfo[playerid][pRank] == 8) { format(string, sizeof(string), "[F] Крёстный отец %s: %s", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 7) { format(string, sizeof(string), "[F] Зам. дона %s: %s", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 6) { format(string, sizeof(string), "[F] Консельери %s: %s", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 5) { format(string, sizeof(string), "[F] Капо %s: %s", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 4) { format(string, sizeof(string), "[F] Солдат %s: %s", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 3) { format(string, sizeof(string), "[F] Боец %s: %s", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 2) { format(string, sizeof(string), "[F] Партнёр %s: %s", sendername, result); }
else if(PlayerInfo[playerid][pRank] == 1) { format(string, sizeof(string), "[F] Новобранец %s: %s", sendername, result); }
PHP:
new rank[24];
switch(PlayerInfo[playerid][pRank])
{
case 8:rank = "Крёстный отец";
case 7:rank = "Зам. дона";
case 6:rank = "Консельери";
case 5:rank = "Капо";
case 4:rank = "Солдат";
case 3:rank = "Боец";
case 2:rank = "Партнёр";
case 1:rank = "Новобранец";
default:rank = "Новобранец";
}
И так во всех чатах.
VI. Массивы
Теперь мы посмотрим в public OnPlayerCommandText и найдем там строки:
PHP:
new cmd[256];
new tmp[256];
Массив в 256 строк, это очень жестоко т.к в команде максимально 128 символов, тем самым мы их заменяем на:
PHP:
new cmd[128];
new tmp[128];
VII. Команды
Так же я не буду много говорить, просто скажу что найдите пару свободных недель и переводите мод на ZCMD + sscanf, урок по пользованию вы можете найти у нас на портале в этом же разделе.
VIII. format и ранги для Администрации
В GF а так же в некоторых модах очень много не нужных format*ов т.к они ничего не заменяют, советую поискать и исправить это.
Я уверен на 100% кто пишет RPG мод в /a чат а так же в команды наказания администрации записывает в таком виде каждый раз:
PHP:
new arank[64];
switch(PlayerInfo[playerid][pAdmin])
{
case 1: arank = "ранг адм";
case 2: arank = "ранг адм";
case 3: arank = "ранг адм";
case 4: arank = "ранг адм";
case 5: arank = "ранг адм";
case 6: arank = "ранг адм";
}
Хотя этим самым вы делаете большую нагрузку на мод, что бы избежать это, сделайте просто вот так:
PHP:
stock GetAdminRank(playerid)
{
new rank[24];
switch(PlayerInfo[playerid][pAdmin])
{
case 5:rank = "ранг адм";
case 4:rank = "ранг адм";
case 3:rank = "ранг адм";
case 2:rank = "ранг адм";
case 1:rank = "ранг адм";
default:rank = "Игрок";
}
return rank;
}
