-
Posts
2,318 -
Joined
-
Last visited
Everything posted by lil Toady
-
Не запускается скрипт при смене версий
lil Toady replied to Antibird's topic in Помощь / Отчеты об ошибках
Естественно -
Не запускается скрипт при смене версий
lil Toady replied to Antibird's topic in Помощь / Отчеты об ошибках
Пока что не работают компилированные скрипты в 1.1 из-за того что мта перекодирует все файлы в utf8 и потом загружает, так вот для компилированных скриптом поддержки пока нет и ничего сделать ты сам не сможешь. -
Все уходит куда дальше, во времена мта 0.x
-
Не знаю что ты у меня спрашивал. История, прямо скажу, не правильная - все было чуть иначе, но близко к реальности.
-
Этот человечек? - это наш бэкап сервер, и его заставка
-
Да, и там не обязательно будет машина. Это может произойти не скоро, но может. Переменные надо обнулять.
-
А с чего ты взял что его хакнули? Если сайт не работал это еще совсем не значит что его взломали
-
Как запускаются остальные скрипты, с помощью startResource или они включены в мету каких-то ресурсов (что было бы правильнее) ?
-
That's not how it works, resource A should be a dependency of resource B specified in the meta.xml
-
Не особо понял как воспроизвести, какие значения надо задавать? Распиши по пунктам что надо делать.
-
1. setElementData была небольшой нашей недоработкой, в свое время не предусмотрели что взломав клиент и используя setElementData на клиенте можно менять то что задал сервер и повлиять на работу гейм-модов, а так как скриптеры и не задумывались о том что можно ввести дополнительные проверки на сервере, функцию пришлось заблокировать на уровне admin ресурса, поэтому в данный момент, на клиентской части, синхронизированную дату можно менять только на самом себе (на локальном игроке). В следующей версии это должно измениться, мы еще не пришли к общему решению данной проблемы, но скорее всего это будет дополнительный аргумент в серверной setElementData, который будет определять какую информацию может изменять клиент. (Если разрабатываешь ресурс для 1.1, то можно смело отключить убрать данную проверку, удалив в admin/server/admin_server.lua следующий код: addEventHandler('onElementDataChange', root, function(dataName, oldValue ) if getElementType(source)=='player' and checkClient( false, source, 'onElementDataChange', dataName ) then setElementData( source, dataName, oldValue ) return end end ) 2. Нам прислали такой gta-sa.exe, который не видела наша защита, и он как раз позволял игрокам носиться как бешеным + многое другое. В данный момент его перекрыли и если это обновление еще не вышло, то выйдет в скором времени. (Он так же перекрывает многие другие потенциальные читы), но если кто-то бегает очень быстро не стоит сразу его записывать в читеры, так как очень распространен в старых играх баг с процессорами AMD, из-за которого игры идут в разы быстрее чем обычно (исправляется распределением игры на один логический процессор, либо установкой официального патча от AMD - Core Optimizer)
-
Будете продолжать флеймить - я топик закрою, если вам что-то не нравится я думаю разумнее было бы написать что-то свое или дополнить историю первого автора, а не говорить что она не правильная, у каждого свои взгляды на мир. Я в этом вопросе совершенно нейтрален, в сообществе по-моему все одинаково важны, и гонщики и ДМеры и рпгшники и скриптеры, и т.д.
-
В МТА для этих нужд есть стандартный ресурс missiontimer, который используется многими стандартными гейм модами, в том числе стелсом. Думаю стоит глянуть на функции которые он экспортирует в его meta.xml и его код.
-
[Карты] Конвертация модов GTA:SA в MTA:SA?
lil Toady replied to [EFO]Kesha_F1's topic in Помощь / Отчеты об ошибках
В свое время значения поворотов на некоторых осях у некоторых элементов, в том числе объектов были развернуты (точно не помню, то ли с противо-часовой на часовую, то ли наоборот), что-бы они у всех элементов совпадали. Мой мирк конвертер устарел, но я точно помню что делали и новые версии, к сожалению с ссылками помочь не могу. -
вот пример каторый я вышел приводил : triggerClientEvent(source,"ongreeting",source) И что тут не так? Все правильно. Очевидно ты просто не понимаешь как это работает. От того что ты тут использовал source с ним ничего не случилось, его можно и дальше использовать, ты же не поменял его значение.
-
Не понимаю что ты говоришь... пример хоть приведи
-
Почему под разными переменными? С одной переменной ничего не случится от того что ты ее использовал как аргумент функции.
-
source передает сам клиент а client задан сервером, в зависимости от того, от кого он получил пакет То есть в таком случае во всех функциях, вызываемых из клиента, лучше использовать переменную client, нежели source, которую можно "перехватить" ? Спрашиваю, потому что до сего момента сплошь и рядом в этих функциях использовал source. Да, чтобы узнать игрока который вызвал функцию лучше использовать client, а как source можно и другие элементы передавать (если вообще нужно передавать какие-то элементы). Так же крайне не советую использовать всякие функции типа callServerFunction (которая позволяет вызывать любую функцию на сервере), да и вообще планировать логику скрипта с расчетом что ваши эвенты могут быть вызваны клиентом в любой момент, а не только когда предполагает ваш скрипт (это случается редко и мы с этим боремся, но время от времени появляются умельцы которые пытаются взломать этот функционал), добавляйте всякие проверки в функциях которые могут быть вызваны клиентом. Если есть какие-то вопросы по защите, задавайте.
-
source передает сам клиент а client задан сервером, в зависимости от того, от кого он получил пакет Ты вот этот таймер не убиваешь
-
1. Когда работаешь с triggerServerEvent надо быть очень аккуратным, у тя вот в этой строке уже есть не большой эксплоит который позволит людям постоянно запускать у других на экране окно регистрации. И тебе не надо использовать имя, ты можешь передавать элементы, хотя в этом случае это не нужно. 2. Если ты действительно очень хочешь привязать аккаунт к нику (что ни есть хорошо, вдруг игрок вступит в клан и сменит ник, или еще чего) то: triggerServerEvent ("check_player",getLocalPlayer()) и function reglog() local theAccount = getAccount ( getPlayerName ( client ) ) if ( theAccount ) then if ( isGuestAccount ( getPlayerAccount ( client ) ) ) then triggerClientEvent ( client, "show_gui", getRootElement(), "login" ) end else triggerClientEvent ( client, "show_gui", getRootElement(), "register" ) end end client - скрытая переменная заданная мта (как source) и означает клиента который вызвал функцию P.S: к нам иногда обращаются владельцы серверов, говорят что у них некоторые игроки взламывают скрипты и дают себе деньги, оружие, и т.п. (некоторые правда говорят админам как их взломали) Это как раз из-за вот этих незащищенных triggerServerEvent и неправильных дизайнов скриптов которые слишком доверяют клиенту через эту функцию, так что обрати на это внимание
-
ага, вот этого я не заметил
-
Нет такой вещи как "зарегинность", сервер не может знать зареген ты или нет, я могу придти на твой сервер и залогиниться с твоим акком не регистрируясь.. Но при этом у игрока всегда есть аккаунт, свой если залогинился, и гостевой если нет. Откуда ты вызываешь reglog и как? у тебя явно не задан thePlayer
-
Еще как проверяет, если ты не залогинелся, у тебя гостевой аккаунт
-
Как-бы не сказать что ты что-то исправил, resetMapInfo нужна что-бы обнулить многие вещи, как например цвет неба или уровень воды, или всякие другие вещи заданные каким-то ресурсом/гейм модом, что-бы следующий стартовал в исходном мире. Иначе у тя могут быть очевидные косяки при смене гейм модов
-
По вертикали в цикле берем каждого следующего родителя и сравниваем с нужным, что-то типо этого: function isParent ( element, parent ) element = getElementParent ( element ) while ( element ~= getRootElement() ) do if ( element == parent ) then return true end element = getElementParent ( element ) end return false end
