Jump to content


Photo

Вывод информации в таблице.


Best Answer Sledo , 29 April 2015 - 14:04

По поводу таблиц: теоретически их можно и без GUI вывести (бонально в hint), но выглядеть это будет криво.
Арма же поддерживает структурированный текст. Нужен лишь двухмерный массив и цикл, который пройдется по нему и выведет текст с уже вставленными операторами куда надо
https://community.bi...Structured_Text

Приятно общаться с грамотным человеком.

Go to the full post


  • Please log in to reply
15 replies to this topic

#1 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 posts

Posted 28 April 2015 - 15:59

Стоит задача, выводить оперативную информацию на экран, в виде таблицы. Есть ли какие то способы это реализовать?


  • 0

#2 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 28 April 2015 - 18:44

Да, написать графический интерфейс для этого (GUI).


Edited by SteelRat, 28 April 2015 - 18:44.

  • 0

#3 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 posts

Posted 28 April 2015 - 22:57

Да, написать графический интерфейс для этого (GUI).

Ясно. Еще тогда вопрос, мне нужно вызвать скрипт первым для инициализации переменных. Насколько я понял первым загружается скрипт init и уже в нем можно вызывать нужные скрипты. Однако, у меня вызывается мой скрипт после этих скриптов, которые "вызываются" строчкми


call compile preprocessFile "scripts\=BTC=_revive\=BTC=_revive_init.sqf";
call compile preprocessFile "scripts\=BTC=_TK_punishment\=BTC=_tk_init.sqf";

Как мне вызывать свой скрипт, до этих скриптов?


  • 0

#4 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 28 April 2015 - 23:58

call compile preprocessFile "scripts\Имя_вашего_скрипта.sqf";
call compile preprocessFile "scripts\=BTC=_revive\=BTC=_revive_init.sqf";
call compile preprocessFile "scripts\=BTC=_TK_punishment\=BTC=_tk_init.sqf";

Это же логично! Если надо ДО, то и вызвать надо перед ними.


  • 0

#5 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 posts

Posted 29 April 2015 - 00:48

call compile preprocessFile "scripts\Имя_вашего_скрипта.sqf";
call compile preprocessFile "scripts\=BTC=_revive\=BTC=_revive_init.sqf";
call compile preprocessFile "scripts\=BTC=_TK_punishment\=BTC=_tk_init.sqf";

Это же логично! Если надо ДО, то и вызвать надо перед ними.

 

Ага, это ясно, у меня есть некоторый опыт написания программ. Но вот только он не вызывается строчкой call compile preprocessFile, а только [] execVM, и почему то только после =BTC=_revive_init.sqf и =BTC=_tk_init.sqf". Вопрос - почему?


  • 0

#6 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 posts
  • Откуда:Севастополь

Posted 29 April 2015 - 01:29

потому что руки кривые... 

 

call compile preprocessFile

самый быстрый способ запуска скрипта.

 

Если не вызывается ваш скрипт, значит он не может работать в "главной среде", и для этого нужно создать "параллельную среду обитания", что и делает  [] execVM или spawn.


Edited by Dimon UA, 29 April 2015 - 01:33.

  • 0

#7 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 posts

Posted 29 April 2015 - 01:31

потому что руки кривые... 

 

call compile preprocessFile

самый быстрый способ запуска скрипта.

Чудненько. Не дадите ПРУФ почитать?


  • 0

#8 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 posts
  • Откуда:Севастополь

Posted 29 April 2015 - 01:34

 

потому что руки кривые... 

 

call compile preprocessFile

самый быстрый способ запуска скрипта.

Чудненько. Не дадите ПРУФ почитать?

 

Мне за тебя набрать в гугле команды и посмотреть что они делают?

 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


Edited by Dimon UA, 29 April 2015 - 01:36.

  • 0

#9 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 29 April 2015 - 02:23

Для начала обязательно это

http://arma3.ru/foru...kriptopisaniiu/

а по ссылке выше остальные полезности.

 

Ваша проблема в том, что ваш скрипт, как пить дать, прокручивает в себе цикл, вполне вероятно безконечный, а это значит, если вы вызываете этот скрипт методом

call

всё остальное ниже ни когда не дождётся своей очереди на исполнение, пока не завершит свою работу ваш скрипт, или не ваш, что по сути не важно.


  • 0

#10 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 posts

Posted 29 April 2015 - 02:48

Мне за тебя набрать в гугле команды и посмотреть что они делают?

 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 

Вы удивительно не воспитанный человек, постите пустую информацию и бросаете тень на весь форум в целом. Странно что админы вас тут терпят.

 

Я, как это для вас ни странно, перед тем как задать тут вопрос, посмотрел справку и видел что preprocessFile загружает файл в препроцессор. Но вот с чего вы взяли он быстрее? У меня вот не загружается файл, следовательно в моем случае, это не то что не быстрее, это вообще не работает (хотя нет. Вы как то писали с подтекстом - "ну у меня же работает!"). Возможно, я что то делаю не так, поскольку не знаю. И конечно, что бы восполнить свои пробелы в знании, я, (о боги!!111) спрашиваю об этом на форуме, в разделе "Вопросы написания скриптов" и своим незнанием надоедаю Вам, который уже просто окончательно устал от таких как я.

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

 

 

Для начала обязательно это

http://arma3.ru/foru...kriptopisaniiu/

а по ссылке выше остальные полезности.

 

Ваша проблема в том, что ваш скрипт, как пить дать, прокручивает в себе цикл, вполне вероятно безконечный, а это значит, если вы вызываете этот скрипт методом

call

всё остальное ниже ни когда не дождётся своей очереди на исполнение, пока не завершит свою работу ваш скрипт, или не ваш, что по сути не важно.

Именно то, что нужно. Спс. У меня действительно в нем сидит покадровый цикл. Тем не менее, как раз таки то что ниже запускается. Хотя, надо потестить.

 

Значит если я правильно понял, то препроцессор тут как раз и используется для инициализации переменных? К сожалению в ссылке на уроки, я не нашел подробной информации о препроцессоре в Арме. Может вы мне дадите ссылку на хороший пруф?


  • 1

#11 OFFLINE   nepret

nepret

    Рядовой

  • Пользователи
  • 19 posts

Posted 29 April 2015 - 05:17

Sledo, А что? Мне понравилось :) 


  • 1

#12 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 29 April 2015 - 08:08

По поводу таблиц: теоретически их можно и без GUI вывести (бонально в hint), но выглядеть это будет криво.
Арма же поддерживает структурированный текст. Нужен лишь двухмерный массив и цикл, который пройдется по нему и выведет текст с уже вставленными операторами куда надо

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


Edited by vlad333000, 29 April 2015 - 08:09.

  • 0

#13 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 posts

Posted 29 April 2015 - 14:04   Best Answer

По поводу таблиц: теоретически их можно и без GUI вывести (бонально в hint), но выглядеть это будет криво.
Арма же поддерживает структурированный текст. Нужен лишь двухмерный массив и цикл, который пройдется по нему и выведет текст с уже вставленными операторами куда надо

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Приятно общаться с грамотным человеком.


  • 0

#14 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 29 April 2015 - 19:40

 

Значит если я правильно понял, то препроцессор тут как раз и используется для инициализации переменных? К сожалению в ссылке на уроки, я не нашел подробной информации о препроцессоре в Арме. Может вы мне дадите ссылку на хороший пруф?

Нет, вы не правильно поняли, но это не проблема, а вопрос времени, и практики

 

Большой разницы нет, как вызвать ваш скрипт

Через препроцессор или с помощью метода execVM, с разницей, execVM инициализирует исполнение кода находящегося в файле в отдельном процессе, то есть, код следующий за вызовом execVM начнёт исполнятся не зависимо от того завершил ли исполнение код вызванный методом execVM.

 

С помощью

preprocessFile

а лучше с помощью этого

_string = preprocessFileLineNumbers "myFunction.sqf"

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 

Вы можете сделать тоже самое, отспавнить код, иногда выражаются так

_handler = _args spawn compile preprocessFileLineNumbers "myCode.sqf";

Этот файл с кодом может содержать в себе всё что угодно, определение глобальных переменных, просто любой исполняемый код, определение функций нескольких или одной, не важно

ptm_fnc_myFunction = call compile preprocessFileLineNumbers "fn_myFunction.sqf";

Если вы вызываете что то на исполнение методом

call

То всё что следует за таким вызовом будет ожидать завершения исполнения вызванного кода.


Edited by SteelRat, 29 April 2015 - 19:40.

  • 1

#15 OFFLINE   Sledo

Sledo

    Ефрейтор

  • Пользователи
  • 74 posts

Posted 30 April 2015 - 03:45

Большой разницы нет, как вызвать ваш скрипт

Через препроцессор или с помощью метода execVM

Насколько я понял, команда execVM компилирует файл. Команда же preprocessFile, загружает файл в препроцессор, который читает файл и обычно, подготавливает файл к компиляции, что конечно быстрее чем полноценная компиляция, но накладывает некоторые ограничения на исполняемый файл.

Просто как конкретно все устроено в Арме, несколько не ясно. Из тестов получается, что происходит именно так как я описал - т.е. файлы загружаются в препроцессор, затем компилируются. То что компилировать не нужно, начинает работать раньше чем то, что нужно еще компилировать, что вполне логично и нужные мне переменные инициализируются раньше всех. Правда, почему то они не проходят в условии if, на проверну isNil, при том что в окно результат выводится корректно.

 

Спс за проведенный ликбез по функциям, надо бы это все обмозговать.


Edited by Sledo, 30 April 2015 - 03:46.

  • 0

#16 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 30 April 2015 - 05:08

 

Насколько я понял, команда execVM компилирует файл.

Эта команда без лишних заморочек исполняет код из файла в отдельном процессе. Это скрипт, а не язык программирования, и здесь будет не совсем так как вы привыкли, вероятно.

Что быстрее? То что хорошо оптимизированно!

 

Не проходит проверка на isNil? Значит не корректно проводите проверку.


  • 0




Яндекс.Метрика