-
Posts
74 -
Joined
-
Last visited
Everything posted by obuhhh
-
getEventHandlers — возвращает все фукнции-обработчики, которые привязаны к этому хендлеру в текущем скрипте. cancelEvent — Например при событии "onPlayerWasted" ты отменяешь его, тем самым игрок не умирает. После чего ты, например, можешь выдать ему 100хп здоровья и убрать деньги как штраф. Все зависит от мода и твоих нужд. Или событие когда игрок хочет сесть в машину, ты проверяешь его ли машина и отменяешь событие, если не его. getCancelReason — при отмене события (в функции выше), ты можешь указать вторым аргументом причину, которую можно потом поймать. removeEventHandler — надо же когда-то тебе обработчик отвязать. Например, отменить рендер картинки, если игрок сел в авто. Т.е. вместо того, чтобы около 60 раз в секунду проверять не сидит ли игрок в машине и от этого рисовать картинку или нет, можно повесить это на события: когда игрок садится в машину — весить обработчик и рисовать, а когда выходит из неё — убирать обработчик рисования картинки. triggerClientEvent (я так понимаю вызываю созданное событие addEvent) — Да, на клиенте ты его создаешь, вешаешь на него обработчик, а с сервера дергаешь триггером. triggerEvent — этот триггер для односторонних вызовов и событий. Триггеров есть три: triggerEvent — дергает событие на одной и той же стороне: серверное из сервера или клиентское из клиента. Т.е. если событие и его обработчик находятся на сервере, то, чтобы дернуть его из сервера нужно использовать эту функцию. triggerServerEvent — Тут же ты из клиента дергаешь событие, которое создано на сервере. triggerClientEvent — наоборот — из сервера клиентские. Уже написал выше. При этом, чтобы создать событие, которое можно дергать из другой стороны (для последних двух триггеров), нужно при его создании, указать вторым аргументом True. addEvent( "onMyEventTriggered", true ) Остальные функции мне не приходилось еще использовать, поэтому не уверен в их назначении. P.S. Советую не искать в вики лишь на русском языке. Вики не дописана до конца на русском, поэтому часть страниц нет, но почти все есть на английском.
-
Ошибка CD20 при входе на любой сервер!
obuhhh replied to artemii646's topic in Помощь / Отчеты об ошибках
Интернет у тебя медленный. Будто ты с GPRS подключаешься. Или что-то у тебя включено, что блокирует "канал". Торренты поотключай. -
Кстати, да. Изучая сайт, я вот как-то умудрился упустить тот момент, что за сервера было бы хорошо голосовать прямо из списка, не открывая страницу сервера. Во-первых, соглашусь, это мой косяк. Надо было подумать о том, что это именно мониторинг и оценки игроков. Во-вторых, это говорит, что мне об этом ничего не напомнило на сайте. Ну вот вообще никак. Исправить это можно изменив "Подробнее" на "Проголосовать", при нажатии на которую вылезает поп-ап карточка сервера, а не переадресовывает на другую страницу. На нем же можно все компактно разместить, т.к. много информации о сервере не предоставляется, в т.ч. поле для ника, чтобы владельцы сервера могли поощедрить игрока, и кнопку, которые будут видны сразу при открытии карточки сервера. Да и повторюсь: это — черновик, на который ушел лишь час. Там еще есть много чего, что надо исправлять и доделать. На задизайненный интерфейс не час уходит.
-
Здесь надо нажать: Перечитав остальное, не нашел весомых аргументов в пользу текущего дизайна и интерфейса, который я раскритиковал и посоветовал исправить хотя бы мелкие детали.
-
Есть такая функция в МТА, которая создает кастомные орудия — createWeapon. Создает она отдельный элемент? Это статичная пушка, которая стреляет? При изменения хар-стик этого элемента, не изменяется ли что-то у стандартных орудий? Что будет если приатачить их к руке и повесть хендлеры? Что будет с синхронизацией между игроками при такой стрельбе?
-
local a = 12 local b = 14 print( a, b ) -- 12 14 a, b = b, a print( a, b ) -- 14 12
-
Постарайтесь не цитировать такие большие сообщения. Достаточно лишь части начала сообщения, чтобы пришло оповещение, или чтобы было понятно к кому Вы обращаетесь. Это можно сделать выделив часть сообщения и нажав "цитировать". Привыкнуть можно и к постоянному шуму дрели, только нравится ли он Вам? Привыкнуть к чему-то — еще не значит, что оно хорошее. Многие повторяю ошибки других людей/проектов, потому что пользователи привыкли. Да, я понимаю, что не надо делать велосипедов, когда есть готовые решения. Это не значит, что надо брать плохие готовые решения. Не сказал бы, что переход от списка к "карточкам" это прямо такой уж и огромный поворот против систем мониторинг. Это скорее поворот в сторону хорошей реализации интерфейса сайта. Да, рейтинг можно сделать списком, но будет ли он удобнее и информативнее хотя бы таких "карточек"? Будет ли он приятнее? Вряд ли. Такой шаг в изменении уйдет много сил на реализацию, но хороший результат требует их. Покупка рекламы — это пользователи, которые заходят на сайт первый раз, фактически (тоже зависит от рекламы). Увидев ужас, они разворачиваются и уходят. А Вы теряете часть денег впустую. Деньги в первую очередь должны идти на оплату хостинг, в то время на рекламу должна уходить часть средств лишь тогда, когда вы уверены, что можете зацепить посетителя сайта, а не спугнуть его. Последнее мнение лично мое, и может быть ошибочным. А остальное может идти Вам в карман за честно заработанный труд и потраченное время.
-
А на счет дизайна никто не заикнется? Всех все устраивает? Я считаю, что этот дизайн и оформление — ужас. Из-за него, уверен, из людей, которые покидают сайт и не возвращаются, процентов так 80 из-за дешевого разноцветного вырвиглаз дизайна. Я понимаю, что есть люди, которые просто не видят плохого и хорошего дизайна. Но если ты разработчик и администратор, то надо хотя бы спросить у кого-то нравится им ли сайт внешнее. И не у одного друга, который "оо да, это круто, молодец", а в нескольких и даже в не очень знакомых, и лучше не говорить, что это ты его сделал. Просто тыкнуть ссылку и сказать: "Тут один один придурок говорит, что дизайн его сайта очень хороший. Глянь, ты что скажешь, мм?". Так вы услышите очень полезный отзыв. Что я думаю по дизайну. Попытаюсь просто рассказать первое, что в глаза кидается. Около 10 цветов. Не знаю даже что сказать по этому поводу. Скажу просто. Не надо использовать еще один цвет акцента, если хочешь выставить где-то другой акцент. Не делай этого. А если делаешь, то отрывай себе палец. Честно, каждый раз. Кнопки На сайте около 5 разных стилей кнопок. Опять же, если у вас уже есть 2 стиля кнопок, а вы еще один хотите — отрывайте палец. *И так, у вашего дизайнера уже нет 10 пальцев. Работать он будет ногами* Главная страница При заходе на сайт тебя встречают: небо на бэкграунде; желтоядерный верх списка серверов; на желтом фоне пытаются орать собой посетителю в глаза купленные сервера, их длинные названия с красными тегами (там же и IP что-то делает). Я вот уже 20 минут, рассматриваю сайт, и я не прочитал ни одного названия. Я это делают не специально. Я не утрирую. Я просто пытаюсь не напрягаться, как и большинство пользователей. Я просто не увидил ни одного названия. Из этого всего шума я успел запомнить в тегах к серверу пишут IP, режим и свои теги, где повторяют режим несколько раз. Далее он посмотрит на сайдбар, дабы дать отдохнуть глазам, но... он такой же разноцветный и не знаешь куда кинуть глаз чтобы чтобы начать. Все, у него жутко болят глаза из-за непонятных акцентов, из-за большого количества разных цветов и форм. И теперь в этот момент он решает продолжать ему принудительно изучать сайт или уйти отсюда. Я даже больше не могу сказать чего-то конретного, потому что весь сайт — мечта некрофила, если судить по дизайну. Метрику сайта улучшить можно только из уменьшения только цветов и стилей оформления. Все, сказанное выше, не относится к самой идее или цели сайта. Это все относится к реализации. Дизайн - это не только красиво, это еще и умно. Ведь именно на этапе дизайна будет определяется поведение пользователя. P.S. Прикреплю часовой набросок переделанной главной страницы. Т.к. по душе мне материал, то чтобы долго не заморачиваться сразу же взял его. Убрал ненужные блоки, по моему мнению (да, некотрые кликались, но кликали по ним не потому, что они были там уместны, а потому что было интересно "а что там?"). Сократил количество акцентных цветов до двух. Переделал список серверов. Он теперь смотрится понятнее и воспринимается проще. Для донатных серверов выделил 3 места во втором ряду. Администратор может увеличить свою прибыль, добавив "аукцион" за эти места в управлении сервером пользователя: тот хочет быстрее попасть на место под солнцем — плати больше. Владельцы серверов будут видеть цену ставки, которую поставили за это место и смогут перебить её своей ценой. Каждый месяц на эти три места будут попадать сервера тех владельцев, которые заплатили больше всего. Первый ряд — честно заслуженные популярные сервера сайта. Потому что донат должен поощадряться, а не избивать палками баланс, логику и эстетику.
-
Z-turret's axis - its x-axis vehicle, I thing.
- 18 replies
-
Целевая аудитория сумпа и МТА около 10-18 лет. В этот период большинство людей легко поддаются синдрому утенка.
-
Maybe that? dxDrawRectangle ( 100, 100, 200, 50, tocolor ( 0, 0, 0, 150 ))
-
math.ceil(123.45) >>124 math.floor(123.45) >>123
-
Окей, пусть тебе надо кар там заспавнить. Ты это делаешь на серве, зета у тебя нет. Спавни не сразу тогда. А когда этот "спавн" попадет в стрим игрока -- у этого клиента пускаешь луч, триггеришь его на сервер и спавнишь кар.
-
Ohhh... Realy. Then... onClientPlayerWasted timer_Varible = nil function setTimerOnWasted() guiSetVisible(deathWin, true) if timer_Varible then killTimer(timer_Varible) timer_Varible = nil end timer_Varible = setTimer( function() guiSetVisible(deathWin, false) timer_Varible = nil end, 30000, 1) end addEventHandler("on[b]Client[/b]PlayerWasted", getLocalPlayer(), setTimerOnWasted)
-
Emm... Its client-side? DjKim = guiCreateLabel(0.49, 0.81, 0.20, 0.03, "DJ: none", true) guiSetText(DjKim, "DJ: "..getPlayerName(localPlayer)) -- return string - nickname [i]localPlayer[/i] -- if you need name another player, then getPlayerName(*player*)
-
Holly... Why have you posted this file? Emm... Maybe you dont have the necessary rights? Hmmm... maybe...
-
...Like a this. local clieeent = getRandomPlayer() -- for who local soooource = getRandomPlayer() -- what be source in this eventhandler on clientside local someString = "HelloWorld" -- argument to trigger with the event triggerClientEvent( clieeent,"onServerSendS", soooource, someString)
-
First, create browser. After the bind to open and close. The same bind can do everything else. -- create browser ... bindKey("lshift", "down", function() guiSetVisible(windowBrowser, not guiGetVisible(windowBrowser)) -- load url -- etc end end) Something like this... Sorry for my English. It's all Google translator.
-
bool triggerClientEvent ( [table/element sendTo=getRootElement()], string name, element sourceElement, [arguments...] ) sendTo: The event will be sent to all players that are children of the specified element. By default this is the root element, and hence the event is sent to all players. event: The name of the event to trigger server-side. You should register this event with addEvent and add at least one event handler using addEventHandler. theElement: The element that is the source of the event. arguments...: A list of arguments to trigger with the event. Maybe the value in the arguments passed nil?
-
-- go step by step function setTimerOnWasted() -- the [u][b]function[/b][/u] is named [b]setTimerOnWasted[/b] setTimer( -- creating a timer without variable function() guiSetVisible(deathWin,true) end, 30000, 0) end addEventHandler("onPlayerWasted", getLocalPlayer(), setTimerOnWasted) -- Timer is created [u][b]when a player wasted[/b][/u] killTimer(setTimerOnWasted) -- Timer, destroyed at the start of resources - immediately. -- But timer created when the player wasted. -- Moreover, you try not to destroy the timer. -- You try to destroy the function. -- Generally, you need immediately after wasted the player to open the window. -- And after 30 seconds to close. -- Below is the corrected version of your script. -- But do not think that's what you need. timer_Varible = nil function setTimerOnWasted() -- When a player wasted execute the function. guiSetVisible(deathWin, true) -- Open the window immediately. if timer_Varible then killTimer(timer_Varible) timer_Varible = nil end timer_Varible = setTimer( -- Create a timer that closes in 30 seconds. function() guiSetVisible(deathWin, false) timer_Varible = nil end, 30000, 1) -- After 30,000 milliseconds performed close the window 1 times. If 0, then the eternally every 30,000 milliseconds. end addEventHandler("onPlayerWasted", getLocalPlayer(), setTimerOnWasted) Sorry for my English. It's all Google translator.
-
tableAdministration = { "Admin", "SuperModerator", "Moderator", "Helper", } tableAdministration_two = { "Admin", "SuperModerator", } function isAdministration(player, tab) local accountName if player and getElementType(player) == "player" and not isGuestAccount(getPlayerAccount(player)) then accountName = getAccountName(getPlayerAccount(player)) else return false end for _, v in ipairs(tab) do if isObjectInACLGroup ("user." .. accountName, aclGetGroup(v)) then return true end end return false end return false end function(...) if not isAdministration(source, tableAdministration) then return false end -- body end addCommandHandler(...)
-
Как убрать стандартную воду и создать свою
obuhhh replied to grinberg's topic in Помощь / Отчеты об ошибках
Думаю, он маппер, а не скриптер. Поэтому скорее всего он не понял, что значит изменить в цикле значение Z. -
В данной теме хотел бы начать обсуждение этого... браузера. Проблемы, варианты использования, фишки и баги. На момент создания темы, когда я пытался дописать/переписать существующий веб браузер, я столкнулся с проблемой, при которой не загружаются изображения на сайтах. Например, соц.сеть Вконтакте. Все потому, что они хранятся по другому домену (некоторые изображения pp.vk.me). Способы решения: Человек, который пишет скрипт, должен создать таблицу всех доменов, с которых загружаются ресурсы страницы и отправить запрос на добавление их в белый список. Пользователю веб браузера вручную ввести в свой белый список домены, с которых загружаются ресурсы. Оба способы нерациональны и вообще... неадекватные, т.к. хотябы в ВК некоторые изображения хранятся по cs%d%d%d%d%d%d.vk.me. Создать цикл и им все эти домены отправить на запрос? Бред. Кстати, белый и черный списки хранятся в xml. При овер 10к добавленных домнах у вас "зафризится" игра секунд на 10-15 при открытии настроек, когда клиент начнет читать весь этот файл в 10к записей. С помощью паттернов пройтись по исходному коду страницы и вытащить от туда все домены. Такое у меня получилось... Пока-что паттерн не идеален. Но что-то да умеет. pattern = '%w*%.[_%w%-%d%.]*%w*' Результат работы - под спойлером. Сейчас же жду релиза 1.5.1, в котором уже будет функция загрузки исходного кода страницы, которая открыта в браузере. https://wiki.multitheftauto.com/wiki/getBrowserSource Кстати, вопрос с Flash-плеером. Нууу.. В настройках клиента включен Флэш и остальное. На страницах его не видно, просит установить. Идем через CEF на страницу загрузки Флэша. Там говорится, что Флэш есть, но он не включен. Это как? Где? На вики МТА говорится, что флеш убрали из браузра, т.к. вроде не смогут контролировать его процесс, а альтернатива - HTML5. Который только начинает распространяться. Флэш на всегда умер в этом браузере? Много сайтов до сих пор сидят на Флэше. Что с ними делать? Вообще, этот браузер вещь прикольная. Но пока-что с кучей недоработок и недостающих функций.
-
Может быть версия старая, и данную функцию оно не может переобразовать.