Jump to content

FalKRiSt

Members
  • Posts

    26
  • Joined

  • Last visited

Posts posted by FalKRiSt

  1. Допусти взяв из HTML у объекта есть параметр стиля repeat, по x или y или по той и той координате. Как же растянуть картинку таким же результатом в MTA? Я так понимаю при создании картинки ей нужно устанавливать параметр через guiSetProperty. Какой именно?

  2. Не уважаемый... _Dark_ ... Политика запрета удаления копирайтов - наше дело.... Это условие, по которому распространяется сборка с открытым исходным кодом... Есть все основания написать защиту, при которой удаление копирайтов будет не возможно. Основание - это вы... нам не свойственно писать и продавать то, что в принципе не западло выложить в общий доступ, но и так же хочется, что бы и про нас не забывали. Поставьте себя на наше место... Вот кого я ненавижу, так это зараз, которые просто присваивают проделанную работу себе, потом еще и гордятся что мол такие выпупыристые сделали такое (а по сути не сделали ни хрена.. ). Как этих людей назвать? "неблагодарные свиньи"... Таким макаром и отношением вас к нашим трудам -подталкивает к тому чтобы закрыть проект как OpenSource и начать приват разработку... Будь благодарен тому что дают, а как это исполнено не ваше дело. Мы пишем так как мы пишем... Предложения и помощь по каким-либо изменениям вы можете высказать на форуме.. Рассмотрим и прими решение.

    --------------------

    Вот когда сделаешь что-то сам, тогда и поговорим..

  3. Возник такой вопрос, можно-ли организовать подобие Api в ресурсах MTA, для примера допустим у нас есть 2 папочки с ресурсами. Назовем их example_1 и example_2. В example_1 мы создаем meta.xml и ресурс с именем resource_1.lua. и помещаем туда к примеру функцию суммы двух чисел:

    function MatchSumm(a,b) 
    outputChatBox(tostring(a).."+"..tostring(b).."="..tostring(a+b)) 
    c = a + b 
    end 
    

    Так же создаем в папочке example_2 ресурс с именем resource_2.lua, где мы вызываем данную функцию, причём присваиваем результат какой-либо переменной.

    И еще, есть ли возможно просто счесть переменную из resource_1.lua ресурсом resource_2.lua?

  4. Проблема решена, тему можно закрывать или удалять... всё дело заключалось в demension'е. Сами объекты я создавал путём перехода в интерьер ZIP и поднимался выше этак на 500 координат по Z, тем самым dimension он брал тот к которому принадлежит ZIP. =)

  5. Да, полный... самое что интересное он его выполнять выполняет, но объекты не создаёт...

    Проверка на работоспособность: воткнул outputChatBox в конец кода, текст выводит но объекты не создаёт.

    Цель всего этого сделать некую задержку для создания объектов...

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

  7. На данный момент я пытаюсь создать объект на клиентской стороне через таймер, но почему-то не работает. Вот к примеру код по типу моего:

    function LoadMapObjects () 
    createObject(7940,49.59999847,-128.10000610,1367.40002441) 
    createObject(4808,33.90000153,-136.00000000,1364.44006348) 
    createObject(1496,48.40000153,-130.05000305,1365.30004883) 
    createObject(672,58.40000153,-115.19999695,1364.50000000) 
    createObject(671,46.50000000,-122.59999847,1368.19995117) 
    createObject(5772,56.59999847,-255.80000305,1367.40002441,0,0,270) 
    end 
    setTimer(LoadMapObjects, 5000, 1) 
    

    В чём тут таится ошибка?

  8. Тогда всплывает потребность проверки на наличие посторонних знаков, нашел функцию string.match, но всё не понял как она работает. вот код:

    if not string.match(login, '[a-zA-Z]') then 
    guiSetText(GUILabel[11], "ППЦ") 
    end 
    

    В данном случае почему то даже если текст к примеру "Aaaaa12", то данное выражение считается верным почему то...

  9. Как реализовать данную проверку? Ясно лишь одно - проверка каждого символа, т.е. через цикл от 1 до длины текста (собственно string.len()) нужно проверять, принадлежит ли данный символ массиву данных. Могу сказать что в Delphi она проверяется примерно так: if text in ['a'..'z','A'..'Z','0'..'9'] и т.д., вопрос, как это реализуется в LUA? уже перерыл кучу инфы =)

  10. Я не совсем понял про что ты хочешь сделать, но если хочешь просто поставить реальное веремя на своем сервере то вот скрипт:
    local function TimeUpdate() 
        local tReal = getRealTime(); -- Получаем время 
        local tGameHour, tGameMins = getTime(); 
         
        if tGameHour ~= tReal.hour or tGameMins ~= tReal.minute then 
            setTime( tReal.hour, tReal.minute ); -- при частом использовании setTime, мир будет "дёргаться", поэтому лучше сделать такую проверочку. 
        end 
    end 
      
    setMinuteDuration( 60000 ); --Перепроверка времени раз в минуту 
      
    setTimer( TimeUpdate, 5000, 0 ); 
    

    В этом случае не надо использовать клиент файл, только серверная часть.

    Я ценю то, что вы пытаетесь помочь, но в данном коде изъян. Дело в том, что при заходе на сервер, таким способом устанавливаются минуты, но не секунды. Исходя из этого получается что к примеру зашёл человек на сервер, а спустя какое-то время (к примеру секунд 20) заходит еще. В итоге получается, что у них время асинхронно на 20 секунд. Для РП мода это не очень хороший вариант.

    О том, что я пытаюсь реализовать. Изначально по средствам showPlayerHudComponent (source,"clock",false), мы убираем часы, после спавна игрока мы рисуем с помощью dxDrawText новые часы. Далее запрашиваем время от сервер (Час, минуту, секунду). когда клиент их получает начинаем работу таймера, с интервалом в секунду. В итоге проходя через условия расчёта, что при значении секунд равных 60 он сбрасывает на 0 а к секции минуты +1. В итоге и синхронизация времени высокая, погрешность тут я думаю может быть в раёне 2 секунд.

  11. Есть еще вопрос, вот по поводу таймера. В какой момент времени, а точнее после какого события он включается? Я так понял он включается при старте сервера, тогда как реализовать включение таймера после определенного события, допустим после спавна игрока?

    Я так понимаю, нужно написать функцию, которую присвоить событию onPlayerSpawn

    addEventHandler("onPlayerSpawn",getRootElement(),TImerStart) 
    [i][color=#BFBFBF]-- где TImerStart функция которая состоит всеголишь из setTimer()[/color][/i] 
    

    и уже потом при этом событии оно запускается, но идёт ли нужный мне повтор? То, что вы написали получается что сервер производит постоянное обновление тем самым допустим расчитывая на крупный онлайн к примеру 500 - сервер вынужден отправлять 500 пакетов за раз только в этой функции. Будет ли удобней сделать к примеру только отправку часа, минут и секунд, а уже потом на стороне клиента каждую секунду выполнять функцию просчёта времени?

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

    realtime = getRealTime()

    и получаем по частям: realtime.hour , realtime.minute, realtime.second

    далее нужно их передать клиенту, т.е. все выше-перечисленные переменные и присвоить уже на стороне клиента объекту dxDrawText. а уже потом на стороне клиента с помощью таймера будет просчитываться время по таймеру. Как передать данные с сервера клиенту?

  13. Форумчане, я начинающий программист в сфере модов на МТА, и потихоньку разбираюсь в этом, но есть один вопрос, который я не могу понять. Как происходит обмен данными между сервером и клиентом. К примеру как передать время которое сейчас на серверной машине, клиенту у которого к примеру переданное значение мы вписываем в dxDrawText.

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

    Как я понял должны быть функция на обеих сторонах (клиент и сервер), и в итоге функция клиента вызывает функцию сервера, тем самым получает какой-то отклик в виде данных, которые нам и нужны. В теории всё понял, но на практике как реализовать еще не понял. Заранее буду благодарен.

×
×
  • Create New...