Caypеn
Компетентный
1. Прежде всего помните о том что если у вас сервер работает на файлах, то сохранять каждую штуку в моде при малейшем изменение не обязательно.
Допустим купил игрок дом и вы его тут же сохраняйте, да это правильно, а вот дом сохранять не обязательно, т.к. при нормальном функционирование сервера при авто рестарте можно поставить это сохранение.
Пример:
Везде в моде замените GameModeExit(); на GameModeExitFunc();
Далее ищем:
и заменяем весь паблик на что-то подобное:
Помните 2 важные вещи!
- 1. это НЕ касается сохранения игроков.
- 2. Всё что я написал в коде Русскими буквами это стоки/паблики вашего сохранения.
Так и теперь, повсюду из мода удаляем сохранение всего этого кроме этого паблика.
Подведем итоги, да лагов станет меньше, но есть и минус при краше сервера(Что бывает очень редко) данные за сегодняшний день у этих вещей будут утеряны.
2. Таймеры
Очень сильно нагружают мод, один человек нашел способ сделать их более точнее и более не нагружаемыми в несколько раз, имя человека Xemyl.
Более новая версия таймеров(одобрена OKstyle-ом и другими профессионалами):
Итоги в первой ссылке: Работает куда быстрее и точнее.
Ну вот основное вроде бы готово, теперь мелочи
3. Переменные
Ну что-же в РЛС видел я такую странность.
Значит там что-бы привязать машину ко фракции вот так:
у всех переменных
Потом внизу проверка на фракцию:
Ну а там уже сами машины
Что на мой взгляд бред...
Вот зачем использовать столько ячеек для того что бы привязать авто?
Не проще ли сделать так:
Ко всем new
В проверку на фракцию:
Теперь сами машины:
Экономнее вроде бы.
П.с. машина1,машина2 и т.д. это CreateVehicle(тут характеристики вашей машины);
4. Оптимизация сохранения игрока.
Так вот, значит после каждого изменения игрока почти в каждом моде идет его сохранение, чаще всего в таком виде:
Так вот, раз уж OnPlayerDisconnect все-равно вызывается даже при краше, то зачем его сохранять по всюду, можно всего лишь при его выходе из игры.
То есть по всюду из мода удаляем сохранение игрока.
и в
Вставляем свое сохранение.
Готово.
5. Switch и If
Постараюсь описать по подробнее.
В общем так, когда применять if а когда switch и что это вообще такое?
if - Проверка на заданные значения, пример использования:
switch - перебирает цифры, пример использования:
switch можно использовать только для цифр, ну а теперь что из них будет работать быстрее в каких ситуациях:
if работает быстрее с большими промежутками а то есть: 1,100,200,300
switch с маленькими а то есть: 1,2,3,4,5 (так же возможно 255,256,257)
Если switch вдруг столкнется с case которого нет в switch,то вернет default
Допустим купил игрок дом и вы его тут же сохраняйте, да это правильно, а вот дом сохранять не обязательно, т.к. при нормальном функционирование сервера при авто рестарте можно поставить это сохранение.
Пример:
Везде в моде замените GameModeExit(); на GameModeExitFunc();
Далее ищем:
PHP:
public OnGameModeExit()
PHP:
OnGameModeExitFunc()
{
СОХРАНИТЬЗОНА();
СОХРАНИТЬБИЗЫ();
СОХРАНИТЬЗАПРАВКИ();
СОХРАНИТЬАВТОМАСТЕРСКИЕ();
СОХРАНИТЬДОМА();
СОХРАНИТЬКВАРТИРЫ();
СОХРАНИТЬАККАУНТЫ();
СОХРАНИТЬМАТЫ();
СОХРАНИТЬБАНМАФИЙ();
СОХРАНИТЬБАНКФРАК();
GameModeExit();// Я бы посоветовал поставить таймер на рестарт сервера,если вы используете mysql сохранение или другое которое может не успеть выполниться до завершения работы мода(GameModeExit).
return true;
}
public OnGameModeExit(){return true;}
- 1. это НЕ касается сохранения игроков.
- 2. Всё что я написал в коде Русскими буквами это стоки/паблики вашего сохранения.
Так и теперь, повсюду из мода удаляем сохранение всего этого кроме этого паблика.
Подведем итоги, да лагов станет меньше, но есть и минус при краше сервера(Что бывает очень редко) данные за сегодняшний день у этих вещей будут утеряны.
2. Таймеры
Очень сильно нагружают мод, один человек нашел способ сделать их более точнее и более не нагружаемыми в несколько раз, имя человека Xemyl.
Более новая версия таймеров(одобрена OKstyle-ом и другими профессионалами):
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Итоги в первой ссылке: Работает куда быстрее и точнее.
Ну вот основное вроде бы готово, теперь мелочи
3. Переменные
Ну что-же в РЛС видел я такую странность.
Значит там что-бы привязать машину ко фракции вот так:
у всех переменных
PHP:
new lsacar[22];
PHP:
if(newcar >= lsacar[0] && newcar <= lsacar[21])
PHP:
lsacar[0] == машина1
lsacar[1] == машина2
lsacar[2] == машина3
lsacar[3] == машина4
lsacar[4] == машина5
и так далее...
Вот зачем использовать столько ячеек для того что бы привязать авто?
Не проще ли сделать так:
Ко всем new
PHP:
new lsacar[2];
PHP:
else if(newcar >= lsacar[0] && newcar <= lsacar[1])
PHP:
lsacar[0] = машина1
машина2
машина3
машина4
машина5
lsacar[1] = машина6
П.с. машина1,машина2 и т.д. это CreateVehicle(тут характеристики вашей машины);
4. Оптимизация сохранения игрока.
Так вот, значит после каждого изменения игрока почти в каждом моде идет его сохранение, чаще всего в таком виде:
PHP:
OnPlayerUpdateRL
То есть по всюду из мода удаляем сохранение игрока.
и в
PHP:
public OnPlayerDisconnect
Готово.
5. Switch и If
Постараюсь описать по подробнее.
В общем так, когда применять if а когда switch и что это вообще такое?
if - Проверка на заданные значения, пример использования:
PHP:
if(igraetvderbi[playerid] == 1)
{
return сделатьтото;// возврат (return) что-бы завершить выполнение этого процесса.
}
PHP:
switch(igraetvderbi[playerid])
{
case 0:
{
return сделатьтото;// возврат (return) потому-что смысла дальше перебирать нет
}
case 1:
{
return сделатьтото;// возврат (return) потому-что смысла дальше перебирать нет
}
deafult: return true;
}
if работает быстрее с большими промежутками а то есть: 1,100,200,300
switch с маленькими а то есть: 1,2,3,4,5 (так же возможно 255,256,257)
Если switch вдруг столкнется с case которого нет в switch,то вернет default
Часть 2
Последнее редактирование:
