Jump to content

N1kS

Members
  • Posts

    200
  • Joined

  • Last visited

Posts posted by N1kS

  1. Vim очень классный редактор для кода с поддержкой расширений/плагинов. Подсветка синтаксиса, предпросмотр картинок, команды, snippet. Поддержка проектов, миникарта. Этакий комбайн все в одном. при этом минималистически выглядит и достаточно удобный.

    • Like 1
  2. Для получения информации от сервера используется UDP ASE порт, по стандарту он игровой+123, то есть если игровой 22003, то ASE порт 22126. Спецификацию ASE порта можно найти тут: https://github.com/multitheftauto/mtasa-blue/blob/master/Server/mods/deathmatch/logic/ASE.cpp#L246-L341

    • Like 2
  3. 47 minutes ago, Kernell said:

    Никогда не используйте SELECT * в своих проектах, всегда указывайте реально нужные поля для выборки.

    Предположим(по примеру), что мне необходимо получить id, name, surname, age, adminLevel конкретного игрока, зачем мне указывать конкретные поля для выборки, если * - это и есть все необходимые поля? Другой вопрос, если при создании таблицы создаются дополнительные колонки, например created_at, updated_at, которые нам знать не нужно. В таком случае - да, это замедлит скорость запроса, да и мы забьем память совершенно не нужной нам информацией.

    SELECT * FROM `players` WHERE id=1
    SELECT `id`, `name`, `surname`, `age`, `adminLevel` FROM `players` WHERE id=1

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

  4. Нет, не ошибаетесь, не совсем то написал. Ресурсы запущены всегда, просто нужно будет установить порядок, какой запуститься первым, а какой второй. Далее с помощью события onClientResourceStart уже отслеживать.

    • Like 1
  5. Самый простой вариант - запускать основной ресурс, назовем его для примера Core, далее после запуска основного ресурса запускаются уже вспомогательные ресурсы из основного ресурса(его нужно будет добавить в ACL с правами админа), Vehilces, Weapons, Skins, опять же для примера. Соответственно пишем, что качаются вспомогательные ресурсы, отслеживаем состояние того или иного вспомогательного ресурса, после его запуска убираем текст о том, что качается тот или иной ресурс.

  6. @Essle, ну реализовать то можно, но это будет громоздко и будет занимать не малое кол-во времени, да и зачем? Куда проще запустить стандартный editor, полетать, удалить необходимые тебе мировые объекты, сохранить это все и просто в последствии запускать отдельным ресурсом при необходимости.

  7. @Jonathan.P, а что на счет файла utils.lua и type="shared"? Как по мне - самый адекватный вариант подключения необходимых функций для работы, это во-первых. Во-вторых, ты серьезно хочешь сказать, что ты используешь хотя бы 20-25% своего "набора некоторых функций" в каждом ресурсе? Не думаю. Используй необходимые тебе функции для работы конкретного ресурса, зачем что-то усложнять?

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

    function math.clamp(val, lower, upper) 
        if lower > upper then lower, upper = upper, lower end  
        return math.max(lower, math.min(upper, val)) 
    end 
    

  9. Works for me:

    function fileSave( sFile, sData ) 
        if fileExists( sFile ) then 
            fileDelete( sFile ); 
        end 
      
        local pFile = fileCreate( sFile ); 
        fileWrite( pFile, sData ); 
        fileClose( pFile ); 
    end 
      
    function fileLoad( sFile ) 
        local pFile = fileOpen( sFile, true ); 
        
        local sData = fileRead( pFile, fileGetSize( pFile ) ); 
        
        fileClose( pFile ); 
        
        return sData; 
    end 
      
      
    local FROM="example.lua" 
    local TO="compiled.luac" 
    fetchRemote( "https://luac.multitheftauto.com/?compile=1&debug=0&obfuscate=0",  
        function(data) 
            print( tostring( data ) ) 
            fileSave( TO, data )  
        end, fileLoad( FROM ), true ); 
    

  10. 1. Большая ли будет нагрузка, если сделать к примеру 200-1000 setElementData с разными ключами и значениями в них? Изменяться они будут только 1 раз, при входе на сервер, а далее только буду получать значения с этих ключей.

    2. И что именно дает 4й аргумент (синхронизация с сервером), при каких условиях его можно использовать?

    3. Повлияет ли это как-то на нагрузку сервера?

    Если же нагрузка большая будет, то какие альтернативные варианты Вы можете предложить? Буду крайне благодарен за ответы.

    1. Лучше использовать таблицу, т.к скорость выше с таблицы.

    2. Этот аргумент означает, что если вы повести дату с сервера, то сможете получить к ней доступ на клиенте.

    3. Оперативная память.

  11. You can write it...

    function fileSave( File, Data ) 
        if( fileExists( File ) ) then 
            fileDelete( File ); 
        end 
      
        local File = fileCreate( File ); 
        fileWrite( File, Data ); 
        fileClose( File ); 
    end 
      
    function fileLoad( File ) 
        return fileRead( File, fileGetSize( File ) ); 
    end 
    

  12. Если пинг между игроков и сервером 500мс, то в 2 конца это 1 секунда. Ну такое...

    Да, секунда задержки для стрельбы это много.

    Есть предложения по лучше как это можно сделать? Мне кажется можно сразу с сервера на определенные клиенты.

    Будет куда рациональнее.

×
×
  • Create New...