Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 3 ПерваяПервая 1 2 3 ПоследняяПоследняя
Показано с 11 по 20 из 30
  1. #11
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    Да и так уже 500 млс поставил

  2. #12
    Аватар для Saibot
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.08.2016
    Сообщений
    58
    Репутация:
    24 ±
    Цитата Сообщение от KrutoyKrosch
    Ну представим мой сервак ддудосят и он аварийно завершает работу, при этом не вызывается OnGameModeExit, и что? Сохранения все пропадают
    Есть одно решение, даже таймеров не нужно будет.
    Получается, что ты грубо говоря каждые 20 секунд отправляешь длинные запросы в БД на сохранение данных которые даже небыли изменены.

    Не думаю, что такие значение, как:
    PHP код:
    `Sex` = '%d', `Skin` = '%d', `Money`NamePlayer` = '%s', `IDInterior` = '%d', `Bought` = '%d', `Status` = '%d', `Money` = '%d', `Bank` = '%d', `NumHome` = '%d', `IDStreets` = '%d', `Сity` = '%d', `X` = '%f', `Y` = '%f', `Z` = '%f' WHERE `ID` = '%d'
    `Status` = '%d', `HP` = '%f', `VehicleID` = '%d', `Color1` = '%d', `Color2` = '%d', `Paintjob` = '%d', `Tyres` = '%d', `Spoiler` = '%d', `FrontBumper` = '%d', `RearBumper` = '%d', `Nitro` = '%d', `Hydraulics` = '%d', `Engine` = '%d' 
    меняются каждые 20 секунд.

    Можно сделать после каждого изменения одного из этих перечислений сохранение, но именно того, что было изменено.

    Например игрок получил деньги и в том же теле делать запрос в БД
    PHP код:
    format(gstringsizeof(gstring),"UPDATE `players` SET `Money` = '%d' WHERE `ID`='%d'",
    pInfo[playerid][pMoney], pInfo[playerid][pID]);
    mysql_function_query(mysqlconnectgstringfalse""""); 
    И наш запрос получился коротким и только тогда когда у игрока было изменено перечисление pMoney

    Конечно нужно будет не много поработать, но зато не будет лишних запросов в БД.
    Но, решать тебе.
    Последний раз редактировалось Saibot; 30.10.2016 в 01:36.

  3. #13
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    Ну если никто ниже не напишет решения, придется сделать как ты написал

  4. #14
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    А что если два или более игроков зайдут и начнут тасовать между собой эти деньги?
    Как тут без таймеров то) если хочется что то сделать мягко и без флуда таймеры точно пригодятся.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  5. #15
    Аватар для KrutoyKrosch
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.02.2016
    Сообщений
    301
    Репутация:
    7 ±
    По сути кол-во запросов в цикле будет = их тасованию пока им не надоесть

  6. #16
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от KrutoyKrosch Посмотреть сообщение
    По сути кол-во запросов в цикле будет = их тасованию пока им не надоесть
    Если ты про мой вариант, то цикл быстро создаст много таймеров, которые не очень вредны в таком кол-ве, далее цикл окончится и таймеры как букеты начнут раскрываться один за одним по заданному интервалу, вариант от Saibot действительно лучше будет, так как серв с моим вариантом может упасть и не успеет что то засейвить, а тут у него на каждом шагу будет сейв, просто надо уметь с толком это всё делать чтобы не дудосили потом твою бд.

    - - - Добавлено - - -

    Есть такие вещи в игре которые постоянно тасуются туда сюда по кол-ву вот их и придется таким образом сохранять как я расписал если это конечно же к большому кол-ву объектов/субъектов и т.п.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  7. #17
    Аватар для Saibot
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.08.2016
    Сообщений
    58
    Репутация:
    24 ±
    Цитата Сообщение от vovandolg
    А что если два или более игроков зайдут и начнут тасовать между собой эти деньги?
    Можно поставить таймер на флуд в таких местах.

    А, каждые 20 + секунд оправлять больше 2000 (MAX_VEHICLES) запросов в БД не будет флуда? это только отправит public SaveVehicle не считая еще, SaveHome, SavePlayer и SaveApartment.

  8. #18
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от Saibot Посмотреть сообщение
    Можно поставить таймер на флуд в таких местах.

    А, каждые 20 + секунд оправлять больше 2000 (MAX_VEHICLES) запросов в БД не будет флуда? это только отправит public SaveVehicle не считая еще, SaveHome, SavePlayer и SaveApartment.
    Цитата Сообщение от vovandolg Посмотреть сообщение
    - - - Добавлено - - -

    Есть такие вещи в игре которые постоянно тасуются туда сюда по кол-ву вот их и придется таким образом сохранять как я расписал если это конечно же к большому кол-ву объектов/субъектов и т.п.
    Типо того
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  9. #19
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Отправлять запрос в БД после каждого изменения значения очень затратно и опасно. Можно попробовать объединить оба подхода и сохранять раз в N секунд только те данные, которые были изменены.

  10. Пользователь сказал cпасибо:
    VVWVV (30.10.2016)
  11. #20
    Аватар для Saibot
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.08.2016
    Сообщений
    58
    Репутация:
    24 ±
    Цитата Сообщение от ziggi
    Отправлять запрос в БД после каждого изменения значения очень затратно и опасно.
    Почему же? отправляться будут краткие запросы и то когда, это нужно будет.

    Вот пример:
    Зашел игрок на сервер и встал в АФК на 1 час, за этот 1 час кроме expa и lvl больше ничего не изменялось.
    Если сделать сохранение после изменение, то за это время только отправится два запроса на exp и lvl, но если будет таймер, как у автора темы, который каждые 20 секунд отправляет запросы в БД, то в итоге за один час только у этого игрока, что стоит в АФК отправится - 10.800 запросов в БД на обновление всех данных которые даже небыли за тронуты.

    Цитата Сообщение от ziggi
    сохранять раз в N секунд только те данные, которые были изменены.
    Если он создаст таймер для обновление, то как он узнает какие данные были изменены, что бы именно их обновить? делать кучу проверок?
    Последний раз редактировалось Saibot; 30.10.2016 в 17:22.

 

 
Страница 2 из 3 ПерваяПервая 1 2 3 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •