Кучу проверок + цикл
так себе идея
- - - Добавлено - - -
а можно каким то способом узнать ддусят ли сервак или нет? просто если только начали - запускать сохранение, а так просто только в дисконнект запихать и се
Кучу проверок + цикл
так себе идея
- - - Добавлено - - -
а можно каким то способом узнать ддусят ли сервак или нет? просто если только начали - запускать сохранение, а так просто только в дисконнект запихать и се
Можно примерно узнать общую загруженность (типо фпс) сервера через GetServerTickRate, чем ниже значение - тем хуже.
Насчёт дудоса: сохранение наверняка ещё больше повысит нагрузку в тот момент
Не хотите постоянно проверять обновления моих скриптов?
Подключите его последним, после всех остальных
Nexius's Update Checker
KrutoyKrosch (30.10.2016)
тикрейт разве отвечает за загруженность? я слышал что это типа максимальная скорость обмена данных на сервере, ну ща посморим
А я слышал что если вместо "return 1" писать "return true" производительность мода будет выше.
На вики все написано.
решил в OnPlayerUpdate засунуть, посмореть какой тик будет
через минуту после того как зашел на сервер
просто при низком тике запускать сохранение и кикать всех игроковКод:SA-MP 0.3.7 Exception At Address: 0x0040F64C Base: 0x03970000 Registers: EAX: 0x00000000 EBX: 0x22118688 ECX: 0x041C4D28 EDX: 0x000005A0 ESI: 0x00C6A2CC EDI: 0x22112680 EBP: 0x2210C678 ESP: 0x0177FBBC EFLAGS: 0x00210246 Stack: +0000: 0x007104C3 0x22112680 0x00000000 0x00000000 +0010: 0x00B6F9CC 0x00C6A7F0 0x00000001 0x00000000 +0020: 0x041C00C0 0x00000001 0x22112680 0x1005764C +0030: 0x00000016 0x3C0010D7 0x3F4517D1 0xBF235C0A +0040: 0x44BC69BC 0x44AA5E59 0x436C53FE 0x44BC4BEB +0050: 0x44AA60EE 0x436CAE9E 0x00000000 0x2210C678 +0060: 0x041C4D28 0x22112680 0xBDA54000 0xBEB54000 +0070: 0x0000000B 0x00FFFFFE 0x00000800 0x0000072B +0080: 0x0000003B 0x00000000 0x0000003B 0x041C00C0 +0090: 0x00000000 0x000006AB 0x041C75C0 0x000004AC +00A0: 0x041C75C0 0x0177FCEC 0x76F55DE0 0x133DEC95 +00B0: 0xFFFFFFFE 0x0177FCB0 0x76F25005 0x00006000 +00C0: 0x00006008 0x00000000 0x0177FCA4 0x00B6F9CC +00D0: 0x44BC69BC 0x44AA5E59 0x436C53FE 0x00000000 +00E0: 0x00000000 0x041C75C0 0x00000003 0x00000000 +00F0: 0x22118688 0x0177FCC0 0x76F24EA2 0x00000000 +0100: 0x3F6E8800 0x0177FCFC 0x00824219 0x041C0000 +0110: 0x00000000 0x0082421E 0xBBDC09A1 0xBF7B9B10 +0120: 0x3E3CCA66 0x00000061 0x3F72EF6A 0x3D547716 +0130: 0x3E9F4672 0x00825EA4 0xBEA17005 0x3E354B7E +0140: 0x3F6EAD10 0x0082423B 0x44BC4BEB 0x44AA60EE +0150: 0x436CAE9E 0x00000000 0x00000000 0x00000000 +0160: 0x0177FD7C 0x00848BD8 0x00000000 0x00711E46 +0170: 0x00C6A2CC 0x00B6F9CC 0x00000061 0xC83B3952 +0180: 0x0177FD8C 0x0053C1B0 0x00B6F9CC 0x0000001A +0190: 0xFFFFFFFF 0x00000000 0x3C9684BC 0x3FE7A5D0 +01A0: 0xBFC00000 0x03A0DAAE 0x0000001A 0xC83B1A99 +01B0: 0x00000000 0x12004A20 0x0177FD64 0x0177F6FC +01C0: 0x0177FF70 0x03A25D64 0x03A4A678 0x00000002 +01D0: 0x73AAF5E0 0x0053E986 0x00000001 0x008241AF +01E0: 0x004D9486 0x0053ECC2 0x00000001 0x00619B71 +01F0: 0x0000001A 0x00000001 0x00000001 0x0000000A +0200: 0x00748DA0 0x0000001A 0x00000001 0x7689CD90 +0210: 0x00000000 0x0177FF80 0x003A3000 0x011C0000 +0220: 0x4F483B0F 0x041C0EC8 0x00000008 0x00000100 +0230: 0x00000008 0x00000102 0x44700000 0x44070000 +0240: 0x00000000 0x00000000 0x00000780 0x00000438 +0250: 0x00000000 0x00000001 0x000106FC 0x00000200 +0260: 0x00000000 0x021C03C0 0x04774FCE 0x000003C0 +0270: 0x0000021C 0x0000002C 0x0177FE24 0x00825EA4 SCM Op: 0x685, lDbg: 0 LastRendObj: 19477 Game Version: US 1.0 State Information: Ped Context: 0
Последний раз редактировалось KrutoyKrosch; 30.10.2016 в 18:33.
Как вариант, создать второй массив, аналогичный массиву для хранения информации о аккаунте, и записывать в него данные при сохранении. Типа
И при обновленииPHP код:
new pInfo[MAX_PLAYERS][e_PLAYER_INFO];
new pInfo_buff[MAX_PLAYERS][e_PLAYER_INFO];
Но такой вариант, на самом деле, хорош только, например, для сохранения позиции или каких-то подобных данных, которые сами по себе обновляются часто и при изменении их сохранять не стоитPHP код:
if(pInfo_buff[playerid][имя_константы] != pInfo[playerid][имя_константы])
{
//тут запрос
pInfo_buff[playerid][имя_константы] = pInfo[playerid][имя_константы];
}
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Blood (31.10.2016) KrutoyKrosch (30.10.2016)
А если два раза изменится основной массив ? Получается он будет проверятся по первому, а изменение то второе. Думаю понял о чем я
все дошло как ты хочешь сделать) В принципе для автомобилей, домов, квартир это подойдет, там то не так часто что то обновляется. А для игроков все таки можно проверять тик и если он низкий включать сохранения через таймер. Ну и так по сути обычно на хостах mysql база и сам мод находится на разных серверах, поэтому если что то одно ддосят не так уж и страшно.
Последний раз редактировалось KrutoyKrosch; 30.10.2016 в 18:51.
Не думаю, что, даже при онлайне в 1000 игроков и при сохранении основных данных прямо при их изменении, MySQL не вытянет всю нагрузку.
На многих серверах-гигантах сохранение происходит прямо при изменении (это можно определить, например, зайдя в игру + зайдя в личный кабине на сайте, а после начать передавать деньги и смотреть на данные в личном кабинете) и проблем особых нет. Мультипоточные запросы решают
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Вообще я бы не советовал держать на домашнем ПК публичный игровой сервер.
Культурный обмен во все времена был одним из важных развлечений. (С) Татикома из "Призрак в доспехах: Синдром одиночки"
На самом деле да, нужно просто использовать сохранение совмещая оба способа(сохранение при выходе игрока и при изменении). Тогда можно минимизировать потерю данных и уменьшить нагрузку.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)