GTA Vice City > Моды

SkinSwitcher

(1/2) > >>

Prographer:
Всем привет! :) Недавно начал тут работать над небольшим модом по выбору и покупке одежды в VC, но столкнулся с небольшой проблемой. Изначально планировал сделать так, чтобы мод можно было расширять, добавляя новые точки на карте через опкод 05F5, но приходится каждую точку добавлять в отдельный файл. Пожалуйста, подскажите, может, как-то можно сделать лучше?

Вот сам скрипт
https://yadi.sk/d/xHQ3O1kNX6cxxw

Видео с демонстрацией работы
https://yadi.sk/i/dqBpTPBJTKpbaA
https://yadi.sk/i/MfTsm4fdaCz1ow

Кстати, делаю ещё небольшую штуку, типа небольшого фреймворка. Его код есть в архиве с модом. Суть его в том, чтобы абстрагироваться от опкодов и сделать набор функций делающий всё самое необходимое одним вызовом опкода 05F5 с параметрам или без.

Shagg_E:
Классный мод!

--- Цитата: Prographer от Октябрь 27, 2019, 07:33:12 pm ---но приходится каждую точку добавлять в отдельный файл. Пожалуйста, подскажите, может, как-то можно сделать лучше?
--- Конец цитаты ---
В теории, можно как-то задать и менять через CLEO строку и потом при помощи неё подгружать изменяемые данные из ini, где точки будут обозначены примерно так:

--- Код: ---[MAIN]
SQUANT = 2 // quantity of spots

[SPOT1]
X = 230.9363
Y = -1262.4741
Z = 20.1103
COMMERC = 0

[SPOT2]
X = 409.886
Y = 1037.4531
Z = 25.2999
COMMERC = 1
--- Конец кода ---

- и т.д. Т.е. изменяемой строкой будет ключ секции "SPOTx":


--- Код: Text ---0AF0: 0@ = get_int_from_ini_file "cleo\skin_switcher.ini" section "MAIN" key "SQUANT"  // получаем общее кол-во точек0006: 5@ = 0 :CYCLE001D:   0@ > 5@jf @END000A: 5@ += 1 // тут, в зависимости от текущего значения 5@, меняется строка 15@, от "SPOT1" до "SPOTx"(где x = 0@) 0AF2: 1@ = get_float_from_ini_file "cleo\skin_switcher.ini" section 15@ key "X"0AF2: 2@ = get_float_from_ini_file "cleo\skin_switcher.ini" section 15@ key "X"0AF2: 3@ = get_float_from_ini_file "cleo\skin_switcher.ini" section 15@ key "X"0AF0: 4@ = get_int_from_ini_file "cleo\skin_switcher.ini" section 15@ key "COMMERC"05F5: call_scm_func @CreateSkinSwitcher params_count 4  1@ 2@ 3@ 4@jump @CYCLE :ENDend_thread

. Но я не знаю, как сделать самое интересное - как править строки через CLEO...


--- Цитата: Prographer от Октябрь 27, 2019, 07:33:12 pm ---Кстати, делаю ещё небольшую штуку, типа небольшого фреймворка. Он его код есть в архиве с модом. Суть его в том, чтобы абстрагироваться от опкодов и сделать набор функций делающий всё самое необходимое одним вызовом опкода 05F5 с параметрам или без.

--- Конец цитаты ---

Вообще - хорошая идея, должна прокатить. У меня с функциями CarRec не прокатило(даже с моей помощью, людям было слишком сложно пользоваться, и они просто забивали) возможно потому, что функции лежали просто отдельным текстовиком. До инклудов я тогда как-то не догадался ¯\_(ツ)_/¯

Prographer:

--- Цитировать ---Вообще - хорошая идея, должна прокатить. У меня с функциями CarRec не прокатило(даже с моей помощью, людям было слишком сложно пользоваться, и они просто забивали) возможно потому, что функции лежали просто отдельным текстовиком. До инклудов я тогда как-то не догадался ¯\_(ツ)_/¯
--- Конец цитаты ---
По-моему, достаточно удобно будет, например, создать педа. Сейчас для его создания нужно написать достаточно кода: загрузить модель, проверить её, и только после этого создавать. Для новичка это не очевидно, поэтому одной функции будет достаточно, которая просто вернёт хендл готового педа. Также это решит проблему с количеством локальных переменных. Пожалуй, создам репу на GitHub, чтобы каждый смог внести свой вклад.


--- Цитировать ---. Но я не знаю, как сделать самое интересное - как править строки через CLEO...
--- Конец цитаты ---
Пожалуй, да. Это самый главный вопрос :)

Shagg_E:

--- Цитата: Prographer от Октябрь 27, 2019, 11:15:58 pm ---По-моему, достаточно удобно будет, например, создать педа. Сейчас для его создания нужно написать достаточно кода: загрузить модель, проверить её, и только после этого создавать. Для новичка это не очевидно, поэтому одной функции будет достаточно, которая просто вернёт хендл готового педа. Также это решит проблему с количеством локальных переменных. Пожалуй, создам репу на GitHub, чтобы каждый смог внести свой вклад.

--- Конец цитаты ---
   Ну да, только всё равно нужно всё хорошенько обдумать, чтобы не возникла ситуация, когда для новичков "слишком сложно", а для опытных "слишком упрощенно, без свободы"(тот же спавн педов в оригинальном своем виде хорош оптимизацией ресурсов. Функция, в свою очередь, будет для каждого педа вызывать load requested models, что выльется в лаги и/или другие проблемы с производительностью, если нужно заспавнить сразу много педов). В этом плане, усидеть на двух стульях крайне сложно. Я из-за этого всё-таки решил делать свои опкоды: и у меня больше свободы, и людям, в случае чего, будет проще это использовать.
   Т.е. тут проблема в "рынке". Многие скриптеры Вайса уходят в программирование либо вообще из моддинга. Те же, кто остались, в основном делятся на тех, кто не сможет использовать сложные(пусть и функциональные) решения и тех, кто сможет, но им это не нужно. И только единицы будут готовы заморочиться как угодно лишь ради того, чтобы получить нужный функционал(я таким был - потом всё же перешел в категорию "создателей решений").
   В итоге, готовые простые решения разлетаются как пирожки, а всё, что чуть сложнее ковыряния ini - не уходит дальше просмотров на Youtube.
   Сейчас есть взрыв популярности GTA 3d-эры в Латинской Америке и Индии, но им зачастую, опять же, проще перескакивать процесс углубленного скриптинга сразу в программирование.
   Если же говорить про совсем-совсем новичков - знаю, что определенно есть существенный спрос на аналог DYOM для Вайса. Но это довольно масштабная разработка - никто за неё, скорее всего, не возьмется.
   А вот чего я не знаю - так это того, что в этой ситуации делать. Лично я пару лет назад решил окончательно забить на это и делать всё только для себя(своих проектов). И выкатывать в паблик лишь те вещи, что, так уж вышло, подходят и для ванильного вайса.

P.S. Я ни в коем случае не пытаюсь тебя отговорить от создания подобного инструмента. Просто будь готов, что если не продумаешь вопрос "рынка" - ты можешь получить тысячи просмотров на YouTube и даже сотню закачек, но 0 практических использований(как было у меня с MMS и CarRec).


--- Цитата: Prographer от Октябрь 27, 2019, 11:15:58 pm ---Пожалуй, да. Это самый главный вопрос
--- Конец цитаты ---
   Есть опкод 0AD3(есть и в CLEO Вайса), он как бы и позволяет форматировать строки(типа, там должно быть не 15@, а 15@v), а потом пихать их куда заблагорассудится. Но я совершенно не копал эту тему(видел лишь когда-то примеры использования в SA, но уже не помню, где), а сейчас и времени на это не находится...
   Будет круто, если ты сможешь разобраться и отпишешься о результатах. Приложил к сообщению хэлп-файл CLEO4, там есть простенькое описание.

Prographer:
Запилено. Милости прошу опробовать ;)
https://github.com/PrographerMan/skin-switcher

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии