[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Эффект от эффекта
Vlad
Проверенные
Сообщений: 351
Реп: 13
А как сделать так что типо идешь на огонек и у тебя здоровье отнимается?

 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Пусть твоя карта называется MyMap
Через W3DMapEditor на карте создаёшь эммитер со свойствами name=Trigger1 lib=Collision Sphere
и поставь его в нужное место на карте.
Trigger1 - меняешь на имя своего триггера.
Сохраняешь карту.

Твоя карта должна быть зарегистрирована в Scripts.xml примерно так:

Code
<?xml version='1.0' ?>
<xomArchive>
   <xomObjects>
     <XDataBank id='id-0'>
       <Section>0</Section>
       ...
       <StringResources href="MyMapName"/>
       ...
       <ContainerResources href='MyMap'/>
       ...
     </XDataBank>
     ...
     <XStringResourceDetails id='MyMapName'>
       <Value>Моя супер карта</Value>
       <Name>MyMapName</Name>
       <Flags>80</Flags>
     </XStringResourceDetails>
     ...
     <XContainerResourceDetails id='MyMap'>
       <Value href='MyMap-0'/>
       <Name>MyMap</Name>
       <Flags>80</Flags>
     </XContainerResourceDetails>
     <WXFE_LevelDetails id='Multi.MyMap-0'>
       <Frontend_Name>MyMapName</Frontend_Name>
       <Frontend_Briefing>FETXT.Jur.Chute.Brief</Frontend_Briefing>
       <Frontend_Image>icon.tga</Frontend_Image>
       <Level_ScriptName>MyMap,wormpot</Level_ScriptName>
       <Level_FileName>MyMap</Level_FileName>
       <Objectives></Objectives>
       <Level_Number>42</Level_Number>
       <Level_Type>0</Level_Type>
       <Lock></Lock>
       <Theme_Type>5</Theme_Type>
       <Preview_Type>0</Preview_Type>
       <BonusTime>600</BonusTime>
     </WXFE_LevelDetails>
     ...
   </xomObjects>
</xomArchive>

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

Регистрируешь эммитер в файле databanks/MyMap.xml, примерно вот так:

Code
<?xml version='1.0' ?>
<xomArchive>
   <xomObjects>
     <XDataBank id='id-0'>
       ...
       <ContainerResources href='Trig1'/>
       ...
     </XDataBank>
     ...
     <XContainerResourceDetails id='Trig1'>
       <Value href='Trig1-0'/>
       <Name>Trig1</Name>
       <Flags>121</Flags>
     </XContainerResourceDetails>
     <TriggerDataContainer id='Trig1-0'>
       <Spawn>Trigger1</Spawn>
       <Radius>200</Radius>
       <Index>1</Index>
       <TeamCollect>0</TeamCollect>
       <TeamDestroy>4</TeamDestroy>
       <HitPoints>1</HitPoints>
       <SheepCollect>2000</SheepCollect>
       <PayloadCollect>2000</PayloadCollect>
       <GirderCollect>0</GirderCollect>
       <WormCollect>0</WormCollect>
       <AffectsAI>0</AffectsAI>
     </TriggerDataContainer>
     ...
   </xomObjects>
</xomArchive>

Затем эммитер можно использовать в lua используя новое имя Trig1.
Для этого создаёшь файл MyMap.lua, используя к примеру stdvs.lua в качестве основы, или просто изменяешь stdvs.lua.

Сначала создаёшь триггер в Initialize:

Code
function Initialise()
--  ...
     SetData("Trigger.Visibility", 0) --Триггер невидимый
     lib_SpawnTrigger("Trig1")
--  ...
end

Потом, когда в игре ты его уничтожаешь, вызывается функция:

Code
function Trigger_Destroyed()
     local TriggerIndex = GetData("Trigger.Index")   
      
     if TriggerIndex == 1 then   --определяется в тэге <Index>1</Index>
        --тут код при уничтожении триггера, к примеру какой-то особый взрыв
     end
end

А если червь собирает триггер, то

Code
function Trigger_Collected()
     local TriggerIndex = GetData("Trigger.Index")   
      
     if TriggerIndex == 1 then
       --тут код при сборе триггера, к примеру твоё увеличение здоровья
     end
end


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Vlad
Проверенные
Сообщений: 351
Реп: 13
типо когда на тригер наступаешь у тя жизнь отнимается

 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Нет, тут ничего подобного не написано, ты сам должен написать lua скрипт, который будет отнимать жизнь червя. Я те описал, как привязать к триггеру какое-либо событие.

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
SW_Krash
Проверенные
Сообщений: 818
Реп: 28 / Инв: 7
ээээээ..... хахахах... вспомнить всё... ну ты Герыч выдал... =)))конечно можно и так сделать... но по-моему такую фичу делали ещё самые первые ковырятели вормса, а они точно не юзали луа =))) так что надо смотреть в свойствах эффекта =)

Всё что ни делается, делается в Китае(SW_Krash, 2009)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x)
OFFTOP SWEAT OFFTOP(фольклор)

 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Да ладно, так тоже элементарно=)
Короче в любом случае, надо ковырять databanks=) ну и если по-крутому, то ковырять луа)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
SW_Krash
Проверенные
Сообщений: 818
Реп: 28 / Инв: 7
луа не позволит что-бы это огонь их оружия появлялся =)))) так что у него есть некоторые недостатки =)

Всё что ни делается, делается в Китае(SW_Krash, 2009)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x)
OFFTOP SWEAT OFFTOP(фольклор)

 
GENERAL
Проверенные
Сообщений: 60
Реп: 0 / Инв: 5
я знаю мод супер-оружие, там в tweak
 
  • Страница 1 из 1
  • 1
Поиск: