Jump to content

Kenix

Retired Staff
  • Posts

    4,121
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Kenix

  1. On 22/12/2021 at 23:37, luac said:

    Здравствуйте друзья, подскажите пожалуйста, как реализовать ресурс, который защитит от нападения с таким читом как "Lua Injector (Загрузка стороннего кода со стороны клиента)". Знаю такую фичу как loadstring, как мне добавить проверки на неё, например: Если игрок вызвал outputChatBox с помощью чита, тогда его кикает. 

    Помогите, пожалуйста. 

    P.S. Кастомная версия МТА

    Чит в теории могут инжектить в любой ресурс, вам ничего не поможет кроме грамотной реализации логики не доверия со стороны сервера к клиенту.
    Все запросы, которые идут от клиента вы ОБЯЗАНЫ проверять, чтобы ваш мод не взломали.
    Также советуем вам использовать атрибут cache="false" у скриптов, чтобы исходный код не был виден в папке resources на стороне клиента
    Также мы настоятельно не рекомендуем изменять setElementData со стороны клиента, вы можете проверить любое изменение и кикнуть игрока

    Прочитайте эту статью, она вам будет полезна
    https://wiki.multitheftauto.com/wiki/Script_security

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

  2. У вас на всех серверах так или на одном?
    Если на одном, то это уже вам нужно обратиться к владельцу

    Если у вас так везде, то попробуйте полностью переустановить МТА и удалить все настройки которые были там

  3. 8 hours ago, mrevens said:

    Или как вот тут указать правильный путь до любого файла в кэше? 
     

    local hFile = fileOpen("test.txt", true)       -- attempt to open the file (read only)
    if hFile then                                  -- check if it was successfully opened
        local buffer
        while not fileIsEOF(hFile) do              -- as long as we're not at the end of the file...
            buffer = fileRead(hFile, 500)          -- ... read the next 500 bytes...
            outputConsole(buffer)                  -- ... and output them to the console
        end
        fileClose(hFile)                           -- close the file once we're done with it
    else
        outputConsole("Unable to open test.txt")
    end

    Читать файл можешь там где вызывается (если на стороне клиента то клиентские файлы), но там есть ограничения на пути (либо текущий ресурс/либо из другого через : (например так fileOpen(":objectSearch/coolObjects.txt"))), вне папки resources читать нельзя.

  4. Update hands for players every 2 seconds.

    setPedAnimation( player, "CARRY", "crry_prtial", 1, true, true, false, true);

    Grab anim

    setPedAnimation( player, "MISC", "pickup_box", -1, false );
    -- after 1 sec
    setPedAnimation( player, "CARRY", "crry_prtial", 0, true, true, false, true );

    drop anim
     

    setPedAnimation( player, "CARRY", "liftup", 0.0, false, false, false, false );

     

    • Thanks 1
  5. On 11/04/2021 at 14:42, VladislavKotov said:

    Привет всем!
    Недавно я решил скомпилировать клиент МТА для своих целей, компиляция прошла, но остались ошибки, вызванные директивой #error: Test plugin missing
    Как это исправить?: https://imgur.com/a/Q43CQ0R

    Пробовал собирать другие версии (более ранние)? Ты точно установил все зависимости для компиляции?

  6. On 04/04/2021 at 18:13, Aezakmi said:

    В MTA можно заменять эффект выстрела из оружия? (как на фото)

    Не могу найти ни статей на эту тему, ни готовых ресурсов.

    db7a87a286bd5f3715d27293f893e608-full.pn радикал

    Нужно найти текстуру через shadertextnames
    https://nightly.multitheftauto.com/files/shaders/shader_tex_names.zip

    и заменить

  7. I using: Linux Debian 8.
    MTA:SA Server v1.5.7-release-20359


    External web server: nginx
    nginx.conf:

    user www-data;
    worker_processes 4;
    pid /run/nginx.pid;
    worker_rlimit_nofile 5000;
    
    events {
    	worker_connections 5000;
    	# multi_accept on;
    }
    
    http {
    
    	##
    	# Basic Settings
    	##
    
    	sendfile on;
    	tcp_nopush on;
    	tcp_nodelay on;
    	keepalive_timeout 65;
    	types_hash_max_size 2048;
    	# server_tokens off;
    
    	# server_names_hash_bucket_size 64;
    	# server_name_in_redirect off;
    
    	include /etc/nginx/mime.types;
    	default_type application/octet-stream;
    
    	##
    	# SSL Settings
    	##
    
    	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    	ssl_prefer_server_ciphers on;
    
    	##
    	# Logging Settings
    	##
    
    	access_log /var/log/nginx/access.log;
    	error_log /var/log/nginx/error.log;
    
    	##
    	# Gzip Settings
    	##
    
    	gzip on;
    	gzip_disable "msie6";
    	gzip_types *;
    	
    	# gzip_vary on;
    	# gzip_proxied any;
    	# gzip_comp_level 6;
    	# gzip_buffers 16 8k;
    	# gzip_http_version 1.1;
    	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    
    	##
    	# Virtual Host Configs
    	##
    
    	include /etc/nginx/conf.d/*.conf;
    	include /etc/nginx/sites-enabled/*;
    }
    
    
    #mail {
    #	# See sample authentication script at:
    #	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
    # 
    #	# auth_http localhost/auth.php;
    #	# pop3_capabilities "TOP" "USER";
    #	# imap_capabilities "IMAP4rev1" "UIDPLUS";
    # 
    #	server {
    #		listen     localhost:110;
    #		protocol   pop3;
    #		proxy      on;
    #	}
    # 
    #	server {
    #		listen     localhost:143;
    #		protocol   imap;
    #		proxy      on;
    #	}
    #}



    I got sometimes this errors in my server.log
     

    [20-02-13 16:08:31] DIAGNOSTIC: NooBiK #1012 External HTTP file download error:[28] Error downloading requested files. Timeout was reached. [Connection timed out after 6000 milliseconds] [Resources/Models/Vehicles/ae86.bin] (Disabling External HTTP) [projects\mta\mta\mods\deathmatch\resources\gm_models\Resources\Models\Vehicles\ae86.bin]
    [20-02-13 16:08:49] DIAGNOSTIC: NooBiK #1012 External HTTP file download error:[28] Error downloading requested files. Timeout was reached. [Connection timed out after 6009 milliseconds] [Resources/Models/Vehicles/altezza.bin] (Disabling External HTTP) [projects\mta\mta\mods\deathmatch\resources\gm_models\Resources\Models\Vehicles\altezza.bin]
    [20-02-13 16:09:04] DIAGNOSTIC: NooBiK #1012 External HTTP file download error:[28] Error downloading requested files. Timeout was reached. [Operation too slow. Less than 10 bytes/sec transferred the last 6 seconds] [Resources/Models/Vehicles/bmwe46.bin] (Disabling External HTTP) [projects\mta\mta\mods\deathmatch\resources\gm_models\Resources\Models\Vehicles\bmwe46.bin]
    [20-02-13 19:22:20] DIAGNOSTIC: BeLow^#008080cya #1011 External HTTP file mismatch (Retrying this file with internal HTTP) [gm_images\Resources\Images\AjaxLoader\Circle\5.png]
    [20-02-13 19:34:42] DIAGNOSTIC: WantingEyeball15 #1011 External HTTP file mismatch (Retrying this file with internal HTTP) [gm_images\Resources\Textures\Vehicle\Paintjobs\10.png]
    [20-02-13 19:34:42] DIAGNOSTIC: WantingEyeball15 #1011 External HTTP file mismatch (Retrying this file with internal HTTP) [gm_images\Resources\Textures\Vehicle\Paintjobs\4.png]
    [20-02-13 19:34:44] DIAGNOSTIC: WantingEyeball15 #1011 External HTTP file mismatch (Retrying this file with internal HTTP) [gm_images\Resources\Textures\Vehicle\Paintjobs\9.png]
    [20-02-13 19:35:00] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) tuning.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:07D5FDD4AAB5B11C14C5F3A4CEC7A21D]
    [20-02-13 19:35:00] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 4.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:E86DAD36C75166E6B697151ECD3262B2]
    [20-02-13 19:35:00] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 5.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:8C33EB31A021A98A4EF9E7F11F571C8B]
    [20-02-13 19:35:00] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 9.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:A87D27E66ABAA64AA7CFF9A0CC90F136]
    [20-02-13 22:27:12] DIAGNOSTIC: MaxDeep #1013 HTTP server file mismatch (gm_retexture) sidewgrass4.dds [Got size:262272 MD5:0655E4F258C0C425B32A7D5E1D4AB714, wanted MD5:7ADF5BC464D3192F5210D5B4926FDECA]

    It happens randomly for some people (the same files list for player but random files for others).

    Some logs from nginx access.log
     

    ***(IP)***** - - [13/Feb/2020:19:34:40 +0100] "GET /server_cache/gm_images/Resources/Textures/Vehicle/Paintjobs/9.png HTTP/1.1" 200 4306241 "-" "MTA:SA Server 51.75.147.186:22003 - See https://mtasa.com/agent/"
    ***(IP)***** - - [13/Feb/2020:22:27:09 +0100] "GET /server_cache/gm_retexture/Textures2/sidewgrass4.dds HTTP/1.1" 200 143158 "-" "MTA:SA Server 51.75.147.186:22003 - See https://mtasa.com/agent/"

    Look at time

    And after this i see
     

    [20-02-13 19:34:05] CONNECT: WantingEyeball15 connected (IP: *******  Serial: *******  Version: 1.5.7-9.20358.0)
    [20-02-13 19:34:08] JOIN: WantingEyeball15 joined the game (IP: *******)
    [20-02-13 19:34:42] DIAGNOSTIC: WantingEyeball15 #1011 External HTTP file mismatch (Retrying this file with internal HTTP) [gm_images\Resources\Textures\Vehicle\Paintjobs\10.png]
    [20-02-13 19:34:42] DIAGNOSTIC: WantingEyeball15 #1011 External HTTP file mismatch (Retrying this file with internal HTTP) [gm_images\Resources\Textures\Vehicle\Paintjobs\4.png]
    [20-02-13 19:34:44] DIAGNOSTIC: WantingEyeball15 #1011 External HTTP file mismatch (Retrying this file with internal HTTP) [gm_images\Resources\Textures\Vehicle\Paintjobs\9.png]
    [20-02-13 19:35:00] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) tuning.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:07D5FDD4AAB5B11C14C5F3A4CEC7A21D]
    [20-02-13 19:35:00] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 4.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:E86DAD36C75166E6B697151ECD3262B2]
    [20-02-13 19:35:00] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 5.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:8C33EB31A021A98A4EF9E7F11F571C8B]
    [20-02-13 19:35:00] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 9.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:A87D27E66ABAA64AA7CFF9A0CC90F136]
    [20-02-13 19:35:23] QUIT: WantingEyeball15 left the game [Timed out]
    [20-02-13 19:35:24] QUIT: />#000000Polic left the game [Quit]
    [20-02-13 19:41:57] CONNECT: WantingEyeball15 connected (IP: *******  Serial: *******  Version: 1.5.7-9.20358.0)
    [20-02-13 19:41:58] JOIN: WantingEyeball15 joined the game (IP: *******)
    [20-02-13 19:42:07] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) tuning.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:07D5FDD4AAB5B11C14C5F3A4CEC7A21D]
    [20-02-13 19:42:07] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 4.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:E86DAD36C75166E6B697151ECD3262B2]
    [20-02-13 19:42:07] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 5.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:8C33EB31A021A98A4EF9E7F11F571C8B]
    [20-02-13 19:42:07] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 9.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:A87D27E66ABAA64AA7CFF9A0CC90F136]
    [20-02-13 19:42:18] QUIT: WantingEyeball15 left the game [Timed out]
    [20-02-13 19:47:33] CONNECT: WantingEyeball15 connected (IP: *******  Serial: *******  Version: 1.5.7-9.20358.0)
    [20-02-13 19:47:33] JOIN: WantingEyeball15 joined the game (IP: *******)
    [20-02-13 19:47:42] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) tuning.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:07D5FDD4AAB5B11C14C5F3A4CEC7A21D]
    [20-02-13 19:47:42] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 4.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:E86DAD36C75166E6B697151ECD3262B2]
    [20-02-13 19:47:42] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 5.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:8C33EB31A021A98A4EF9E7F11F571C8B]
    [20-02-13 19:47:42] DIAGNOSTIC: WantingEyeball15 #1013 HTTP server file mismatch (gm_images) 9.png [Got size:0 MD5:00000000000000000000000000000000, wanted MD5:A87D27E66ABAA64AA7CFF9A0CC90F136]
    [20-02-13 19:47:53] QUIT: WantingEyeball15 left the game [Timed out]

    It's a big problem to catch what is going on and why user is getting 'Timed out' error.
    Maybe we should make some external URL crash (send it via external .exe file) dump url or something? 
    Idk how server owners can catch this errors.

  8. On 15/01/2020 at 16:20, Space_Unicorn said:

    Вообще, не совсем по теме, но: По своему опыту скажу - гораздо удобнее писать целый гейммод состоящий из одного ресурса, нежели разбивать его на части с кучей зависимостей и т.д
    Конечно, теряется возможность по-быстрому апдейтнуть какой либо модуль, но лично мне такая структура проекта кучу нервов сберегла

    Я на своем опыте скажу, что это не так.
    Почему?
    Для маленьких модов да, можно в одном ресурсе, но дальше идут проблемы.
    Если проект будет большой и нужно в режиме реального времени обновлять его, например внести изменения в конфиг, то сделать не получится такое если всё в одном ресурсе. Нужно будет перезапускать весь мод.
    Также скорость разработки снизится, т.к сделав любое изменение вам придется долго ждать, особенно это касается верстки интерфейсов. Любое изменение в UI вы можете легко проверить в игре, сделав просто рестарт, остальные ресурсы будут работать как и работали.
    Лучше когда много ресурсов, каждый ресурс выполняется в своем VM, так безопаснее чем это всё делать в одной.
    Также если проект поделен по ресурсам есть другая проблема, это использование так называемых utility функций, их придется кидать в каждый ресурс, при грамотном подходе это решается легко.
    Если будете делать командой, то можно легко делать разработку, каждый работает над своим ресурсом и он легко внедряется на сервер.

    Организация ресурсов может быть такой:
    [assets] // папка с вашыми ресурсами, это могут быть шрифты, картинки, шейдеры, модели, звуки и т.д
    [ui] // UI вашего мода, например это может быть какой нибудь банк или автосалон
    [engine] // Ваш мод, основные компоненты, база или какие-то функции, utilities
    [third_party] // Ресурсы сторонних авторов
    [game] // Сами ресурсы реализация, например создание автосалонов на стороне сервера

    Также можно организовать папки по элементам
    [player]
    [vehicle] // например vehicle_tuning, vehicle_wheels.
    [property]
    и т.д

    Это тоже интересный подход.

    • Like 1
  9. Может стоит рисовать на одном RT все текстуры а какую-то часть отрисовывать потом через
    https://wiki.multitheftauto.com/wiki/DxDrawImageSection

    как вариант

    вообще надо детальнее смотреть (код и т.д), желательно бы ещё протестить на разных версиях мта.
     

  10. On 15/09/2019 at 13:27, Miami Night Studio said:

    Доброго времени суток, есть ряд вопросов.

    Возможно ли как то скрыть прогрессбар загрузки кэша? Возможно ли как то узнать состояние этого прогрессбара (процент заполнения или же в отдельности макс. и текущ. величина)?
    Писал загрузочную панель,, но увы в аккурат на неё наслаивается. Скрывать полностью не лучший вариант, ибо игрок все же должен понимать сколько ему осталось терпеть.

    Есть два варианта решения проблемы.

    1. Можно сделать свою загрузку файлов через triggerLatentClientEvent
    https://wiki.multitheftauto.com/wiki/TriggerLatentClientEvent

    Статус загрузки получать через
    https://wiki.multitheftauto.com/wiki/GetLatentEventStatus

    2. Загрузка файлов через 
    https://wiki.multitheftauto.com/wiki/DownloadFile

    Получение статуса загрузки
    https://wiki.multitheftauto.com/wiki/OnClientFileDownloadComplete

    Оба способа решают вашу проблему, но они все имеют недостатки и на мой взгляд существенные.
    1. Способ предусматривает то что вам нужно хранить все эти файлы в виде кэша ради быстрого доступа, т.к модели занимают большое кол-во байтов, то вам понадобится много оперативной памяти + вы должны решить сколько вы готовы передавать данных, мта это делает куда лучше чем если вы это сделаете сами. 
    2. Способ лучше и проще, но тоже не идеален, я писал когда-то давно загрузку, но у меня на сервере падал LogicFPS при скачивании файлов, не знаю решена ли сейчас данная проблема или нет, если у вас при загрузке файлов таким способом все нормально, то пробуйте, но лучше проверьте.

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

    UPD:
    Примеры кода, возможно вам это поможет разобраться быстрее.
    https://community.multitheftauto.com/index.php?p=resources&s=details&id=11265

    • Like 2
×
×
  • Create New...