Jump to content

Space_Unicorn

Members
  • Posts

    31
  • Joined

  • Last visited

Everything posted by Space_Unicorn

  1. Примерно это я сделал, только файлы загружаются не автоматически, а по запросу. Жаль что в МТА нет возможности просто отключить валидацию некоторых файлов.
  2. Сабж. Можно как-то отключить валидацию? Файлов очень много, из-за этого прогрузка у игроков может достигать 10-20 минут, в зависимости от ПК, естественно. При этом файлы эти юзаются не всегда, и было бы куда легче если бы валидация происходила только перед непосредственным использованием файла. Есть несколько мыслей по этому поводу, но все решения довольно костыльные и не очень красивые
  3. Попробуй использовать не-локальный браузер, загрузи страницу с видео на хостинг и открывай её
  4. Есть в этом правда, но что-то внутри меня заставило отказаться от модульности, и я не пожалел. Отдельно у меня только тяжеловесные ресурсы -- звуки,карты и прочие ассеты, которые можно перезагрузить без прерывания игрового процесса А на счёт конфигов зависит от того насколько лень, можно ведь сделать конфиги которые будут в реалтайме обновляться из xml или json
  5. Вообще, не совсем по теме, но: По своему опыту скажу - гораздо удобнее писать целый гейммод состоящий из одного ресурса, нежели разбивать его на части с кучей зависимостей и т.д Конечно, теряется возможность по-быстрому апдейтнуть какой либо модуль, но лично мне такая структура проекта кучу нервов сберегла
  6. https://wiki.multitheftauto.com/wiki/TriggerClientEvent Note: To save client CPU, you should avoid setting sourceElement to the root element where possible. Using resourceRoot is usually sufficient if the event is handled by the same resource on the client. В твоем коде проблема в том что на клиенте эвент привязан к root (getRootElement()) а ты в качестве сурс элемента передаёшь игрока. твой код заработает если source и getRootElement() заменишь на resourceRoot
  7. Не совсем понятно. Почему бы не использовать on(Client)ResourceStop и удалять все необходимые элементы? Возможно лезть в древо элементов впринципе не очень хорошая идея Не совсем понятно. Почему бы не использовать on(Client)ResourceStop и удалять все необходимые элементы? Возможно лезть в древо элементов впринципе не очень хорошая идея upd: в вики написано что элементы удаляются только тогда, когда останавливается ресурс который их создал https://wiki.multitheftauto.com/wiki/SetElementParent This function does not change when an element will be destroyed - Elements are always destroyed when the resource that created them is stopped
  8. Не советуется использовать какой либо элемент (игрок, автомобиль, etc) при использовании триггера. Используйте всегда resourceRoot, а если нужен элемент (в данном случае игрок) передавайте его в качестве аргумента
  9. https://wiki.multitheftauto.com/wiki/GetElementMatrix function getPositionFromElementOffset(element,offX,offY,offZ) local m = getElementMatrix ( element ) -- Get the matrix local x = offX * m[1][1] + offY * m[2][1] + offZ * m[3][1] + m[4][1] -- Apply transform local y = offX * m[1][2] + offY * m[2][2] + offZ * m[3][2] + m[4][2] local z = offX * m[1][3] + offY * m[2][3] + offZ * m[3][3] + m[4][3] return x, y, z -- Return the transformed point end
  10. Посмотри реализацию в скриптах реализующих камеру от первого лица, например https://community.multitheftauto.com/index.php?p=resources&s=details&id=1603
  11. RT Удаляются, память не освобождается даже если рендер идёт в скрин
  12. Суть вопроса в названии топика. После отрисовки огромного кол-ва картинок в рендертаргет, функция сжирает до гигабайта видеопамяти, которую потом никак не освобождает. Картинки рисуются единожды, но даже спустя большое кол-во времени память не освобождается, вариант с DxTexture не актуален, т.к занимает куда больше времени, что очень критично в моей ситуации. Как быть? Это какой-то баг, или так и должно быть?
  13. dbConnect( "mysql", "dbname=frank;host=1.2.3.4;port=123456;charset=utf8", "username", "password", "share=1" )
  14. https://wiki.multitheftauto.com/wiki/GuiSetProperty
  15. Если сидите на windows, то брандмауэр может блокировать подключения
  16. Переменная root это всегда элемент вызвавший событие
  17. на счёт плюсов, можно ведь на нём кастомные модули писать, не?
  18. Сразу оговорюсь, что в шейдерах я не понимаю от слова совсем, и мне очень сложно понять их работу, ибо для меня всё это очень неочевидные моменты до которых я не могу сам дойти. Итак, есть колеса, по умолчанию выглядят так: (Обратите внимание: У колеса есть хром. Какой-никакой, но есть) С этими колесами мне нужно производить следующие манипуляции: 1.Изменять ширину 2.Изменять размер 3.Изменять развал Для всего этого у меня есть шейдер (не мой): После "прогонки" колёс через этот шейдер на выходе получается это: Колёса могут в развал, ширину, смену цвета дисков, но главное -- не смотря на то что в шейдере вроде как считается этот самый хром, по факту его нет (для него как я понял используется эта текстурка (создать в скрипте и "загрузить" её в шейдер я не забыл) То-же самое случается когда колесо просто-напросто красится пиксельным шейдером, но если создать renderTarget, и скормить ему шейдеру заменяющему текстуру, то колесо покрасится, и при этом хром который есть на диске по стандарту никуда не улетучивается: Хром есть, цвет есть, значит нужно удалить из первой версии пиксельный шейдер, и оставить ему как задачу только лишь менять ширину/развал, а красить будем другим шейдером с помощью текстуры/рендертаргета: Накладываем "новый" шейдер для ширины и развала, + накладываем шейдер на покраску через замену текстуры, результат: Итак, вопросы: 1.Если можно, то как подружить эти два шейдера 2.Если можно, то как заменять только ОДНУ текстуру через "длинный" шейдер до того как вертексный шейдер её "растянет" (при этом этот шейдер применяется на все текстуры на обьекте) shader\applyToWorldTexture("*", object) 3.Если можно, то как починить хром в первой версии шейдера, который красит диск с помощью пиксельного шейдера (я кстати так и не смог понять почему он красит только диск, ведь накладывается шейдер на все текстурки) наверное, это условие: if (dot(delta,delta) < 0.2) { float4 Color = maptex * PS.Diffuse * 1; Color.a = PS.Diffuse.a; return Color; } p.s. Я шерстил по майкрософтовским докам, честно скажу: Не осилил и не понял Спасибо за внимание, надеюсь на вашу помощь. p.s. Если задача сложная, или большой обьём, то могу материально отблагодарить за работу
  19. Здравствуйте, необходимо сделать отрисовку картинок на стёкле автомобиля, при этом картинка не должна быть прозрачной, а стекло должно. Изначально шейдер выглядел так: texture gTexture; technique TexReplace { pass P0 { Texture[0] = gTexture; } } Результат был таким: После этого я сделал текстуру стекла непрозрачной, и попытался давать ей прозрачность шейдером и также отрисовывать картинки: float alpha = 0.5; struct PSInput { float4 Diffuse : COLOR0; }; float4 PixelShaderFunction( PSInput PS ) : COLOR0 { float4 color = PS.Diffuse; color.a = alpha; return color; } texture gTexture; technique TexReplace { pass P0 { AlphaBlendEnable = TRUE; DestBlend = INVSRCALPHA; SrcBlend = SRCALPHA; PixelShader = compile ps_2_0 PixelShaderFunction(); Texture[0] = gTexture; } } В результате стекло становилось прозрачным, но картинки вообще не отображались. В HLSL не разбираюсь вообще, и даже далеко нет полного понимания того как работают шейдеры впринципе. Поэтому обращаюсь сюда Как можно всё-таки отрисовывать картинки на стекле так, чтобы они не были прозрачны?
  20. Собственно сабж. Понадобилось получить все обьекты в мта (не те что создаются скриптами/.map файлами) а именно стандартные. Но getElementsByType() ничего не находит. То-ли я тупой, то-ли лыжи не едут, помогите пожалуйста.
  21. зачем что-то делать, если можно просто ныть на форуме? Диву даюсь
  22. >В смысле ставка вашего текста В буфер обмена? >setClipboard не знаю, как можно было понять это по другому
  23. В смысле вставка вашего текста в буфер обмена? так есть же https://wiki.multitheftauto.com/wiki/SetClipboard
  24. UPD: Проблема решена проблема была в функции restoreModel (Я позволяю игрокам выгружать/загружать модели чтобы они могли освобождать память в ущерб текстуркам) Суть решения: Вместо engineRestoreModel() использую destroyElement() (Удаляю загруженную engineLoad'oм дффку/тхдшку) И, кстати, видимо этот баг появляется только когда даешь engineLoad'у raw-data, ибо когда я просто грузил модели методом engineLoad('file.txd') то утечки никакой не было, из чего и решил что проблема в string.sub/fileOpen
×
×
  • Create New...