Перейти к содержанию

Помогите с автоматизацией написания длинного скрипта


Рекомендуемые сообщения

Вопрос такой:

я пишу длинный скрипт, в котором много раз повторяется один и тот же блок текста; каждый блок отличается только ID объекта, с которым производится операция, например:

if ( player->GetItemCount, "ID_1")
    player->drop, "ID_1" 1
endif

if ( player->GetItemCount, "ID_2")
    player->drop, "ID_2" 1
endif

if ( player->GetItemCount, "ID_3")
    player->drop, "ID_3" 1
endif

<...>

Как автоматизировать этот процесс? В моем скрипте около 400 разных ID.

Может, подскажете макрос для Ворда?

 

P.S. Если еще расскажете, как вытянуть из Object Window все ID в списке, буду вдвойне благодарен!

Ссылка на комментарий
Поделиться на другие сайты

Вопрос такой:

я пишу длинный скрипт, в котором много раз повторяется один и тот же блок текста; каждый блок отличается только ID объекта, с которым производится операция, например:

 

if ( player->GetItemCount, "ID_1")    player->drop, "ID_1" 1endifif ( player->GetItemCount, "ID_2")    player->drop, "ID_2" 1endifif ( player->GetItemCount, "ID_3")    player->drop, "ID_3" 1endif<...>
Как автоматизировать этот процесс? В моем скрипте около 400 разных ID.

Может, подскажете макрос для Ворда?

 

Сначала вордом заменяешь до изменяемого числа то же с добавлением ^t (табуляции), потом что после, заменяешь приписывание табуляции. Заменяешь переходы строки на $. Там где цикл одинаковых строк начинается, туда вставить перехода строки. Копируешь полученный блок текста в Эксель. Там тянешь строки сколько надо, подставляя нужные цифры. Потом копируешь назад в Ворд, повторяя обратные процедуры.

Про получение индексов из кс, это меню файл->экспорт. Открыть в Экселе.

Изменено пользователем Larkin
Ссылка на комментарий
Поделиться на другие сайты

Сначала вордом заменяешь до изменяемого числа то же с добавлением ^t (табуляции), потом что после, заменяешь приписывание табуляции. Заменяешь переходы строки на $. Копируешь полученный блок текста в Эксель. Там тянешь строки сколько надо, подставляя нужные цифры. Потом копируешь назад в Ворд, повторяя обратные процедуры.

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

Ссылка на комментарий
Поделиться на другие сайты

У меня сейчас нет Ворда под рукой, я бы сделал. Блок будет как одна строка текста

if ( player->GetItemCount,$"^tID_1^t")$player->drop, "ID_1" 1$endif

 

При копировании его в Эксель ID_1 окажется в отдельном столбце, и останется просто растянуть его на нужное кол-во строк, и подставить туда нужные Id

Изменено пользователем Larkin
Ссылка на комментарий
Поделиться на другие сайты

Может, что не так сделал, но у меня ничего не оказалось в отдельном столбце, ничего не поменялось (см. приложение).

Я уж извиняюсь, что так туплю, но в Ыкселе я почти полный нуб.

post-26197-0-24823600-1585150829_thumb.jpg

Изменено пользователем Veloth
Ссылка на комментарий
Поделиться на другие сайты

Э-м, ну короче, подожди пока я доберусь до экселя. Или кто другой поможет. Там вместо ^t должна быть табуляция, чтобы эти ID оказались в отдельном столбце. Изменено пользователем Larkin
Ссылка на комментарий
Поделиться на другие сайты

OK, Larkin, я спрошу на форуме эксельщиков. Я уже осознал, что это решается именно средствами Экселя.
Спасибо за помощь, особенно подсказку про экспорт. Не знал ;)

Изменено пользователем Veloth
Ссылка на комментарий
Поделиться на другие сайты

Там вместо ^t должна быть табуляция, чтобы эти ID оказались в отдельном столбце.

Да в принципе можно и без табуляции, просто руками сделать.

То есть в один столбец написать

if ( player->GetItemCount, "
Во второй - разместить список нужных ID.

В третий - 

")$    player->drop, "
Ну и так далее.
Ссылка на комментарий
Поделиться на другие сайты

На Луа очень просто делается

 

Создаешь текстовый файл с текстом программы, например "prog.lua":

io.output('script.txt') -- задаём файл с результатом

for i = 1, 400 do       -- цикл 400 повторений
-- пишем строки в файл
io.write('(if ( player->GetItemCount, "ID_'..i..'")\n')  -- вставляем номер i в стоку
io.write(' player->drop, "ID_1" 1\n')
io.write('endif\n')
io.write('\n') -- \n - новая строка
end

Перетаскиваешь мышкой файл на lua53.exe и отпускаешь, тут же появляется твой готовый script.txt
 

Скачать lua53.exe можно тут: http://luabinaries.sourceforge.net/download.html

 

Больше про Луа для Морровинд в этой теме: https://www.fullrest.ru/forum/topic/41708-mwse-21-uroki-po-lua-skriptam/?do=findComment&comment=997434

Изменено пользователем mintmike
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...