GTA Builder Форум

Vice Lua => Общие вопросы. => Тема начата: Sektor от Май 07, 2015, 01:46:00 am

Название: Справка по движку.
Отправлено: Sektor от Май 07, 2015, 01:46:00 am
Главный раздел по справки, будет доступен тут (http://gtabuilder.ru/vice_lua_engine.html). На текущий момент, документация оформляется.

Название: Re: Справка по движку.
Отправлено: Jak łaska za praca от Май 07, 2015, 12:13:28 pm
А можно ли из dll-ки включать *.lua модули?
Название: Re: Справка по движку.
Отправлено: Sektor от Май 07, 2015, 04:54:03 pm
Цитировать
А можно ли из dll-ки включать *.lua модули?
Да, так и делается + основной модуль, который возвращает указатель на vm и регистрирует непосредственно функции, такие как обработка, рендер по мере надобности. В дальнейшем об этом все рассказано будет.
Название: Re: Справка по движку.
Отправлено: graveman от Июнь 24, 2015, 12:33:17 pm
Sektor, было бы замечательно, если бы ты рассказал о том, какие преимущества возникают при работе  с Vice Lua в отличие от работы с ase-скриптами и обычного скриптинга? Как вкратце грубо изнутри работает Vice Lua, на чем он основан?
Название: Re: Справка по движку.
Отправлено: mfisto от Июнь 24, 2015, 06:27:31 pm
Во-первых, в LUA многие функции уже встроены.
Во-вторых, их очень много.
В-третьих, скрипты в виде опкодов - это извращения для скриптора.
В-четвертых, гораздо больше возможностей. Например те же переменные, к тому же это не хук, а полностью переписанная система. Поэтому понятий поток в том виде что присутствовал в scm отсутствует. Здесь полная свобода действий, нет ограничений. Нужно записать выражение прямо в функции - пожалуйста, работа с текстом, да хоть какая - пожалуйста.
В-пятых, прописываются все мельчайшие подробности от начала и до конца даже функция Wait() задается по желанию. Таймер установлен как функция GlobalTimer() и от нее пляшем.
В-шестых, задаются события, которых небыло в scm.

Итог: никаких фокусов, никакого шаманства, все открыто, прямо, точно, доступно. Нужна алгебраическая часть - пожалуйста, геометрическая - пожалуйста, вероятность - пожалуйста, побитовые операции - пожалуйста, понятия ограничения таких как номер опкода просто не существует, сколько хотим функций столько и будет, самодельная функция - пожалуйста. Оптимизация - полная. Большой скрипт - никаких тормозов, большой цикл прохождения по пулу без wait - пожалуйста, и никаких подвисов. С помощью ASI лоадера Sektor'а загрузка асишек при старте exe, все учтено.
Название: Re: Справка по движку.
Отправлено: Sektor от Июнь 25, 2015, 12:33:46 am
Sektor, было бы замечательно, если бы ты рассказал о том, какие преимущества возникают при работе  с Vice Lua в отличие от работы с ase-скриптами и обычного скриптинга? Как вкратце грубо изнутри работает Vice Lua, на чем он основан?

Я более тонких ответов не смогу дать, потому как мало работал с CLEO, но кое что могу рассказать. Если взять CLEO, то там не было возможности, описывать свои функции или разрабатывать классы прям в скрипте. Также для GTA Vice City не было SDK. что-бы можно было писать функционал на C++ и использовать его в скриптинге. Хочу заметить что присутствовали лимиты, разной степени как в потоках так и некоторые другие, но я не создавал пакет для того что-бы критиковать  CLEO. Мне нужно было решение для разработки сценариев игры в удобном варианте, позже я понял что это может пригодиться другим. По этому я личное дело оставил и начал разрабатывать стандарт для других людей. Тут работы много, все функции переписываются а не вещают хуки, почему LUA и может работать совместно с CLEO или по желанию отключить и во все SCM.

На чем основан весь этот движок?
Изначально язык, разработал не я, а другая команда, которая выложила в общий доступ, по этому подобные факты нельзя путать. Я думал какой же язык подойдет лучше для скриптинга, вот ту я понял что LUA - это просто гипер высокого уровня язык, к тому же этот язык многие знают. А что касаемо уже Vice Lua - это уже я основал, уже внедрился в процесс написал общее ядро, как оно будет работать и написал такую систему, что каждый человек сможет наращивать функционал и использовать его в скриптах. Все это основано изначально на C++ также как и  LUA пакет, его содержимое дается в исходниках. У меня ушло 3 месяца, беспрерывной работы, на то что-бы выпустить что-то вкусное. На данном этапе я еще обновляю стандартную библиотеку vc-basic до версии 1.1, там будет добавлен гораздо приличный список функций, которые скриптеры и будут использовать в своих скрипта. Если например над модом работает команда человек скриптеры и программисты - то вы можете поступить так как вам удобно, программисты могут написать для скриптеров плагины, которые добавят всякие функции а скриптеры в свою очередь, будут это использовать. Другой вариант, когда вы являетесь программистом и можете также писать скрипты, вы все тоже самое сможете для себя сделать.

Какие возможности у этого языка LUA?
Я так не могу сказать про все возможности, но возможностей действительно гора. Например вы можете писать скрипты прямо на ходу игры, вы можете организовать много-модульность, вы можете эмитировать классы ООП, создавать свой функционал и строить аккуратную структуру вашего кода и создавать как глобальные моды, так обычные моды аддоны. Данный язык невероятно гибок и позволяет быстро разрабатывать ваши сценарии на высоком уровне.

В чем разница с asi ?
Ну тут наверное имелось введу, почему бы просто не создать все это на ASI и не затрагивать LUA? Если я правильно понял, то это будет плохим решением для дизайна игры. Во первых миссии проектировать на голом C++ - это занятие много-емкостное, во вторых когда мы пишем на C++ мы отвлекаемся на общую проекцию кода вплоть до общения с железом. В третьих после изменений, большие проекты пришлось бы каждый раз перекомпилировать что-бы проверить, что же получилось. В четвертых факты, все игры используют свой личный язык для создания миссий, это я про большие игры, где существует последовательность действий и много событий.

Вообщем скриптовые фишки нужны: Что-бы ваш разум поместить на уровень сценариста, что-бы вы ориентировались на моде, а не о том как работать с памятью и загружать файлы и прочее то что мы делаем в C++. Во вторых вы быстро можете вносить изменения, как и говорил при желании вы можете сделать все на лету игры. Хороший сценарист, без хороших инструментов, застрянет, мне так кажется. По этому подведем этог, программирования на C++ - это основная разработка ядра. Скриптинг - это разработка дизайна в линейке этой игры, это моды, это сценарии, это ИИ, это много всяких штук.

Название: Re: Справка по движку.
Отправлено: graveman от Июнь 25, 2015, 08:38:22 am
Здесь(На чем основан весь этот движок?) я имел ввиду вопрос:
 как связан gta-vc.exe с dll-ками Vice Lua?
Название: Re: Справка по движку.
Отправлено: Sektor от Июнь 25, 2015, 08:40:35 am
graveman Связан на уровне памяти, движок обращается к игровой памяти и работает уже со всеми фишками, а также подгружает собственные длл-ки(плагины), которые еще больше наполняют функционал.
Название: Re: Справка по движку.
Отправлено: graveman от Июнь 25, 2015, 10:52:27 am
graveman Связан на уровне памяти,
Не понял, а как (кем/чем) сам движок вызывается. Вот я запустил игру через gta-vc.exe, как запускается теперь движок Vice Lua?
Название: Re: Справка по движку.
Отправлено: mfisto от Июнь 25, 2015, 02:45:34 pm
С помощью ASI лоадера Sektor'а загрузка асишек при старте exe, все учтено.

Там еще есть загрузка dll с помощью этого лоадера, Sektor просто не стал давать имя плагину asi и все, ты вообще скачивал библиотеку перед тем как спрашивать?
Название: Re: Справка по движку.
Отправлено: graveman от Июнь 25, 2015, 04:47:54 pm
Цитировать
ты вообще скачивал библиотеку перед тем как спрашивать?
Я сначала задал вопрос, потом скачал библиотеку, посмотрел директории. Но какое отношение скачивание библиотеки имеет к вопросу? Просмотр директорий библиотеки ясности в вопрос не внес. Или ты имеешь ввиду, что папка "plugins" перезапишет оригинальную папку, в которой должны быть ase плагины и исходя из этого я должен был догадаться, что экзешник игры ее подгрузит?

С помощью ASI лоадера Sektor'а загрузка асишек при старте exe, все учтено.

Там еще есть загрузка dll с помощью этого лоадера, Sektor просто не стал давать имя плагину asi и все,
То есть все основано на загрузке ase-плагина - gta-vc.exe грузит некий базовый плагин ase у Vice Lua (неважно с каким расширением), а тот уже подгружает все остальные dll и lua-скрипты? Если так, то все понятно. Примерно такой ответ я и ждал.

Название: Re: Справка по движку.
Отправлено: megaket4up от Ноябрь 27, 2015, 12:10:31 pm
Я так и не нашел как выводить свои txd файлы. Подскажите пожалуйста.
Минимум документации губит этот потенциально прекрасный проект.
Название: Re: Справка по движку.
Отправлено: Sektor от Ноябрь 27, 2015, 05:10:11 pm
Цитировать
Я так и не нашел как выводить свои txd файлы. Подскажите пожалуйста.
Минимум документации губит этот потенциально прекрасный проект.

А я еще, не выпускал версию Vice lua 1.2 и vc-basic 1.1. Я нашел кое какие баги, которые надо будет отфиксить, но там они не большие. А также надо будет уделить время, данному проект, а у меня пока его нету. Как время появиться, так позанимаюсь, там еще планировался вывод моделей DFF и другие возможности. Кроме того, не только минимум документации губит проект, но еще и отсутствие модов на lua а также гайдов/уроков.
Название: Re: Справка по движку.
Отправлено: Shagg_E от Ноябрь 28, 2015, 08:27:45 pm
Дело в том, что практически все русскоязычные модмейкеры, продвигающие моддинг Вайса вперед, собрались здесь. Иначе говоря - нас реально мало. Нужно продвигать Vice Lua за рубежом, чтобы привлечь больше народу. Чем больше народу - тем больше шансов, что кто-то из этой массы запилит несколько классных модов. Больше таких модов - и Lua станет популярным. А если что-то становится популярным за рубежом - это становится популярным в русскоязычном сегменте. Простой пример - Maxo's Vehicle Loader.
Название: Re: Справка по движку.
Отправлено: ilver от Декабрь 30, 2015, 03:19:58 pm
На Сан Андреас Бы эту прелесть прикрутить )) Надеюсь что будет когда-нибудь
Название: Re: Справка по движку.
Отправлено: Sektor от Декабрь 31, 2015, 01:37:44 pm
Цитировать
На Сан Андреас Бы эту прелесть прикрутить )) Надеюсь что будет когда-нибудь
Уже есть прикрученный движок, я позанимался какое-то время. Причем создается Player, можно поменять шмотки, установить здоровья. Но там совсем мало функций, на это нужно будет выделять огромное время.
Название: Re: Справка по движку.
Отправлено: ilver от Декабрь 31, 2015, 07:18:40 pm
Цитировать
На Сан Андреас Бы эту прелесть прикрутить )) Надеюсь что будет когда-нибудь
Уже есть прикрученный движок, я позанимался какое-то время. Причем создается Player, можно поменять шмотки, установить здоровья. Но там совсем мало функций, на это нужно будет выделять огромное время.

Очень здорово , развивайте , спасибо вам !
Название: Re: Справка по движку.
Отправлено: egor230 от Сентябрь 08, 2017, 01:21:22 pm
 Sektor, Вы сделали огромный вклад в развития моддинга. Сильно поражён от возможностей вашего движка. Хочу выразить своё мнение. В интернете очень много уроков на ютубе по cleo, А по вашему движку их нет. Только буквально недавно вышло видео https://www.youtube.com/watch?v=iSkDPAiHRF8 (https://www.youtube.com/watch?v=iSkDPAiHRF8) с уроком по похожему движку - SA Moonloader. Было бы очень хорошо если бы была бы автоматическая установка всех библиотек сразу что облегчило бы многим людям установку, а то приходится подключать SDK.   Также хотелось бы чтобы вы и дальше радовали нас своими статьями. Очень хочу научиться писать скрипты на Вашим движке. Cleo имеет сильные ограничения, которых тут нет!
пробовал написать скрипт lua.  пока не работает.

function OnLoadGame()
if IsPlayerDefined(PLAYER_CHAR) then
SetPlayerArmour(PLAYER_CHAR, 100) -- »гроку PLAYER_CHAR ставим 100 брони
end
Название: Re: Справка по движку.
Отправлено: Sektor от Сентябрь 09, 2017, 07:43:21 pm
egor230, Спасибо, ну SA Moonloader, как раз и позже появился, черпнули идею. Есть более новая версия у меня на компе, но есть также ньюансы, там кое что не доделано, по этому не могу пока выложить. По пробуйте присвоить PLAYER_CHAR = 0; Что-бы что-то получилось вроде того:

Код: Lua
  1. function OnLoadGame()
  2. PLAYER_CHAR = 0;
  3. if IsPlayerDefined(PLAYER_CHAR) then
  4. SetPlayerArmour(PLAYER_CHAR, 100) -- »гроку PLAYER_CHAR ставим 100 брони
  5. end

Кроме того, не вспомню сейчас, возможно это надо делать в событии Start.
Название: Re: Справка по движку.
Отправлено: egor230 от Сентябрь 16, 2017, 12:30:17 am
спасибо большое уважаемый Sektor за Ваш ответ.
У  vice lua огромный потенциал развития. На нем легче писать миссии, чем на cleo. Чем большее будут писать скрипты, тем быстрее увеличится популярность и функциональность. С нетерпением жду новую версию движка.
Хочется его изучить. Пока научился добавлять количество брони и денег в главный поток.
Вот.
Код: HTML5
  1. [color=blue][code]
  2. function MainThread()
  3.   CameraFade(0, true)
  4.   RequestCollision(83.0, -849.8)
  5.   SetRenderingPosition(83.0, -849.8, 9.3)
  6.  
  7.   ON_MISSION = 0
  8.   MISSION_COMPLETE = 0
  9.  
  10.   PLAYER_CHAR = CreatePlayer("player", 83.0, -849.8, 9.3) -- Создание игрока
  11.   PLAYER_ACTOR = EmulatedActorFromPlayer(PLAYER_CHAR)     -- Получение актера из игрока.
  12.   SetGameClock(22, 0)
  13.   SetWantedMax(0)
  14.   Wait(1000)
  15.   CameraFade(2000, false)
  16.   SetPlayerMoney(PLAYER_CHAR, 100)-- Дать игроку 100 баксов
  17. SetPlayerArmour(PLAYER_CHAR, 100) -- Игроку PLAYER_CHAR ставим 100 брони
  18.   UpdateMissions()
  19.    RequestModel(282);     -- PYTHON
  20. LoadRequestedModels(282); -- Загружаем модели
  21. GivePlayerWeapon(PLAYER_CHAR, 23, 100) -- дать игроку питон-револьвер с 100 патронами.
  22.  
  23.   RequestModel(6);
  24.   RequestModel(4);
  25.   RequestModel(191);
  26.   LoadRequestedModels();
  27. end
  28.  
[/color][/code]
Скажите, пожалуйста, как дать игроку оружия.
Вот так не получается.   

Код: Javascript
  1. [code]
  2. function OnLoadGame()
  3. PLAYER_CHAR = 0;
  4. if IsPlayerDefined(0) then
  5.  RequestModel(282);     -- PYTHON
  6. LoadRequestedModels(282); -- Загружаем модели
  7. GivePlayerWeapon(0, 23, 100) -- дать игроку питон-револьвер с 100 патронами.
  8. end
  9.  
[/code][/color]
Название: Re: Справка по движку.
Отправлено: mfisto от Сентябрь 16, 2017, 02:38:14 pm
игроку нельзя вроде давать попробуй актеру а ввобще на сайте есть справка по функциям
Название: Re: Справка по движку.
Отправлено: Sektor от Сентябрь 17, 2017, 04:40:06 am
Цитировать
спасибо большое уважаемый Sektor за Ваш ответ.
У  vice lua огромный потенциал развития. На нем легче писать миссии, чем на cleo. Чем большее будут писать скрипты, тем быстрее увеличится популярность и функциональность. С нетерпением жду новую версию движка.
Хочется его изучить. Пока научился добавлять количество брони и денег в главный поток.
Вот.

Эхх, RWG на столько устарел, проще писать все с нуля. Вот например на юнити неограниченные возможности,  накидал тут не большие сценки и сделал мелкий конверт (при этом я не возился с графоном как-то, не писал своих шейдеров и так далее):

(https://pp.userapi.com/c837336/v837336484/4b472/XZa5j14H8W0.jpg)

А по поводу созданий миссий, да тут вообще ИЗИ. Можно также реализовать вайты, псевдопотоки (как это есть в CLEO/LUA), вообще делать бомбовые вещи в реалтайме. Но про оптимизацию не стоит забывать, а то есть много проектов, новички как раз в них, делали косяки лютые, после чего юньку считали, мол ужасный движок. Я в нем покопался и скажу что тут можно сделать все, но повозиться придется. Если получиться хоть базу перенести и написать адекватный код у меня, что-бы все функционировало по привычному, выложу сорцы и все, каждый сможет запиливать уже, все что захочет и не каких лимитов и полная реализация своих идей.

Название: Re: Справка по движку.
Отправлено: egor230 от Сентябрь 17, 2017, 07:25:42 pm
mfisto, спасибо за Ваше сообщение. В справке по lua, есть пункт, дать оружия игроку. http://gtabuilder.ru/function-giveplayerweapon.html (http://gtabuilder.ru/function-giveplayerweapon.html)
Sektor, очень рад, что Вы мне ответили!
Движок vc 2002 изначально был сделан для ps2, он не выдерживает больших нагрузок. Поэтому при создании скрипта, нужно думать о него оптимизации в первую очередь.
Перенести vc на Unity, очень хорошая идея, он прост в использовании, но потребует много времени. Unreal Engine 4, мощнее и исходники открытые.
Вау, Вы гений!!! Как интересно, новая графика это потрясающее! В Unity безграничные возможности для фантазии, cleo отдыхает
Ваш движок в умелых руках, просто волшебная палочка.
Будет ждать Ваш шедевр с нетерпением!
Эх, хоть бы научиться создавать пикап оружия в vice lua. Хотя бы найти образец скрипт. Изменяя, его можно научится писать на нем.
Так я изучал cleo. Его знаю, написал пару десяток скриптов, но там сильные ограничения, что небольшое легко написать.
Буду экспериментировать, путем проб и ошибок.
Название: Re: Справка по движку.
Отправлено: Sektor от Сентябрь 17, 2017, 09:26:41 pm
Цитировать
Sektor, очень рад, что Вы мне ответили!

Всегда пожалуйста  ;)

Цитировать
Эх, хоть бы научиться создавать пикап оружия в vice lua


Эти разделы важны для пикапов.
http://gtabuilder.ru/main-function-include-list.html (http://gtabuilder.ru/main-function-include-list.html)
Это подробности:
http://gtabuilder.ru/function-define_object.html (http://gtabuilder.ru/function-define_object.html)

Прежде чем приступить к созданию пикопов, не обходимо выше прочитать про инклуд листы и там не все так страшно, так как есть пример.
http://gtabuilder.ru/functions-pickups-vice-lua.html (http://gtabuilder.ru/functions-pickups-vice-lua.html)

Вот пока доступный справочник, но увы и он не полный...
http://gtabuilder.ru/vice_lua_current_functions_all.html (http://gtabuilder.ru/vice_lua_current_functions_all.html)
Название: Re: Справка по движку.
Отправлено: egor230 от Сентябрь 19, 2017, 11:03:56 am
Здравствуйте, уважаемый Sektor.
Счастлив, несмотря на свои проекты, находите время меня отвечать.
Ваш светлый ум, может раздражает мой тупизм.
Лишь как рядовой пользователь, пытаюсь разобраться.
Ваши ответы помогут и другим, пользователям разобраться в Вашем уникальным движке.
Пытаюсь добавить пикап узи это то с чего начинаю.
Ничего не получилось. Пожалуйста, подскажите где ошибся?
 Добавил в инклуд  лист модель узи.
Код: HTML5
  1. -- Объявляем список объектов.
  2. function INIT_DEFINE_OBJECTS()
  3.                  DEFINE_OBJECTS(6)
  4.                  DEFINE_OBJECT("HEALTH");       -- ID 0
  5.                  DEFINE_OBJECT("GASGRENADE");   -- ID 1
  6.                  DEFINE_OBJECT("ADRENALINE");   -- ID 2
  7.                  DEFINE_OBJECT("BODYARMOUR");   -- ID 3
  8.                  DEFINE_OBJECT("INFO");         -- ID 4
  9.                  DEFINE_OBJECT("BRIEFCASE");    -- ID 5
  10.                  DEFINE_OBJECT("UZI");          -- ID 6
  11. end
  12.  
Создал пикап.
Код: HTML5
  1.  
  2. local hPickupWpn = CreateWeaponPickup(uzi_282, 23, 100, 85.0, -853.8, 9.3)
  3.  

Добавил условие.
Код: Javascript
  1.  
  2.  
  3. function MainThread()
  4.   CameraFade(0, true)
  5.   RequestCollision(83.0, -849.8)
  6.   SetRenderingPosition(83.0, -849.8, 9.3)
  7.  
  8.  local hPickupWpn = CreateWeaponPickup(uzi_282, 23, 100, 85.0, -853.8, 9.3)
  9.   ON_MISSION = 0
  10.   MISSION_COMPLETE = 0
  11.  
  12.   PLAYER_CHAR = CreatePlayer("player", 83.0, -849.8, 9.3) -- Создание игрока
  13.   PLAYER_ACTOR = EmulatedActorFromPlayer(PLAYER_CHAR)     -- Получение актера из игрока.
  14.   SetGameClock(22, 0)
  15.   SetWantedMax(0)
  16.   Wait(1000)
  17.   CameraFade(2000, false)
  18.   SetPlayerMoney(PLAYER_CHAR, 100)-- Дать игроку
  19.   SetPlayerArmour(PLAYER_CHAR, 100) -- Игроку PLAYER_CHAR ставим 100 брони
  20.   UpdateMissions()
  21.   RequestModel(282);     -- uzi
  22.   RequestModel(6);
  23.   RequestModel(4);
  24.   RequestModel(191);
  25.   LoadRequestedModels();
  26.   if IsPickupPickedUp(hPickupWpn) then
  27.   GivePlayerWeapon(PLAYER_CHAR, 23, 100) -- дать игроку uzi с 100 патронами.
  28. end
  29. end
  30.  
  31.  
Итог, где-то есть ошибка. Помогите мне, пожалуйста, уважаемый Sektor.
 
Название: Re: Справка по движку.
Отправлено: Sektor от Сентябрь 19, 2017, 11:36:19 pm
Цитировать
Ваш светлый ум, может раздражает мой тупизм.
Мой ум оставляет, желать лучшего, по крайне мере я не доволен  ;D. По поводу тупизма, ну я так не считаю. Вы не много, не дочитали об создание пикап-вэпэнов:
Создает пикап-оружие, ID модели задается именно с default.ide. Тип пикапа из SCM, кол-во патронов - ammo и координаты.

Т.е, для этого инклуд лист не используется. Уже для вооружения, все есть. Достаточно указать ID модели, вы его можете найти в default.ide.
Название: Re: Справка по движку.
Отправлено: egor230 от Сентябрь 20, 2017, 08:04:19 am
Благодарю Вас уважаемый Sektor за уникальную возможность общение с профессиональным программистом на этот замечательном форуме.
Только лишь истинный гений, постоянно сомневается в своем интеллекте, что толкает его развивать, в отличии от дурака.
Спасибо огромное за Ваш ответа на мой банальный вопрос, он поможет другим новичкам быстрее разобраться в vice lua.
У меня наконец-то получилось создать пикап узи- Ура. Но игрок не может его никак взять. Бился, чтобы решить эту проблему, так не смог решить ее.
Информации по vice lua в Интернете почти нет, за исключением Вашего уникального в своем роде форума. Помогите мне, пожалуйста, разобраться.   
Код: Javascript
  1. function MainThread()
  2.   CameraFade(0, true)
  3.   RequestCollision(83.0, -849.8)
  4.   SetRenderingPosition(83.0, -849.8, 9.3)
  5.   RequestModel(282);     -- uzi
  6.  local hPickupWpn = CreateWeaponPickup(282, 23, 100, 85.0, -853.8, 10.3)  
  7.   if  IsPickupPickedUp(hPickupWpn) then DestroyPickup(hPickupWpn)
  8.   GivePlayerWeapon(PLAYER_CHAR, 23, 100) -- дать игроку uzi с 100 патронами.
  9.  ReleaseModel(282) -- RELEASE uzi
  10.   end
Название: Re: Справка по движку.
Отправлено: Sektor от Сентябрь 20, 2017, 03:39:59 pm
Цитировать
  if  IsPickupPickedUp(hPickupWpn) then DestroyPickup(hPickupWpn)
  GivePlayerWeapon(PLAYER_CHAR, 23, 100) -- дать игроку uzi с 100 патронами.

Этот код не нужен.  Достаточно этого: CreateWeaponPickup(282, 23, 100, 85.0, -853.8, 10.3)   
Только вот, по играйте со вторым параметром, там где 23, по экспериментируйте. Я точно не могу вспомнить (так как это было давно, сложно что припомнить сейчас), но там кажется был какой-то параметр который отвечал за появление и.т.п.
Название: Re: Справка по движку.
Отправлено: egor230 от Сентябрь 20, 2017, 04:57:37 pm
Sektor Вы гений!!!
Второй параметр отвечает за тип пикапа!!!!!
Вот они.
Код: HTML5
  1. 1 PICKUP_ IN_ SHOP      Оружие / предметный пикап со стоимостью        Время респауна ~ 5 с ( см. Ниже стоимость)
  2. 2 PICKUP_ ON_ STREET    Оружие / предметный пикап  Время респауна ~ 30 с, расстояние респауна ~ 15 м
  3. 3       PICKUP_ ONCE    Оружие / предметный пикап  Одноразовый пикап, не респаун
  4. 4       PICKUP_ ONCE_ TIMEOUT   Оружие / предметный пикап  Одноразовый пикап, не воспаляется, исчезает в 20-е годы
  5. 5       PICKUP_ ONCE_ TIMEOUT_ SLOW     Оружие / предметный пикап  Одноразовый пикап, не воспламеняется, исчезает в 120-х годах
  6. 6       PICKUP_ COLLECTABLE1    Скрытый прием пакетов
  7. Ведет себя точно так же, как пакет, включающий обновление статистики и денежное вознаграждение
  8. 7       PICKUP_ IN_ SHOP_ OUT_ OF_ STOCK        Нет на складе        Объектная модель затемненная, недоступная
  9. 8       PICKUP_ MONEY   Денежный пикап     Деньги фактически не добавлены, но диалог денег и звуковые игры (деньги могут быть добавлены с использованием 032B ), одноразовый пикап, не возрождается, исчезает через 30 секунд
  10. 9       PICKUP_ MINE_ НЕАКТИВНО        Неактивный мой     Не взаимодействуя ни с чем, если игрок находится на ногах, изменения типа пикапа до 10 раз, когда игрок находится на любом транспортном средстве
  11. 10      PICKUP_ MINE_ ОХРАНА      Вооруженная шахта       Любой пикап, порожденный этим типом, автоматически изменяет тип 9, этот тип применяется только тогда, когда тип пикапа изменяется с 9 до 10 - самодеструкция в ~ 10 секунд, взрывается при контакте с любым транспортным средством, не возникает
  12. 11      PICKUP_ NAUTICAL_ MINE_ INACTIVE        Близость бомбы     Самолески в ~ 10 секунд, взрывается при контакте с транспортным средством игрока, может плавать над водой, но оружие гало не плавает с объектом, не возрождается
  13. 12      PICKUP_ NAUTICAL_ MINE_ ОХРАНА    Близость бомбы     Самолески в ~ 10 секунд, взрывается при контакте с транспортным средством игрока, может плавать над водой, но оружие гало не плавает с объектом, не возрождается
  14. 13      PICKUP_ FLOATINGPACKAGE Автомобильный пикап   Проехать через него, чтобы поднять его, не может быть поднято пешком, объектная модель опускается по земле, может плавать только по воде, но оружие гало не плавает с объектом, не возрождается
  15. 14      PICKUP_ FLOATINGPACKAGE_ FLOATING       Автомобильный пикап   Проехать через него, чтобы забрать его, не может быть поднят пешком, может плавать на воде, но оружие гало не плавает с объектом, не возрождается
  16. 15      PICKUP_ ON_ STREET_ SLOW        Оружие / предметный пикап  Время респауна ~ 30 с, расстояние респауна ~ 15 м
  17. 16      PICKUP_ ASSET_ REVENUE  Недвижимость        unpickable
  18. 17      PICKUP_ PROPERTY_ LOCKED        Недвижимость        unpickable
  19. 18      PICKUP_ PROPERTY_ Продается    Недвижимость        Нажмите кнопку ACTION, чтобы поднять его; Если на миссии нажатие клавиши ACTION отобразит окно справки с ключом GXT PROP_2и не позволит вам его поднять
  20.  
Это очень поможет нубам вроде меня!
Весь день почти мучился с ним, а Вы Вашим советом просветили мой ум. Спасибо Вам огромное за это.
Пожалуйста, если Вас не затруднит скиньте текстовой файл со своим функциями.
Думает будет гораздо сложнее создать пикап.
Скажите, пожалуйста, сколько переменных в vice lua, тоже 16? Как и в cleo.
Название: Re: Справка по движку.
Отправлено: Sektor от Сентябрь 20, 2017, 06:49:05 pm
Цитировать
Скажите, пожалуйста, сколько переменных в vice lua, тоже 16? Как и в cleo.
Бесконечно, пока оперативной памяти хватит... Это же язык Lua.
Название: Re: Справка по движку.
Отправлено: egor230 от Сентябрь 21, 2017, 02:07:03 pm
Уважаемый Sektor.
Большое спасибо, что нашли время ответить на мой банальный вопрос. У VICE LUA огромное преимущество перед Cleo. Там из-за лимита 16 переменных очень тяжело написать миссию. Не в коем случаи ни утверждаю, что это является невозможным. Но очень тяжело особенно для нубов, каких к сожалению большинство, конечно с помощью SCM функциях можно экономить переменные, что облегчает написание миссий, но для этого нужно обладать высоким уровнем мастерства скриптинга. В VICE LUA это намного проще изучал Ваши пробные миссии. Их код очень короткий, компактный, удобно читать. Прошу прощения за мою настойчивость перед Вами, я нахожусь в большом восторге от возможностей Вашего движка.
Не сочтите за наглость, очень хочу писать скрипты. Скажите, пожалуйста, как добавить новый скрипт? куда писать, чтобы он добавился? Инструкции в интернете к моему огорчению я не смог найти. Второй вопрос с каких строчек начинать новый скрипт? В CLEO  мы пишем директиву {$CLEO .cs}, опкод из четырех 0 0000:, wait 0, label и дальше условия и опкод , и заканчиваем jump-ом на первый label. Очень хочу научиться. ПТУ (Помогите тупому учиться).
Всё-таки считаю, что у VICE LUA есть определённые ограничения в силу возрасте самого движка игры. По справке хотел сделать пикап авто в заданных координатах, не получается возможно, тут есть какая-то тонкость об который знает лишь мудрый и образованный человек.
Название: Re: Справка по движку.
Отправлено: Sektor от Сентябрь 21, 2017, 03:38:36 pm
Подключать вот, тут было обсуждение:

http://forum.gtabuilder.ru/index.php?topic=293.msg1886#msg1886 (http://forum.gtabuilder.ru/index.php?topic=293.msg1886#msg1886)

Обычно в новых файлах, если писать миссии, то все как обычно с функций начинается. Кстати в комплекте же был пример простой.
Название: Re: Справка по движку.
Отправлено: egor230 от Сентябрь 22, 2017, 08:22:12 pm

Спасибо уважаемый Sektor, за полезную ссылку.
Сегодня проводил опыты в vice lua, чтобы учиться писать скрипты на языке lua.
Писал в скрипте " test_addon", чтобы ничего не испортить.
Создал актера, дал ему оружия, поставил ему задачу убить меня.
Также создал авто на координатах, задал угол авто, жаль авто не едет само.
Я сделал скрипт который наконец-то работает. Сделал его не чтобы похвастаться, а для того чтобы помочь другим, так как в документации для написания их, пока нет образцов. Примеров тоже очень мало. В официальной справке, их кот наплакал.
Написал не новый скрипт, а лишь изменения в тестовом чтобы показать новичкам, что это очень мощный инструмент для работы. Чтобы люди тоже пытались писать, потому что возможности этого движка безграничны. Комментарии к функциям помогут вам разобраться хотя бы с 10 раза.
 
Код: HTML5
  1.  
  2. function mod.OnSaveGame()
  3. end
  4.  
  5. function mod.OnLoadGame()
  6. end
  7.  
  8.  
  9. function testAddon()
  10.  -- Пример
  11.   RequestModel(89)  --запрос на загрузку актера CLA    
  12.   RequestModel(281);  -- запрос на загрузку TEC9
  13.   RequestModel(274);  -- запрос на загрузку COLT45
  14.   LoadRequestedModels();
  15.    local c = CreateActor(4, 89, 83.0, -848.8, 19.3) -- имеет 5 параметров, 1 - int типа педа, 2 - int идентификатор модели, 3, 4, 5 - float x, y, z. А также функция возвращает int хендл
  16.   SetActorMoney(c, 50000) -- Установить кол-во денег
  17.    SetActorPedStats(c , 1) -- Устанавливаем поведение актеру. чем выше, тем пугливее.
  18.   GiveActorWeapon(c , 22, 100)  -- дать актеру оружие  (автомат)
  19.     GiveActorWeapon(c , 17, 100)  -- дать актеру оружие (пистолет)
  20.    SetActorCurrentWeapon(c , 2)  -- Устанавливаем слот 2, пистолет    
  21.   SetActorCurrentWeapon(c , 5)  -- Устанавливаем слот 5, пистолеты-пулеметы
  22.   Wait(7000)
  23.    SetActorObjectiveTarget(c, PLAYER_CHAR, 9, 0) -- актер хочет нас убить, Функция имеет аж 4 параметра. 1 - параметр хендл актера, кому задаем задачу, 2 - параметр это хендл может быть, объекта, транспорта, актера и игрока (цель), 3 - параметр идентификатор задачи, 4 - тип цели.
  24.  
  25.  local a = 147 -- имя модели авто
  26.  RequestModel(a);  -- запрос модели
  27.   LoadRequestedModels();
  28.    Wait(4000)
  29.   local b = CreateVehicle(a, 85.0, -848.8, 9.3) -- записать хелд авто в переменную
  30.   SetVehicleZ_Angle(b, 110.0) -- задать угол разворота авто
  31.   SetFireGunsOnVehicle(b, 70)
  32.  SetVehicleToPsychoDriver(b)
  33.  SetVehicleMaxSpeed(b, 60)
  34.  
  35.  ReleaseModel(a) -- выгружает из памяти
  36.  
  37.  
Название: Re: Справка по движку.
Отправлено: kenking от Сентябрь 23, 2017, 10:02:18 am
egor230, приучайся сразу давать переменным осмысленные имена, самому же легче будет разбираться в коде

local c = CreateActor...
local a = 147 -- имя модели авто
local b = CreateVehicle...


хотя бы так:

local actor = CreateActor..
local modelVehicle = 147 -- имя модели авто
local vehicle = CreateVehicle...
Название: Re: Справка по движку.
Отправлено: egor230 от Сентябрь 23, 2017, 05:28:05 pm
Здравствуйте, уважаемый  kenking
Спасибо Вам больше за дельные советы, Вы совершенно правы, нужны давать осмысленные названиям переменным.
Поймите меня правильно, уважаемый Sektor создал гениальную вещь, полноценную альтернативу cleo, жаль нет хорошей подробной документации с уроками, примерами для нубов, как в cleo.
Приходится учиться методом проб и ошибок, что занимает очень много времени.
Скиньте, пожалуйста, мне образцы самых простых скриптов, чтобы понять логику их написание. Поймите меня правильно, очень тяжело одному изучать без уроков. 
Название: Re: Справка по движку.
Отправлено: kenking от Сентябрь 23, 2017, 07:28:06 pm
Цитировать
Скиньте, пожалуйста, мне образцы самых простых скриптов, чтобы понять логику их написание. Поймите меня правильно, очень тяжело одному изучать без уроков.
Я на  lua не написал ни одного скрипта. С cleo перешёл на написание плагинов на C++ http://forum.gtabuilder.ru/index.php?topic=337.0 (http://forum.gtabuilder.ru/index.php?topic=337.0), благодаря помощи DK.
Название: Re: Справка по движку.
Отправлено: egor230 от Сентябрь 29, 2017, 05:58:01 am
 Уважаемый kenking написания плагинов на С++ открывает перед нами новые возможности. Хотя язык с++ немного сложнее, того же lua. Многие его бояться как огня, а зря.
Уважаемые программисты скажите, пожалуйста, названия программы, на которой можно отточить язык lua, чтобы быстрее научиться. Наподобие этого  https://prnt.sc/gowfj6 (https://prnt.sc/gowfj6) .

Тут человек пишет и сразу проверяет скрипт, на этом видео человек работает в программе и видит как работает скрипт. 
https://www.youtube.com/watch?v=HjcuNo-NH2o&t=226s (https://www.youtube.com/watch?v=HjcuNo-NH2o&t=226s)
Название: Re: Справка по движку.
Отправлено: egor230 от Ноябрь 06, 2017, 02:42:03 pm
Здравствуйте, всем.
Учусь писать миссии на lua, путем изменение шаблонных миссии.
В cleo есть scm функция с возвратом, модель и тип педа, модель оружие и тип. Вернули хенлд врага со оружием.
Код: Javascript
  1. 0AB1: call_scm_func @fun 3 #VICE4 4 #M60 1@      
  2.  
Код: Javascript
  1.                          
  2. :fun
  3. repeat
  4. wait 0
  5. 0247: request_model 0@ // Запрос модели таксиста
  6. 0247: request_model 2@ // Запрос модели минигана    
  7. 038B: load_requested_models          
  8. gosub @delay              
  9. until gosub @load
  10. 5@ = actor.Create(1@, 0@, d, e, f)    
  11. 000E: 2@ -= 257 // Установить номер оружие
  12. 01B2: give_actor 5@ weapon 2@ ammo 9999    
  13. 02E2: set_actor 5@ weapon_accuracy_to 100 // Установка точности стрельбы для актера
  14. 000A: 2@ += 257 // Установить модель оружие
  15. actor.Angle(5@) = g // Задать угол актеру  
  16. actor.Health(5@) = h // Установить кол-во здоровье педа                
  17. 03FE: set actor 5@ money m // Кол-во денег педа  
  18. 01CA: actor 5@ kill_player $player_char // Актер хочет убить игрока    
  19. Model.Destroy(0@)      
  20. Model.Destroy(2@)      
  21. 0AB2: ret  1 5@  
  22. :delay
  23. 16@ = 0
  24. repeat
  25. wait 0                
  26. until 0029: 16@ >= 900 // задержка  
  27. return
  28. :load
  29. if and
  30. Model.Available(0@)
  31. Model.Available(2@)
  32. jf @load
  33. return
  34.  

как это сделать в lua vice?

Вот это кусок кода, нужно передать модель оружия и педа, получить врага.
Код: Javascript
  1.  
  2.   RequestModel(m); -- Army
  3.  LoadRequestedModels();
  4.   soldier = CreateActor(20, m, d, e, f);-- Создание актера    
  5.   SetActorObjectiveTarget(soldier, PLAYER_CHAR, 8, 0) -- задача у актера    
  6.   Market = SetBlipTieToActor(soldier, flag, 2) -- маркер над актером
  7.   SetActorWalkStyle(soldier , 50) -- походка актера
  8.   SetActorPedStats(soldier , 3) -- Устанавливаем поведение актеру. чем выше, тем пугливлее.
  9.   SetActorMoney(soldier, 50000) -- Установить кол-во денег врагу
  10.  
Помогите, пожалуйста, умные люди.

Весь код.
Код: Javascript
  1.  
  2. local soldier = -1;
  3. local x = -1150.94 -- Координаты значка миссии
  4. local y = -1418.94 -- Координаты значка миссии
  5. local z = 11.5395 -- Координаты значка миссии
  6. local a = -1101.47 -- Координаты пикапа
  7. local b = -1330.97 -- Координаты пикапа
  8. local c = 11.3695 -- Координаты пикапа  
  9. local d = -1064.83 -- Координаты педа
  10. local e = -1445.94 -- Координаты педа
  11. local f = 11.7444 -- Координаты педа
  12. local m = 4 -- Модель педа
  13. local function mission_end() -- завершение миссии
  14.  ON_MISSION = 0
  15.  CleanUpThisPed(soldier)
  16.  ReleaseModel(m) -- RELEASE ARMY
  17.  ClearBlip(Market)
  18. end
  19. local function mission_failed() -- провал миссии
  20.  GXT_AddBigMessageWithNumber("M_FAIL", 5000, 0)  
  21.  ICON_MISSION_1 = CreateBlip(4, 77.3075, -879.1083, 10.4481, 2, 3)
  22.  SetBlipSprite(ICON_MISSION_1, 5)
  23.  mission_end()
  24. end
  25. local function mission_complete() -- миссия пройдена
  26.  GXT_AddBigMessageWithNumber("M_PASS", 5000, 0, 100)  
  27.  PlayMusic(1)
  28.  SetPlayerMoney(PLAYER_CHAR, GetPlayerMoney(PLAYER_CHAR) + 100)
  29.  MISSION_COMPLETE = 1
  30.  ICON_MISSION_1 = nil
  31.  ICON_MISSION_2 = CreateBlip(4, 77.3075, -879.1083, 10.4481, 2, 3)
  32.  SetBlipSprite(ICON_MISSION_2, 6)
  33.  mission_end()
  34. end
  35. function MISSION_1()
  36.   ON_MISSION = 1
  37.   MakePlayerSafe(PLAYER_CHAR, true)-- замораживает игрока, при этом он становится не доступным для управления
  38.   PutPlayerAt(PLAYER_CHAR, x, y, z)
  39.   MakePlayerSafe(PLAYER_CHAR, false)  
  40.   if IsDeadActor(PLAYER_ACTOR) then
  41.        mission_failed()  -- Если плеер был убит, то миссия провалена!   
  42.           return
  43.     end
  44.   RequestModel(m); -- Army
  45.  LoadRequestedModels();
  46.   soldier = CreateActor(20, m, d, e, f);-- Создание актера    
  47.   SetActorObjectiveTarget(soldier, PLAYER_CHAR, 8, 0) -- задача у актера    
  48.   Market = SetBlipTieToActor(soldier, flag, 2) -- маркер над актером
  49.   SetActorWalkStyle(soldier , 50) -- похода актера
  50.   SetActorPedStats(soldier , 3) -- Устанавливаем поведение актеру. чем выше, тем пугливлее.
  51.   SetActorMoney(soldier, 50000) -- Установить кол-во денег врагу
  52.   while true do-- Цикл миссии
  53.   if IsDeadActor(soldier) then
  54.           PutPlayerAt(PLAYER_CHAR, 77.3075, -879.1083, 10.4481)
  55.       Wait(2000)
  56.       mission_complete()
  57.           return
  58.     end
  59.   if IsDeadActor(PLAYER_ACTOR) then
  60.       mission_failed()
  61.           return
  62.     end
  63.   Wait(0)
  64. end              
  65. end
  66.  
Название: Re: Справка по движку.
Отправлено: spartaque12 от Ноябрь 27, 2017, 05:54:08 am
На Сан Андреас Бы эту прелесть прикрутить )) Надеюсь что будет когда-нибудь
спустя 2 года все же прикрутили moonloader
Название: Re: Справка по движку.
Отправлено: PowerBlack от Февраль 12, 2024, 02:07:19 pm
Я тоже начал создавать миссии, но пока очень сыро получается, нашел некоторые интересный моменты в вашем примере.

https://vipzerkalo.site/ (https://vipzerkalo.site/) https://zerkalozerkalo.site/ (https://zerkalozerkalo.site/) https://zerkalo1xbet.site/ (https://zerkalo1xbet.site/)