Автор Тема: Справка по движку.  (Прочитано 4172 раз)

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Справка по движку.
« Ответ #30 : Сентябрь 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 есть определённые ограничения в силу возрасте самого движка игры. По справке хотел сделать пикап авто в заданных координатах, не получается возможно, тут есть какая-то тонкость об который знает лишь мудрый и образованный человек.

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 512
  • Репутация: +33/-0
    • Просмотр профиля
Re: Справка по движку.
« Ответ #31 : Сентябрь 21, 2017, 03:38:36 pm »
Подключать вот, тут было обсуждение:

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

Обычно в новых файлах, если писать миссии, то все как обычно с функций начинается. Кстати в комплекте же был пример простой.

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Справка по движку.
« Ответ #32 : Сентябрь 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.  

Оффлайн kenking

  • Новичек
  • **
  • Сообщений: 143
  • Репутация: +5/-0
    • Просмотр профиля
Re: Справка по движку.
« Ответ #33 : Сентябрь 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...

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Справка по движку.
« Ответ #34 : Сентябрь 23, 2017, 05:28:05 pm »
Здравствуйте, уважаемый  kenking
Спасибо Вам больше за дельные советы, Вы совершенно правы, нужны давать осмысленные названиям переменным.
Поймите меня правильно, уважаемый Sektor создал гениальную вещь, полноценную альтернативу cleo, жаль нет хорошей подробной документации с уроками, примерами для нубов, как в cleo.
Приходится учиться методом проб и ошибок, что занимает очень много времени.
Скиньте, пожалуйста, мне образцы самых простых скриптов, чтобы понять логику их написание. Поймите меня правильно, очень тяжело одному изучать без уроков. 

Оффлайн kenking

  • Новичек
  • **
  • Сообщений: 143
  • Репутация: +5/-0
    • Просмотр профиля
Re: Справка по движку.
« Ответ #35 : Сентябрь 23, 2017, 07:28:06 pm »
Цитировать
Скиньте, пожалуйста, мне образцы самых простых скриптов, чтобы понять логику их написание. Поймите меня правильно, очень тяжело одному изучать без уроков.
Я на  lua не написал ни одного скрипта. С cleo перешёл на написание плагинов на C++ http://forum.gtabuilder.ru/index.php?topic=337.0, благодаря помощи DK.

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Справка по движку.
« Ответ #36 : Сентябрь 29, 2017, 05:58:01 am »
 Уважаемый kenking написания плагинов на С++ открывает перед нами новые возможности. Хотя язык с++ немного сложнее, того же lua. Многие его бояться как огня, а зря.
Уважаемые программисты скажите, пожалуйста, названия программы, на которой можно отточить язык lua, чтобы быстрее научиться. Наподобие этого  https://prnt.sc/gowfj6 .

Тут человек пишет и сразу проверяет скрипт, на этом видео человек работает в программе и видит как работает скрипт. 
https://www.youtube.com/watch?v=HjcuNo-NH2o&t=226s

Оффлайн egor230

  • Прохожий
  • *
  • Сообщений: 90
  • Репутация: +1/-0
    • Просмотр профиля
    • Mr
Re: Справка по движку.
« Ответ #37 : Ноябрь 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.  

Оффлайн spartaque12

  • Призрак
  • Сообщений: 9
  • Репутация: +0/-0
    • Просмотр профиля
Re: Справка по движку.
« Ответ #38 : Ноябрь 27, 2017, 05:54:08 am »
На Сан Андреас Бы эту прелесть прикрутить )) Надеюсь что будет когда-нибудь
спустя 2 года все же прикрутили moonloader