Понедельник, 29.04.2024 Россия | Russia
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Всё для SA:MP » Уроки pawno » Оптимизация сервера (часть 1) (*icon-0*)
Оптимизация сервера (часть 1)
XuTДата: Понедельник, 17.01.2011, 01:35 | Сообщение # 1

Сообщений: 94
[ 5 ]
Награды:
[ 0 ]
Отсутствует!
Российская Федерация
Доброго времени суток! Эта тема является началом рубрики о оптимизации игровых серверов SA:MP!
Пoжaлуй нaчнeм c caмыx глaвныx oшибoк cтaрыx мoдoв (таких как The Godfather):

1) OnPlayerUpdate: данная функция служила, как сохранение в аккаунт серверных переменных. Но с выходом версии 0.2X, появилась функция, с таким же названием, служащая для быстрого обмена информации между игроком и сервером. И новички сразу же пришли в шок, увидев ужаснейшие лаги на сервере. Так что выход из ситуации - переименовать OnPlayerUpdate в другую функцию.

2) MAX_PLAYERS: сколько вы знаете серверов, имеющих онлайн 500 человек? GW? Думаю на этом и закончен наш немногочисленный список. Так зачем же нам эти огромные циклы, содержащие 500 проходов, при максимальном онлайне 20, 50, 100? Пустая трата времени. Если вы не можете вывести максимальное чисто игроков, то установите значение слотов, и допустим назвав #define MAX_REALPLAYERS 100 или меняйте значение "100" на своё. Так же можно вычеслять максимальный ID игрока, подсчетом в OnPlayerConnect и OnPlayerDisconnect.

3) MAX_VEHICLES: тоже самое, что и с MAX_PLAYERS, только MAX_VEHICLES имеет значение 2000. Вычислить колличество машин на сервере можно с помощью присвоения какой либо переменной, например maxcars, последней машине в OnGameModeInit. Не забываем про команду /veh, которая добавляет машины на сервер, поэтому нужно тут менять значение переменной.
Но с массивами простая переменная не пройдет, тут нужна константа, поэтому можно взять колличество ваших машин + 100 и записать в директиву препроцессора #define MAX_CARS 400 и использовать для массивов.

4) Таймер CustomPickups: полностью не оправдывает себя. Для чего нужен OnPlayerPickUpPickup? Совершенно глупо каждую секунду вызывать функцию, которая выводит тебе какое либо действие, при заходе игрока в определенную точку.

5) Двойной вызов таймера при открытии ворот:

К примеру:

Code
...
MoveObject(lcngate,1284.171631, -2056.462891, 53.184753,3);
lcngatetimer = SetTimer("LCNGate", 7000, 0);
SetTimer("LCNGate", 7000, 0);
...

+ уничтожение таймера, после вызова функции LCNGate. Тоже абсолютно не нужно, потому-что таймер "одноразовый" и больше не будет вызываться. Соответственно оставляем просто SetTimer("LCNGate", 7000, 0);

На этом закончена вводная часть оптимизации Godfather.


Я не одобряю воровства по двум причинам:
1) Мелкое воровство не принесёт желаемых результатов.
2) За крупную кражу почти всегда последует наказание. © XuT aka Dаrk

Форум » Всё для SA:MP » Уроки pawno » Оптимизация сервера (часть 1) (*icon-0*)
  • Страница 1 из 1
  • 1
Поиск:





DESP-Team Official Website © 2024 Все права защищены!
При копировании материала, ссылка на сайт и копирайты обязательны!
  Сайт оптимизирован под разрешение экрана 1024x786 и браузер Opera Дизайн данного сайта полностью принадлежит главному администратору сайта!
Forum design by Admin | Website desp-team.ucoz.ru