Donate with PayPal button New New

+ Ответить в теме
Страница 141 из 145 ПерваяПервая ... 41 91 131 139 140 141 142 143 ... ПоследняяПоследняя
Показано с 1,401 по 1,410 из 1446

Тема: Вопросы по Auran GameScript

  1. #1401
    Модератор Аватар для jim_spb
    Регистрация
    20.09.2009
    Страна
    Адрес
    Stanice Praha hlavní nádraží
    Возраст
    56
    Сообщений
    2,681

    По умолчанию

    Назрел вопрос.
    Есть электровоз
    Код:
    class CHS2t_new_v2 isclass EPTLocomotive
    {
      	Asset myAsset;
      	CHS2t_new_v2 myLoco;
            ...
    К нему есть кабина.
    Функция Attach начинается со следующих строк:
    Код:
    	public void Attach (GameObject obj)
    	{
    		inherited (obj);
    
    		Locomotive myLoco = cast<Locomotive>obj;
    		ALSN.Init (myLoco);
    		loco = cast<CHS2t_new_v2>myLoco;
    		if (loco == null)
    			Interface.Exception ("CHS2t_Cab_v2:: Where is my Loco?");
    		cd = cast<chs2t_CabinData>loco.GetCabinData ();
    Эта конструкция иногда работает, но не всегда. Очень часто в результате действия
    Код:
    		loco = cast<CHS2t_new_v2>myLoco;
    получается null, соответственно выводится сообщение из следующей строки и в следующей строке
    Код:
    cd = cast<chs2t_CabinData>loco.GetCabinData ();
    возникает ошибка ER_NullReference, потому что loco = null
    Подскажите пожалуйста, как эту напасть победить?
    Instagram: @jim_spb

  2. Сказали спасибо: (2)


  3. #Trainz
    Реклама
    Регистрация
    Постоянная
    Адрес
    Весь мир
    Возраст
    2010
    Сообщений
    Много

    Donate with PayPal button N3v New New

     

  4. #1402
    Пользователь Аватар для kemal
    Регистрация
    22.10.2009
    Страна
    Адрес
    Казань / 793км
    Возраст
    35
    Сообщений
    3,554

    По умолчанию

    Вообще, кабиндату можно прямо из myLoco брать, не обязательно кастовать к своему классу. Но, полагаю, принципиально проблема не в этом.
    Тут надо проверить, там в принципе null или там объект не того класса. Надо посмотреть в базовых классах, что-то было для дебага.
    Ну и из банального - убедиться, что кабина не используется не в том локомотиве.

  5. Сказал спасибо:


  6. #1403
    Разработчик Аватар для B.U.G.O.R.
    Регистрация
    07.02.2010
    Адрес
    Montenegro
    Возраст
    30
    Сообщений
    8,379

    По умолчанию

    Я тоже замечал это, возможно, что loco это обосолетная переменная. Если завести новую переменную типа класса своего Locomotive и назвать ее, например, loc (как у меня), то кастуется без проблем. Я, кстати, не пользуюсь CabinData, у меня все переменные храняться в Locomotive.

  7. Сказали спасибо: (3)


  8. #1404
    Разработчик Аватар для B.U.G.O.R.
    Регистрация
    07.02.2010
    Адрес
    Montenegro
    Возраст
    30
    Сообщений
    8,379

    По умолчанию

    Есть у нас возможность повесить AddHandler() на состояние скорости? Например, срабатывание его ровно в 10 км/ч? Или хотя бы на начало движения и остановку.

    ---------- Сообщение добавлено в 19:41 ---------- Предыдущее сообщение размещено в 19:32 ----------

    На старт и стоп нашел, вопрос теперь только со скоростью. Возможно ли это?

    ---------- Сообщение добавлено в 21:01 ---------- Предыдущее сообщение размещено в 19:41 ----------

    AddHandler(me,"Train","StartedMoving","StartMove") ;

    Хотя вообще-то у меня не срабатывает этот хендлер. В чем может быть дело?

    ---------- Сообщение добавлено в 22:54 ---------- Предыдущее сообщение размещено в 21:01 ----------

    Отбой, все работает. Не в том классе вешал хендлер.

  9. Сказал спасибо:


  10. #1405
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    Цитата Сообщение от B.U.G.O.R. Посмотреть сообщение
    Возможно ли это?
    Невозможно. Как для любых непрерывно меняющихся величин (типа давления в тормозных цилиндрах, текущего времени суток и т.д.)

    О "Train","StartedMoving" - его нужно устанавливать не на me, а на объект поезда. Или заранее делать sniff'ы этого сообщения с объектов поездов, чтобы данное сообщение приходило библиотеке. Но в любом случае, это только на начало движения/остановку (но не конкретную величину скорости).

    При этом не забывай, что при прицепке один из объектов поездов удаляется, а при расцепке - наоборот, возникает новый объект поезда для отцепленной части.
    Последний раз редактировалось TRam_; 28.06.2020 в 23:59.

  11. Сказали спасибо: (3)


  12. #1406
    Разработчик Аватар для B.U.G.O.R.
    Регистрация
    07.02.2010
    Адрес
    Montenegro
    Возраст
    30
    Сообщений
    8,379

    По умолчанию

    Цитата Сообщение от TRam_ Посмотреть сообщение
    При этом не забывай, что при прицепке один из объектов поездов удаляется, а при расцепке - наоборот, возникает новый объект поезда для отцепленной части.
    Да, точняк. Значит надо вешать хендлер внутри хендлера сцепки/расцепки.
    Цитата Сообщение от TRam_ Посмотреть сообщение
    Но в любом случае, это только на начало движения/остановку (но не конкретную величину скорости).
    Это понятно. Я решил, что у постоянников после старта будет бросать рог спустя секунд 10, а при остановке тут же поднимать. ну и плюс, где есть возможность, это для включения света в кабине и прочее.

  13. Сказал спасибо:


  14. #1407
    Пользователь Аватар для Bogodaroff
    Регистрация
    17.09.2017
    Страна
    Адрес
    Санкт - Петербург
    Возраст
    33
    Сообщений
    34

    Unknown

    Всем привет. Возник вопрос, как в public Soup GetProperties() сохранить soup переменную? (которая в свою очередь состоит так же из soup)? При таком коде:

    Код:
    public Soup GetProperties()
    {
                    Soup soup = inherited();
    		soup.SetNamedSoup("stationsTracks",Stations); //На этой строке вылазит ошибка soup islocked
    		soup.SetNamedTag("stationsTBuild",Builded);
                    return soup;
    }

    При загрузки редактирования сессии (после сохранения) вылазит ошибка soup islocked. Как с этим бороться?
    Последний раз редактировалось Bogodaroff; 01.01.2021 в 23:56.

  15. #1408
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    Stations нужно инициализировать в Init(), например так:

    Код:
    Stations = Constructors.NewSoup();

  16. Сказал спасибо:


  17. #1409
    Пользователь Аватар для Bogodaroff
    Регистрация
    17.09.2017
    Страна
    Адрес
    Санкт - Петербург
    Возраст
    33
    Сообщений
    34

    По умолчанию

    Ошибка сохраняется...)

  18. #1410
    Пользователь Аватар для TRam_
    Регистрация
    22.09.2009
    Возраст
    33
    Сообщений
    16,432

    По умолчанию

    Цитата Сообщение от Bogodaroff Посмотреть сообщение
    Ошибка сохраняется...)
    покажи SetProperties()

+ Ответить в теме

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения