Модератор форума: КсюXa, ApeX  
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)

Скрипты
a3apbi4  Offline  Сообщение №1 написано: 7 декабря 2010, 18:01



11
Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.




Spalny_Vagon  Offline  Сообщение №691 написано: 16 марта 2012, 18:53


Мастер


Цитата Alexey74

Дайте пожалуйста скрипт для того чтобы свет мигал по разному


Напрягаю свои телепатические возможности из последних сил, но все равно не могу понять, что же Вам на самом деле нужно. Есть смутное подозрение, что Вам хочется видеть мерцающий свет, как возле автоматов по продаже Нука-Колы. Если это так, то скрипт для этого не нужен, там специальные источники света. Они сами мерцают, без посторонней помощи.

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Galko  Offline  Сообщение №692 написано: 16 марта 2012, 18:56 | Отредактировано: Galko - 16 марта 2012, 18:57


GALAктическая мартышка


Spalny_Vagon, неее, сказано же:
Цитата Alexey74

мигал по разному



по разному. То быренько-быренько, как стробоскоп на дискотеке, то медленно и печально, как реквием Моцарта.

Ваше счастье, что я не ваше счастье
Vi[RUS]  Offline  Сообщение №693 написано: 17 марта 2012, 15:21



275
Опять проблема с гаубицей (надеюсь последняя)

После активации, каждые 4сек проигрывается ее анимация.

Code
scn RaiderHowitzerScript

short sFlag    
float fTimer  

Begin GameMode   
      if (sFlag == 1)  
         set fTimer to (fTimer - GetSecondsPassed)  
         if(fTimer<=0 )  
            set sFlag to 0   
         endif  
      endif    
end   

Begin OnActivate   
     if(sFlag != 0)   
        return   
     endif   

     Activate
   
     
     Set sFlag to 1    
     Set fTimer to 4
     GetSecondsPassed  

RHMediumExplosion.placeatme MediumExplosion 1
RHMissleExplosion.PlaceAtMe MissileExplosionHowitzer 1

         if (IsActionRef Player == 1)  
            RaiderHowtizerREF.playgroup forward 1
         endif

End

ITU  Offline  Сообщение №694 написано: 19 марта 2012, 07:33 | Отредактировано: ITU - 19 марта 2012, 16:28



995
Vi[RUS], у тя как-то не понятно что делает таймер, по твоему скрипту он вообще ничего не делает или это не полный скрипт?
объясни чего ты хочешь
после активации через 4 секунды разово должно стрелять?
или стрелять сразу, а анимация взрыва через 4 сек ?

Code
scn RaiderHowitzerScript   

   short sFlag      
   float fTimer    

   Begin GameMode     
      if (sFlag == 1)    
    if(fTimer > 0 )
     set fTimer to (fTimer - GetSecondsPassed)    
    else    
      set sFlag to 0    
          endif    
       endif      
   end     

   Begin OnActivate     
   if(sFlag == 0)     
     
    if (IsActionRef Player == 1)    
              RaiderHowtizerREF.playgroup forward 1   
          endif   

     RHMediumExplosion.placeatme MediumExplosion 1   
     RHMissleExplosion.PlaceAtMe MissileExplosionHowitzer 1   
      
    Set sFlag to 1    
    Set fTimer to 4   

    
   endif

   End

Vi[RUS]  Offline  Сообщение №695 написано: 20 марта 2012, 11:01



275
ITU,
Мне надо , чтобы активацию можно было произвести раз в 4сек и при активации проигрывалась анимация.

Добавлено (20.03.2012, 15:01)
---------------------------------------------
А у меня после активация каждые 4 сек сама играет анимация.


KAIN48  Offline  Сообщение №696 написано: 28 марта 2012, 06:48


Шаманистый шаман


Привет всем!
Я хотел сделать так что бы щит добавился игроку при загрузки сохранения, ну что бы не бегать за ним.
Нашёл похожий скрипт и подправил вот так.
scn AddingMyObject
short val
begin GameMode
if (val == 0)
Player.AddItem AAASpartaSteelShield 1
set val to 1
endif
end

Повесил на щит, но при загрузке сохранения игра вылетает. Появляется начальный кадр места сохранения, а потом вылет.
Что я делаю не так?
Щит стоит в локации и без скрипта всё нормально работает, он берётся, выбрасывается и тп.

Мы вышли из дома, когда во всех... Поздно вышли!
JupiterJour  Offline  Сообщение №697 написано: 28 марта 2012, 07:00 | Отредактировано: Joopeeter - 28 марта 2012, 07:15


_


KAIN48, сделай скрипт квестовым, прикрепи к квесту, сам квест сделай Start Game Enable (на той же вкладке где и скрипт). На всякий случай сделай квесту приоритет 100, а чтобы он не жрал ресурсы после того как сделает дело - между "set val to 1" и "endif" вставь StopQuest [название квеста].

KAIN48  Offline  Сообщение №698 написано: 28 марта 2012, 07:20


Шаманистый шаман


Joopeeter, Привет!
Понял! Человеку щит понравился из модов для Скурим, он попросил перенести его в Обливион, и выдать при запуске игры.
Я такого не делал раньше, теперь буду знать как - вертелась мысль про квест, но как то не пересеклась с добавлением!
Спасибо!
Пока.

Мы вышли из дома, когда во всех... Поздно вышли!
JupiterJour  Offline  Сообщение №699 написано: 28 марта 2012, 08:08


_


Oder, а если какой-нибудь другой плагин делает так же они разве не перебьют друг друга? Просто 100% бесконфликтный способ добавить что-то торговцу - именно скриптовый. С рюкзаками не проверял, но там разве не так?

14K  Сообщение №700 написано: 28 марта 2012, 09:37

Joopeeter, Пробовал, вроде не сбивало. Но информация конечно не 100%

JupiterJour  Offline  Сообщение №701 написано: 28 марта 2012, 10:27


_


Цитата Oder

не проще-ли сливать подобные плагины в один и доливать по мере поступления, чем писать квесты со скриптами?


Двояко. Плагинописателю - проще, плагиноподключателю - сложнее. Он (подключатель) должен быть ещё и в курсе какие плагины используют этот способ (не сливать же всё подряд).

Airborn  Offline  Сообщение №702 написано: 7 апреля 2012, 14:25 | Отредактировано: Airborn - 7 апреля 2012, 14:26





Приветствую. Нужна помощь, нужно удалить все переменные и команды со словом weight, чтобы вещи в сумке нечего не весили. Дня 3-4 уже пытаюсь это сделать, но не как не получается. Надеюсь вы поможете, ну или хотя бы подскажите :)
Code

   If ( activateContainer == 1 )
    If ( MenuMode 1002 )
     TapControl 14
    ElseIf ( MenuMode )
     Set LMDStorageBagQuest.activateContainer to 0
    EndIf
   EndIf

   If ( activateContainer >= 3 )
    Set activateContainer to 4
   EndIf

End

Begin GameMode

   If ( doOnce == 0 )
    Player.AddItem LMDStorageBagItem 1
    Set curOwner to Player
    Set curContainer to LMDStorageBagRef
    Set startWeight to GetWeight LMDStorageBagItem
    Set curWeight to startWeight
    Set doOnce to 1
   EndIf

   If ( curOwner != Player )
    If ( curOwner == curContainer )
     ;PrintC "Don't be stupid. Containers can not be put inside of themselves."
     curContainer.RemoveItem LMDStorageBagItem 1
     Player.AddItem LMDStorageBagItem 1
    ElseIf ( curOwner != 0 )
     If ( dumpedContents == 0 )
      Set dumpedContents to 1
      ShowMessage LMDStorageBagDropMsg
      SetWeight startWeight LMDStorageBagItem
      Set curWeight to startWeight
      curContainer.RemoveAllItems curOwner 0
     EndIf
    Else
     Set dumpedContents to 0
    EndIf
   Else
    Set dumpedContents to 0
   EndIf

   If ( activateContainer == 1 )
    Set activateContainer to 2
    Return
   ElseIf ( activateContainer == 2 )
    Set activateContainer to 3
    Set itemWeight to curOwner.GetAV InventoryWeight
    SetQuestItem 1 LMDStorageBagItem
    SetWeight curWeight LMDWeightItem
    curOwner.AddItem LMDWeightItem 1 1
    curContainer.Activate Player 0
    Return
   ElseIf ( activateContainer == 4 )
    Set activateContainer to 0
    SetQuestItem 0 LMDStorageBagItem
    Player.RemoveItem LMDWeightItem 1 1
    Set curWeight to itemWeight - curOwner.GetAV InventoryWeight + curWeight
    SetWeight curWeight LMDStorageBagItem
    Player.AddItem LMDWeightItemTwo 1 1
    Player.RemoveItem LMDWeightItemTwo 1 1
   EndIf

   If ( Player.GetEquipped LMDStorageBagItem )
    If ( removeItems < 50 )
     Set removeItems to removeItems + 1
    Else
     Set removeItems to 0
     Set itemWeight to curOwner.GetAV InventoryWeight
     curOwner.RemoveAllTypedItems curContainer 0 1 24 LMDStorageBagFormList
     curOwner.RemoveAllTypedItems curContainer 0 1 26 LMDStorageBagFormList
     curOwner.RemoveAllTypedItems curContainer 0 1 29 LMDStorageBagFormList
     curOwner.RemoveAllTypedItems curContainer 0 1 31 LMDStorageBagFormList
     curOwner.RemoveAllTypedItems curContainer 0 1 40 LMDStorageBagFormList
     curOwner.RemoveAllTypedItems curContainer 0 1 41 LMDStorageBagFormList
     curOwner.RemoveAllTypedItems curContainer 0 1 47 LMDStorageBagFormList
     Set curWeight to itemWeight - curOwner.GetAV InventoryWeight + curWeight
     SetWeight curWeight LMDStorageBagItem
     Player.AddItem LMDWeightItemTwo 1 1
     Player.RemoveItem LMDWeightItemTwo 1 1
    EndIf
   EndIf

End


Code
ScriptName LMDStorageBagScript

Short itemIndex
Short doOnce
Ref curObject
Ref curOwner

Begin OnEquip Player

   Set LMDStorageBagQuest.activateContainer to 1
;    If ( MenuMode 1002 )
;  TapControl 14
;    ElseIf ( MenuMode )
;  Set LMDStorageBagQuest.activateContainer to 0
;    EndIf

   Set doOnce to 1

End

Begin OnUnequip Player

   Set LMDStorageBagQuest.activateContainer to 1
;    If ( MenuMode 1002 )
;  TapControl 14
;    ElseIf ( MenuMode )
;  Set LMDStorageBagQuest.activateContainer to 0
;    EndIf

End

Begin OnDrop Player
   Set LMDStorageBagQuest.activateContainer to 0
End

Begin MenuMode

   If ( doOnce == 2 )
    Set doOnce to 3
   EndIf

End

Begin GameMode

   Set LMDStorageBagQuest.curOwner to GetContainer

   If ( doOnce == 1 )
    Set doOnce to 2
   EndIf

   If ( LMDStorageBagQuest.activateContainer > 0 )
    Return
   EndIf

   If ( doOnce != 3 )
    Return
   EndIf

   Set doOnce to 0
   set curOwner to LMDStorageBagQuest.curOwner

   Set itemIndex to ListGetCount LMDStorageBagFormList

   Label 0

   Set itemIndex to itemIndex - 1

   If ( itemIndex >= 0 )

    ListRemoveNthForm LMDStorageBagFormList itemIndex
    GoTo 0

   EndIf

   Set itemIndex to curOwner.GetNumItems

   Label 1

   Set itemIndex to itemIndex - 1

   If ( itemIndex >= 0 )

    Set curObject to curOwner.GetInventoryObject itemIndex
    AddFormToFormList LMDStorageBagFormList curObject
    GoTo 1

   EndIf
End

[HazarDous]  Offline  Сообщение №703 написано: 14 апреля 2012, 14:23



476
Всем привет, у меня появился вопрос :
Можно ли с помощью скрипта сохранить значения переменных (этого же или другого скрипта) в отдельный текстовый файл?
Заранее спасибо, даже если это нельзя никак сделать. :)

Oh no, not me,
I never lost control.
You're face to face
With the man who sold the world.
ITU  Offline  Сообщение №704 написано: 14 апреля 2012, 14:58



995
[HazarDous], есть глобальные переменные, которые читаются из любого скрипта.
а вот в текстовой файл конечно же не возможно.

[HazarDous]  Offline  Сообщение №705 написано: 14 апреля 2012, 15:20



476
ITU, Ясно, спасибо.

Oh no, not me,
I never lost control.
You're face to face
With the man who sold the world.
ITU  Offline  Сообщение №706 написано: 20 апреля 2012, 17:59



995
чет не как не найду чем можно определить ИД "одетого" оружия

JupiterJour  Offline  Сообщение №707 написано: 21 апреля 2012, 00:19 | Отредактировано: Joopeeter - 21 апреля 2012, 00:22


_


Кроме как перебором через GetEquipped ничего в голову не приходит. Однако, если NPC может использовать много разного оружия, или надо проверить игрока, у которого вообще может быть любое, то это долго и нудно.
Расскажи в чём конкретно состоит замысел, может придумается какой-нибудь обходной путь.

ITU  Offline  Сообщение №708 написано: 21 апреля 2012, 05:32



995
Joopeeter, спасибо, нашел nvse комманду, GetEquippedObject

Artem13  Offline  Сообщение №709 написано: 21 апреля 2012, 13:10 | Отредактировано: Artem13 - 21 апреля 2012, 13:11


Mercenaries. Со смертью на ты.


Цитата ITU

чет не как не найду чем можно определить ИД "одетого" оружия


Ты сильно огорчишься, если скажу "никак"? :) Штатными средствами. Если не побрезгуешь экстендером, поройся тут http://fose.silverlock.org/fose_command_doc.html

Блин, пропустил твоё сообщение :)

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Pandar  Offline  Сообщение №710 написано: 23 апреля 2012, 14:21



41
Нужен скрипт следующего характера: в рендере находится предмет, допустим это пистолет с ID gun2, нужно сделать так, что бы когда его подбераешь, стадия квеста переходила на другую, например на 50 (до этого собственно была 40).

ITU  Offline  Сообщение №711 написано: 23 апреля 2012, 14:39 | Отредактировано: ITU - 23 апреля 2012, 14:43



995
Pandar, можно добавить пистолету
Code

int status

begin OnAdd player     
if status == 0
SetStage QuestID 50
set status to 1
endif
end


либо в квестовый скрипт
Code
int count
int status

begin Gamemode

if (Player.GetItemCount gun2 >=1 && status == 0)
SetStage QuestID 50
set status to 1
endif
end


вместо переменной status == 0 можно использовать условие GetStage QuestID == 40

Pandar  Offline  Сообщение №712 написано: 27 апреля 2012, 15:06



41
Спасибо вам.

Добавлено (27.04.2012, 19:06)
---------------------------------------------
Снова требуется ваша помощь, подскажите пожалуйста результирующий скрипт, который после диалога делает нашего собеседника врагом главного героя.


Galko  Offline  Сообщение №713 написано: 27 апреля 2012, 18:06


GALAктическая мартышка


Цитата Pandar

подскажите пожалуйста результирующий скрипт, который после диалога делает нашего собеседника врагом главного героя


Команда StartCombat в результ-скрипт Энд
Если просто сделать враждебным (настроить фракцию собеседника как враждебную к фракции игрока) то все равно после окончания диалога в таком случае начнется бой. Эт только если как-то задействовать таймер, дабы ГГ успел свалить подальше.

Ваше счастье, что я не ваше счастье
Бун  Offline  Сообщение №714 написано: 28 апреля 2012, 06:20


Лагогенератор


757
Мне нужен скрипт на "лечебное оружие", т.е. при выстреле в NPC у него восстановятся все конечности и все здоровье.

.7
Spalny_Vagon  Offline  Сообщение №715 написано: 28 апреля 2012, 07:17


Мастер


Цитата Бун

Мне нужен скрипт на "лечебное оружие", т.е. при выстреле в NPC у него восстановятся все конечности и все здоровье.


Нужно создать базовый эффект со скриптовым архитипом, прицепить к нему скрипт примерно такго вида:
Code
begin scripteffectstart
resethealth
restoreav perceptioncondition 100
restoreav endurancecondition 100
restoreav leftattackcondition 100
restoreav leftmobilitycondition 100
restoreav rightattackcondition 100
restoreav rightmobilitycondition 100
end

И на его базе сделать объектный эффект, который вешается на оужие, которое, в свою очередь, нужно будет отрегулировать, чтобы оно само по себе хит не наносило.
p.s. Отвечаю на этот вопрос исключительно из любопытства - какая у данного оружия может область применения?

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Бун  Offline  Сообщение №716 написано: 28 апреля 2012, 09:48 | Отредактировано: Бун - 28 апреля 2012, 10:54


Лагогенератор


757
Spalny_Vagon, дебаговая, к примеру, у меня все жители RTS хромают, бедные, клиника их вылечить не может, так что буду дебаговой пушкой лечить.
И еще вопрос: как сделать гаубицу? Чтобы при нажатии на нее вылетал снаряд.на странице 43

Добавлено (28.04.2012, 13:48)
---------------------------------------------
Да, кстати, когда я стреляю в NPC этой пушкой, то все снаряды уходят мимо. Когда я выставляю урон 1, снаряды попадают, но НПС становятся агрессивными. Как это исправить?

.7
Spalny_Vagon  Offline  Сообщение №717 написано: 28 апреля 2012, 10:45


Мастер


Цитата Бун

Да, кстати, когда я стреляю в NPC этой пушкой, то все снаряды уходят мимо. Когда я выставляю урон 1, снаряды попадают, но НПС становятся агрессивными. Как это исправить?


player.scaonactor ;НПС прекращают атаки на ГГ
ClearActorsFactionsPlayerEnemyFlag ;фракция жертвы прощает ГГ все грехи.

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
ITU  Offline  Сообщение №718 написано: 25 мая 2012, 11:46



995
вот млин нефига не пойму что тут не так
при выборе в меню ниже уровня ничего не делает
при нажатие "Вернутся в меню выше" просто меню закрывается
точно такое же в другом месте работает, я чет просто ошибки не как найти не могу

Artem13  Offline  Сообщение №719 написано: 25 мая 2012, 13:39 | Отредактировано: Artem13 - 25 мая 2012, 13:40


Mercenaries. Со смертью на ты.


ITU, а зачем в начале каждого elseif (кроме первого) верхнего уровня опять кнопки опрашиваешь? У тебя же стоит опрос на входе в GameMode. Похоже ты просто забиваешь значением -1 нормальное значение, полученное в начале блока.

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
ITU  Offline  Сообщение №720 написано: 25 мая 2012, 14:12



995
Artem13, оно без этого почему-то после выбора в вверхнем меню вызывало этот же пункт в нижнем меню...
лан, убяру, попробую еще раз...

Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск:





Ответ на жалобу смотрите в разделе жалоб