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

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

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

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

Оптимизация мода

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

burnout

Компетентный
незнаю есть подобное на портале или нет искал не нашёл автор не я прозьба модераторам не удалять выложил для себя чтоб патом не искать

I. Проверка на что то

PHP:
if(IsACop(playerid))
{
    SendClientMessage(playerid, -1, "Ты коп!!!!!");
    return 1;
}
Это просто ужасный код мода GF, а теперь мы его оптимизируем:
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:
}
Это очень сильно снимает нагрузку если перевести весь public, switch работает быстрее if/else так что советую первести на swtich все что возможно.

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; 
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу