Тема для вопросов по скриптингу.
Функции папируса:
На английском
На русском (не все, но базис)

#841
Отправлено
- werr, Chesh¡re и Olechkafum нравится это
#842
Отправлено
Scriptname _Script_Mask_Miraak extends ObjectReference
armor property myItem auto
armor property myItem2 auto
bool property placed = FALSE auto
ObjectReference property MyRef auto
EVENT onActivate(objectReference actronaut)
if placed == FALSE
if actronaut.getItemCount(myItem)
actronaut.removeItem(myItem, 1)
placed = TRUE
MyRef.Enable()
else
Debug.notification("У вас нет нужного предмета")
endif
if actronaut.getItemCount(myItem2)
actronaut.removeItem(myItem2, 1)
placed = TRUE
MyRef.Enable()
else
Debug.notification("У вас нет нужного предмета")
endif
elseif placed == TRUE
if MyRef.Disable()
actronaut.addItem(myItem, 1)
placed = FALSE
elseif MyRef.Disable()
actronaut.addItem(myItem2, 1)
placed = FALSE
endif
endifendEVENT
Я уже приближаюсь к цели . Теперь надо добиться того что бы получать обратно тот же предмет что и положил. Есть советы?
#843
Отправлено
Ну, если у тебя нет опыта в написания скриптов, и ты сам проблему найти не можешь, то тут я ничем не помогу.
На папирусе я не кодил уже несколько лет, и почти всё забыл из-за недостатка практики.
Даже СК установленного с компилятором нет, чтоб точно проверить, на что именно он там ругается.
Как вариант, бот забыл задекларировать player (или это я вырезал эту часть, так как там в начале еще была проверка на активацию объекта только игроком).
Т.е. заменить 'player' на Game.GetPlayer() в трех местах скрипта.
Про последнюю ошибку хз.
Большое Вам спасибо за помощь. Я розабрался с ошибками . Теперь работает , пока что... Вот готовый скрипт, может кому то понадобится в будущем.
Scriptname _Script_Mask_Miraak extends ObjectReference
Armor[] property myItems auto
ObjectReference property MyRef auto
bool property placed = FALSE auto
Armor property itemThatWasPlaced autoEVENT onActivate(ObjectReference actronaut)
if placed == FALSE
int i = 0
bool itemFound = FALSE
while i < myItems.length && itemFound == FALSE
Armor currentItem = myItems[i]
if Game.GetPlayer().getItemCount(currentItem) >= 1
itemFound = TRUE ; ...мы нашли его!
itemThatWasPlaced = currentItem
Game.GetPlayer().removeItem(itemThatWasPlaced, 1)
placed = TRUE
MyRef.Enable()
Debug.notification("Предмет размещен.")
endif
i += 1
endwhile
if itemFound == FALSE
Debug.notification("У вас нет нужного предмета.")
endif
elseif placed == TRUE
if itemThatWasPlaced != None
MyRef.Disable()
Game.GetPlayer().addItem(itemThatWasPlaced, 1)
placed = FALSE
itemThatWasPlaced = None
Debug.notification("Предмет взят.")
else
Debug.notification("ОШИБКА: Предмет размещен, но нет информации о том, какой именно!")
endif
endif
endEVENT
Темы с аналогичным тегами papyrus, help, скрипты, вопросы
Моддинг →
Моддинг Skyrim →
Перенос эффекта призрачного соловья на предмет/оружиеАвтор Alex_andra, 07 янв 2025 ![]() |
|
![]() |
||
Моддинг →
Моддинг Skyrim →
Восстановление на основе Зала ДозораАвтор Alex_andra, 11 дек 2023 ![]() |
|
![]() |
||
![]() |
Моддинг →
Моддинг Skyrim →
Отстройка ВинтерхолдаАвтор Alex_andra, 10 авг 2023 ![]() |
|
![]() |
|
Моддинг →
Моддинг Oblivion →
Скрипт Для СнаряженияАвтор БесездаБойчик, 07 сен 2022 ![]() |
|
![]() |
||
Моддинг →
Моддинг Skyrim →
Нужны добровольцы для теста модаАвтор arkadiy111, 11 апр 2022 ![]() |
|
![]() |
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 скрытых