Автор | Сообщение |
FalseMaster Marine
| 50 |
Doom Rate: 3.85
|
Отправлено: 09.02.09 03:07:55 | |
| Недавно мне пришла мысль, использовать подобранные предметы в ZDoom нетрадиционным способом, ну чтобы они не активировались при взятии, а помещались в полосу инвентаря в hud'е. Почитал материал по декорейту и подредактировал описания классов. Вот образец с голубой сферой:
ACTOR Soulsphere : CustomInventory 2013
{
Game Doom
SpawnID 25
+COUNTITEM
+INVENTORY.FANCYPICKUPSOUND
+INVENTORY.INVBAR
Inventory.MaxAmount 16
Inventory.PickupMessage "$GOTSUPER"
Inventory.PickupSound "misc/p_pkup"
Inventory.Icon SOULA0
States
{
Spawn:
SOUL ABCDCB 6 Bright
Loop
Use:
TNT1 A 0 A_GiveInventory("HealthBonus", 100)
Stop
}
}
Всё заработало как я и хотел - при взятии предмет помещается в инвентарь, а затем по мере надобности используется. Но вот незадача, при выбрасывании предмета счётчик "Items" почему-то не уменьшается, а при последующем взятии того же самого выброшенного предмета снова увеличивается - это в случае, если предмет один. Если же количество предметов (одного типа) больше единицы, то при выбрасывании увеличивается счёт находящихся на карте item'ов.
Господа моддеры, если кто знает причину, а ещё лучше способ её устранения, подскажите пожалуйста. | |
|
| |
dukenator Chief Petty Officer
| 972 |
Doom Rate: 1.67
|
Отправлено: 09.02.09 06:37:40 | |
| FalseMaster
Такое уже давно придумали и реализовали, и способ то уже давно не традиционный, а самый обыденный.
А вообще странно, при дропе по идее предмет должен забираться из инвентаря... | |
|
| |
FalseMaster Marine
| 50 |
Doom Rate: 3.85
|
Отправлено: 13.02.09 05:45:03 | |
| Ну японский городовой, неужели так трудно помочь. | |
|
| |
zer0 = Sergeant Major =
| 697 |
Doom Rate: 1.23
|
Отправлено: 13.02.09 12:55:08 | |
| По-моему автор говорит про СЧЕТЧИК предметов, который отмечается в alternative hud в гздуме. А чего ты хотел? Это счетчик. Он показывает сколько ты НАШЕЛ предметов. Почему он должен уменьшаться, если ты использовал предмет? Интересная у тебя логика. Или почему счетчик предметов на карте не должен увеличиваться, если ты его выкинул? На карте ведь появился новый предмет. В Хексене, где такое делается регулярно, статистики предметов вообще нет. Поставь итему -COUNTITEM, и он вообще не будет учитываться статистикой. | |
|
| |
FalseMaster Marine
| 50 |
Doom Rate: 3.85
|
Отправлено: 14.02.09 06:57:43 | |
| zer0 : | Почему он должен уменьшаться, если ты использовал предмет? |
Да я же не про использование (use), а про выкладывание (drop) толкую.
zer0 : | На карте ведь появился новый предмет. |
Ну какой же он новый, по меньшей мере б/у
zer0 : | Поставь итему -COUNTITEM, и он вообще не будет учитываться статистикой. |
Низя, я на очки играю и статистика для меня очень важна.
Кстати, проверил в Heretic'е - то же самое и без всяких модов. По-ходу - это баг в коде самой проги. И всё-таки, может кто-нибудь знает как вывернуться из этого затруднительного положения, а ? | |
|
| |
Nemesis - Master Sergeant -
| 530 |
Doom Rate: 1.36
|
Отправлено: 14.02.09 11:30:06 | |
| FalseMaster : | Ну какой же он новый, по меньшей мере б/у |
он новый т.к. он залез в твой инвентарь т.е. исчез с карты, а когда ты его дропаешь он снова появляется на карте т.е. он новый на мапе | |
|
| |
Guest = 2nd Lieutenant =
| 1572 |
Doom Rate: 1.51
|
Отправлено: 14.02.09 13:30:36 | |
| FalseMaster : | И всё-таки, может кто-нибудь знает как вывернуться из этого затруднительного положения, а ? |
Если я правильно понял, о чем речь, то это лечится "стандартными непрямыми методами". Типа самому айтему флажок, что его не считают, а на карту его спавнить вместе с невидимым актором, который считают, но который ничего не делает и сразу исчезает при взятии. Ну а дропаться будет уже без этого второго. | |
|
3 |
1 |
|
|
| |
Archi Lieutenant Colonel
| 2187 |
Doom Rate: 1.68
|
Отправлено: 14.02.09 16:59:19 | |
| Интересный и оригинальный метод. Я бы до такого не додумался
Но... а если сделать примерно так:
actor ?: item
...
Spawn:
... A_dropInventar(необходимый предмет)
необходимый предмет::item
-countitem
,,,
Вы уж простите, без подложки не могу. А тут могут быть и ошибки(обязаны быть!). | |
|
| |
nprotect = Colonel =
| 2546 |
Doom Rate: 1.48
|
Отправлено: 14.02.09 18:16:11 | |
| Archi : | A_dropInventar(необходимый предмет) |
это чего еще за A_dropInventar ? сам чтоль придумал
Archi : | А тут могут быть и ошибки(обязаны быть!). |
зачем тогда код постить, если в нем "обязаны быть!" ошибки и функцию к тому же черт знает какую писать. а потом аффтар орать будет, "ЧЕ НЕ РАБОТАЕТ ТО?" | |
|
| |
FalseMaster Marine
| 50 |
Doom Rate: 3.85
|
Отправлено: 16.02.09 06:45:47 | |
| Nemesis : | он новый т.к. он залез в твой инвентарь т.е. исчез с карты, а когда ты его дропаешь он снова появляется на карте т.е. он новый на мапе |
Это понятно, но почему тогда, когда он в мой инвентарь залез счёт прибавился, а когда я его выложил счёт не убавился, хотя по логике должен был ?
Guest : | Типа самому айтему флажок, что его не считают, а на карту его спавнить вместе с невидимым актором, который считают, но который ничего не делает и сразу исчезает при взятии. Ну а дропаться будет уже без этого второго. |
Это было бы гениальным решением, если б я не попробовал. Но я попробовал и ни хрена не получилось - то ли стейт "Spawn" в объекте класса "CustomInventory" вообще не обрабатывается, то ли именно функция "A_SpawnItem".
nprotect : | это чего еще за A_dropInventar ? сам чтоль придумал |
A_DropInventory (ничего страшного, бывает )
Короче, как я сразу и подумал, это лажа в самой проге - видать Ренди запутался в 10 метрах исходника (и немудрено). Так что буду действовать по пословице "Умный в гору не пойдёт, умный гору обойдёт", а именно, не буду предметы выкладывать и кнопку, к лешему, разбиндю.
P.S. Полная ж... | |
|
| |
Часовщик - Sergeant Major -
| 643 |
Doom Rate: 1.81
|
Отправлено: 02.03.09 00:33:28 | |
| +INVENTORY.FANCYPICKUPSOUND
+INVENTORY.INVBAR ?
чёто либо я не въехал, либо чё ещё. помоему всегда писалось просто +INVBAR и +FANCYPICKUPSOUND | |
|
| |
nprotect = Colonel =
| 2546 |
Doom Rate: 1.48
|
Отправлено: 02.03.09 09:22:07 | |
| Часовщик : | +INVENTORY.FANCYPICKUPSOUND +INVENTORY.INVBAR ? чёто либо я не въехал, либо чё ещё. помоему всегда писалось просто +INVBAR и +FANCYPICKUPSOUND |
вроде можно и так и так. но лучше приписывать ИНВЕНТОРИ. и в педии тоже с приписками все написано:
http://zdoom.org/wiki/Inventory_flags | |
|
| |
Часовщик - Sergeant Major -
| 643 |
Doom Rate: 1.81
|
Отправлено: 02.03.09 13:57:39 | |
| ну я впринцепе так и думал. | |
|
| |
Michаеlis Recruit
| 22 |
Doom Rate: 2.00
|
Отправлено: 30.07.09 16:19:03 | |
| FalseMaster : | Это было бы гениальным решением, если б я не попробовал. Но я попробовал и ни хрена не получилось - то ли стейт "Spawn" в объекте класса "CustomInventory" вообще не обрабатывается, то ли именно функция "A_SpawnItem". |
Я, конечно, извиняюсь, но ты, часом, в Spawn'e не первым ли кадром действие поставил?
Неверный ход:
Spawn:
TNT1 A -1 A_DropInventory("Megasphere")
Loop
Верный ход:
Spawn:
TNT1 A 0
TNT1 A -1 A_DropInventory("Megasphere")
Loop
Индусский вариант с анимацией:
Spawn:
TNT1 A 0
TNT1 A 0 A_DropInventory("Megasphere")
Stand:
TNT1 ABCB 4
Goto Stand | |
|
| |