Сайт Doom Power
 ПоискПоиск  ДумерыДумеры ВходВход
Создание нового оружия в (г)здуме 1, 2, 3, 4, 5, 6  След.
   Список разделов - Местечко Мапперов и Моддеров - Создание нового оружия в (г)здуме
Автор Сообщение
Shadowman
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 02.01.07 15:58:25

Думаю, лучше, если вопросы по оружию будут в отдельной теме - иначе бардак выйдет.
Вопрос такой: как заменить кулак в Думе на свое оружие, чтобы давалось автоматически при старте игры.
Пишу в декорэйт:
ACTOR MyFistX : Weapon replaces Fist
далее пишу параметры оружия (кстати, что означают +WEAPON.WIMPY_WEAPON и +WEAPON.MELEEWEAPON?), все как полагается...
В KEYCONF настраиваю слот 1 на новое оружие:
setslot 1 MyFistX Chainsaw
загружаю игру - ничего не меняется Crying or Very sad как был кулак, так и остался Crying or Very sad
В чем дело?
Tomcat[DST]
= UAC Gunner =
Next rank: (- Corporal -) after 10 messages
100

Сообщение Отправлено: 02.01.07 16:08:08

Хм... поковыряй True Action. Вдруг чего забыл?
Shadowman
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 02.01.07 16:29:21

True Action ковырял уже... неясно мне там назначение следующих лумпов:
LOADACS, ACS, TA_PE (этот вообще не читается в хве). Может там как-раз собака зарыта?
SubFrozen
- Master Sergeant -
Next rank: (= Master Sergeant =) after 2 messages
498

Сообщение Отправлено: 02.01.07 16:54:16

Через лумп loadacs загружается скрипт
В ww-diaz посмотри, там декорейт понятнее
http://iddqd.ru/mods.php?page=29&port=any&a...;auth=all#WW-Diaz
Guest
= Warrant Officer =
Next rank: (- 1st Lieutenant -) after 42 messages
1028

Сообщение Отправлено: 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
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 02.01.07 18:23:20

Попробовал по первому способу - создал скрипт, откомпилил, вставил в вад (согласно инструкции).
При запуске пишет:
ACS: I don't know what MyFistX is // то есть не понимает нового оружия MyFistX
пистолет и кулак пропали, но взамен ничего не появилось. Если же набрать idkfa то будет стандартный думовский набор.
Что за фигня? Crying or Very sad
Guest
= Warrant Officer =
Next rank: (- 1st Lieutenant -) after 42 messages
1028

Сообщение Отправлено: 02.01.07 18:33:00

Ну для начала привел бы текст твоего ACS, заочно тут ничего сказать нельзя. Да и декорейт текст тоже не помешал бы.
Shadowman
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 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
= Warrant Officer =
Next rank: (- 1st Lieutenant -) after 42 messages
1028

Сообщение Отправлено: 02.01.07 19:19:22

Я честно воспроизвел и у меня работает. Может, у тебя старая версия порта (на страничке с описанием метода вначале указаны нужные версии)?
ЗЫ: Версию АСС тоже проверь, все это довольно новая кухня.
Shadowman
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 02.01.07 19:45:36

У меня GZDoom 1.0.18, acc 1.37 (тот, что в Дум Билдере присутствует).
Значит, в самом Декорэйте ошибок нет? Странно тогда...

PS. Обнаружил у себя acc 1.40 в одтельной папке. Надо будет проверить ее...
Shadowman
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 02.01.07 20:19:39

Блин, ну какой же я
Это ж надо было - декорэйт, сндинфо и кейконф ставить после маркера SS_Start
Переставил на место после закрывающего маркера SS_End и все заработало!
MarderIII
= 1st Lieutenant =
Next rank: (- 2nd Lieutenant -) after 28 messages
1222

Сообщение Отправлено: 02.01.07 20:32:54

Во-во первым делом всё проверь! Не надо торопится при работе со скриптами и кодом.Из-за торопни ничего дельного не будет.
Guest
= Warrant Officer =
Next rank: (- 1st Lieutenant -) after 42 messages
1028

Сообщение Отправлено: 02.01.07 20:40:24

Shadowman :
Блин, ну какой же я

Осталось Keyconf правильно написать (если, конечно, ты его целиком привел). И для кулака (коль скоро ты все стейты полностью прописываешь) я бы написал проще:

не ACTOR MyFistX : Fist replaces Fist , а ACTOR MyFistX : weapon ибо ты ничего не замещаешь (replaces подразумевает полное замещение - типа если в консоли пишешь summon fist, чтоб при этом выпадал MyFistX) и ничего не "наследуешь" (ибо все стейты и свойства ты прописываешь заново; а так непротиворечивые прописанному флажки и свойства по умолчанию скопируются, мне кажется ты этого не подразумевал), так и не зачем усложнять ситуацию.
Shadowman
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 02.01.07 21:02:52

Guest
Про наследование и замещение - спасибо, пояснил подробно.
С оружием я еще буду работать (с самой его физикой), просто мне нужно было разобраться с главным - заменой оригинальных кулака и пистолета, теперь наконец-то разобрался. Smile
заодно хотел бы прояснить одну вещь.
A_CustomPunch(2,0,1,NONE,24)
Второй аргумент - булевая переменная norandom (на 0 - значит будет случайный урон? от 0 до 2 что ли?)
Последний аргумент - range - зона досягаемости. В каких единицах она измеряется - в маппикселях?

ЗЫ. И еще - у некоторых вепонов есть номера, у некоторых нет. Номера нужны для подбираемых оружий, которые изначально не даются?
Guest
= Warrant Officer =
Next rank: (- 1st Lieutenant -) after 42 messages
1028

Сообщение Отправлено: 02.01.07 21:41:56

Shadowman :
A_CustomPunch(2,0,1,NONE,24)

Лучше у Кости спроси, я как правило нужного результата по причине лени добиваюсь эмпирическим путем Very Happy , хотя, может и зря.

Shadowman :
И еще - у некоторых вепонов есть номера, у некоторых нет. Номера нужны для подбираемых оружий, которые изначально не даются?

Ну, номера бывают разные. Есть spawnid - внутредумовская нумерация (которую можно юзать в консольных командах), а есть цифирьки, которые пишутся в строке наименования актора - это, грубо говоря, для ДумБильдера, Здуму он нафиг не сдался
Const
- Master Corporal -
Next rank: (= Master Corporal =) after 36 messages
254

Сообщение Отправлено: 02.01.07 22:05:03

Guest :
Лучше у Кости спроси, я как правило нужного результата по причине лени добиваюсь эмпирическим путем

Я немного отошел от дел. Source Insight до сих обратно не поставил. Так что можно считать я в равных условиях
Shadowman
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 03.01.07 01:46:50

Guest
Я про цифирьки как раз что после Актора. Спаунид отдельно пишется - это я помню.
Просто для кулака и пистолета цифирек нет, так как их в игре негде "взять" с пола Smile

Costja :
Так что можно считать я в равных условиях

Значит про лечащее оружие тоже ничего рассказать не сможешь?
Const
- Master Corporal -
Next rank: (= Master Corporal =) after 36 messages
254

Сообщение Отправлено: 03.01.07 02:02:10

Нет, лишь что мне доступны те же источники информации. Некоторая инфа о zdoom до сих пор доступна только по исходнику, поэтому еще раз рекомендую поставить какой-нибудь браузер исходников + натравить его на исходник нужного zdoom/gzdoom.

Лечащее оружие вроде бы прекрасно делается при помощи отрицательного урона.

Насчет A_CustomPunch я похоже невнимательно прочитал сам пост, тут вроде и по докам все понятно:
Первый параметр - наносимый ущерб
Второй параметр - случайный ли наносится ущерб, если удается попасть. Случайность = damaga*random(1,8). 0 - случайный, не0 - неслучайный
Третий параметр - использовать ли патроны. 0 - использовать, не0 - не использовать.
Четвертый - имя класса паффа
Пятый - дистанция, наверняка в мапюнитах
Shadowman
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 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
= Warrant Officer =
Next rank: (- 1st Lieutenant -) after 42 messages
1028

Сообщение Отправлено: 03.01.07 18:17:23

Готового решения навскидку нет - не мог бы нужный кусок вада залить, чтоб я мог повертеть в руках?
Shadowman
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 03.01.07 19:18:33

Guest
Отправил вад (см. личку).
вроде получилось-наконец - но все ж думаю, ты мог бы посмотреть - может посоветуешь чего.
Reiko
= Lance Corporal =
Next rank: (- Master Corporal -) after 33 messages
217

Сообщение Отправлено: 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 -
Next rank: (= Master Corporal =) after 36 messages
254

Сообщение Отправлено: 18.01.07 19:08:48

Попробуй использовать A_CustomPunch
Reiko
= Lance Corporal =
Next rank: (- Master Corporal -) after 33 messages
217

Сообщение Отправлено: 18.01.07 19:31:19

Costja
сенкс Surprised
Reiko
= Lance Corporal =
Next rank: (- Master Corporal -) after 33 messages
217

Сообщение Отправлено: 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
Lieutenant Colonel
Next rank: (- Colonel -) after 105 messages
1985

Сообщение Отправлено: 18.01.07 19:54:42

Shinnok
У тебя в альтернативной атаке запись на неуязвимость, но нет записи на снятие этой неуязвимости...
Reiko
= Lance Corporal =
Next rank: (- Master Corporal -) after 33 messages
217

Сообщение Отправлено: 18.01.07 20:05:52

Shadowman
А как написать ее?
(http://doom2.3dn.ru/load/ - здесь можно скачать мой топор, активируется в консоли give hammer)
Const
- Master Corporal -
Next rank: (= Master Corporal =) after 36 messages
254

Сообщение Отправлено: 18.01.07 20:28:38

Shinnok, A_UnSetReflectiveInvulnerable
Reiko
= Lance Corporal =
Next rank: (- Master Corporal -) after 33 messages
217

Сообщение Отправлено: 18.01.07 20:38:52

Costja

AltFire:
HAMR K 1 A_SetReflectiveInvulnerable
HAMR K 1 A_UnSetReflectiveInvulnerable
goto Ready
Так?
nprotect
= 1st Lieutenant =
Next rank: (- 2nd Lieutenant -) after 11 messages
1239

Сообщение Отправлено: 18.01.07 20:57:41

Shinnok
так, только защита будет ставиться на 1 тик, тебе это вряд ли поможет Mad
Страница 1 из 6 Перейти наверх 1, 2, 3, 4, 5, 6  След.
   Список разделов - Местечко Мапперов и Моддеров - Создание нового оружия в (г)здуме

© phpbb.com