Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
(05.12.2021 19:45)Berserker Wrote: [ -> ]Quote:P.S. Всегда считал что !!co ускоряет действие циклов
Это микрооптимизация.
Там микро, сям микро - и вот уже макро

Лучше всего линейная логика. Реально, читаемее, меньше багов, легче расширить блоком else, дописать код после. Прыжки заставляют прыгать поток управление через блоки, с ними нужно больше внимания и концентрации. Ты постареешь, а код останется. И процессоры будут быстрее. Если только это не маленькая фнукция, которую будут вызывать в цикле десятки тысяч раз. Для этого можно замерить скорость выполнения через GetTimeMsec.
Berserker, можете пожалуйста подсказать кое-что касательно ERM2? Если у меня есть константа, объявленная во внешнем файле, я могу ее использовать в собитии карты?
Продублируй её в событии карты. Скрипты карты грузятся до глобальных скриптов.
Berserker, хорошо, спасибо! Достаточно только один раз продублировать, или надо это делать в каждом событии?
Один раз в самом приоритетном событии.
Понятно. Спасибо за ответы!
Questions about writing styles and formats
1. Do we use &(TRUE) instead of &1 for the meaning "flag 1 is 1"?, example:
2. We have sevral ways to create an array in ERA 3. Does any any of them requires initialization of any kind?
Archer30, синтаксис &(FALSE) будет работать неправильно, так как перекомпилируется в &0, а не &-1.
К тому же это не улучшит, а ухудшит читаемость скрипта - не будет видно сразу, что 1 - это флаг.

I forgot that (FALSE) is 0. Yea I agree &1 is more readable. Just daemon_n wrote it as &(TRUE) and I started to think the other way.
Archer30, unstandard decision

Berserker, thanks for the code!
There were not many times I struggle with erm syntax, but now it is definitely the moment. It seems like my knowledge is not enough to handle erm 4, lol!
A few questions I'd like to ask:
1. What is (@var)?
2. What's the reason for using y(ptr) here? Is it not true that mixing normal y and (var:y) could result in bad things?
3. What's wrong with my code when I try to execute the function with an array ID? I can't get to define the IF:N dialogue.
1) @ - get address operator. Compiles into index without variable type.
If (someVar) = y50, (@someVar) = 50.
If (someArr[20]:y) = y20..y39, then (@someArr[1]) = 21
2) Ptr = pointer. It means that one variable holds index of another variable.
We cannot iterate over 2 arrays at the same time using !!re normally.
For instance, over y20..y39 and y40..y59.
But we can store 40 into (somePtr) and increase it one by one, so that y(somePtr) refer to y40, y41, y42...
3) Call IF:N^title^; after setup.
Berserker, thank you so much!
About the second question, I mean. I read that (var:y) would be compile into classic y vars (y1, y2, etc) by ERA with a process. This process strickly forbiddon mixing y1, y2 with (var:y) (name:y) in the same funcion as there is a chance (var:y) (name:y) could be compiled to y1 y2 and overlap. Why is it not a concern in the case mixing (var:y) and y(ptr:y)?
Archer30, (ptr:y) это такая же переменная, как и все остальные, обозначение "ptr" используется для удобства и понимания.
Если (ptr:y) будет перекомпилировано в y10,
тогда y(ptr) перекомпилируется в yy10.
Смешивания не возникает, потому что мы в обоих случаях используем одну переменную y10.
Если я правильно понял вопрос.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16