| Автор | 
		Сообщение | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 02.01.07 15:58:25 | 
				 |  
			
  |  
			Думаю, лучше, если вопросы по оружию будут в отдельной теме - иначе бардак выйдет.
 
Вопрос такой: как заменить кулак в Думе на свое оружие, чтобы давалось автоматически при старте игры.
 
Пишу в декорэйт:
 
ACTOR MyFistX : Weapon replaces Fist
 
далее пишу параметры оружия (кстати, что означают +WEAPON.WIMPY_WEAPON и +WEAPON.MELEEWEAPON?), все как полагается...
 
В KEYCONF настраиваю слот 1 на новое оружие:
 
setslot 1 MyFistX Chainsaw
 
загружаю игру - ничего не меняется    как был кулак, так и остался   
 
В чем дело? |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Tomcat[DST] = UAC Gunner =
   |  | 95 |  
 
  | 
		
			
				  Отправлено: 02.01.07 16:08:08 | 
				 |  
			
  |  
			| Хм... поковыряй True Action. Вдруг чего забыл? |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 02.01.07 16:29:21 | 
				 |  
			
  |  
			True Action ковырял уже... неясно мне там назначение следующих лумпов:
 
LOADACS, ACS, TA_PE (этот вообще не читается в хве).  Может там как-раз собака зарыта? |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		SubFrozen = Master Sergeant =
   |  | 511 |  
 
  | 
		
 | 
      	
	
        
		 |  | 
	
	
		Guest Chief Petty Officer
   |  | 878 |  
 
  | 
		
			
				  Отправлено: 02.01.07 17:11:05 | 
				 |  
			
  |  
			У Decorate есть недостаток, как раз связанный с заменой элементов из изначального набора, поэтому, если коротко, для корректной работы "лишние" элементы нужно изъять, причем сам декорейт такой возможностью не обладает. Есть два способа: с помощью ACS (OPEN и RESPAWN скрипты) и с помощью FRAGGLESCRIPT, который знает Гоззо (lump FSGLOBAL). Есть еще третий способ (полуавтоматический, так  сказать) - с помощью нужного набора консольных команд, которые можно забайндить на кнопку, которую придется нажимать при каждом старте (этот способ хорош как подстраховка на случай конфликта первых двух с начинкой подгружаемых карт - в этом смысле они не абсолютны).
 
 
Способ №1: http://forum.drdteam.org/viewtopic.php?t=2054
 
Способ №2: http://forum.drdteam.org/viewtopic.php?t=1202
 
 
Лично я опять склоняюсь к FSGLOBAL, но это очасти продиктовано спецификой некоторых пока нереализованных до конца задумок.
 
 
 
 	  | Shadowman : | 	 		  | TA_PE (этот вообще не читается в хве) | 	  
 
И не должен, ибо это уже откомнилированный ACS скрипт; неоткомпилированный там лежит как комментарий, если угодно, Здум его не использует.
 
 
 	  | Shadowman : | 	 		  | (кстати, что означают +WEAPON.WIMPY_WEAPON и +WEAPON.MELEEWEAPON?),  | 	  
 
Сугубо оружейные флаги прилагаются отдельным списком, можно посмотреть здесь:
 
http://www.zdoom.org/wiki/index.php?title=Classes:Weapon |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 02.01.07 18:23:20 | 
				 |  
			
  |  
			Попробовал по первому способу - создал скрипт, откомпилил, вставил в вад (согласно инструкции).
 
При запуске пишет:
 
ACS: I don't know what MyFistX is // то есть не понимает нового оружия MyFistX
 
пистолет и кулак пропали, но взамен ничего не появилось. Если же набрать idkfa то будет стандартный думовский набор.
 
Что за фигня?    |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Guest Chief Petty Officer
   |  | 878 |  
 
  | 
		
			
				  Отправлено: 02.01.07 18:33:00 | 
				 |  
			
  |  
			| Ну для начала привел бы текст твоего ACS, заочно тут ничего сказать нельзя. Да и декорейт текст тоже не помешал бы. |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 02.01.07 18:44:12 | 
				 |  
			
  |  
			Тескт ACS:
 
#library "IWEAP" 
 
#include "zcommon.acs" 
 
 
Script 1 ENTER 
 
{ 
 
If(Checkinventory("QuestItem1") < 1) 
 
{ 
 
   clearinventory(); 
 
      giveinventory("MyFistX", 1); 
 
      giveinventory("QuestItem1",1); 
 
      setweapon("MyFistX"); 
 
} 
 
} 
 
 
Script 2 RESPAWN 
 
{ 
 
      clearinventory(); 
 
      giveinventory("MyFistX", 1); 
 
      giveinventory("QuestItem1",1); 
 
      setweapon("MyFistX"); 
 
}
 
 
Декорэйт-описание MyFistX:
 
ACTOR MyFistX : Fist replaces Fist
 
  {  
 
     Weapon.SelectionOrder 200
 
     Inventory.PickupMessage ""
 
     Inventory.PickupSound "" 
 
     weapon.upsound ""
 
     weapon.readysound ""
 
     Weapon.AmmoUse2 0
 
     Weapon.AmmoUse 0
 
     +FloatBob
 
     Scale 0.40
 
     RenderStyle ADD
 
     Alpha 0.80
 
     Weapon.Kickback 30
 
     AttackSound "" 
 
     States 
 
     { 
 
     Ready: 
 
        PUNG A 1 A_WeaponReady
 
        LOOP
 
     Deselect: 
 
        PUNG A 1 A_Lower 
 
        LOOP 
 
     Select: 
 
        PUNG A 1 A_Raise
 
        LOOP
 
     Fire: 
 
        PUNG B 4
 
        PUNG C 4 A_PlaySound("weap/swing")
 
        PUNG D 5 A_CustomPunch(2,0,1,NONE,24)
 
        PUNG E 4 A_Refire
 
        Goto Ready
 
	}
 
}
 
 
В KEYCONF настроен на слот 1.
 
setslot 1 MyFistX |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Guest Chief Petty Officer
   |  | 878 |  
 
  | 
		
			
				  Отправлено: 02.01.07 19:19:22 | 
				 |  
			
  |  
			Я честно воспроизвел и у меня работает. Может, у тебя старая версия порта (на страничке с описанием метода вначале указаны нужные версии)?
 
ЗЫ: Версию АСС тоже проверь, все это довольно новая кухня. |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 02.01.07 19:45:36 | 
				 |  
			
  |  
			У меня GZDoom 1.0.18,  acc 1.37 (тот, что в Дум Билдере присутствует).
 
Значит, в самом Декорэйте ошибок нет? Странно тогда...
 
 
PS. Обнаружил у себя acc 1.40 в одтельной папке. Надо будет проверить ее... |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 02.01.07 20:19:39 | 
				 |  
			
  |  
			Блин, ну какой же я    
 
Это ж надо было - декорэйт, сндинфо и кейконф ставить после маркера SS_Start   
 
Переставил на место после закрывающего маркера SS_End и все заработало! |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		MarderIII = 1st Lieutenant =
   |  | 1238 |  
 
  | 
		
			
				  Отправлено: 02.01.07 20:32:54 | 
				 |  
			
  |  
			| Во-во первым делом всё проверь! Не надо торопится при работе со скриптами и кодом.Из-за торопни ничего дельного не будет. |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Guest Chief Petty Officer
   |  | 878 |  
 
  | 
		
			
				  Отправлено: 02.01.07 20:40:24 | 
				 |  
			
  |  
			 	  | Shadowman : | 	 		  | Блин, ну какой же я | 	  
 
Осталось Keyconf правильно написать (если, конечно, ты его целиком привел). И для кулака (коль скоро ты все стейты полностью прописываешь) я бы написал проще:
 
 
не ACTOR MyFistX : Fist replaces Fist , а ACTOR MyFistX : weapon ибо ты ничего не замещаешь (replaces подразумевает полное замещение - типа если в консоли пишешь summon fist, чтоб при этом выпадал MyFistX) и ничего не "наследуешь" (ибо все стейты и свойства ты прописываешь заново; а так непротиворечивые прописанному флажки и свойства по умолчанию скопируются, мне кажется ты этого не подразумевал), так и не зачем усложнять ситуацию. |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 02.01.07 21:02:52 | 
				 |  
			
  |  
			Guest
 
Про наследование и замещение - спасибо, пояснил подробно.
 
С оружием я еще буду работать (с самой его физикой), просто мне нужно было разобраться с главным - заменой оригинальных кулака и пистолета, теперь наконец-то разобрался.   
 
заодно хотел бы прояснить одну вещь.
 
A_CustomPunch(2,0,1,NONE,24)
 
Второй аргумент - булевая переменная norandom (на 0 - значит будет случайный урон? от 0 до 2 что ли?)
 
Последний аргумент - range - зона досягаемости. В каких единицах она измеряется - в маппикселях?
 
 
ЗЫ. И еще - у некоторых вепонов есть номера, у некоторых нет. Номера нужны для подбираемых оружий, которые изначально не даются? |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Guest Chief Petty Officer
   |  | 878 |  
 
  | 
		
			
				  Отправлено: 02.01.07 21:41:56 | 
				 |  
			
  |  
			 	  | Shadowman : | 	 		  | A_CustomPunch(2,0,1,NONE,24)  | 	  
 
Лучше у Кости спроси, я как правило нужного результата по причине лени добиваюсь эмпирическим путем    , хотя, может и зря.
 
 
 	  | Shadowman : | 	 		  | И еще - у некоторых вепонов есть номера, у некоторых нет. Номера нужны для подбираемых оружий, которые изначально не даются? | 	  
 
Ну, номера бывают разные. Есть spawnid - внутредумовская нумерация (которую можно юзать в консольных командах), а есть цифирьки, которые пишутся в строке наименования актора - это, грубо говоря, для ДумБильдера, Здуму он нафиг не сдался   |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Const - Master Corporal -
   |  | 274 |  
 
  | 
		
			
				  Отправлено: 02.01.07 22:05:03 | 
				 |  
			
  |  
			 	  | Guest : | 	 		  | Лучше у Кости спроси, я как правило нужного результата по причине лени добиваюсь эмпирическим путем  | 	  
 
Я немного отошел от дел. Source Insight до сих обратно не поставил. Так что можно считать я в равных условиях |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 03.01.07 01:46:50 | 
				 |  
			
  |  
			Guest
 
Я про цифирьки как раз что после Актора. Спаунид отдельно пишется - это я помню.
 
Просто для кулака и пистолета цифирек нет, так как их в игре негде "взять" с пола   
 
 
 	  | Costja : | 	 		  | Так что можно считать я в равных условиях | 	  
 
Значит про лечащее оружие тоже ничего рассказать не сможешь? |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Const - Master Corporal -
   |  | 274 |  
 
  | 
		
			
				  Отправлено: 03.01.07 02:02:10 | 
				 |  
			
  |  
			Нет, лишь что мне доступны те же источники информации. Некоторая инфа о zdoom до сих пор доступна только по исходнику, поэтому еще раз рекомендую поставить какой-нибудь браузер исходников + натравить его на исходник нужного zdoom/gzdoom.
 
 
Лечащее оружие вроде бы прекрасно делается при помощи отрицательного урона.
 
 
Насчет A_CustomPunch я похоже невнимательно прочитал сам пост, тут вроде и по докам все понятно:
 
Первый параметр - наносимый ущерб
 
Второй параметр - случайный ли наносится ущерб, если удается попасть. Случайность = damaga*random(1,8). 0 - случайный, не0 - неслучайный
 
Третий параметр - использовать ли патроны. 0 - использовать, не0 - не использовать.
 
Четвертый - имя класса паффа
 
Пятый - дистанция, наверняка в мапюнитах |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 03.01.07 15:44:19 | 
				 |  
			
  |  
			Вопрос по снарядам. Почему-то они у меня летят хрен знает куда...
 
Вот кусок декорэйта оружия:
 
		FAMN K 4 A_CustomMissile("LightingBolt1",32,0,0,1)
 
Далее описание снарядов:
 
ACTOR LightingBolt1
 
{
 
      Speed 4
 
      Damage 2
 
      Radius 15
 
      Height 15
 
      Scale 0.6
 
      PROJECTILE
 
      DONTHURTSHOOTER
 
      States
 
      	{
 
      	Spawn:
 
         	BLT1 AB 4 Bright
 
         	BLT1 A 4 A_CustomMissile("LightBolt1Explode",0,0,0)
 
         	Stop
 
      	Death:
 
      	 	BLT1 CDEFG 4 Bright
 
         	Stop
 
      	}    
 
}
 
 
ACTOR LightBolt1Explode
 
{
 
	RENDERSTYLE ADD
 
    	ExplosionDamage 3
 
    	ExplosionRadius 32
 
	Radius 15
 
	Height 15
 
	Speed 0
 
	Scale 0.6
 
	PROJECTILE
 
	+PUFFONACTORS
 
	+NOCLIP
 
   States
 
   	{
 
   	Spawn:
 
   		BLT1 C 4 A_Explode
 
   		BLT1 DEFG 4 Bright
 
   		Stop
 
   	}
 
}
 
Еще почему-то при попытке произвести альтернативную атаку - если нет патронов - игра вылетает (у меня обычная атака не требует патронов, альтернативная - требует). Как сделать проверку на наличие патронов для альт.атаки?
 
В декорэйте указал:
 
	Weapon.ammotype2 "Clip"
 
	Weapon.ammouse1 0
 
	Weapon.ammouse2 2 |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Guest Chief Petty Officer
   |  | 878 |  
 
  | 
		
			
				  Отправлено: 03.01.07 18:17:23 | 
				 |  
			
  |  
			| Готового решения навскидку нет - не мог бы нужный кусок вада залить, чтоб я мог повертеть в руках? |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 03.01.07 19:18:33 | 
				 |  
			
  |  
			Guest
 
Отправил вад (см. личку).
 
вроде получилось-наконец - но все ж думаю, ты мог бы посмотреть - может посоветуешь чего. |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Reiko = Lance Corporal =
   |  | 210 |  
 
  | 
		
			
				  Отправлено: 18.01.07 18:58:58 | 
				 |  
			
  |  
			Я тут топорик для Doom сделал
 
		  actor hammer : Weapon 7005
 
{
 
  spawnid 220
 
  obituary "%o was mowed over by %k's chainsaw."
 
  radius 20
 
  height 16
 
  damage 200
 
  inventory.pickupmessage "A chainsaw!  Find some meat!"
 
  weapon.selectionorder 2200
 
  weapon.upsound "weapons/sawup"
 
  weapon.readysound "weapons/sawidle"
 
  +WEAPON.MELEEWEAPON
 
  states
 
  {
 
  Ready:
 
    HAMR A 4 A_WeaponReady
 
    loop
 
  Deselect:
 
    HAMR A 1 A_Lower
 
    loop
 
  Select:
 
    HAMR A 1 A_Raise
 
    loop
 
  Fire:
 
    HAMR BCDEFGHI 5 
 
    HAMR J 9 A_Punch
 
    HAMR IHGFEDCBA 5 A_ReFire
 
    goto Ready
 
  Spawn:
 
    HAMR A -1
 
    stop
 
  }
 
}
 
 | 	  
 
Как мне его усилить?( А то он бъет как кулак) |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Const - Master Corporal -
   |  | 274 |  
 
  | 
		
			
				  Отправлено: 18.01.07 19:08:48 | 
				 |  
			
  |  
			| Попробуй использовать A_CustomPunch |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Reiko = Lance Corporal =
   |  | 210 |  
 
  | 
		
			
				  Отправлено: 18.01.07 19:31:19 | 
				 |  
			
  |  
			Costja
 
сенкс   |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Reiko = Lance Corporal =
   |  | 210 |  
 
  | 
		
			
				  Отправлено: 18.01.07 19:50:34 | 
				 |  
			
  |  
			Я когда приписал росле  	   |  	 		  Fire: 
 
    HAMR BCDEFGHI 5 
 
    HAMR J 9 A_Punch 
 
    HAMR IHGFEDCBA 5 A_ReFire 
 
    goto Ready 
 
 | 	   Следующее:
 
 	   |  	 		  AltFire:
 
    HAMR K 1 A_SetReflectiveInvulnerable 
 
    goto Ready    | 	  
 
И после этого я стал непробиваемым! Как сделать так, чтобы только после нажатия Secondary fire включалась защита? |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Shadowman - Captain -
   |  | 1482 |  
 
  | 
		
			
				  Отправлено: 18.01.07 19:54:42 | 
				 |  
			
  |  
			Shinnok
 
У тебя в альтернативной атаке запись на неуязвимость, но нет записи на снятие этой неуязвимости... |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Reiko = Lance Corporal =
   |  | 210 |  
 
  | 
		
			
				  Отправлено: 18.01.07 20:05:52 | 
				 |  
			
  |  
			Shadowman
 
А как написать ее?
 
(http://doom2.3dn.ru/load/  - здесь можно скачать мой топор, активируется в консоли give hammer) |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Const - Master Corporal -
   |  | 274 |  
 
  | 
		
			
				  Отправлено: 18.01.07 20:28:38 | 
				 |  
			
  |  
			| Shinnok, A_UnSetReflectiveInvulnerable |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		Reiko = Lance Corporal =
   |  | 210 |  
 
  | 
		
			
				  Отправлено: 18.01.07 20:38:52 | 
				 |  
			
  |  
			Costja
 
 	   |  	 		  AltFire: 
 
HAMR K 1 A_SetReflectiveInvulnerable 
 
HAMR K 1 A_UnSetReflectiveInvulnerable
 
goto Ready  | 	  Так? |  
 |  
  | 
      	
	
        
		 |  | 
	
	
		nprotect = Warrant Officer =
   |  | 997 |  
 
  | 
		
			
				  Отправлено: 18.01.07 20:57:41 | 
				 |  
			
  |  
			Shinnok
 
так, только защита будет ставиться на 1 тик, тебе это вряд ли поможет    |  
 |  
  | 
      	
	
        
		 |  |