Перейти к содержанию
Планета Deus Ex
Авторизация  
максим

Пособие по скриптам на примере 1го уровня

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

Как вообще создавать скрипт точнее где?

Можно какое нибудь пособие или гайд.

 

Пример 1 уровень. Когда мы завершаем основной квест то происходит выполнение скрипта всеакторы нсф умирают, да ещё и там счётчик стоит на обнуление и появляется постмиссионтропс ( своими словами ).

 

Проще говоря нужна помощь по флагам, написанию скрипта, конвертация, добавление, применение на карту, работа с флагами в conversation.

Поделиться сообщением


Ссылка на сообщение

Но там нет гайда где писать эти скрипты , как компилить потом, чтоб они в самом редакторе как пакет в missionscript появились

Поделиться сообщением


Ссылка на сообщение

Годно,теперь бы знать как с флагами работать. Ибо не понятно как flagtrigger работает, в качестве эксперимента тот же первый уровень, пытался на кнопку поставить как бы конец миссии удаляя флаги с карты конечный результат остаётся тем же, взывает к вопросу а зачем они там , если они не нужны, так для виду ?

Поделиться сообщением


Ссылка на сообщение

В диалогах свои флаги еще есть. Можно посмотреть и отредактировать через меню Legend.

 

У меня похожий редактор тоже есть, для отладки и проверки.

Image 2019_03_19-06_10.png

Shot00026.png

Поделиться сообщением


Ссылка на сообщение

Понять бы логику как с этим всем работать, диалог и goal я накатал, все работает, а вот появление в мир actor ( unatco trops например) после завершения goal не получается

Поделиться сообщением


Ссылка на сообщение

Нужно проверить флаг в MissionScript, и исходя из этого, вызвать для нужного Npc функцию EnterWorld(). Или по другой ситуации. Можно через триггер.

 

Такой триггер у меня есть:

 

 

 
class D2_UnHideEnemyTrigger expands Trigger;

var () name EnemyTag; // Укажите TАG Pawn'a
var () float SurpriseTime;
var () bool bMakeThemdead;



// ----------------------------------------------------------------------------
// Активизация через другой триггер парой Event-Tag
// ----------------------------------------------------------------------------
singular function Trigger(Actor Other, Pawn Instigator)
{
  local ScriptedPawn P;

    foreach AllActors(class'ScriptedPawn', P, EnemyTag)
    {
      P.EnterWorld();
      P.SurprisePeriod=SurpriseTime;
      If (bMakeThemDead)
      {
        P.bInvincible=FALSE;
        P.HealthTorso = 0;
        P.Health = 0;
        P.TakeDamage(1, P, P.Location, vect(0,0,0), 'Shot');
      }
    }
Super.Trigger(Other, Instigator);
}



// ----------------------------------------------------------------------------
// Активизация от прикосновения
// ----------------------------------------------------------------------------
singular function Touch( actor Other )
{
  local ScriptedPawn P;
  local DeusExPlayer player;

  player = DeusExPlayer(Other);
  if (player == None)
    return;
    foreach AllActors(class'ScriptedPawn', P, EnemyTag)
    {
      P.EnterWorld();
      P.SurprisePeriod=SurpriseTime;
      If (bMakeThemDead)
      {
        P.bInvincible=FALSE;
        P.HealthTorso = 0;
        P.Health = 0;
        P.TakeDamage(1, P, P.Location, vect(0,0,0), 'Shot');
      }
    }
Super.Touch(Other);
}


defaultProperties
{
      bTriggerOnceOnly=true
      SurpriseTime=1.00
      bMakeThemDead=FALSE
      bCollideActors=true
      CollisionRadius=75
//      TriggerType=TT_ClassProximity
//      ClassProximityType=Class'DeusEx.Human'
}
 

 

 

Поделиться сообщением


Ссылка на сообщение

Не вышло, сначала хотел понять азы и попробовал проверить флаг так же как это реализовано в 00трейнинг. Я создал флаг, по тем же параметрами и на основе 00missionscript  попробовал сделать.

 

 

 

1_RU7K6zSbM.jpg

0VWsR61u8LE.jpg

 

 

Mymissionscript

 

 

class MyMission expands MissionScript;
function Timer()
{
Super.Timer();
if (localURL == "99_kvartal")
{
// delete the player's inventory in case he tries to keep it
if (flags.GetBool('MunitionsTrooperReady'))
RemoveAllInventory();
}
}
 

 

 

 

Поделиться сообщением


Ссылка на сообщение

Если это весь скрипт, то не хватает самой функции RemoveAllInventory();

 

Можно вывести сообщение, чтобы понять, произошло требуемое, или нет.

GetPlayerPawn().ClientMessage("Проверка");

Поделиться сообщением


Ссылка на сообщение

Это уже интересно, а где тогда она спрятана в missionscript00? Если скопировав полностью скрипт и скомпилить , то получим тоже самое

Поделиться сообщением


Ссылка на сообщение

Класс явно объявлен неправильно.

 

 

Можно ваш пакет и карту? Я посмотрю.

Поделиться сообщением


Ссылка на сообщение

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

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

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

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

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

Войти

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

Войти
Авторизация  
×
×
  • Создать...