Elite Games - Свобода среди звезд!
.
  » Скриптописание. Проблемы и их решение. | страница 53
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 53 из 55
На страницу: Пред.  1, 2, 3 ... 52, 53, 54, 55  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал X3: Terran Conflict » Модовый и скриптовый отсек X3: Terran Conflict: «Скриптописание. Проблемы и их решение.»
za4ot
 317 EGP


Рейтинг канала: 5(139)
Репутация: 15
Сообщения: 1952
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
Отличные новости. Значит тоже буду тестировать, наблюдать. Как только будет стабильно срабатывать как нужно, тогда можно и опубликовать будет. Улыбка
_________________
Пираты - наше всё!
    Добавлено: 18:01 09-08-2016   
za4ot
 317 EGP


Рейтинг канала: 5(139)
Репутация: 15
Сообщения: 1952
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
Примерно такой алгоритм.
1. Если не существует переменной КОРАБЛЬ то
2. Создаем корабль в переменной КОРАБЛЬ, расы Аргон.
3. Пока раса == Аргон
4. КОРАБЛЬ чем-нибудь занят
5. Если раса стала Игрок (после захвата корабля), то
6. КОРАБЛЬ == НУЛЬ
7. Переход на шаг 1.

Так вот вопрос: если я захвачу корабль и переменной КОРАБЛЬ присвою НУЛЬ, то не пропадет ли он? Возможно на шаге 6 нужно делать так?

6. МОЙ.КОРАБЛЬ == КОРАБЛЬ
6.1. КОРАБЛЬ == НУЛЬ

Не совсем понятна механика того, что именно происходит с переменной, в которую этот корабль прописан, при захвате.
_________________
Пираты - наше всё!

Последний раз редактировалось: za4ot (00:31 06-02-2017), всего редактировалось 2 раз(а)
    Добавлено: 00:22 06-02-2017   
za4ot
 317 EGP


Рейтинг канала: 5(139)
Репутация: 15
Сообщения: 1952
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
У кого есть время и знания взгляните свежим взглядом. Написал скрипт, вроде все должно работать как нужно, но не работает, такое чувство, что каким-то образом зацикливается создание корабля и вешает игру.
У кого какие идеи? Что я сделал не так? Финальный скрипт для моей сборки, вот спешу, людей смешу. )))

ZTLs.zip
 Описание:
 Имя файла:  ZTLs.zip
 Размер файла:  8.72 KB
 Скачано:  101 раз(а)

_________________
Пираты - наше всё!

Последний раз редактировалось: za4ot (00:49 10-02-2017), всего редактировалось 1 раз
    Добавлено: 00:46 10-02-2017   
DNA78
 330 EGP


Рейтинг канала: 8(994)
Репутация: 61
Сообщения: 617
Откуда: с гор
Зарегистрирован: 12.11.2008
В скриптах setup.Z.TLs.xml и Z.TLs.xml отсутствует имя глобальной переменной.
У тебя так:
Код:
$TLs = get global variable: name=$flag.01
if $TLs != 'Ok'
START [THIS]-> call script 'SWR.TLs' :
$HotKey = register hotkey 'Десант, поработить всех пассажиров!' to call script 'SWR.Enslave.HotKey'
set global variable: name='Enslave.HotKey' value=$HotKey
end
return null

а должно быть так:
Код:
$flag.01 = '[color=red]имя глобальной переменной[/color]'
$TLs = get global variable: name=$flag.01
if $TLs != 'Ok'
START [THIS]-> call script 'SWR.TLs' :
$HotKey = register hotkey 'Десант, поработить всех пассажиров!' to call script 'SWR.Enslave.HotKey'
set global variable: name='Enslave.HotKey' value=$HotKey
end
return null

Гы-гы Ты возвращаешь в $TLs null)), т.к. $flag.01 у тебя равняется null.
_________________
Очевидное-невероятное
    Добавлено: 06:17 10-02-2017   
za4ot
 317 EGP


Рейтинг канала: 5(139)
Репутация: 15
Сообщения: 1952
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
DNA78 :
Ты возвращаешь в $TLs null)), т.к. $flag.01 у тебя равняется null.

Та и фиг с ним с этим флагом. Я если отдельно запускаю скрипт Z.TLs.xml он такие чудеса исполняет, что остается один вопрос КАК? Видимо, нагородил городух. Я с сегодняшнего дня в отпуске буду разбирать не спеша по строчечке. )))
_________________
Пираты - наше всё!
    Добавлено: 18:19 10-02-2017   
DNA78
 330 EGP


Рейтинг канала: 8(994)
Репутация: 61
Сообщения: 617
Откуда: с гор
Зарегистрирован: 12.11.2008
А ты хоть знаешь, что такое флаги в иксовом интерпретаторе? Это как минимум флаги поиска для поисковых команд, например:[Find.Multiple], [Find.Enemy], [Find.Friend] и т.д. А $flag.01 у тебя просто локальная переменная которая у тебя называется $flag.01 и её можно назвать хоть $hren.01 Гы-гы И флагом она никогда не будет пока ей не присвоишь тот самый флаг, например: $hren.01 = [Find.Multiple] Подмигиваю
_________________
Очевидное-невероятное
    Добавлено: 08:57 11-02-2017   
za4ot
 317 EGP


Рейтинг канала: 5(139)
Репутация: 15
Сообщения: 1952
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
В общем скрипт дописал - создает Корабли захватив, которые можно получить кучу пленных (используя кнопку порабощения пассажиров) и прочие плюшки. У себя проверил вроде работает. У кого есть желание потестируйте у себя. Нужно проверить в боевых условиях, а именно:
Захватить все корабли разными способами (просто я для проверки скриптом захватывал) ну и вообще повзаимодействовать с ними, понаблюдать может я что упустил.
Конечно же интересно мнение об идее в целом (частично скомунизженной из скрипта Верфи для ШК, как и код, который хотел подправить, а в итоге пришлось переписать с нуля), о скрипте и о разных его аспектах.

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

ZTLs.zip
 Описание:
 Имя файла:  ZTLs.zip
 Размер файла:  12.42 KB
 Скачано:  105 раз(а)

_________________
Пираты - наше всё!

Последний раз редактировалось: za4ot (23:51 12-02-2017), всего редактировалось 1 раз
    Добавлено: 23:49 12-02-2017   
by.@ztek
 305 EGP


Рейтинг канала: 5(215)
Репутация: 50
Сообщения: 775
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
Вот спрошу счаз. Улыбка Как убить внешним скриптом (ну или как-нить еще) глобальный SE скрипт. Ручками - понятно. PID скрипта можно же получить? Можно. А как убить скрипт конкретный глобальный? Что-то я всё что ни пробовал - не убивает его: при новой загрузке сэйва - новый PID.
_________________
Совершенству нет предела...
    Добавлено: 22:02 17-02-2017   
za4ot
 317 EGP


Рейтинг канала: 5(139)
Репутация: 15
Сообщения: 1952
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
by.@ztek :
А как убить скрипт конкретный глобальный?

Убить это return null?
_________________
Пираты - наше всё!
    Добавлено: 23:10 17-02-2017   
DNA78
 330 EGP


Рейтинг канала: 8(994)
Репутация: 61
Сообщения: 617
Откуда: с гор
Зарегистрирован: 12.11.2008
Привет Дима Улыбка Убей объект на котором он сидит или создай условие которое убьёт этот скрипт. И то, и другое делается внешним скриптом. А вообще нужно больше информации Всем привет!
_________________
Очевидное-невероятное
    Добавлено: 13:34 18-02-2017   
by.@ztek
 305 EGP


Рейтинг канала: 5(215)
Репутация: 50
Сообщения: 775
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
Здаров, Дэн. Написал как-то скрипт (зациклил его, не предусмотрел выход, балбес Улыбка ) Он стал глобал. Теперь в сэйвах он висит, работает на стороне игрока. Да, спасибо, как вариант - убить объект. Это идея. А в принципе, можно по PID`у грохнуть скрипт? Дэн, не пропадай, к тебе вопросы еще будут Хы...

добавлено спустя 3 минуты:
Дэн, хорошие идеи. Создать условия....

добавлено спустя 19 минут:
Сдаюсь. Улыбка
Вот скрипт, который ушел в глобал. Там я ужо пытался выйти из него...
 Cкрытый текст   (кликните здесь для просмотра)
* **first timeout is an efficient repair***
label:
$num.r.lasers = 0
$aim = get player tracking aim
$curr.hull.first = $aim->get hull
= wait 2000 ms
$curr.hull = $aim->get hull
if$curr.hull > $curr.hull.first
* **check astronaut***
if [PLAYERSHIP]->is of type {Argon Space Suit}
$curr.hull = $curr.hull + 91
$aim->set hull to $curr.hull
else
$curr.power = [PLAYERSHIP]->get power generator
* write to player logbook $curr.power
$turrets = [PLAYERSHIP]->get number of turrets
while$turrets
dec $turrets =
$slot = [PLAYERSHIP]->get max. number of lasers in turret $turrets
while$slot
dec $slot =
$r.lasers = [PLAYERSHIP]->get laser type in turret $turrets at slot $slot
if$r.lasers == {Repair Laser}
$num.r.lasers = $num.r.lasers + 1
end
end
end
$curr.las.str = [PLAYERSHIP]->get current laser strength
* write to player logbook $curr.las.str
$power = $curr.las.str / $num.r.lasers + 100
[PLAYERSHIP]->set laser energy to $power
$curr.hull = $curr.hull + 55 * $num.r.lasers
$aim->set hull to $curr.hull
end
end
$pid = get PID
$task = get task ID
[THIS]->interrupt task $task with script 'Aztek_test_MD' and prio 10000: arg1=null arg2=null arg3=null arg4=null
= [THIS]->call script 'Aztek_test_MD' :
$glob = get global variable: name='global.repair'
if$glob == 1
$mess = $pid + '-pid.' + $task + '- task.' + 'end test'
write to player logbook $mess
set global variable: name='global.repair' value=0
end
goto label label
return null

В конце - это мои попытки выйти. Улыбка
_________________
Совершенству нет предела...

Последний раз редактировалось: by.@ztek (14:12 18-02-2017), всего редактировалось 4 раз(а)
    Добавлено: 14:12 18-02-2017   
DNA78
 330 EGP


Рейтинг канала: 8(994)
Репутация: 61
Сообщения: 617
Откуда: с гор
Зарегистрирован: 12.11.2008
Если зная номер стёка в котором он работает, то нельзя ли его вот так вырубить -
Код:
if [THIS] -> is task $task in use
[THIS] -> begin task $task with script '!lib.interrupt' and priority 10000: arg1=null  arg2=null  arg3=null  arg4=null  arg5=null
end


добавлено спустя 3 минуты:
Просто если использовать
Код:
[THIS]->interrupt task $task with script 'Aztek_test_MD' and prio 10000: arg1=null arg2=null arg3=null arg4=null
, то скрипт просто прервётся на выполнение Aztek_test_MD, а затем возобновит свою работу. Или нет? Подозрение.
_________________
Очевидное-невероятное

Последний раз редактировалось: DNA78 (15:23 18-02-2017), всего редактировалось 1 раз
    Добавлено: 15:23 18-02-2017   
by.@ztek
 305 EGP


Рейтинг канала: 5(215)
Репутация: 50
Сообщения: 775
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
Че я пытался сделать: Переписать скрипт. Прервать скрипт скриптом Aztek_test_MD, там задать глобальную, возврат в текущий скрипт, по-любому будет, и тут уже проверить глобальную и выход, если ==1.
DNA78 :
Если зная номер стёка в котором он работает, то нельзя ли его вот так вырубить -

Попробую.

добавлено спустя 21 минуту:
Че подкалываешь? Улыбка Нет команды такой
DNA78 :
[THIS] -> begin task $task with script
Улыбка . Есть RefObj> start task <Var/Number> with script <Script Name> and prio ..... Улыбка

добавлено спустя 5 минут:
Запустить в том же стеке?
_________________
Совершенству нет предела...

Последний раз редактировалось: by.@ztek (16:54 18-02-2017), всего редактировалось 2 раз(а)
    Добавлено: 16:54 18-02-2017   
DNA78
 330 EGP


Рейтинг канала: 8(994)
Репутация: 61
Сообщения: 617
Откуда: с гор
Зарегистрирован: 12.11.2008
by.@ztek :
Есть RefObj> start task <Var/Number> with script <Script Name> and prio .....

Да именно её я и имел в виду))

добавлено спустя 1 минуту:
У меня редактор не настроен Улыбка
_________________
Очевидное-невероятное

Последний раз редактировалось: DNA78 (17:17 18-02-2017), всего редактировалось 1 раз
    Добавлено: 17:17 18-02-2017   
by.@ztek
 305 EGP


Рейтинг канала: 5(215)
Репутация: 50
Сообщения: 775
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
Не. если с сэйва зашел глобал - внутренними командами никак не убить скрипт. Хоть удаляй скрипт - он все-равно будет висеть в глобал. Только ручками. Переписывай его, не переписывай - он в стеке каком-то висит, и каждый раз в разном. Я никак не победил этот момент. Но почему можно ручками убить скрипт? А скриптами никак? Ругаюсь, недоволен!

добавлено спустя 4 минуты:
Уйду в монастырь. Ух ты!..
_________________
Совершенству нет предела...

Последний раз редактировалось: by.@ztek (17:22 18-02-2017), всего редактировалось 1 раз
    Добавлено: 17:22 18-02-2017   
DNA78
 330 EGP


Рейтинг канала: 8(994)
Репутация: 61
Сообщения: 617
Откуда: с гор
Зарегистрирован: 12.11.2008
by.@ztek :
А скриптами никак?

Ну почему-же, а если запустить скрипт на том объекте на котором нужно убить то или иной скрипт в нужном стёке.
by.@ztek :
Не. если с сэйва зашел глобал - внутренними командами никак не убить скрипт. Хоть удаляй скрипт - он все-равно будет висеть в глобал.

Ну это понятно. Так ведь и задача стояла -
by.@ztek :
Как убить внешним скриптом (ну или как-нить еще) глобальный SE скрипт.

_________________
Очевидное-невероятное
    Добавлено: 17:54 18-02-2017   
by.@ztek
 305 EGP


Рейтинг канала: 5(215)
Репутация: 50
Сообщения: 775
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
DNA78 :
Ну почему-же, а если запустить скрипт на том объекте на котором нужно убить то или иной скрипт в нужном стёке.

Это же playership. гейм-овер будет в худшем случае. Я пока не знаю. Вижу выход один - сработка того глобал-скрипта - дестр_тот_объект. Как ты и говорил: либо условия, либо уничтожить объект.
_________________
Совершенству нет предела...
    Добавлено: 21:48 18-02-2017   
by.@ztek
 305 EGP


Рейтинг канала: 5(215)
Репутация: 50
Сообщения: 775
Откуда: Минск, Беларусь
Зарегистрирован: 21.04.2010
Для информации всем. Я тут разбирал скрипты. Улыбка
Все стандартные сюжетки вызываются/обрабатываются в этом скрипте, там же устанавливается и отношение к игроку АОГ. Скриптерам, как-бы Улыбка
 Cкрытый текст   (кликните здесь для просмотра)
3.02 Plot Missions.xml

 Cкрытый текст   (кликните здесь для просмотра)
<cue name="L3M02 ATF Rank Reset" instantiate="static" delay="60s">
Подмигиваю
Удачи всем.
_________________
Совершенству нет предела...
    Добавлено: 19:01 01-04-2017   
za4ot
 317 EGP


Рейтинг канала: 5(139)
Репутация: 15
Сообщения: 1952
Откуда: Яма Изобилия
Зарегистрирован: 08.08.2012
Вопрос 1-й:
Если сделать скрипт, который будет каждую секунду проверять хул корабля игрока, то сильно ли он будет мешать работать остальным скриптам. Думаю, что время можно увеличить до 3..5 секунд иначе в бою смысла в нем нет, ибо игрок помрет быстрее, чем скрипт сработает.
Вопрос 2-й:
Довожу до ума скрипт Очереди команд от Cycrow, а именно переписал заново команды покупки и продажи товара, ибо они были ужасны, а теперь добавляю дополнительные команды. Пока научился добавлять скрипты с одним аргументом, что делается довольно просто - в шаблон вписывается тип аргумента, название скрипта и ссылки на текст айди. Теоретически можно добавить в очередь любую команду. Таким образом добавил команды Прыгнуть в точку и Прыгнуть в док из скрипта "Прыжок в точку". Меня интересует где почитать о стандартных скриптах (т. е. какой скрипт за какую команду отвечает) на предмет добавления этих команд. Если у кого-то есть такая информация, то поделитесь. Также интересует мнение пилотов какие команды вообще нужно добавить. Сейчас скрипт содержит команды: Стыковаться с, Лететь в точку, Лететь в сектор, Купить товар, Продать товар, Прыгнуть в сектор, Прыгнуть в точку, Ждать секунд, Повторить очередь. Это уже позволяет решить несколько задач: 1-я (не раз разбираемая) Продавать ракеты Стрекоза на док без плясок с бубном - корабль купит полный трюм ракет на вашей фабрике, полетит на док, все продаст, и снова полетит покупать ракеты; 2-я Отправить любой корабль своим ходом по любому маршруту (лично мне такая функция давно была нужна - отправил и забыл); 3-я Кормежка станции и покупка товара одним кораблем (ну это в моей сборке, в оригинале могут быть нюансы из-за размеров трюмов кораблей, но теоретически можно). 4-я Использую скрипт Медуза. На паранидских военных аванпостах переодически появляется и пропадает товар ПРО контрмера, покупать в ручную жуткий гемор, так как появляется мало, а расходуется много. Теперь можно отправить корабль и он будет покупать этот товар на аванпосту по мере появления пока весь трюм не забьет или то количество, которое укажу. Дал команду и забыл.
Если включить фантазию, то применений найдется много. Я думаю этот скрипт обладает огромным потенциалом в плане автоматизации.
Вопрос 3-й:
Если скрипт создает глобальную переменную и присваивает ей какое-либо значение, то после завершения скрипта эта глобальная переменная останется или исчезнет?
Вопрос 4-й:
Где-то тут проскакивала информация, что есть скрипт по защите земных секторов, т. е. если прыгнуть в земной какой-либо сектор без разрешения, то к тебе прыгает большое войско и разносит тебя вдребезги пополам. Меня интересует можно ли безболезненно отключить/удалить этот скрипт, чтоб в земных секторах остались просто полиция и патрули, как и в секторах других рас? И где этот скрипт вообще найти, чтобы код почитать?

_________________
Пираты - наше всё!

Последний раз редактировалось: za4ot (12:24 09-07-2017), всего редактировалось 5 раз(а)
    Добавлено: 11:32 09-07-2017   
bi0nik
 415 EGP


Рейтинг канала: 5(144)
Репутация: 100
Сообщения: 710

Зарегистрирован: 07.11.2006
za4ot :
Вопрос 3-й:
Если скрипт создает глобальную переменную и присваивает ей какое-либо значение, то после завершения скрипта эта глобальная переменная останется или исчезнет?

Если глобальная переменная имеет какое-либо значение отличное от null, то она никуда не исчезнет (успев прописаться в сейвах).
    Добавлено: 14:36 09-07-2017   
Канал X3: Terran Conflict -> Модовый и скриптовый отсек X3: Terran Conflict: «Скриптописание. Проблемы и их решение.»
На страницу: Пред.  1, 2, 3 ... 52, 53, 54, 55  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Любая тема, созданная козьмой или про козьму, сама под собой подразумевает флуд флудеров о флуде, о флудерстве и о флудерах. (подытожил Timur)

  » Скриптописание. Проблемы и их решение. | страница 53
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18