Jump to content

Alexey0402

Members
  • Posts

    34
  • Joined

  • Last visited

Everything posted by Alexey0402

  1. Я так понял, когда форма одежды одна и таже, то шейдером цвет одежды просто меняешь. А когда форма одежды другая, то уже модельку делать. Можешь скинуть гайд, как работать с шейдерами? А то я не могу найти хороший гайд. Просто долгое время с Samp работал.
  2. Как сделать подобное? Я так понял это скины? Или как-то иначе можно всё сделать?
  3. Hello guys! I'm sorry for my bad English, but I'm Russian. I have a problem. For the Library string any Russian symbol is two symbols. For example: Code: outputDebugString(tostring(string.len("кекс")) In logs: 8 The second example: Code: outputDebugString(tostring(string.len("кекс1и к")) In logs: 14 It is the cause of many difficulties, when I'm working with the library string. I will must count every Russian symbol if I want to use the library string. When I want to use automatical function to work with the library, it is the hell. Example: I want to print the first six symbols. ("Яы5 бю") Now I can't do it automatical. I must do it by hand. Code: outputDebugString(string.sub("Яы5 бю ядовит",1, 10)) How I was thinking: The first symbol is "Я". It is Russian symbol The second symbol is "ы". It is Russian symbol The third symbol is "5". It is not Russian symbol The fourth symbol is " ". It is not Russian symbol The fifth symbol is "б". It is Russian symbol The sixth symbol is "ю". It is Russian symbol In total, there are 4 Russian symbols and 2 other symbols. 4*2 + 2 is 10. It's bored. Please, say me how can I fix it? I want Russian symbol to be 1 symbol too.
  4. blabla вне области видимости получилось, надо было объявить переменную ранее. local bar; -- объявили переменную bar function foo( ... ) return bar( ... ) -- она будет в области видимости данной функции end -- установить для переменной bar функцию -- переменная останется при этом локальной function bar( ... ) return true end foo() Спасибо большое.
  5. I have found a solution. I use focusBrowser(nil) . All is good. One problem less. There is only the problem with the label now.
  6. Unfortunately, your suggestion did not help me. It does not work.
  7. How can I unbind "backspace"? I've found one thing. "shift + backspace" go you forward (to next page). I can use it, but it is strange method. (and user will understand that its page will have restarted)
  8. About the second problem. I have understood. Browser did not stop. "backspace" is button which has the effect to go back (on previous page). How can I forbid to go back on previous page?
  9. Probably, I incorrect tell about the first problem. Full code: errorW = {} -- this is in the top of the script function whenServerSendWrongAfterFirstPart(x) if(x == 1) then showErrorGui("К сожалению, такой логин уже занят. Пожалуйста, придумайте другой логин.") elseif(x == 2) then showErrorGui("Логин может состоять только из букв английского алфавита (латиница) и цифр, а также логин должен быть не менее 6 и не более 32 символов.") elseif(x == 3) then showErrorGui("Пароль может состоять только из букв английского алфавита (латиница) и цифр, а также пароль должен быть не менее 8 и не более 64 символов.") elseif(x == 4) then showErrorGui("Адрес электронной почты может состоять только из букв английского алфавита (латиница), цифр и следующих символов: .@_- .Также адрес электронной почты должен быть не менее 2 и не более 64 символов.") elseif(x == 5) then showErrorGui("Номер телефона может состоять только из цифр, знака плюс ('+') , а также номер телефона должен быть не менее 2 и не более 32 символов.") end end function showErrorGui(errorString) errorW.window = guiCreateWindow(0, 0, 1.0, 1.0, "Внимание!", true) guiBringToFront(errorW.window) errorW.label = guiCreateLabel(0, 0, 1.0, 1.0, errorString, true, errorW.window) errorW.button = guiCreateButton(0, 0, 1.0, 1.0, "Далее", true, errorW.window) guiSetFont(errorW.label, fonts.Registration) guiLabelSetHorizontalAlign(errorW.label, "left", true) local y = guiLabelGetFontHeight(errorW.label) local k = guiLabelGetTextExtent(errorW.label) local s = math.ceil(math.sqrt(k * y / 2.5) / y) local x = math.ceil(k / s) guiSetSize(errorW.window, x / 0.8, (y * s + (x / 0.8 * 0.6) / 3) / 0.85 + 0.01470588235 * height, false) guiSetSize(errorW.label, x, y * s, false) guiSetSize(errorW.button, x / 0.8 * 0.6, (x / 0.8 * 0.6) / 3, false) guiSetPosition(errorW.window, (width - x / 0. / 2, (height - (y * s + (x / 0.8 * 0.6) / 3) / 0.85) / 2, false) guiSetPosition(errorW.label, x / 0.8 * 0.1, (y * s + (x / 0.8 * 0.6) / 3) / 0.85 * 0.05 + 0.01470588235 * height, false) guiSetPosition(errorW.button, x / 0.8 * 0.2, (y * s + (x / 0.8 * 0.6) / 3) / 0.85 * 0.95 - (x / 0.8 * 0.6) / 3 + 0.01470588235 * height, false) guiWindowSetMovable(errorW.window, false) guiWindowSetSizable(errorW.window, false) end
  10. Hello world! I'm sorry for my bad English, but I am Russian. I haven't been helped on Russian part of forum. I have two serious problems. The first problem I have created a universal window to show notifications ("you have inputted the login that is busy" or "this menu is not available to you" etc). The window is a standart window centered on the screen. There are only a label and a button in the window. The label takes up most of the window. The button has one function. This function is closing the window. Because I am lazy, I do not want to find height and width the label, the window and the button. Therefore, depending on the size of a text (I find size of the text using guiLabelGetFontHeight and guiLabelGetTextExtent), I find size of the label. Then I find size of the button and size of the window. (All this is depends the size of the text). But there is a problem. I use guiLabelSetHorizontalAlign(errorW.label, "left", true) for line wrapping. But guiLabelGetTextExtent gets the size of a text without spaces, which guiLabelSetHorizontalAlign(errorW.label, "left", true) has created, when guiLabelSetHorizontalAlign(errorW.label, "left", true) made line wrapping. These spaces are reason of wrong set size of the label. I see two ways to solve the problem: 1. Tell me, how I can find out, how many pixels add to the height of the label, that a part of the text do not loses. 2. Or tell me, how I can make line wrapping. But do not transfer all word, but transfer part of a word (transfer letters, do letter-wrap). P.S. The size of a text I get so local y = guiLabelGetFontHeight(errorW.label) local k = guiLabelGetTextExtent(errorW.label) local s = math.ceil(math.sqrt(k * y / 2.5) / y) local x = math.ceil(k / s) -- the label has width = x and height = y * s The second problem. I have a problem with a browser. I created a browser. Then I created video as background of the browser. I attached children. All works good. But when I press "backspace" in a guiEdit, the browser stop. When I press "backspace" , when I am focussed on the browser, the browser stop. How I can fix it? If you do not understand me, ask me in the comments. I am sorry for my bad English. But I am tired of trying fix these problems. Help me, please.
  11. Люди, у меня есть два очень важных вопроса. ПОЖАЛУЙСТА, помогите мне с ними. 1. Сделал универсальное окно для выведения уведомлений (типо, вы ввели при регистрации тот логин, который занят уже/пытаетесь войти в то меню, в которое нельзя.). Обычное окошко (window) по средине экрана, где почти всё пространство (этого окна) занимает label, ну и одна button ещё есть в стиле "ок". Так вот, так как я ленивый человек, то адаптировать текст каждый раз не хочу. Поэтому в зависимости от размеров label (которые я нахожу через размер шрифта и размер текста) меняется window и button. И всё бы хорошо, но вот загвоздочка одна. Использую значит я guiLabelSetHorizontalAlign(errorW.label, "left", true), чтобы всё было не в одну строку. А косяк в том, что guiLabelGetTextExtent, которым я находил ПОЛНУЮ длину текста, не учитывает те пропуски, которые допускает guiLabelSetHorizontalAlign, когда слово не вмещается в строку. Из-за этих пропусков часто неверно считаются размеры. P.S. Подсчёт размеров делаю так local y = guiLabelGetFontHeight(errorW.label) local k = guiLabelGetTextExtent(errorW.label) local s = math.ceil(math.sqrt(k * y / 2.5) / y) local x = math.ceil(k / s) -- соответственно label имеет width = x и height = y * s Собственно как вы можете мне помочь. Я вижу два пути: 1. Расскажите как мне подсчитать сколько мне пикселей нужно добавить в размер height, чтобы часть текста не отсекалась. 2. Или расскажите как сделать перенос не слов, а БУКВ (то есть, чтобы слово разрывалось). !Проблема номер 2! Проблема с браузером. Создал gui браузер, поставил фоном видео, всё идеально. Прикрепил к браузеру деток, всё работает, но когда в поле edit нажимаешь backspace, то браузер закрывается или когда нажимаешь на фон (браузер, как фон)и нажимаешь backspace, то тоже браузер слетает. Посоветуйте как это пофиксить. ВНИМАНИЕ!!!! Если что-то не поняли, спрашивайте. Проблемы актуальные, никак решить их не могу.
  12. Расскажите про local function. Например почему здесь я "вызываю' глобальную функцию? Могу ли я вызвать blabla локально? local function RRClicked(button) if(button == "left") then blabla()--не выполнится, ибо blabla - локальная функция end local function blabla() end P.S. Из способов вызова локально знаю лишь создание и вызов eventа
  13. Вопрос по Lua есть. Сделал такое условие, но ,видимо, из-за не сильного знания lua неправильно написал, нарушив синтаксис или ещё что-то. Условие вручную проверил, всё должно работать,(по моей логике) но не работает. Само условие if(cX > width * 0.36589583333 and cX < 0.4835429 * width and cY > 0.5 * height + 0.106770833 * width and cY < 0.5 * height + 0.127359069 * width) В моём случае такие значения (outputDebugString-ом вывел) width * 0.36589583333 = 497 0.4835429 * width = 657 0.5 * height + 0.106770833 * width = 529 0.5 * height + 0.127359069 * width = 557 cX = 590 cY = 549 Теперь моя логика 590 > 497 (cX > width * 0.36589583333) -- условие верно 590 < 657 (cX < 0.4835429 * width) -- условие верно 549 > 497 (cY > 0.5 * height + 0.106770833 * width) -- условие верно 549 < 557 (cY < 0.5 * height + 0.127359069 * width) -- условие верно Вроде всё верно. Lua наверное этот код по-другому читает Исправьте, пожалуйста условие на правильное.
  14. Помогите с Mtaшным браузером. Создал guiBrowser, загрузил стандартные картиночку, всё нормально, всё работает. Обрадовался, создал html (про старую картиночку забудьте, её удалил), чтобы сделать видео фоном. Проверил этот файл в моём хроме, всё работает. Гружу через браузер MTA, грузится лишь Image1.jpg , а видео нет. Ждал 1 минуту, видео так и не было. Пробовал через Meta закачать то самое видео (оно около 160 MB, немного короче), результат тот же. Помогите мне, может этот код как-то можно "модифицировать" под браузер MTA? <!-- VideoBG --> <video autoplay loop poster="Image1.jpg" id="video-on-bg"> <source src="rback.mp4" type="video/mp4"> </video> <!--[if lt IE 9]> <script> document.createElement('video'); </script> <![endif]--> <style type="text/css"> video { display: block; } video#video-on-bg { background:url('Image1.jpg') no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -ms-background-size: cover; -o-background-size: cover; background-size: cover; width: auto; height: auto !important; min-width:100%; min-height:100%; position:fixed; left: 0; bottom: 0; z-index: -998; } </style>
  15. А видеозапись только через браузер игроку можно показать? Просто хотел сделать видеофон при авторизации.
  16. Если задать пустой НЕОБЯЗАТЕЛЬНЫЙ параметр, то MTA просто проигнорирует его? Типо hostname = "bla" username = "bla" password = "bla" database = "bla" --порт не указываю, ибо пока не нужен, но может понадобиться потом mysql_connect (hostname, username, password, database, port);
  17. Наверное так и сделаю. Самп выживание не выгодно, так?
  18. Вопрос про выгодность, а не про шедевральность (MTA для шедевров больше подходит). Какой из этих 3-ёх пунктов потенциально может мне обеспечить бОльшую выгоду за пол года, при условии качественного продукта и стартового бюджета в размере 40 000 рублей?
  19. Вот созрел вопрос про выгоду (по функционалу понятно, что Mta лучше). Есть наработки по всем 3 вариантам. Мод сам доделать могу и там и там. Бюджет 40 000 рублей. 1. RP сервер в сампе (большой онлайн сампа;высокая популярность RP в сампе, но высокая конкуренция, а также рекламу сервера многие воспримут, как очередное нубо-рп и не зайдут на сервер). Рп планирую с минимум отыгровок через /me и т.д.(всё, что можно само отыграется посредством мода. То есть когда ты надеваешь наручники, то в чате пишется "полицейский [id] достал наручники", "полицейский [id] надел наручники на [id]"). Не должно быть опыта и уровня (всё решает блат и деньги. Деньги заработать тяжёло, но от богатых родственников можно получить подарки (в реальности донатишь; в игре от 'родственников' получаешь)). Несколько играбельных персонажей. (до 4) У каждого есть навыки, после смерти надо нового перса создавать, но дом, машина, деньги сохраняются, ибо они общие для всех твоих персонажей. 3 города-государства и ещё куча всяких фич. 2. RP в MTA (низкая конкуренция, многие люди ждут RP в MTA, но очень низкий онлайн MTA (в 10 раз ниже сампа)). Примерно то же самое, что описал выше, но качественнее, удобнее + намного больше фич (например,смена времён года. Каждые реальные 6 реальных часов = 1 игровой день. Каждые 4 игровых часа = 1 игровой месяц, 12 игровых месяцев = 1 игровой год = 12 реальных дней. Погода для каждого месяца разная генерируется. На с/х всё сказывается). 3.Сервер выживания в самп. (большой онлайн сампа, низкая конкуренция, но низкий спрос на такие сервера). Типичное выживание без зомби в мире с радиацией, где идёт война группировок, всё это "приправлено" кучей навыков, квестами, возможностью поменять мир, крафтом, желанием пройти сюжетную часть. (уровней и опыта не будет; only прокачка навыков). Какой вариант актуальнее в ближайшие пол года для запуска и получении прибыли? Повторюсь: бюджет на запуск + поддержку сервера 40 000 рублей (+ то, что с доната до открытия перепадёт). Наработки (как скриптовые, маппинговые, так и идейные есть по всем 3 пунктам). По факту надо лишь доработать + написать пару новых систем. Жду ваших ОБЪЕКТИВНЫХ ответов. P.S. Просто не нашёл куда написать. На этом форуме комьюнити адекватное и многие имели дело с обоими продуктами.
  20. Всё,решил.Проблема была в моей криворукости.Я неправильно объявил двумерный массив. Вместо WeatherInWorld = {},{} надо было WeatherInWorld = {} и for i=1, 3 do WeatherInWorld[i] = {} end
  21. Ошибка явно не в этом.Тут всё правильно.Именно WeatherInWorld[1][4] надо,ибо это погода вечера прошлого дня.
×
×
  • Create New...