Доступ к готовым решениям

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

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

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

Урок Оптимизация в целом [Часть 2]

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

Caypеn

Компетентный
Перед прочтением этой темы, прочтите сначала "Часть 1"!

Пункт 1-ый по 5-ой находятся здесь:
Оптимизация в целом [Часть 1]

6. Циклы

Всем знаком подобный цикл.
PHP:
for(new i=0;i<MAX_PLAYERS;i++)
Дело в том что данный цикл перебирает от 0 до самой переменной Max_Players, по стандарту в инклуде samp.inc MAX_PLAYERS равняется 500, но об этом позднее, так вот получается что в этом цикле оно перебирает от 0-го до 500-го ID, но если у вас подключено в этот момент только 100 игроков допустим? Зачем этот перебор до 500-го ID.
Я нашел на офф.форуме сампа вот этот include, так же видел его где-то тут тоже



Этот include нужно будет загрузить в pawno/include
Метод использования:
PHP:
foreach (new i : Player)
Он перебирает от 0-го ID до последнего подключенного ID игрока,Без лишних ID которые даже не подключены.
Обратите внимание на то что есть и подобные циклы
PHP:
for(new k=0;k<MAX_PLAYERS;k++)
Их нужно заменять на такие.
PHP:
foreach (new k : Player)
буква там k или i или x не важно,это всего-лишь переменная и суть остается одна и та же.

7. MAX_PLAYERS,MAX_VEHICLES и т.д.

Видел много тем где написано, добавьте #undeff MAX_PLAYERS и #define MAX_PLAYERS (кол-во игроков), ну не знаю кому как, но можно сделать проще.
Идем в pawno/include и находим там a_samp открываем его и находим вот это.

PHP:
#define MAX_PLAYERS								(500)
#define MAX_VEHICLES							(2000)
И так видим MAX_PLAYERS стоит на 500, изменяйте на свое кол-во слотов(если у вас онлайн 10 а слотов 500, то 500 ставить не разумно...), далее MAX_VEHICLES, подсчитать их можно вот таким методом:
Создаем сток, и перемещаем туда все машины которые будут создаваться сервером при загрузки мода, далее под самую последнюю переменную машины ставим эту строчку.
PHP:
printf("%d Машин было успешно загружено!",ПОСЛЕДНИЯПЕРЕМЕННАЯМАШИНЫ+1);
Выглядеть это будет примерно так:
PHP:
	ballascar[0] = CreateVehicle(412,2653.9341,-2009.0320,13.3056,323.4019,85,85,300); //35 Ballas savanna
	CreateVehicle(412,2658.0420,-2009.0884,13.3053,323.2690,85,85,300); //39 Ballas sultan
	CreateVehicle(412,2665.7573,-1997.6373,13.3918,269.8071,85,85,300); //39 Ballas sultan
	CreateVehicle(547,2658.5288,-2042.0422,13.2840,1.0220,85,85,300); //39 Ballas sultan
	CreateVehicle(547,2654.6658,-2041.6796,13.2850,0.4804,85,85,300); //39 Ballas sultan
	CreateVehicle(566,2661.5547,-2009.6567,13.2471,326.0598,85,85,300); //39 Ballas sultan
	ballascar[1] = CreateVehicle(566,2665.0559,-2009.7874,13.2323,327.4051,85,85,300); //39 Ballas sultan
	printf("%d Машин было успешно загружено!",ballascar[1]+1);
Так теперь в OnGameModeInit вставляем название стока, если сток был таким
PHP:
stock createvehicles()
то, в onGameModeInit надо поставить вот это createvehicles();

Комплимируем, запускаем сервер и видем "(Столькото) Машин было успешно загружено!", так количество машин мы узнали, но не нужно делать поспешных выводов, т.к. допустим у нас 400 машин, а ведь надо помнить о том что есть машины которые создаются на сервере в процессе например через /fixcar, /veh и т.д. Допустим у нас слотов 200 а онлайна 100, а машин у нас 400, 400(уже созданных машин)+100(которые создадут игроки)+100(запас)=600 машин , в общем делаем так, кол-во машин + кол-во слотов и это вписываем в MAX VEHICLES
Ах да, забыл объяснить зачем нам это, в моде очень часто используются такие переменные new peremennaja[MAX_PLAYERS]; и так MAX_PLAYERS тут это как бы то число которое было указано в define MAX_PLAYERS, таким образом происходит экономия ячеек.
После этого всё что вы будете комплимировать с инклудом a_samp.inc будет иметь указанное вами число для MAX_PLAYERS и MAX_VEHICLES
Часть 1
Часть 2
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу