Easterdie Posted July 3, 2011 Share Posted July 3, 2011 что значит звёдочка около надписи MTA:SA 1.0.5 внизу экрана? Link to comment
MX_Master Posted July 3, 2011 Share Posted July 3, 2011 Еще странно что она снизу, а не сверху как обычно - MTA:SA 1.0.5* Link to comment
Other Languages Moderators Disinterpreter Posted July 3, 2011 Other Languages Moderators Share Posted July 3, 2011 Я замечал она у меня двигалась снизу на середину и вверх. Единственный выход узнать - написать в багтрекер)). Они расскажут что это!) Да кстати MX_Master, сделай на всех машинах в игре номера MTA:SA))) Link to comment
MX_Master Posted July 3, 2011 Share Posted July 3, 2011 На моем 1,0,5 сервере все номера с именем моего проекта, если ты это имел ввиду. Link to comment
Other Languages Moderators Disinterpreter Posted July 3, 2011 Other Languages Moderators Share Posted July 3, 2011 я незамечал)))) а как сделал?? Link to comment
MX_Master Posted July 3, 2011 Share Posted July 3, 2011 при создании указываю номер (: https://wiki.multitheftauto.com/wiki/CreateVehicle -> numberplate Link to comment
Other Languages Moderators Disinterpreter Posted July 3, 2011 Other Languages Moderators Share Posted July 3, 2011 А кстати смотри если я захочу сделать плей (накидать туда всякой интересной фигни типо обмена денег магазинов машин) То есть шанс что он попадет в мта 1.1 или его можно тупо закинуть в кодгугл? Link to comment
MX_Master Posted July 3, 2011 Share Posted July 3, 2011 Чтобы твой ресурс попал в "стандартные" ресурсы для MTASA твой мод должен быть уникальным, интересным, легким в управлении и без ошибок. Думаю, он еще должен быть на английском языке. Если его еще одобрят. Но это не повод не делать свой мод. Я, допустим, пишу скрипты просто ради интереса. Ну и для своего сервера еще. Если хочешь, можешь потом свой мод выложить в комьюнити. Если пишешь мод вместе с кем-то, можно заюзать свой открытый гугл код проект для совместной разработки. Link to comment
MX_Master Posted July 3, 2011 Share Posted July 3, 2011 Может кому интересно. Внешний вид форума (голубой) мне как-то сразу ударил по глазам и, в самом начале я в браузере задал дополнительный CSS файл для отображения форума. В итоге получились: Link to comment
lil Toady Posted July 3, 2011 Author Share Posted July 3, 2011 Мне тоже не нравятся цвета стандартного стиля, больно резкие. Но я, лично, привык к форуму во весь экран (раньше только так было), поэтому в панели управления можно сменить на landing_wide, и цвета я ему сделал не такие яркие. Link to comment
SweetyWolf Posted July 3, 2011 Share Posted July 3, 2011 Парни, помогите пожалуйста решить одну задачку. Я хочу добавить в свой мод поддержку разных языков. Мне это дело видиться таким: 1. В каждом ресурсе грузим XML файл с переводом 2. Помещаем все строки перевода в массив 3. Используем строки вот так: "msg[1]", "msg[15]"... Это нормально? Или есть другой способо? Link to comment
MX_Master Posted July 3, 2011 Share Posted July 3, 2011 Насчет широкого скина могу сказать следующее - он юзабилен только при увеличении шрифта. Потому что читать очень длинные маленькие строчки весьма утомительно (это уже давно доказано). Но пропорционально увеличивая ширину и размер можно добиться более менее коротких строчек текста. Кстати, еще один момент нащщет подсветки синтаксиса. При широком скине большинство кусков кода выглядят как положено. Но при узком скине переносы слов на новую строку делают средние и длинные строки кода непонятными на первый взгляд. В любом же прогерском редакторе обычным поведением, является перенос слов кода только после 1024 символов, но не ранее. Есть ли возможность сделать этот блок без авто переносов слов? Парни, помогите пожалуйста решить одну задачку.Я хочу добавить в свой мод поддержку разных языков. Мне это дело видиться таким: 1. В каждом ресурсе грузим XML файл с переводом 2. Помещаем все строки перевода в массив 3. Используем строки вот так: "msg[1]", "msg[15]"... Это нормально? Или есть другой способ? ну хотя бы писать названия вместо чисел - msg['serverRules'], msg['welcomeToOurServer'], msg['kickReason_chatSpam']. Так будет понятнее для автора и возможных соавторов. А уж сама система хранения может быть любой, вплоть до такой, где сами игроки прямо в игре смогут добавить новый язык для мода вашего сервера, или просто вносить правки в какие-то тексты и ожидать проверки нового варианта модератором. Ваша фантазия справится лучше, чем наши советы по реализации. К тому же так интереснее, придумывать самому, иногда получается придумать нечто уникальное. Link to comment
lil Toady Posted July 3, 2011 Author Share Posted July 3, 2011 Некоторые системы работают иначе. Например переназначить функции которые работают с текстом, чтобы они проверяли есть ли для него перевод, пример: Создать враппер вокруг outputChatBox, и когда мы будем с ним что-то выводить, к примеру outputChatBox ( "Hello world" ) этот текст будет проверяться в файле с выбранным переводом, если для "Hello world" находится перевод, то выводиться он, если нет - то "Hello world". В этом способе несколько плюсов: - Это удобно, сразу видно что скрипт выводит; - Не надо менять скрипты, заменять все строки и т.д. Надо лишь добавить обработчик; - Не требует обновления всех файлов с переводами сразу, если перевода не нашлось, выведет на основном языке, главное что сообщение будет всегда. Link to comment
MX_Master Posted July 4, 2011 Share Posted July 4, 2011 допустим, заменить outputChatBox на свою функцию с теми же параметрами, но которая проверяет нет ли такого текста на выбранном игроком языке. -- клиентский пример -- предполагается, что msg и langID существуют outputChatBox_original = outputChatBox function outputChatBox ( text, ... ) if msg[ langID ][ text ] then outputChatBox_original( msg[ langID ][ text ], ... ) else outputChatBox_original( text, ... ) end end Link to comment
SweetyWolf Posted July 4, 2011 Share Posted July 4, 2011 Да, спасибо за советы, подумаю над этим. А спрашивал я больше по поводу того, что не будет ли проблем с производительность/еще чем то при запихивании таких объемов в массив, а то кто его знает, где в этом программировании всплывет очередная проблема Link to comment
Antibird Posted July 4, 2011 Share Posted July 4, 2011 LUA создавался как язык для работы с базами данных (поправьте, если наврал), так что миллион полей в таблице - это не так уж и много, переварит. У самого такая же система. Link to comment
MX_Master Posted July 4, 2011 Share Posted July 4, 2011 Добавлю еще, что объем данных в таблице ограничен только свободной оперативной памятью. Но сами понимаете, это не повод её заполнить до краёв (: А быстро или не быстро будет читать/записывать, это дело рук скриптера. Link to comment
Antibird Posted July 4, 2011 Share Posted July 4, 2011 Возник вот какой вопрос. Необходимо сделать так, чтобы некое событие (event) срабатывало только для нескольких типов элементов, например vehicle, player, object... Вижу 3 пути. 1. Проверять тип элемента и действовать соответственно (обрабатывать/пропускать) при условии, что к эвенту прицеплен root. 2. Создать dummy элементы по числу требуемых типов и сделать parent'ами для каждого типа по отдельности: vehicle_root, player_root и.т.д, но тогда потребуется несколько столько же одинаковых эвентов. 3. Создать единый parent для всего вышеперечисленного сразу. Тогда можно обойтись одним эвентом, но так как у элемента может быть только один родитель, этот вариант, скорее всего, не подходит, так как мало ли где еще понадобится провернуть нечто подобное для конкретного типа, а родитель охватывает не только данный тип, но и еще пару-тройку. Не пойдет. Собственно, можно не изобретать велосипед, а использовать первый вариант. Но может кто поделится какой военной хитростью, чтобы легко и изящно и безо всяких getElementType( ), if ... end, etc. ( Хотя так ведь не бывает, правда =) Link to comment
lil Toady Posted July 4, 2011 Author Share Posted July 4, 2011 Можно создать прокси-функцию для addEventHandler, которая будет проверять тип. local handledTypes = { vehicle = true, pickup = true } _addEventHandler = addEventHandler function addEventHandler ( event, root, handler, propagated ) -- Если только для какого-то особого эвента, то if ( event == "onMyEvent" ) then return _addEventHandler ( event, root, function ( ... ) if ( handledTypes[getElementType ( source )] ) then handler ( ... ) end end, propagated ) end return _addEventHandler ( event, root, handler, propagated ) end Что-нибудь в таком духе. Можно и отдельную функцию сделать, а не эту заменять. З.Ы. Троеточие так и должно быть, их не надо заменять именами Link to comment
Kernell Posted July 4, 2011 Share Posted July 4, 2011 По моему второй пункт отлично подходит как решение задачи. vehicle_root = createElement( "vehicle_root" ); и все новые машинки setElementParent( theVehicleElement, vehicle_root ); addEventHandler( eventName, vehicle_root, handlerFunction ) По поводу добавлять событие на root - это по моему лишняя нагрузка на процессор. Link to comment
MX_Master Posted July 5, 2011 Share Posted July 5, 2011 Простая, слегка тюнингованная, проверка на входе обработчика. local tType = { vehicle = 1, object = 1, player = 1 } -- .. if tType[ getElementType(source) ] then -- .. Link to comment
Antibird Posted July 5, 2011 Share Posted July 5, 2011 Всех благодарю. Тогда такой момент: поясните пожалуйста логику MTA в случае нескольких одинаковых эвентов. Например, onClientRender. 1. Допустим, их 10 штук и к каждой привязан вызов собственной функции. 2. Допустим, он (эвент) один, и сам вызывает все 10 функций. Будет ли второй вариант быстрее (чисто теоретически) и как вообще MTA обрабатывает событие, если имеются несколько одинаковых eventHandler'ов. Выполняются ли они по очереди, в соответствии с очередностью объявления их в коде? Или движок сваливает все в одну кучу и на уровне движка остается лишь одно событие? event1 -> function1( ) \ event2 -> function2( ) | ==> anEvent -> (func1, func2, func3) event3 -> function3( ) / Link to comment
lil Toady Posted July 5, 2011 Author Share Posted July 5, 2011 По очереди, по идее в зависимости от очереди объявления, но на это расчитывать не стоит Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now