|
|
|
Упростить скрипт |
|
|
xolost |
2.1.2013, 1:59
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
Цитата(DarkMaster @ 1.1.2013, 23:31) Не должно. Размер несколько смущает. Есть подозрение, что его можно порезать раз в 10 для начала)
Цитата(veiron @ 1.1.2013, 23:37) Так вот и хочу порезать, что бы меньше стал. И так если бы не gosub он был бы 16000.
Мой первый скрипт был на 2000 срочек. Затем я понял что его можно оптимизировать до 1500 затем до 1300 а потом сразу до 300. Со временем, вас ожидает тоже самое))))
|
|
|
|
DarkMaster |
2.1.2013, 2:38
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27738
Пользователь №: 11.279
|
Вообще очень тяжело представляю себе скрипт даже на 2к строк(нормально написанный) с аптаймом хотя бы в неделю. Обойти все фичи и глюки пилота, особенно на последних версиях, еще не так тяжело. Но вот обойти все лаги, вылеты, провисоны, регулярные перезапуски клиентов уже тяжело. Причем тяжело это из-за того, что каждое действие требует контроля на корректность прохождения, каждый контроль, каждое ожидание требует аварийного выхода(зачастую сложно понять какой кусок перезапускать). 100% операторов while должные иметь аварийные выходы, а зачастую несколько. Контроль вылетов с ошибками клиентов, проблемы запуска клиента, сложности с интернетом, многооконки, распараллеливания. Все это в итоге достаточно тяжело преврать в полностью вылизанный механизм. Были, конечно, творения очень объемные, но чем дальше, тем больше понимаю, что писать надо модульно и раскидывая действия по разным скриптам, иначе контроля лагов и вылетов нормального не будет. В итоге размер скриптов очень сильно уменьшился(правда не размер проектов).
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
xolost |
2.1.2013, 5:47
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
Цитата(DarkMaster @ 2.1.2013, 3:38) Вообще очень тяжело представляю себе скрипт даже на 2к строк(нормально написанный) с аптаймом хотя бы в неделю. Обойти все фичи и глюки пилота, особенно на последних версиях, еще не так тяжело. Но вот обойти все лаги, вылеты, провисоны, регулярные перезапуски клиентов уже тяжело. Причем тяжело это из-за того, что каждое действие требует контроля на корректность прохождения, каждый контроль, каждое ожидание требует аварийного выхода(зачастую сложно понять какой кусок перезапускать). 100% операторов while должные иметь аварийные выходы, а зачастую несколько. Контроль вылетов с ошибками клиентов, проблемы запуска клиента, сложности с интернетом, многооконки, распараллеливания. Все это в итоге достаточно тяжело преврать в полностью вылизанный механизм. Были, конечно, творения очень объемные, но чем дальше, тем больше понимаю, что писать надо модульно и раскидывая действия по разным скриптам, иначе контроля лагов и вылетов нормального не будет. В итоге размер скриптов очень сильно уменьшился(правда не размер проектов).
Понимаю тебя Дарк, вот поэтому последний месяц я чисто вылизываю текущий скрипт, и процентов на 10 новый функционал. В итоге, на сегодняшний день мест уже не вижу, из-за которых скрипт может остановится. Ну это так любой проект по сути и делается. Отладка много времени занимает, все места в итоге находят и отлаживают.
|
|
|
|
veiron |
2.1.2013, 16:10
|
Master
Сообщений: 1.264
Регистрация: 22.5.2012 Группа: Пользователи Наличность: 0 Из: Белоруссии
Пользователь №: 14.972
|
Цитата(DarkMaster @ 2.1.2013, 15:04) Как while у меня имеет примерно такой вид: Код set #timerBreak timer + 20000 while #x #y #c и timer and #timerBreak > timer if еще какое-нибудь экзотическое условие может быть break end_if gosub antiFreeze // Подпрограмма с единым набором общих глюков end_while Плюс к этому будет крутиться глобальный контроль работы скрипта в парралельном скрипте. Как правило ориентрируясь на отсечки об успешном выполнении. Если нет успешного выполнения несколько минут, то terminate клиент и пошли по новой запускать. у мененя while ( $а = 0 ) , а откуда у Вас взялись #x #y #c , и что это за команда #timerBreak и почему стоит не <> 0 или 1, а какой то timer. И как это глобальный контроль в паралельном скрипте, он что запущен и может вмешиваться в работу основного скрипта? Сейчас посмотрел на Вики, там даже нет такого как : timerBreak и timer . Про timerBreak и timer разобрался, у меня доже скрипт есть такой. а вот зачем столько #x #y #c после while так и не понял? Сообщение отредактировал veiron - 2.1.2013, 16:19
|
|
|
|
DarkMaster |
2.1.2013, 16:54
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27738
Пользователь №: 11.279
|
Цитата #x #y #c координаты цвет Цитата #timerBreak обычная переменная, может быть любой. Цитата какой то timer таймер содержит в себе время работы скрипта. это зарезервированная переменная. Цитата как это глобальный контроль в паралельном скрипте, он что запущен и может вмешиваться в работу основного скрипта? самый простой вариант основной скрипт содержит в себе счетчик, каждый цикл прибваляет единичку. Если скрипт котнроля видит на протяжении определенного времени, что число не изменяется - скрипт повис, делаем перезапуск/или меняем переменную в основном скрипт. Вспомним gosub antiFreeze, он содержится во всех циклах. Таким образом мы можем дать команду выполнить какое-либо действие скрипту просто изменив одно из условий в подпрограмме. Например: Код set #lag 0 set #return 0
:start while ... ... gosub antiFreeze if #return = 1 set #return 0 goto start end_if end_while goto start
:antiFreeze if #lag > 0 terminate имя_окна gosub launchWindow // подпрограмма запуска клиента set #lag 0 set #return 1 end_if return
Сообщение отредактировал DarkMaster - 2.1.2013, 17:17
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|