Jump to content

FranklinRoosevelt

Members
  • Posts

    247
  • Joined

  • Last visited

Posts posted by FranklinRoosevelt

  1. Не разводите тут срач, лучше вот над задачей моей подумайте:

    Есть число Х и таблица чисел { 9, 16, 25, 36, 49...}, нужно округлить Х «вверх» к ближайшему числу из таблицы и получить его индекс.

    Пример:

    X = 10 => table index = 2; 
    X = 25 => table index = 3; 
    X = 40 => table index = 5; 
    

    Можно ли сделать это без использования if ?

  2. Еще один вопрос)

    Есть точка. Ее х,у координаты выпадают случайным образом, z координата берется с помощью getGroundPosition. Как можно проверить находится эта точка под водой или нет? А то получается так, что если игрок в ней спавнится то просто бегает по дну моря/реки. Пробовал после спавна проверять через isElementInWater но она работает только при условии что игрок умер в воде и в ней же появился.

    Вся стандартная вода размещена на высоте 0, то-есть если твой z < 1 значит это скорее всего вода.

  3. Не знаю правильно ли меня поняли, чтобы было вот так:

    table_1: 
    id 
    3 
    5 
    6 
    

    table_2: 
    id 
    2 
    4 
    7 
    

    table_3: 
    id 
    1 
    8 
    9 
    

    id - primary key

    И ещё вопрос, ключ id всегда создается на один больше чем предыдущий, а вот как сделать так чтобы при удаления первых полей их индекс заполнялся? А то остается очень много пробелов с таким использованием. Надеюсь я понятно объяснил :)

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

    На счет нагрузки при 200-1000 setElementData, вы её даже не заметите.

  5. Всем привет. Никогда никого не просил помочь, но встал в тупик. С lua был знаком до начала работы с MTA, работал и работаю в citizen FX ( мульт для gta iv/v).Всего то делов - создать ивент в клиенте и вызвав его, передать с сервера некоторые аргументы (в моём случае данные из мускула). Делов то, пфффф, подумал я.

    Но...

    Вкратце. загрузка данных из БД работает отменно, данные действительно выгружаются и можно с ними оперировать на серверной части. Тут без нареканий. Всё как у Аннушки)

    При попытке же передать их в клиентскую часть (нуу например для создания табицы-массива наподобие PlayerInfo в pawno) - не происходит ничего. В консоли тишина, данные не передаются. Вокруг молчок. Вот как выглядит код:

    Серверная часть

      
    function CheckAccount(player) 
        local returns = 0 
        local result = mysql_query(SQL, "SELECT * FROM users WHERE Name='"..getPlayerName(player).."'") 
        if (not result) then 
            outputDebugString("Err:(" .. mysql_errno(SQL) .. ") " .. mysql_error(SQL)) 
        else 
            while true do 
                local row = mysql_fetch_row(result) 
                if (not row) then break end 
                returns = 1 
                outputDebugString("1") -- debug 
                triggerClientEvent (player, "LoadAccountData", player, row[2],row[3],row[4] ) 
                outputDebugString("2") -- debug 
            end 
            mysql_free_result(result) -- обязательно чистим результат 
        end 
        return returns 
    end 
    

    Клиентская часть

      
    addEvent ("LoadAccountData", true) 
    AddEventHandler("LoadAccountData", getRootElement(), function (name, pass, mail) 
        PI.Name = name 
        PI.Pass = pass 
        PI.Mail = mail 
        outputChatBox ("сообщение", 255,255,255) -- debug 
    end) 
      
    

    Что же не так то??

    Ранее в citizenfx, как писал выше, с этим проблем не было.

    под спойлером (кому интересно) пример оттуда (в доказательство того, что я понимаю что делаю)

    сервер:

      
    AddEventHandler('savePos', function(descrhandler, x, y, z, char_heading) 
        local f,err = io.open("pos.txt","a") 
        if not f then return print(err) end 
        f:write(descrhandler .. ": " .. x .. "," .. y .. "," .. z .. ", angle: ".. char_heading .. "\n") 
        f:close() 
        print("SERVER: coordinates: (".. descrhandler ..") has been saved in pos.txt. By: " .. GetPlayerName(source, _r)) 
        TriggerClientEvent('chatMessage', source, 'Server', { 0, 0x99, 255 }, "^1Position " .. descrhandler .. " saved!") 
    end) 
      
    

    P.S. огромная просьба. Помогите разобраться. 2 дня чёт тыкаюсь вяло. Может у меня мозги атрофировались. Вроде всё по Wiki-шмики делал) Спасибо заранее.

    Попробуй так:

    addEvent ("LoadAccountData", true) 
    addEventHandler("LoadAccountData", getRootElement(), function (name, pass, mail) 
        PI.Name = name 
        PI.Pass = pass 
        PI.Mail = mail 
        outputChatBox ("сообщение", 255,255,255) -- debug 
    end) 
    

    Было AddEventHandler вместо addEventHandler. Может так получится.

  6. Во freeroam там другая ситуация, сначала тебя сравнит по ХУ и тогда используется функция getGroundPosition (точное название не помню) там возвращается высота.

    да какая другая то??? То же самое возвращение высоты (Z)

    Ой :oops:

    Там идет тп игрока, сначала перемещает его по координатам (X Y 0), дальше ищет высоту на этом XY с помощью функции getGroundPosition и тп уже по XYZ, что не ясно?

  7. Функция processLineOfSight вроде как работает только в стриме игрока.

    А есть какой нибудь другой способ? Просто я могу создать машину и установить ей нулевую альфу. а потом секунд через 5 проверить где она упала(на какой Z) но для одной системы это очень долго.

    Я где-то недавно видел на форуме файл для нахождения высоты по всех карте, но он весит не мало, да и как-то рационально получается.

  8. Всем доброе время суток, у меня легкий вопрос исключительно о lua, суть: есть два цикла, которые перебирают двух мерный массив, и когда выполняется какое-то логическое действие тогда надо полностью выйти с циклов. Пример:

    for y = 1, 5 do 
        for x = 1, 5 do 
           if y == 2 and x == 2 then 
              break 
           end 
        end 
    end 
    

    Этот код просто выходит с внутреннего цикла.

    Надеюсь я понятно все объяснил и кто-то даст ответ.

    Я так подумал можно сделать таким образом:

    slop = false 
    for y = 1, 5 do 
        if slop then 
             break 
         end 
        for x = 1, 5 do 
            if y == 2 and x == 2 then 
               slop = true 
               break 
            end 
        end 
    end 
    

    Но это как-то не рационально.

  9. У вас есть элемент gRender, и вы его не использовали, нужно рисовать всё на нём, а выводить только ту часть которую надо, зависимо от вашего offset'а. Я бы так попробовал.

    И ещё, код скидывай в тэг lua - [ lua ][ /lua ], а большие скрины в спойлер.

×
×
  • Create New...