Jump to content

Дада (: фулдилка


Recommended Posts

  • Replies 2.4k
  • Created
  • Last Reply

Top Posters In This Topic

  • Other Languages Moderators

Я замечал она у меня двигалась снизу на середину и вверх.

Единственный выход узнать - написать в багтрекер)). Они расскажут что это!)

Да кстати MX_Master, сделай на всех машинах в игре номера MTA:SA)))

Link to comment
  • Other Languages Moderators

А кстати смотри если я захочу сделать плей (накидать туда всякой интересной фигни типо обмена денег магазинов машин) То есть шанс что он попадет в мта 1.1 или его можно тупо закинуть в кодгугл?

Link to comment

Чтобы твой ресурс попал в "стандартные" ресурсы для MTASA твой мод должен быть уникальным, интересным, легким в управлении и без ошибок. Думаю, он еще должен быть на английском языке. Если его еще одобрят.

Но это не повод не делать свой мод. Я, допустим, пишу скрипты просто ради интереса. Ну и для своего сервера еще.

Если хочешь, можешь потом свой мод выложить в комьюнити. Если пишешь мод вместе с кем-то, можно заюзать свой открытый гугл код проект для совместной разработки.

Link to comment

Может кому интересно. Внешний вид форума (голубой) мне как-то сразу ударил по глазам и, в самом начале я в браузере задал дополнительный CSS файл для отображения форума. В итоге получились:

2011-07-03_210927m.png

Link to comment

Мне тоже не нравятся цвета стандартного стиля, больно резкие. Но я, лично, привык к форуму во весь экран (раньше только так было), поэтому в панели управления можно сменить на landing_wide, и цвета я ему сделал не такие яркие.

Link to comment

Парни, помогите пожалуйста решить одну задачку.

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

1. В каждом ресурсе грузим XML файл с переводом

2. Помещаем все строки перевода в массив

3. Используем строки вот так: "msg[1]", "msg[15]"...

Это нормально? Или есть другой способо?

Link to comment

Насчет широкого скина могу сказать следующее - он юзабилен только при увеличении шрифта. Потому что читать очень длинные маленькие строчки весьма утомительно (это уже давно доказано). Но пропорционально увеличивая ширину и размер можно добиться более менее коротких строчек текста.

Кстати, еще один момент нащщет подсветки синтаксиса. При широком скине большинство кусков кода выглядят как положено. Но при узком скине переносы слов на новую строку делают средние и длинные строки кода непонятными на первый взгляд. В любом же прогерском редакторе обычным поведением, является перенос слов кода только после 1024 символов, но не ранее. Есть ли возможность сделать этот блок без авто переносов слов?

Парни, помогите пожалуйста решить одну задачку.

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

1. В каждом ресурсе грузим XML файл с переводом

2. Помещаем все строки перевода в массив

3. Используем строки вот так: "msg[1]", "msg[15]"...

Это нормально? Или есть другой способ?

ну хотя бы писать названия вместо чисел - msg['serverRules'], msg['welcomeToOurServer'], msg['kickReason_chatSpam']. Так будет понятнее для автора и возможных соавторов. А уж сама система хранения может быть любой, вплоть до такой, где сами игроки прямо в игре смогут добавить новый язык для мода вашего сервера, или просто вносить правки в какие-то тексты и ожидать проверки нового варианта модератором. Ваша фантазия справится лучше, чем наши советы по реализации. К тому же так интереснее, придумывать самому, иногда получается придумать нечто уникальное.

Link to comment

Некоторые системы работают иначе. Например переназначить функции которые работают с текстом, чтобы они проверяли есть ли для него перевод, пример:

Создать враппер вокруг outputChatBox, и когда мы будем с ним что-то выводить, к примеру outputChatBox ( "Hello world" ) этот текст будет проверяться в файле с выбранным переводом, если для "Hello world" находится перевод, то выводиться он, если нет - то "Hello world".

В этом способе несколько плюсов:

- Это удобно, сразу видно что скрипт выводит;

- Не надо менять скрипты, заменять все строки и т.д. Надо лишь добавить обработчик;

- Не требует обновления всех файлов с переводами сразу, если перевода не нашлось, выведет на основном языке, главное что сообщение будет всегда.

Link to comment

допустим, заменить 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

Да, спасибо за советы, подумаю над этим. А спрашивал я больше по поводу того, что не будет ли проблем с производительность/еще чем то при запихивании таких объемов в массив, а то кто его знает, где в этом программировании всплывет очередная проблема :)

Link to comment

LUA создавался как язык для работы с базами данных (поправьте, если наврал), так что миллион полей в таблице - это не так уж и много, переварит. У самого такая же система.

Link to comment

Добавлю еще, что объем данных в таблице ограничен только свободной оперативной памятью. Но сами понимаете, это не повод её заполнить до краёв (: А быстро или не быстро будет читать/записывать, это дело рук скриптера.

Link to comment

Возник вот какой вопрос. Необходимо сделать так, чтобы некое событие (event) срабатывало только для нескольких типов элементов, например vehicle, player, object...

Вижу 3 пути.

1. Проверять тип элемента и действовать соответственно (обрабатывать/пропускать) при условии, что к эвенту прицеплен root.

2. Создать dummy элементы по числу требуемых типов и сделать parent'ами для каждого типа по отдельности: vehicle_root, player_root и.т.д, но тогда потребуется несколько столько же одинаковых эвентов.

3. Создать единый parent для всего вышеперечисленного сразу. Тогда можно обойтись одним эвентом, но так как у элемента может быть только один родитель, этот вариант, скорее всего, не подходит, так как мало ли где еще понадобится провернуть нечто подобное для конкретного типа, а родитель охватывает не только данный тип, но и еще пару-тройку. Не пойдет.

Собственно, можно не изобретать велосипед, а использовать первый вариант. Но может кто поделится какой военной хитростью, чтобы легко и изящно и безо всяких getElementType( ), if ... end, etc.

( Хотя так ведь не бывает, правда =)

Link to comment

Можно создать прокси-функцию для 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

По моему второй пункт отлично подходит как решение задачи.

vehicle_root = createElement( "vehicle_root" );

и все новые машинки setElementParent( theVehicleElement, vehicle_root );

addEventHandler( eventName, vehicle_root, handlerFunction )

По поводу добавлять событие на root - это по моему лишняя нагрузка на процессор.

Link to comment

Всех благодарю. Тогда такой момент: поясните пожалуйста логику MTA в случае нескольких одинаковых эвентов. Например, onClientRender.

1. Допустим, их 10 штук и к каждой привязан вызов собственной функции.

2. Допустим, он (эвент) один, и сам вызывает все 10 функций.

Будет ли второй вариант быстрее (чисто теоретически) и как вообще MTA обрабатывает событие, если имеются несколько одинаковых eventHandler'ов. Выполняются ли они по очереди, в соответствии с очередностью объявления их в коде? Или движок сваливает все в одну кучу и на уровне движка остается лишь одно событие?

event1 -> function1( ) \

event2 -> function2( ) | ==> anEvent -> (func1, func2, func3)

event3 -> function3( ) /

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...