Перейти к содержимому


Фотография

Вопросы по скриптам

papyrus help скрипты вопросы

  • Авторизуйтесь для ответа в теме

#841 Ссылка на это сообщение Potatoider

Potatoider
  • Знаменитый оратор


  • 4 350 сообщений
  •    

Отправлено

Тема для вопросов по скриптингу.

Функции папируса:

На английском

На русском (не все, но базис)



 




  • Авторизуйтесь для ответа в теме
Сообщений в теме: 841

#842 Ссылка на это сообщение Eon_Tal

Eon_Tal
  • Скиталец
  • 31 сообщений

Отправлено

 

 

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
endif

endEVENT

 

Я уже приближаюсь к цели . Теперь надо добиться того что бы получать обратно тот же предмет что и положил. Есть советы?



#843 Ссылка на это сообщение Eon_Tal

Eon_Tal
  • Скиталец
  • 31 сообщений

Отправлено

Ну, если у тебя нет опыта в написания скриптов, и ты сам проблему найти не можешь, то тут я ничем не помогу.

На папирусе я не кодил уже несколько лет, и почти всё забыл из-за недостатка практики. 

Даже СК установленного с компилятором нет, чтоб точно проверить, на что именно он там ругается.

 

Как вариант, бот забыл задекларировать 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 auto

 

EVENT 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, скрипты, вопросы

Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых