Последние сообщения

Страницы: [1] 2 3 ... 10
1
Общие вопросы / Re: Замена модели колёс у машины игрока
« Последний ответ от Shagg_E Ноябрь 20, 2019, 05:17:27 am »
Вспомнил наконец, что видел такое в SoV(им DK вроде дал код плагина для реализации этого или что-то вроде того).
Их группа, если что - тут: https://discord.gg/mjP2J7. Попробуй спросить там Speccy.
2
Цитировать
не знаю как выводить gtx записи
Класс CText пока в sdk не добавлен. Пока можно скриптовыми командами:
Код: C++
  1. #include "plugin.h"
  2. #include "eScriptCommands.h"
  3. #include "extensions\ScriptCommands.h"
  4. #include "extensions\KeyCheck.h"
  5.  
  6. using namespace plugin;
  7.  
  8. class Test {
  9. public:
  10.     Test() {
  11.         Events::gameProcessEvent += [] {
  12.             KeyCheck::Update();
  13.             if (KeyCheck::CheckWithDelay('M', 2000)) {
  14.                 Command<COMMAND_LOAD_MISSION_TEXT>("GENERA1");
  15.                 Command<COMMAND_PRINT_NOW>("GEN1_A", 2000, 1);
  16.             }
  17.         };
  18.     }
  19. } test;

Цитировать
ищу аналоги 0A8C: write_memory 0xC0BC15 size 1 value 1 virtual_protect 0
и 0A8D: $result = read_memory 1@ size 4 virtual_protect 0
чтобы поработать с памятью
Для этого есть patch::Set и patch::Get
Но можно просто работать через свою переменную, например, как показал выше в примере с таймерами.
Код: C++
  1. int &var_$3402 = *(int *)0x8247A8;
3
Общие вопросы / Замена модели колёс у машины игрока
« Последний ответ от Prographer Ноябрь 17, 2019, 03:16:37 pm »
Всем привет! Кто-нибудь в курсе, как можно заменить модель колёс у тачки игрока? По адресам и опкодам мне что-то ничего найти не удалось :-\
4
Новые функции.
Код: Javascript
  1. .addCFunction("ped_attack_car", ped_attack_car) // пед атакует авто.
  2.  
  3. .addCFunction("ped_frozen", ped_frozen)  // заморозить игpока.
  4. .addCFunction("hold_cellphone", hold_cellphone) // поднять телефон.
  5. .addCFunction("car_lastweapondamage", car_lastweapondamage)// номер оружие, которое нанесло урон авто.
  6. .addCFunction("car_currentgear", car_currentgear) // текущая передача авто.
  7.  
  8. .addCFunction("getcar_model", getcar_model) // получить модель авто.
  9. .addCFunction("setcarsiren", setcarsiren) // установить сирену для авто.
  10. .addCFunction("ped_car_as_driver", ped_car_as_driver) // пед садится в авто как водитель.
  11. .addCFunction("ped_car_as_passenger", ped_car_as_passenger) // пед садится в авто как пассажир.
  12.  
  13.  

нажмите клавишу "H" томми позвонить по телефону, появиться авто и 2 педа, они садят в авто 
вот сам скрипт.

Код: Javascript
  1. require("lualoader/mod")
  2.  
  3. function main()
  4. while lualoader == nil do
  5.  wait()-- задержка.
  6.  player = findplayer()-- получить игрока
  7.   if Keypress(VK_H) -- если клавиша H.
  8.  then   x,y,z =getcoordinates_on_y(player,5)-- получить координаты на 5 м впереди.
  9. Giveweaponped(player,600,"uzi")-- дать педу оружие.
  10. Hold_cellphone(player, 1)-- понять телефон.
  11. wait(1300)
  12. show_text_styled("BNK1_4",1000,2)
  13. play_voice("BNK1_4")
  14. Hold_cellphone(player, 0)-- положить телефон.
  15. mycar = Createcar(MODEL_INFERNUS,x,y,z) -- создать авто на 5 впереди.
  16.  
  17.  wait(12)-- задержка.
  18.   x,y,z =getcoordinates_on_y(player,10)-- получить координаты на 10 м впереди.
  19.  ped = Createped("HMYST",x,y,z)
  20. ped_car_as_driver(ped, mycar)-- пед садится в авто как водитель.
  21.  wait(12)-- задержка.
  22.   x,y,z =getcoordinates_on_y(player,15)-- получить координаты на 15 м впереди.
  23.  ped1 = Createped("HFOBE",x,y,z)
  24.  ped_car_as_passenger(ped1, mycar)-- пед садится в авто как пассажир.
  25.  
  26. wait(5300)
  27.  destroy()
  28.  end  
  29.  end
  30. end
  31.  
  32.  
видео https://www.youtube.com/watch?v=UvUD6oaJB-w&feature=youtu.be

добавлю новый функционал.
спасибо за ответ kenking, поправил, все работает. копаюсь в базе, разбираю функции,   всё идёт крайне медленно, занимает много времени.
Я сам недоволен  как работает lua в плагине, хочется лучше.  Вот бы посмотреть исходники moonloader.   Чтобы улучшить, у самого  маленькой опыт в программирование.  Например,  не знаю как выводить gtx записи. пед охраняет зону ped->SetObjective(OBJECTIVE_GUARD_SPOT, pos); //охранное место 0194
А на деле стоит на месте. ищу аналоги 0A8C: write_memory 0xC0BC15 size 1 value 1 virtual_protect 0 и 0A8D: $result = read_memory 1@ size 4 virtual_protect 0
 чтобы поработать с памятью, не могу актировать бомбу в машине, хотя делал все правильно.

      car->ActivateBombWhenEntered();
      car->ActivateBomb();*/

5
Общие вопросы / Re: Траектория движения направленного освещения
« Последний ответ от Prographer Ноябрь 14, 2019, 10:27:58 pm »
Офигенно смотрится, особенно с модом, включающий динамическое освещение. Моё почтение :o ;)
6
Моды / Re: Grand Theft Auto Vice City Quaesitum City (мод с русскими постройками)
« Последний ответ от xanser Ноябрь 14, 2019, 12:10:19 pm »
Можно ли как-то переместить солнце на юг, как это сделано вроде как в тройке?


Мод размещен на сайте http://gtabuilder.ru/gta_vc/mods/asi_plugins/469-dvizhenie-solnca.html
7
Общие вопросы / Re: Траектория движения направленного освещения
« Последний ответ от xanser Ноябрь 14, 2019, 12:09:07 pm »
8
Цитировать
как в данной функции обойтись без использования скриптовой команды?
Код: C++
  1. CPed *ped; CVehicle *vehicle;
  2. ped->SetObjective(OBJECTIVE_ENTER_CAR_AS_DRIVER, vehicle);
  3. ped->WarpPedIntoCar(vehicle);
9
kenking благодарю Вас, что помогли мне с таймером, старался перенести в lua.

Удалось реализовать 3 типа таймера
Код: Javascript
  1. 1.  timer_donw(60,"R_TIME",1) последний параметр отвечает за уменьшения или увеличения его со временем.
  2.  
  3. 2. t =turn_default_timer(true,"TIMER:")--  первый параметр  включает, второй  какую надпись выводит перед  таймером.
  4. функция устроена так
  5. t ={turn,str_timer,1267,270, 1,1, 2.0, 2.0, 101, 193, 244}--
  6. print_front(t)-- вкл\выкл таймер, координаты, размер, цвет.
  7.  
  8. 3. countdown(8) от какого числа начинать  обратный отчёт, когда достигает 0, возвращает false,  использовать в цикле.
  9.  

Код: Javascript
  1. require("lualoader/mod")
  2.  
  3. function main()
  4. while lualoader == nil do
  5.  wait()-- задержка.
  6.  player = findplayer()-- получить игрока
  7.  if Keypress(VK_T) -- если клавиша T.
  8.  then
  9.  timer_donw(60,"R_TIME",1)-- Таймер на уменьшения
  10.  end
  11.  
  12.  if Keypress(VK_U) -- если клавиша U.
  13.  then
  14.  stop_timer("R_TIME")-- удалить таймер.
  15.  end
  16.  if Keypress(VK_H) -- если клавиша H.
  17.  then x,y,z =getcoordinates_on_y(player,10)-- получить координаты на 10 м впереди.
  18.   z = z-1
  19.   obj = Create_obj(350, x,y,z) -- создать объект(бочка).
  20.   printmessage("the bomb is planted", 2000,1)
  21.  while countdown(8) do wait()-- таймер на 8 секунд.
  22.      
  23. end
  24.  create_explosion(3,x,y,z ) --Создать взрыв на координатах.
  25. remove_obj(obj)
  26. end
  27.  
  28.  if Keypress(VK_G) -- если клавиша G.
  29. then printmessage("star timer", 2000,1)
  30. t =turn_default_timer(true,"TIMER:")
  31. end
  32.  if Keypress(VK_N) -- если клавиша N.
  33. then printmessage("stop timer", 2000,1)
  34. turn_default_timer(false,t)
  35.  
  36. end  
  37. end
  38. end
  39.  

Видео https://www.youtube.com/watch?v=W-GEgnW9gHU&feature=youtu.be

ох, все тяжелее работать над проектом, бывает мелкий баг, съедает кучу времени, из-за растущего объема, сложнее выносит изменения. сами функции имеют обертки для упрощения.  Хочется, чтобы тот кто будет писать скрипт, испытывай Как можно меньше  трудностей

 Думаю пока над новыми функциями,  как работа с памятью.
10
Цитировать
как работает скриптовая команда Command<COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_STRING>(0,"R_TIME", 1);
Посмотрел как устроен опкод и класс COnscreenTimer. Пример работы с таймерами:
Код: C++
  1. #include "plugin.h"
  2. #include "extensions\KeyCheck.h"
  3. #include "CUserDisplay.h"
  4.  
  5. int &var_$3402 = *(int *)0x8247A8;
  6.  
  7. using namespace plugin;
  8.  
  9. class Test {
  10. public:
  11.     static int timer;
  12.     enum eTimerState { STATE_ADD, STATE_CLEAR };
  13.     static eTimerState m_currentState;
  14.  
  15.     Test() {
  16.         Events::drawingEvent += [] {
  17.             gamefont::Print({
  18.                 Format("id %d", CUserDisplay::OnscnTimer.m_aClocks[0].m_nVarId),
  19.                 Format("direction %d", CUserDisplay::OnscnTimer.m_aClocks[0].m_nTimerDirection),
  20.                 Format("enabled %d", CUserDisplay::OnscnTimer.m_aClocks[0].m_bEnabled),
  21.                 Format("text %s", CUserDisplay::OnscnTimer.m_aClocks[0].m_acDisplayedText),
  22.                 Format("key %s", &CUserDisplay::OnscnTimer.m_aClocks[0].m_acDescriptionTextKey),
  23.                 Format("var $3402 %d", var_$3402)
  24.             }, 10, 10, 1, FONT_DEFAULT, 0.75f, 0.75f, color::White);
  25.  
  26.             KeyCheck::Update();
  27.             switch (m_currentState) {
  28.             case STATE_ADD:
  29.                 if (!CUserDisplay::OnscnTimer.m_aClocks[0].m_bEnabled) {
  30.                     if (KeyCheck::CheckWithDelay('M', 1000)) {
  31.                         var_$3402 = 120000; //in CLEO $3402 = 120000
  32.                         CUserDisplay::OnscnTimer.AddClock(timer, "R_TIME", 1); //03C3: set_timer_with_text_to $3402 type 1 text 'R_TIME'
  33.                         m_currentState = STATE_CLEAR;
  34.                     }
  35.                     if (KeyCheck::CheckWithDelay('U', 1000)) {
  36.                         CUserDisplay::OnscnTimer.AddClock(timer, "R_TIME", 0); //03C3: set_timer_with_text_to $3402 type 0 text 'R_TIME'
  37.                         m_currentState = STATE_CLEAR;
  38.                     }
  39.                 }
  40.                 break;
  41.             case STATE_CLEAR:
  42.                 if (KeyCheck::CheckWithDelay('N', 1000) || var_$3402 > 121000 || var_$3402 < 1) {
  43.                     CUserDisplay::OnscnTimer.ClearClock(timer); //014F: stop_timer $3402
  44.                     var_$3402 = 0; //$3402 = 0
  45.                     m_currentState = STATE_ADD;
  46.                 }
  47.                 break;
  48.             }
  49.         };
  50.     }
  51. } test;
  52.  
  53. int Test::timer = 13608;
  54. Test::eTimerState Test::m_currentState = STATE_ADD;
Страницы: [1] 2 3 ... 10