VCXZ
Members-
Posts
42 -
Joined
-
Last visited
Everything posted by VCXZ
-
Еще побродив по интернету, пришел к выводу, что правильнее всего важные действия сразу отображать в БД, а мелкие раз в какое-то время. (думаю, к мелким можно отнести допустим количество патронов у игрока или количество бензина в машине)
-
Всем привет Читал, что грамотнее всего подключаться к базе данных при старте ресурса, а отключаться при стопе, а не многократно подключаться/отключаться во время игры. Допустим, при старте ресурса мы подключаемся к БД. При заходе игрока на сервер, мы берем из БД его данные и ставим ему через setElementData. А при его выходе с сервера, обновляем данные в БД. Подскажите пожалуйста, будет ли безошибочно работать такой вариант: 1. При "внезапном" отключении игрока в связи с, например, проблемами с его подключением к интернету? 2. При не менее внезапном отключении сервера. Заранее большое спасибо за помощь.
-
Снова всем привет. Пробую сделать инвентарь с помощью SQLite. Понял, что для точной синхронизации между таблицей аккаунтов и таблицей инвентаря нужно использовать внешний ключ (foreign key). Скажите пожалуйста, возможно ли использовать его в MTA ? И вообще как определить (кроме пробы вручную ), какие возможности есть, а какие ограничены? Спасибо.
-
Спасибо. Ну да, функция Спасибо. Мне кажется, ссылку на эту страницу нужно добавить на главную https://wiki.multitheftauto.com/wiki/Main_Page или сюда https://wiki.multitheftauto.com/wiki/Sc ... troduction
-
Всем привет. Не раз на форуме видел сообщения, что нельзя разрешать изменение elementData на клиенте, т.к. в противном случае нечестные игроки будут изменять себе все данные. Скажите пожалуйста, я правильно понимаю, что это небезопасно: --client function ff (data, value) setElementData (localPlayer, data, value) end а это безопасно: --server addEvent ('changeDataFromClient', true) function funcchangeDataFromClient (data, value) setElementData (client, data, value) end addEventHandler ('changeDataFromClient', root, funcchangeDataFromClient) --client function ff (data, value) triggerServerEvent ('changeDataFromClient', localPlayer, data, value) end Заранее спасибо за помощь.
-
Это тот вариант, что я предполагал в самом начале. (осталось разобраться с (де)сериализацией) Интересно только, почему в elementData можно хранить различные типы данных, а в accountData только строки.
-
То есть для хранения данных на сервере в любом случае придется использовать базы данных? А возможен ли такой вариант: есть текстовый документ, в котором хранится inventar = { } (со всеми "внутренностями"), который через loadfile подгружается при старте сервера. А потом по новой записывается. Только как таблицу превратить в текст я не знаю. Просто мне очень нравится структура таблиц в lua и поэтому хотел бы использовать их.
-
Всем привет. Пытаюсь создать систему инвентаря, который будет сохраняться после выхода игрока. Сначала думал использовать accountData. Но меня смущает, что в значениях можно хранить только строки (конечно, строки можно преобразовывать после получения, но это наверное лишняя морока, учитывая, что нужно хранить абсолютно различные данные) Далее отложил этот вопрос и как раз легко и просто сделал некую "систему id", используя таблицы, которая работает следующим образом(может кому пригодится, хотя за правильность ее работы не отвечаю): есть таблица idtableonline = { } при старте ресурса она заполняется следующим образом: function idtableonlineresourceStart () for i = 1, 4002, 1 do idtableonline[i] = false end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), idtableonlineresourceStart) Когда игрок логинится, проверяем по этой таблице "свободный id". for i = 1, 4002, 1 do if idtableonline[i] == false then setElementData (client, 'idonline', i) idtableonline[i] = client break end end Когда игрок выходит, удаляем его из таблицы idtableonline. function idtableonlineOnPlayerQuit () local id = getElementData (source, 'idonline') if idtableonline[id] ~= false then idtableonline[id] = false end end addEventHandler ('onPlayerQuit', root, idtableonlineOnPlayerQuit) Это все вроде бы работает, и я подумал, почему бы не сделать на сервере одну огромную таблицу, в которой будет храниться инвентарь всех игроков. Принцип ее работы я предполагаю сделать примерно таким же, как и в примере выше, но без удаления данных при выходе игрока с сервера. Но я не знаю, как сделать, чтобы данные этой таблицы сохранялись при перезапуске сервера. Подскажите пожалуйста, как хранить таблицы на сервере и вообще разумный ли это вариант (в том числе в плане нагрузки на сервер), или нужно использовать accountData или вообще MySQL, в котором я совсем не ориентируюсь. Спасибо.
-
Спасибо, заменил строчку 5 на "for i, massa in pairs(t) do", теперь работает.
-
Почему это не работает? Пишет, что massa это таблица. (выполняется на сервере) function giveGruz (player) setElementData (player, "gruz", {[1] = 100, [2] = 50}) local t = getElementData (player, "gruz") for i, massa in pairs{ t } do outputChatBox( i..' '..massa, player ) end end addCommandHandler ('gg', giveGruz)
-
Спасибо. Еще вроде можно сделать attach и выставить анимацию. Но тут придется для каждой машины координаты вычислять.
-
Возможно ли изменить максимальное количество пассажиров для транспорта? Узнать можно (getVehicleMaxPassengers) изменить не знаю как. В интернете есть пара упоминаний про setVehicleMaxPassengers, но сейчас этой функции нет.
-
Всем привет. Пытаюсь сделать на сервере неровности на дороге, нашел, на мой взгляд, подходящие объекты, добавил, но машина/игрок проходят сквозь них. Вроде бы как, проблема в отсутствии коллизии (не совсем пока понимаю, что к чему). Как можно сделать эти объекты осязаемыми? Пример интересующего объекта: id 854 (CJ_urb_rub_3b)
-
Извиняюсь за нубский вопрос. Сейчас если с нуля погружаться в изучение баз данных, с чего лучше начать? С этого топика viewtopic.php?f=153&t=37482 или https://wiki.multitheftauto.com/wiki/RU/ ... /MTA-MySQL ?
-
Ребят, не совсем по теме. Наткнулся на видео (гта сан андреас с графикой и физикой как в гта 4, или наоборот, гта 4 с картой и объектами как в gta SA).Представьте какой крутой был бы мультиплеер. Вот только какие нужны компы
-
Да, получилось! Спасибо! Спасибо за предупреждение, обязательно учту это в дальнейшем! Благодарю всех за помощь!
-
Блин, ребят, что-то я совсем запутался Я и так, и сяк пытался применить ваши варианты - у меня ничего не выходит. Может быть я неправильно задал вопрос. Я в клиентской части пытаюсь создать функцию, которая будет принимать с сервера на клиент нужные значения переменных. То есть в аргумент этой функции мы передаем нужное название серверной переменной(переменных), она "находит" их в серверной части и передает в клиентскую. Потому я и спрашивал, как из "abv" сделать просто abv, в примере Elengar строка превращается в функцию, не получается "найти" нужное значение на сервере. Или я чересчур криворук.
-
Существует ли какая-то функция, которая сделает из строки "abvgd" просто abvgd без кавычек? (мне это нужно для того, чтобы не создавать 100 функций для приема в клиентскую часть каждого значения с серверной части, а создать одну f(...), но чтобы передать через такую функцию название нужной переменной, его нужно передать строкой) Во, нашел то, что нужно (только в PHP )
-
Я находил готовый скрипт поворотников, он работает вполне хорошо, правда на некоторых машинах кривовато стоит, но это мелочи. Проблема в том, что он работает на клиентской стороне, то есть наверное другим игрокам не будет видно. Хотя я точно не знаю.
-
Спасибо ребят!! У меня получилось, и знаете, я сразу сделал все правильно за исключением одной нубской ошибки: я когда принимал на клиенте переменную, еще и в eventhandler в аргумент эту переменную включал. Ну как бы "чтоб цепочка не потерялась"
-
Всё никак не получается в клиенте использовать серверное значение. Финальный мой вариант был такой: в клиенте ставим triggerServerEvent; в сервере из функции, обрабатывающей этот event ставим triggerClientEvent, передавая в аргументе нужное значение, но дальше, как его принять, я не понимаю. И примера похожего найти не могу. Не могли бы вы помочь?(что и за чем нужно делать) Заранее большое спасибо.
-
Что за BB и AA ? Переменные ? AA = 'текст' BB = 80 ? Тогда просто AA = AA..' '..BB и будет у тебя AA "текст 80" Да, переменные. Благодарю, Elengar. Подскажите еще пожалуйста, "насколько глобальны" переменные (таблицы в том числе)? Просто сейчас на клиентской стороне пытаюсь использовать данные из глобальной таблицы, созданной на серверной стороне, и не получается. А trigger вроде не для этого создан. Не совсем понимаю, что делать в данном случае.
-
Блин, что-то вообще туплю.. Как в строковую переменную уместить и текст и числовую переменную, то есть: если BB = 80, то AA должно быть "текст 80"
-
его код сработает. Попробовал на всякий случай, потонул Кстати, на счет кода Memory, я въехал в заправку на машине, всё-таки умер. Но думаю можно сделать так, чтобы в таком случае игрок появлялся рядом с машиной с 1 хп, используя onClientVehicleDamage, немного позже обязательно займусь этим.
-
Memory, Kenix, благодарю, ребят, выручаете. А кто-нибудь заметил, что в ссылке, которую предоставил Kenix, объясняется пример с точно таким же числом, про которое спросил я
