Solución para coches invisibles
¡Hola a todos! ¿Alguna vez se han encontrado con el problema de que están en algún interior (como un estadio) y han generado un coche? ¡Pero no está! En realidad, existe, solo que se volvió invisible.
Esta solución corrige ese problema y puedes generar coches "visibles" en todos los interiores.
También se puede desactivar ingresando el código de trucos "fixcars", y se escuchará un sonido característico.
Para aquellos que quieren entender cómo funciona...
Ahora, en orden. Los generadores de coches no consideran que los jugadores pueden generar autos (y no solo) en interiores. Debido a esto, todos los coches se vinculan al interior 0 (calle),
pero como no estamos en el interior 0, el coche visible solo estará en el interior 0 (es decir, para nosotros es "invisible"). Todo esto se resuelve con dos líneas de código después de generar el auto.
Ejemplo:
:CarCreating //nombre del hilo
wait 0 //esperamos, de lo contrario el juego se congelará
if //si
0ADC: test_cheat "elegy" //código de trucos escrito
jf @CarCreating //de lo contrario, volvemos al inicio del hilo "CarCreating"
jump @CarCreating2 //si el código de trucos está escrito, pasamos al hilo "CarCreating2"
:CarCreating2 //nombre del hilo
wait 0 //esperamos, de lo contrario el juego se congelará
model.load(#elegy) //cargamos el modelo \"elegy\"(modelo de coche)
038B: load_requested_models //registramos el modelo en el juego (sin este opcode el modelo no se cargará)
if //si
model.available(#elegy) //modelo cargado
jf @CarCreating2 //de lo contrario, volvemos al inicio del hilo "CarCreating2"
Car.create(0@ #elegy 1@ 2@ 3@) //creamos el coche
077E: get_active_interior_to $ACTIVE_INTERIOR //vemos en qué interior está el jugador
0840: link_car 0@ to_interior $ACTIVE_INTERIOR //\"vinculamos\"(lo hacemos visible para nosotros) el coche
car.RemoveReferences(0@) //eliminamos la información sobre el coche
jump @CarCreating //volvemos al inicio del script
donde 0@ - el auto mismo; #elegy - modelo del auto; 1@ 2@ 3@ - variables (en este caso - coordenadas); $ACTIVE_INTERIOR - variable del número del interior.
En total, estas dos líneas:
077E: get_active_interior_to $ACTIVE_INTERIOR //vemos en qué interior está el jugador
0840: link_car 0@ to_interior $ACTIVE_INTERIOR //\"vinculamos\"(lo hacemos visible para nosotros) el coche
donde 0@ - el vehículo necesario; $ACTIVE_INTERIOR - variable del número del interior.
Hacen que el auto sea "visible" para nosotros. Pero si cambiamos de interior, el coche se volverá "invisible".
Всем привет! Вы сталкивались с такой проблемой - вы в каком-нибудь интерьере(стадион, например) и заспавнили машину. Но её нет! Вернее она есть, просто стала невидимой.
Данный фикс исправляет эту проблему и вы можете спавнить «видимые» машины во всех интерьерах.
Также это можно отключить, введя чит-код «fixcars», при этом раздастся характерный звук.
Для тех, кто хочет разобраться, как это работает...
Теперь по порядку. Спавнеры машин не учитывают то, что игроки могут спавнить авто(и не только) в интерьерах. Из-за этого все машины прицепляются к интерьеру 0(улица),
но т.к. мы находимся не в интерьере 0, то и видимой машина будет только в интерьере 0(т.е для нас она «невидима»). Все это решается двумя строчками кода после спавна авто.
Пример:
:CarCreating //наименование потока
wait 0 // ждем, в противному случае игра зависнет
if // если
0ADC: test_cheat «elegy» //чит-код написан
jf @CarCreating //в противном случае переходим в начало потока «CarCreating»
jump @CarCreating2 //если чит-код написан, переходим в поток «CarCreating2»
:CarCreating2 //наименование потока
wait 0 //ждем, в противном случае игра зависнет
model.load(#elegy) //загружаем модель \"elegy\"(модель автомобиля)
038B: load_requested_models //регистрируем модель в игре(без этого опкода модель не загрузится)
if //если
model.available(#elegy) //модель загружена
jf @CarCreating2 //в противном случае переходим в начало потока «CarCreating2»
Car.create(0@ #elegy 1@ 2@ 3@) //создаем машину
077E: get_active_interior_to $ACTIVE_INTERIOR //смотрим, в каком интерьере находится игрок
0840: link_car 0@ to_interior $ACTIVE_INTERIOR //\"прицепляем\"(делаем ее видимой для нас) машину
car.RemoveReferences(0@) //удаляем инфу о машине
jump @CarCreating //переходим в самое начало скрипта
где 0@ - само авто; #elegy - моделька авто; 1@ 2@ 3@ - переменные(в данном случае - координаты); $ACTIVE_INTERIOR - переменная номера интерьера.
Всего вот эти две строчки:
077E: get_active_interior_to $ACTIVE_INTERIOR //смотрим, в каком интерьере находится игрок
0840: link_car 0@ to_interior $ACTIVE_INTERIOR //\"прицепляем\"(делаем ее видимой для нас) машину
где 0@ - нужное ТС(транспортное средство); $ACTIVE_INTERIOR - переменная номера интерьера.
Делают авто «видимым» для нас. Но если мы поменяем интерьер, то машина станет «невидимой»