You are not logged in.
Только, если идея проводника всё же будет принята к сведению, хотелось бы также увидеть функцию его отключения в настройках. Потому как во многих случаях он будет просто не нужен, и будет мозолить глаза.
Не обязательно отключать. Удобно было-бы включить возможность сворачивать/разворачивать проводник(типа боковой кнопки), чтобы не лезть в меню. В проводнике отображать только те файлы, с которыми работает СБ(txt,cs,cm,scm).
И да, я заметил, что компилятор сохраняет текстовые файлы по-умолчанию в ANSI-кодировке, что иногда искажает символы на ? в место кракозябров от локализации SL. Логично кодировать файлы в UTF-8, так как там поддерживается больший набор символов.
---------------------------------------------------------------
Обнаружил, что Sanny Builder не правильно экранирует символ '\'. Например, материться на строку строки
098B: v$newstring = "folders \\" + 1@v 098B: v$newstring = "folders\\" + 1@v
а вот такие
098B: v$newstring = "folders\\ " + 1@v 098B: v$newstring = "folders \\ " + 1@v
нормально компилирует
Last edited by wmysterio (07-07-2016 13:49)
Offline
ANSI-кодировка - это наследие Delphi7. Избавиться от нее будет непросто, проще перейти на какую-то другую платформу. У меня есть мысли, как это сделать, посмотрим, что получится.
Обнаружил, что Sanny Builder не правильно экранирует символ '\'.
Да, это баг. Можешь завести его в трекере?
Offline
проще перейти на какую-то другую платформу
Ничего себе! Ради такой задачи менять платформу! Ну, думаю в сети уже есть решения такой задачи, Delphi же не новый язык.
Да, это баг. Можешь завести его в трекере?
Я изначально планировал опубликовать на баг-трекере, но у меня почему-то никаких действий сайт не выдаёт: ни авторизация, ни напоминание пароля и даже регистрация(не приходят письма от сайта). По-этому и написал про баг здесь.
Offline
Я изначально планировал опубликовать на баг-трекере, но у меня почему-то никаких действий сайт не выдаёт: ни авторизация, ни напоминание пароля и даже регистрация(не приходят письма от сайта). По-этому и написал про баг здесь.
Странно, может спам-фильтр не пропускает почту с сб.ком? Я попробовал - у меня письма доходят и новому пользователю и при сбросе пароля.
Я тебе в личку прислал пароль от твоего аккаунта.
Offline
Странно, может спам-фильтр не пропускает почту с сб.ком?
Возможно. Если не ошибаюсь, эта проблема была у меня и раньше. Ты мне менял пароль к аккаунту СБ по той-же причине.
Я тебе в личку прислал пароль от твоего аккаунта.
Спасибо. Я сделал пост на баг-трекере об ошибке.
Offline
Здарова. Выражаю благодарность Seemann и всем кто работал над прогой и CLEO.
Хорошо было бы если ввели констаты в опкоды(SCM.ini) или отдельный файл как CustomVariables.ini. К примеру так:
SCM.ini
[OPCODES]
02a8=5,%5d% = create_marker %4b:RadarSprites% at %1d% %2d% %3d%
constants.ini
[RadarSprites]
RADAR_SPRITE_NONE=0
RADAR_SPRITE_ASUKA=1
RADAR_SPRITE_BOMB=2
RADAR_SPRITE_CAT=3
RADAR_SPRITE_DON=6
в проге:
02A8: $VAR = иконка на радаре RADAR_SPRITE_CAT $X $Y $Z
При использовании keywords
ADD_SPRITE_BLIP_FOR_COORD $VAR RADAR_SPRITE_CAT $X $Y $Z
и при нажатии ctrl+пробел выводился список констатов для данного опкода, может даже с картинками. И ведь есть оригинальные констаты для гта3 и вайса.
Offline
Наверное быстрого ответа мне не ждать.
Учитывая как долго шло письмо с паролем и эту тему коротая ровно уже 3 года не обновлялась.
Но я всё же предложу кое-что вам полезное: пожалуйста сделайте подсветку констант, как обычный текст они сливаются и не сразу находишь их у себя в коде, если бы они также подсвечивались, как и то, что они означают: переменные, синим, цены не было бы вам за это.
Из-за этого неудобства я и не так часто пользуюсь константами, а ведь штука это полезная.
Offline
Наверное быстрого ответа мне не ждать.
Учитывая как долго шло письмо с паролем и эту тему коротая ровно уже 3 года не обновлялась.
Но я всё же предложу кое-что вам полезное: пожалуйста сделайте подсветку констант, как обычный текст они сливаются и не сразу находишь их у себя в коде, если бы они также подсвечивались, как и то, что они означают: переменные, синим, цены не было бы вам за это.
Из-за этого неудобства я и не так часто пользуюсь константами, а ведь штука это полезная.
В моем списке идей для реализации значится такая:
подсвечивать константы тем же цветом что и их значение (число или переменная)
соответствует ли это вашим ожиданиям, или хотелось бы всегда один цвет?
Offline
SanyaSFM wrote:Наверное быстрого ответа мне не ждать.
Учитывая как долго шло письмо с паролем и эту тему коротая ровно уже 3 года не обновлялась.
Но я всё же предложу кое-что вам полезное: пожалуйста сделайте подсветку констант, как обычный текст они сливаются и не сразу находишь их у себя в коде, если бы они также подсвечивались, как и то, что они означают: переменные, синим, цены не было бы вам за это.
Из-за этого неудобства я и не так часто пользуюсь константами, а ведь штука это полезная.В моем списке идей для реализации значится такая:
подсвечивать константы тем же цветом что и их значение (число или переменная)
соответствует ли это вашим ожиданиям, или хотелось бы всегда один цвет?
Да, например, константа означает: число, то значит крансный (пример: код клавиши Enter=13, Enter, при наборе в опкоде становится красным), если означает переменную, то при наборе, после объявления, константа в опкоде становится синей.
Вроде это всё из того, что подсвечивается обычно в опкодах.
Люди почему раньше к глобальным переменным прибегали, в первую очередь из-за удобства, я то не прибегал конечно, но вот всякие даже великие с такими скриптами как: Gtaffiti Mod например, они прибегали.
А оказывается есть такая полезная вещь как: константы, не я давно об них знаю, но вот из-за такого неудобства мало использовал их.
Вот ещё одна полезная идея, чтобы вместо этого: " // This file was decompiled using SASCM.ini published by GTAG...." в начале скрипта лучше бы были: описаны все коды клавиш, как для оппкода: 0AB0, так и для: 00E1, чтобы в справку по 100 раз не лезть.
И вот ещё, что, при наборе: Ctrl+Alt+H вызывает ошибку:
Offline
лучше бы были: описаны все коды клавиш, как для оппкода: 0AB0, так и для: 00E1, чтобы в справку по 100 раз не лезть.
Та ну. Пусть будет как есть или добавить комментарий вроде "// you must use this global variables $PLAYER_CHAR, $PLAYER_ACTOR, $PLAYER_GROUP, $ONMISSION only". При создании нового скрипта при CTRL+SPACE нет этих переменных в стиске и приходится сначала их набирать, а с комментариями - есть. От этого будет больше пользы, чем от 100+ строк лишнего кода.
Из-за этого неудобства я и не так часто пользуюсь константами, а ведь штука это полезная.
Никто не мешает писать константы в верхнем регистре, тогда их легче отличить от описания опкода.
подсвечивать константы тем же цветом что и их значение (число или переменная)
А почему не одним, который отличается от других? Есть опасение, что константу "ACTOR = 0@" можно спутать с переменной $ACTOR, допустим, в более крупных проектах, чем мелкий CLEO-скрипт. А каким цветом будет подсвечена константа (взял со справки) "PlayerMoney = $PLAYER_CHAR.Money"?
Last edited by wmysterio (21-05-2020 13:26)
Offline
Seemann wrote:подсвечивать константы тем же цветом что и их значение (число или переменная)
А почему не одним, который отличается от других? Есть опасение, что константу "ACTOR = 0@" можно спутать с переменной $ACTOR, допустим, в более крупных проектах, чем мелкий CLEO-скрипт. А каким цветом будет подсвечена константа (взял со справки) "PlayerMoney = $PLAYER_CHAR.Money"?
Player - синим, Money - зеленым PlayerMoney
(спойлер: шутка )
Offline
SanyaSFM wrote:лучше бы были: описаны все коды клавиш, как для оппкода: 0AB0, так и для: 00E1, чтобы в справку по 100 раз не лезть.
Та ну. Пусть будет как есть или добавить комментарий вроде "// you must use this global variables $PLAYER_CHAR, $PLAYER_ACTOR, $PLAYER_GROUP, $ONMISSION only". При создании нового скрипта при CTRL+SPACE нет этих переменных в стиске и приходится сначала их набирать, а с комментариями - есть. От этого будет больше пользы, чем от 100+ строк лишнего кода.
SanyaSFM wrote:Из-за этого неудобства я и не так часто пользуюсь константами, а ведь штука это полезная.
Никто не мешает писать константы в верхнем регистре, тогда их легче отличить от описания опкода.
Seemann wrote:подсвечивать константы тем же цветом что и их значение (число или переменная)
А почему не одним, который отличается от других? Есть опасение, что константу "ACTOR = 0@" можно спутать с переменной $ACTOR, допустим, в более крупных проектах, чем мелкий CLEO-скрипт. А каким цветом будет подсвечена константа (взял со справки) "PlayerMoney = $PLAYER_CHAR.Money"?
А какой толк о написания констант в верхнем регистре, когда важен факт подсвечивания?
Проблема в том, что константы сливаются по цвету с остальным текстом.
А цвет, с ним пускай что-нибудь решит нынешний автор SB, можно и отдельный дать.
Только всё-таки первый вариант лучше, не знаю как можно спутать константу с глобальной переменной.
Достаточно знать на что заканчивается или начинается та или иная переменная, локальная, на: @, глобальная, на: $.
Или можно реализовать эту подсветку в меню, по выбору.
Типа хочешь, будут подсвечиваться, хочешь нет, наверное можно указать будет и как: одним цветом или же цвет будет устанавливать в зависимости от того, что константа означает.
Last edited by SanyaSFM (22-05-2020 14:25)
Offline
когда важен факт подсвечивания?
Если бы оно было так важно, это сделали бы ещё в самых старых версиях. Спустя 10+ лет внезапно подсвечивать константы стало важным фактом
не знаю как можно спутать константу с глобальной переменной.
Не знаю как можно не увидеть константу в верхнем регистре в текста. Всё-таки отдельный цвет лучше.
Типа хочешь, будут подсвечиваться, хочешь нет, наверное можно указать будет и как: одним цветом или же цвет будет устанавливать в зависимости от того, что константа означает.
Да, от такого не отказался бы
Player - синим, Money - зеленым PlayerMoney
Для самых закалённых скриптеров ))
Last edited by wmysterio (22-05-2020 18:17)
Offline
SanyaSFM wrote:когда важен факт подсвечивания?
Если бы оно было так важно, это сделали бы ещё в самых старых версиях. Спустя 10+ лет внезапно подсвечивать константы стало важным фактом
SanyaSFM wrote:не знаю как можно спутать константу с глобальной переменной.
Не знаю как можно не увидеть константу в верхнем регистре в текста. Всё-таки отдельный цвет лучше.
SanyaSFM wrote:Типа хочешь, будут подсвечиваться, хочешь нет, наверное можно указать будет и как: одним цветом или же цвет будет устанавливать в зависимости от того, что константа означает.
Да, от такого не отказался бы
Не делали потому что, думаю мало кто пользовался константами, если посмотреть большинство скриптов, как миниус с 2009-2014 годы, скриптеры словно клали на них.
Да и я таким же был, пока не вник как это работает и какое удобство может принести.
Нет её увидеть то можно, но если бы подсвечивалось, было бы виднее сразу.
Если эта функция новая ошибок компилятора вызывать не будет, то почему бы её не внести, хоть отдельным, хоть хамилионным цветом.
Offline
Не делали потому что, думаю мало кто пользовался константами, если посмотреть большинство скриптов, как миниус с 2009-2014 годы, скриптеры словно клали на них.
Тогда, скорее всего, скрипты не сохранялись в исходном виде. Из за этого может сложиться впечатление, что ими не пользовались. Если брать исходники скриптов тех времён, то много из них использовали константы. По крайней мере опытные так делали.
Нет её увидеть то можно, но если бы подсвечивалось, было бы виднее сразу.
Так я не против подсветки ) Если Seemann её сделает, то я только за (неважно каким способом). Меня интересовали отдельные моменты, которые могут мешать распознаванию константы от чего-то другого.
Offline
Тогда, скорее всего, скрипты не сохранялись в исходном виде. Из за этого может сложиться впечатление, что ими не пользовались.
Да, скорее всего не сохранялись, я помню тогда хотел, чтобы моё закоментирование сохранилось в скрипте, а оно никак не сохранялось, то есть после того как я скрипт свой заново открывал, комменты мои словно исчезали.
Сейчас вроде сохраняются.
Offline
Не работает почему-то проверка угла актёра.
Допустим, я точно установил угол 180.0 Сиджею, ну например через встроненую программу в SB - Редактор координат.
Начинаю проверять типа: записанный в переменную 0@ угол актёра == 180.0 (0@ == 180.0) и проверка не срабатывает.
Проверял даже через запись в ini, угол точно: 180.0, а дальнейшие действия после проверки не срабатывают.
Зато хорошо срабатывают, если указать в проверке, что-то типа этого 0@ <= 180.0.
Что за баг такой, я не понимаю.
Я конечно понимаю, что угол не может быть ровно 180.0, когда Сиджей в движении, но в том то всё и дело: Сиджей не двигается и я ему устанавливаю точно заданный угол.
Offline
Не работает почему-то проверка угла актёра.
Допустим, я точно установил угол 180.0 Сиджею, ну например через встроненую программу в SB - Редактор координат.
Начинаю проверять типа: записанный в переменную 0@ угол актёра == 180.0 (0@ == 180.0) и проверка не срабатывает.
Проверял даже через запись в ini, угол точно: 180.0, а дальнейшие действия после проверки не срабатывают.
Зато хорошо срабатывают, если указать в проверке, что-то типа этого 0@ <= 180.0.Я конечно понимаю, что угол не может быть ровно 180.0, когда Сиджей в движении, но в том то всё и дело: Сиджей не двигается и я ему устанавливаю точно заданный угол.
Проверять дробное число на равенство в любом движке плохая идея. Такую точность можно достичь только если сравнивать константы между собой. То, что оно пишет 180.0 не значит, что оно строгое. Оно запросто может установить 180.000001 через анимацию, физику, а в файл записать округленное число. Тут или угол в целое число конвертируйте и затем сравнивайте с целым, или проверяйте диапазон
if and
0@ >= 179.9999
0@ <= 180.9999
then
// ...
end
Last edited by wmysterio (03-06-2020 23:14)
Offline
Тут или угол в целое число конвертируйте и затем сравнивайте с целым, или проверяйте диапазон
if and
0@ >= 179.9999
0@ <= 180.9999
then
// ...
end
Пробовал конверт в целое: проверке также всёравно (не сравнивал).
Щас попробую вот диапазон этот.
Offline
Прошу прощения: перепутал report с replay.
Нельзя ли проверить вот так угол:
0@ == 170.0 to 180.0?
Offline
Симан, а когда примерно ждать обновления SB, желательно с тем что я предложил и поправками этого как: wmysterio хотел?
Offline
wmysterio хотел?
Мне без разницы. Я имею собственный псевдокомпилятор и мне им проще пользоваться при разработке сложных скриптов. Использую SB для компиляции и некоторыми его встроенными возможностями, которые я не в состоянии разработать самостоятельно. Подсветке констант будут рады многие. И новой справке тоже (будет время, скину материалы на одобрение).
Нельзя ли проверить вот так угол:
0@ == 170.0 to 180.0?
А что значит "to"? Если надо от угла 170 до угла 180, то пример я уже скинул, просто числа смените на нужные.
Offline
SanyaSFM wrote:wmysterio хотел?
Мне без разницы. Я имею собственный псевдокомпилятор и мне им проще пользоваться при разработке сложных скриптов. Использую SB для компиляции и некоторыми его встроенными возможностями, которые я не в состоянии разработать самостоятельно. Подсветке констант будут рады многие. И новой справке тоже (будет время, скину материалы на одобрение).
SanyaSFM wrote:Нельзя ли проверить вот так угол:
0@ == 170.0 to 180.0?А что значит "to"? Если надо от угла 170 до угла 180, то пример я уже скинул, просто числа смените на нужные.
Типа: от 170 до 180.0.
Не, не подошло, там только если каждый угол который меньше или больше, проверять надо, я так и прописал, пример:
5@ <= 220.9999
5@ > 10.9999
5@ > 88.9999
5@ > 89.9999
5@ > 90.9999
5@ > 91.9999
5@ > 92.9999
и так пока точнее не будет, иначе будет срабатывать, ваше второе условие: меньше или равно 180.9999, может с таким же успехом и 90.9999 меньше 180.9999, а мне нужно было конкретно именно от 170.0 до 180.0, но такого проверочного опкода, к сожалению нет.
Offline
там только если каждый угол который меньше или больше, проверять надо
Потому, что так и будет. Нет такого опкода, который это делает, ибо никому в голову не придёт рассчитывать такую точность настолько часто. Можно сделать функцию, которая будет это проверять, чтобы не писать кучу IF-оф. Вот я на коленке смастерил такую:
{$CLEO} jump @skip_funcs :angle_in_range 0087: 30@ = 0@ // (float) 0063: 30@ -= 1@ // (float) 005B: 0@ += 1@ // (float) 1@ = false if and 0035: 2@ >= 30@ // (float) 0035: 0@ >= 2@ // (float) then 1@ = true end 0AB2: ret 1 1@ :skip_funcs // ОСНОВНОЙ КОД --------------------------------------------------------------------------------------- wait 1000 while true wait 0 0@ = Actor.Angle($PLAYER_ACTOR) if 0AB1: call_scm_func @angle_in_range 3 target_angle 180.0 range 0.5 current_angle 0@ store_to 1@ then // ... end 0AD1: show_formatted_text_highpriority "Angle: %f~n~State: %d" time 1 0@ 1@ end
Результат:
В 1@ будет записано 1, если угол 0@ примерно равен углу 180.0. Примерно — это 180.0 ± 0.5. Можно самостоятельно отрегулировать точность и требуемый угол. Когда нужно, вызываем функцию как обычный опкод, без кучи проверок и прочих танцев с вычислениями.
Last edited by wmysterio (12-06-2020 20:07)
Offline