Информация: Уважаемые посетители! В течение нескольких месяцев на форуме существовала проблема с регистрацией новых пользователей, о которой администрации стало известно недавно. Если вы ранее пытались зарегистрироваться на форуме, но не получили на ваш e-mail письмо с ссылкой для подтверждения регистрации, просим вас зарегистрироваться повторно. Приносим извинения за доставленные неудобства. Если вы все еще испытываете проблемы с регистрацией на форуме, обратитесь за помощью на e-mail: mr.angelo@railroadsim.net

Вопросы по AURAN GAME SCRIPT COMPILER

Другие вопросы и проблемы разработки дополнений

Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение GSTrainz » 12.11.2007, 01:27

Приветствую,народ!У меня вопрос: как решить в скриптах такую задачку.
a(1,2,3,4,5,6,7,8 )
b(1,2,3,4,5,6,7,8 )
c(1,2,3,4,5,6,7,8 )
мне надо перебрать по очереди данные(1,2,3...) из массива a,b,c
for (i = 1; i<3; ++i)
{
for (n = 1; n<9; ++n)
{
x=?
}
}

чтоб при i=1 перебирались числа из массива a
при i=2 перебирались числа из массива b
при i=3 перебирались числа из массива c
и присваивались переменной x.И как это все правильно записать?
Аватара пользователя
GSTrainz
 
Сообщения: 634
Зарегистрирован: 28.09.2006, 21:42
Откуда: Феодосия
Благодарил (а): 0 раз.
Поблагодарили: 19 раз.
Играю в: Auran Trainz
Роль: Пассажир :)
Имя: Гена

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение Эрендир » 12.11.2007, 18:47

Примерно так:
for (i=1;i<=3; i++)
{
for (n=1; n<9; n++)
{
if (i==1) x=a[n];
elseif (i==2) x=b[n];
elseif (i==3) x=c[n];
}
}
Аватара пользователя
Эрендир
 
Сообщения: 121
Зарегистрирован: 04.05.2005, 16:15
Откуда: От туда...
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Имя: Алексей

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение GSTrainz » 12.11.2007, 19:07

Спасибо!А как вот это задается?(синтаксис)
a(1,2,3,4,5,6,7,8 )
b(1,2,3,4,5,6,7,8 )
c(1,2,3,4,5,6,7,8 )
Аватара пользователя
GSTrainz
 
Сообщения: 634
Зарегистрирован: 28.09.2006, 21:42
Откуда: Феодосия
Благодарил (а): 0 раз.
Поблагодарили: 19 раз.
Играю в: Auran Trainz
Роль: Пассажир :)
Имя: Гена

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение DarkWolf » 17.11.2007, 20:24

массив?.. учитывая близость AGS к C# то наверное так:
int[] a = {1, 2, 3 ,4 ,5 ,6, 7, 8}; //ну или string в общем нужный тип

или в стиле простого Си:

int a[8] = {1, 2, 3, 4, 5, 6, 7, 8};

Только учти, что нумерация элементов массива начинается с 0!
Это значит, что первый элемент будет именоваться a[0], а последний a[7].

если я неправ, то.. чтож.. кто не ошибается...
Аватара пользователя
DarkWolf
 
Сообщения: 199
Зарегистрирован: 09.07.2006, 10:38
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение Combine » 17.11.2007, 21:20

for (n=0; n<8; n++)
{
a[n] = n+1;
}
Аватара пользователя
Combine
 
Сообщения: 537
Зарегистрирован: 23.10.2006, 09:47
Откуда: Московская область
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Играю в: Auran Trainz
Роль: Разработчик
Имя: Александр

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение DarkWolf » 18.11.2007, 07:54

:) оригинальный способ, но, думаю я, не очень рациональный....
Аватара пользователя
DarkWolf
 
Сообщения: 199
Зарегистрирован: 09.07.2006, 10:38
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение Combine » 18.11.2007, 12:25

По-другому только при создании самого массива задавать, если ГС это позволяет.
Аватара пользователя
Combine
 
Сообщения: 537
Зарегистрирован: 23.10.2006, 09:47
Откуда: Московская область
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Играю в: Auran Trainz
Роль: Разработчик
Имя: Александр

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение DarkWolf » 18.11.2007, 20:55

Да должен...
Аватара пользователя
DarkWolf
 
Сообщения: 199
Зарегистрирован: 09.07.2006, 10:38
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение RMM » 20.11.2007, 11:39

Вопрос по поводу стрелок и вообще скриптованных объектов в сценариях (не путать с сессиями !).

Нельзя ли попробовать заставить работать скрипты объектов в сценарии ? Служебные переменные этих объектов (по сути дела настройки) хранятся в файле-базе данных сессии. Я могу ошибаться, но мне кажется, что если сделать начальные установки для всех скриптованных объектов в сценарии (т.е. попросту присвоить переменным необходимые значения и выполнить процедуры инициализации этих объектов), то всё заработает.

Вот, к примеру кусок скрипта стрелки:
Код: Выделить всё
include "trackside.gs"
include "junction.gs"
include "gs.gs"
include "browser.gs"

class RMMJunction isclass Buildable {

 Soup settings;
 StringTable ST;
 Browser mn;
 string MakeProperty(string link, string text) {
          string t;
          if (text==""or text=="none") {t=ST.GetString("none"); } else {t=text;}
          return HTMLWindow.MakeLink("live://property/"+link,t);
 }

 Asset tex, ostryak0, ostryak1, pr1, pr2, pr3, pr3a, pr4, pr4a;
 int texture_numb = 6;
 int privod_n = 2;
 string JMName1;
 Junction JM1;
 int[] JunctID;
 Junction[] Jlist;
 public define int DIRECTION_LEFT = 0;
 public define int DIRECTION_RIGHT = 2;

 void OstryakSet(void) {                         

        SetFXAttachment("ostr0", null);
        if(!JM1) JM1 = cast<Junction>Router.GetGameObject(JMName1);
        if(JM1)
                {
                int DirectionJunct = JM1.GetDirection();
                if   (DirectionJunct == DIRECTION_RIGHT) {
                        SetFXAttachment("ostr0", ostryak0);
                        if (privod_n == 3)  {
                                SetFXAttachment("priv",  null);
                                SetFXAttachment("priv",  pr3a);
                        }
                        if (privod_n == 4)  {
                                SetFXAttachment("priv",  null);
                                SetFXAttachment("priv",  pr4);
                        }
                }
                else  {
                        SetFXAttachment("ostr0", ostryak1);
                        if (privod_n == 3)  {
                                SetFXAttachment("priv",  null);
                                SetFXAttachment("priv",  pr3);
                        }
                        if (privod_n == 4)  {
                                SetFXAttachment("priv",  null);
                                SetFXAttachment("priv",  pr4a);
                        }
                }
        }
 }


 // Инициализация
 public void Init(void) {
        inherited();
        KUID Tx_prizma = GetAsset().LookupKUIDTable("tex_prizma");
        tex = World.FindAsset(Tx_prizma);
        KUID OS0_Kuid = GetAsset().LookupKUIDTable("os0");
        ostryak0 = World.FindAsset(OS0_Kuid);
        KUID OS1_Kuid = GetAsset().LookupKUIDTable("os1");
        ostryak1 = World.FindAsset(OS1_Kuid);
        KUID PR1_Kuid = GetAsset().LookupKUIDTable("privod1");
        pr1 = World.FindAsset(PR1_Kuid);
        KUID PR2_Kuid = GetAsset().LookupKUIDTable("privod2");
        pr2 = World.FindAsset(PR2_Kuid);
        KUID PR3_Kuid = GetAsset().LookupKUIDTable("privod3");
        pr3 = World.FindAsset(PR3_Kuid);
        KUID PR3a_Kuid = GetAsset().LookupKUIDTable("privod3a");
        pr3a = World.FindAsset(PR3a_Kuid);
        KUID PR4_Kuid = GetAsset().LookupKUIDTable("privod4");
        pr4 = World.FindAsset(PR4_Kuid);
        KUID PR4a_Kuid = GetAsset().LookupKUIDTable("privod4a");
        pr4a = World.FindAsset(PR4a_Kuid);
       
        SetFXAttachment("ostr0", null);
        SetFXAttachment("priv",  null);
        AddHandler(me,"Junction","Toggled","MonitorJunc");

        Asset self=GetAsset();
          settings=self.GetConfigSoup().GetNamedSoup("settings-table");
          ST=self.GetStringTable();
           return; 
 }
 


Т.е. нужно задать значения всего трем переменным:
JMName1, texture_numb и privod_n
А нельзя ли в сценарии сделать вот так:
Код: Выделить всё
GetGameObject("имя стрелки").JMName1 == "....";
GetGameObject("имя стрелки").texture_numb == ....;
GetGameObject("имя стрелки").privod_n == ....;
GetGameObject("имя стрелки").Init();
GetGameObject("имя стрелки").OstryakSet();

Я могу ошибаться, знатоки программирования, если я не прав, поправьте меня...
Аватара пользователя
RMM
 
Сообщения: 313
Зарегистрирован: 04.05.2005, 07:43
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Роль: Разработчик
Имя: Михаил

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение Combine » 20.11.2007, 23:23

Думаю, можно. Попробуй.
Аватара пользователя
Combine
 
Сообщения: 537
Зарегистрирован: 23.10.2006, 09:47
Откуда: Московская область
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Играю в: Auran Trainz
Роль: Разработчик
Имя: Александр

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение GSTrainz » 20.11.2007, 23:55

Рарешил?ну спасиба!))))
короче-
как мои закипающие мозги думають.
void-это то что выполняется постоянно -в зависимости от значения переменной JMName1.
GetGameObject("имя стрелки").JMName1 == "....";
это присваивает переменной JMName1 значение положения стрелки "...." (LEFT-RIGHT)
теперь задача-вовремя менять значение "...."(его можно представить строковой переменной-соответственно присваивать переменной значение положения текущей стрелки(GetGameObject("имя стрелки").JMName1 == "...."
если включить в текст программы-сценария подпрограмму(или как это называется)void стрелки-то можно попробовать управлять стрелкой из сценария.
Аватара пользователя
GSTrainz
 
Сообщения: 634
Зарегистрирован: 28.09.2006, 21:42
Откуда: Феодосия
Благодарил (а): 0 раз.
Поблагодарили: 19 раз.
Играю в: Auran Trainz
Роль: Пассажир :)
Имя: Гена

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение RMM » 21.11.2007, 08:42

GSTrainz;1366 писал(а):Рарешил?ну спасиба!))))
короче-
как мои закипающие мозги думають.
void-это то что выполняется постоянно -в зависимости от значения переменной JMName1.
GetGameObject("имя стрелки").JMName1 == "....";
это присваивает переменной JMName1 значение положения стрелки "...." (LEFT-RIGHT)
теперь задача-вовремя менять значение "...."(его можно представить строковой переменной-соответственно присваивать переменной значение положения текущей стрелки(GetGameObject("имя стрелки").JMName1 == "...."
если включить в текст программы-сценария подпрограмму(или как это называется)void стрелки-то можно попробовать управлять стрелкой из сценария.



Нет, не так. Даже совсем не так.
JMName - это глобальная ТЕКСТОВАЯ переменная, описанная в скрипте самой стрелки и обозначающая ИМЯ ЛЕВЕРА невидимого, который использован при сборке этой самой стрелки.
texture_numb - это глобальная переменная int, тоже описанная в скрипте стрелки и обозначающая номер текстуры стрелки из библиотеки текстур.
privod_n - тоже глобальная переменная int, тоже описанная в скрипте. Обозначает тип использованного привода.
Наша задача не включить текст скрипта стрелки в сценарий, а ОБРАТИТЬСЯ к существующим функциям и переменным скриптов стрелок из вне этих самых скриптов (т.е. из сценария), что я и предложил в предыдущем посте...
Скрипты стрелок будут работать сами по себе, нужно только им задать начальные значения переменных и проинициализировать, т.е. запустить функцию Init() (для каждой стрелки ).

Задача состоит в том, чтобы правильно обратиться к функциям и переменным, описанным в скриптах объектов, из вне этих скриптов.
Знатоки объектного программирования - подскажите, насколько я прав и как это сделать корректно ?
Аватара пользователя
RMM
 
Сообщения: 313
Зарегистрирован: 04.05.2005, 07:43
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Роль: Разработчик
Имя: Михаил

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение GSTrainz » 21.11.2007, 09:37

Да...а если не получится?Предлагаю пока сделать остряки обьектом.Только таким обьектом-как например светофор(если это возможно).Чтобы карта-оригинал
оставалась как положенно-с анимированными стрелками.А эти статичные остряки устанавливались на карте-двойнике для сценария и появлялись на оригинальной только в сценарии.Помоему это пока оптимальный выход из положения(как думают мои остывающие и сильно болящие после вчерашнего мозги :( )
Аватара пользователя
GSTrainz
 
Сообщения: 634
Зарегистрирован: 28.09.2006, 21:42
Откуда: Феодосия
Благодарил (а): 0 раз.
Поблагодарили: 19 раз.
Играю в: Auran Trainz
Роль: Пассажир :)
Имя: Гена

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение RMM » 21.11.2007, 10:46

GSTrainz;1372 писал(а):Да...а если не получится?Предлагаю пока сделать остряки обьектом.Только таким обьектом-как например светофор(если это возможно).Чтобы карта-оригинал
оставалась как положенно-с анимированными стрелками.А эти статичные остряки устанавливались на карте-двойнике для сценария и появлялись на оригинальной только в сценарии.Помоему это пока оптимальный выход из положения(как думают мои остывающие и сильно болящие после вчерашнего мозги :( )


Это надо стрелки полностью переделывать и смотреться будет некрасиво. К тому же всё-равно не будет выбора текстуры и выбора приводного механизма. Получатся не стрелки, а убожество.
Ты для начала хотя бы попробуй сделать так, как я вчера написал

GetGameObject("имя стрелки").JMName1 == "....";
GetGameObject("имя стрелки").texture_numb == ....;
GetGameObject("имя стрелки").privod_n == ....;
GetGameObject("имя стрелки").Init();
GetGameObject("имя стрелки").OstryakSet();
Посмотри, будет ругань или нет...

Ну или пришли мне какой-нибудь пробный сценарий на карте с парой стрелок (и небольшую инструкцию, как делать изменения в сценарии ) Я сам попробую.
Аватара пользователя
RMM
 
Сообщения: 313
Зарегистрирован: 04.05.2005, 07:43
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Роль: Разработчик
Имя: Михаил

Re: Вопросы по AURAN GAME SCRIPT COMPILER

Сообщение Combine » 21.11.2007, 15:40

GetGameObject("имя стрелки").JMName1 == "....";
GetGameObject("имя стрелки").texture_numb == ....;
GetGameObject("имя стрелки").privod_n == ....;
GetGameObject("имя стрелки").Init();
GetGameObject("имя стрелки").OstryakSet();
Если JMName1, texture_numb, privod_n, Init(), OstryakSet() объявлены как public они доступны откуда угодно. То есть нужно их как публичные объявить.

P.S. Присваивание в ГС не "==", а "=". "==" это сравнение :)
Аватара пользователя
Combine
 
Сообщения: 537
Зарегистрирован: 23.10.2006, 09:47
Откуда: Московская область
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Играю в: Auran Trainz
Роль: Разработчик
Имя: Александр

След.

Вернуться в [TZ] Другие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

cron