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

Скрипт для Пометки и Возврата


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

Адаптирую CM Partners Mod. В партнерском скрипте есть такой блок:

 

; TELEPORT MODE

if load >= 1 && inparty == 1; Modified fix from Cecelia for double face bug.
 if load == 3
Enable
set load to 0
RemoveScriptPackage
AddScriptPackage cmFollowPlayer
 elseif load == 2
Disable
set load to 3
 elseif load == 1
set map to 0
set load to 2
 endif	
endif

if teleport == 1 && command == 0 && cmPartnersQuest.nLockNPC == 0;  Teleport script for Mark and Return
 set teleport to 2
 RemoveScriptPackage
 SetFactionRank NPCParty, 0
 PlaySound AMBThunder   
 if pfacing < 90; northeasterly
MoveTo cmPartnersMark1, -50, -50, 10
 elseif pfacing < 180; southeasterly
MoveTo cmPartnersMark1, -50, 50, 10
 elseif pfacing < 270; southwesterly
MoveTo cmPartnersMark1, 50, 50, 10
 else; northwesterly
MoveTo cmPartnersMark1, 50, -50, 10
 endif
 set teleport to 0
 RemoveScriptPackage
 AddScriptPackage "cmStandby" 
 SetFactionRank NPCStand, 1  
 SetFactionRank NPCParty, 0   
elseif teleport == 1 && command == 0 && cmPartnersQuest.nLockNPC == 1
 set teleport to 0
 Message, "Mark and Return doesn't work here."
endif

Скрипт отказывается сохраняться. Пишет "Item 'cmPartnersMark1' not found for parameter ObjectReferenceID". Конкретно такого итема действительно нет, есть cmPartnersMark в списке кричеров, с количеством в КС=0. Если я правильно поняла, то когда партнеру отдается приказ поставить пометку, то на карте появляется кричер (0_о) с ID cmPartnersMark1, т.е. копия того самого cmPartnersMark. К которому потом и происходит телепортация. Вроде бы, КС должен нормально учитывать копии.

 

В чем тут проблема?

 

ЗЫ: В игре этот скрипт сначала работал, неписи ставили пометку и потом переносились к ней. Но после того, как КС отказался этот скрипт сохранять, в игре это перестало работать.

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

неуверен, но что если попробовать выкинуть на карту копию той животины, с нужным ид, после этого скрипт может скомпилироваться нормально. А когда скомпилируется - выкинутое удалить
Ссылка на комментарий
Поделиться на другие сайты

Для пробы создала копию этого кричера - оказался грязекрабом - с ID cmPartnersMark1 и даже положила его в мир, так что его количество в КС стало =1. Теперь объект сам находится, но КС пишет:

 

Invalid object Reference 'cmPartnersMark1' for parameter ObjectReferenceID.

 

Та же история, если просто подставлять в скрипт ID исходного кричера (cmPartnersMark).

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

Я скриптов облы незнаю, но может быть это переменная-указатель содержащая ссылку на какого либо конкретного кричера ? И может ее потеряли куданибудь.

 

~Upd

Хмм стоп! Там команда MoveTo а ето команда (по крайней мере в Моррке) для перемещения в локацию. Т.е. cmPartnersMark1 - возможно локация.

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

Нет, команда MoveTo перемещает вызывающего актера (ActorID) или персонажа игрока к местоположению указанного в виде параметра объекта (MarkerID). Параметры x, y, z — опциональное смещение в игровых единицах измерения (units) от указанного объекта.

 

Синтаксис:

 

[ActorID|Player.]MoveTo MarkerID, x, y, z (optional)

 

(инфа отсюда)

 

Скрипт висит на партнерах (у неписей и кричеров этот блок в партнерском скрипте присутствует), он для них всех общий, поэтому конкретного ActorID не прописывается. А вообще это блок, отвечающий за то, чтобы партнер ставил Пометку и возвращался к ней Возвратом.

 

МаркеромID у нас в данном случае выступает (должен выступать) грязекраб (его ID - cmPartnersMark) или точнее одна из его созданных игрой копий (cmPartnersMark1). Когда мы приказываем партнеру поставить пометку, этот грязекраб выкидывается в мир, вероятно, куда-нить под землю, на том месте, где в данный момент стоит партнер. Когда мы потом приказываем партнеру сделать Возврат, он переносится к этому грязекрабу. Грязекраб удаляется из мира.

 

Это если я правильно поняла механизм. ((

 

Возможно, где-то в скрипте должно быть прописано, что cmPartnersMark - это MarkerID... Во всяком случае, похоже, КС его как MarkerID не воспринимает, раз пишет "инвалид обджект"...

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

Дык может создать не-инвалидный маркер с таким же ИД ?

И бывают ли в обле переменные-указатели ? Если да то почему бы не создать переменную-указатель с таким названием.

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

Откуда я знаю, каким должен быть неинвалидный маркер? Если бы знала, эту тему не стала бы создавать. :-(

 

Про переменные-указатели ничего не знаю. Я чайник.

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

Ну переменные типа ref или reference или что-то в этом роде. Можно попробовать обьявить cmPartnersMark1 как переменную.

Например:

ref cmPartnersMark1

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

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

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

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

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

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

Войти

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

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

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