Advertisement
Shark_vil

QSystem - Example Event

Apr 20th, 2021
785
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.01 KB | None | 0 0
  1. local quest = {
  2.    id = 'event_kill_combine',
  3.    title = 'Убить комбайнов',
  4.    description = 'Где-то высадился отряд вражеских комбайнов. Найдите и устраните их!',
  5.    payment = 500,
  6.    isEvent = true,
  7.    npcNotReactionOtherPlayer = true,
  8.    timeToNextStep = 20,
  9.    nextStep = 'spawn_combines',
  10.    nextStepCheck = function(eQuest)
  11.       local count = #eQuest.players
  12.       if count == 0 then
  13.          eQuest:NotifyAll('Событие отменено', 'Событие не состоялось из-за нехватки игроков в зоне ивента.')
  14.       end
  15.       return count ~= 0
  16.    end,
  17.    timeQuest = 120,
  18.    failedText = {
  19.       title = 'Задание провалено',
  20.       text = 'Время выполнения истекло.'
  21.    },
  22.    steps = {
  23.       start = {
  24.          construct = function(eQuest)
  25.             local quest = eQuest:GetQuest()
  26.             eQuest:NotifyAll(quest.title, quest.description, 6)
  27.          end,
  28.          triggers = {
  29.             spawn_combines_trigger = {
  30.                onEnter = function(eQuest, ent)
  31.                   eQuest:AddPlayer(ent)
  32.                end,
  33.                onExit = function(eQuest, ent)
  34.                   if not eQuest:HasQuester(ent) then return end
  35.                   eQuest:RemovePlayer(ent)
  36.                end
  37.             },
  38.          },
  39.       },
  40.       spawn_combines = {
  41.          construct = function(eQuest)
  42.             eQuest:NotifyOnlyRegistred('Враг близко', 'Убейте прибивших противников')
  43.          end,
  44.          structures = {
  45.             barricades = true
  46.          },
  47.          points = {
  48.             spawn_combines = function(eQuest, positions)
  49.                for _, pos in pairs(positions) do
  50.                   eQuest:SpawnQuestNPC('npc_combine_s', {
  51.                      type = 'enemy',
  52.                      pos = pos,
  53.                      model = array.Random( {
  54.                         'models/Combine_Soldier.mdl',
  55.                         'models/Combine_Soldier_PrisonGuard.mdl',
  56.                         'models/Combine_Super_Soldier.mdl'
  57.                      } ),
  58.                      weapon_class = array.Random( {
  59.                         'weapon_ar2',
  60.                         'weapon_shotgun',
  61.                      } )
  62.                   })
  63.                end
  64.  
  65.                eQuest:MoveEnemyToRandomPlayer()
  66.             end,
  67.          },
  68.          hooks = {
  69.             OnNPCKilled = function(eQuest, npc, attacker, inflictor)
  70.                if not eQuest:IsAliveQuestNPC('enemy') then
  71.                   eQuest:NextStep('complete')
  72.                end
  73.             end
  74.          }
  75.       },
  76.       complete = {
  77.          construct = function(eQuest)
  78.             eQuest:NotifyOnlyRegistred('Завершено', 'Все противники были уничтожены')
  79.             eQuest:Reward()
  80.             eQuest:Complete()
  81.          end,
  82.       }
  83.    }
  84. }
  85. list.Set('QuestSystem', quest.id, quest)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement