Сайт Doom Power
 ПоискПоиск ВходВход
Лажа с дропом инвентаря
   Список разделов - Местечко Мапперов и Моддеров - Лажа с дропом инвентаря
АвторСообщение
FalseMaster
Marine
Next rank: Marine 1st class after 10 points
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
Next rank: Chief Petty Officer after 18 points
972

Doom Rate: 1.67
Сообщение Отправлено: 09.02.09 06:37:40

FalseMaster
Такое уже давно придумали и реализовали, и способ то уже давно не традиционный, а самый обыденный.
А вообще странно, при дропе по идее предмет должен забираться из инвентаря...
1 1
FalseMaster
Marine
Next rank: Marine 1st class after 10 points
50

Doom Rate: 3.85
Сообщение Отправлено: 13.02.09 05:45:03

Ну японский городовой, неужели так трудно помочь.
zer0
= Sergeant Major =
Next rank: UAC Sergeant Major after 63 points
697

Doom Rate: 1.23
Сообщение Отправлено: 13.02.09 12:55:08

По-моему автор говорит про СЧЕТЧИК предметов, который отмечается в alternative hud в гздуме. А чего ты хотел? Это счетчик. Он показывает сколько ты НАШЕЛ предметов. Почему он должен уменьшаться, если ты использовал предмет? Интересная у тебя логика. Или почему счетчик предметов на карте не должен увеличиваться, если ты его выкинул? На карте ведь появился новый предмет. В Хексене, где такое делается регулярно, статистики предметов вообще нет. Поставь итему -COUNTITEM, и он вообще не будет учитываться статистикой.
1
FalseMaster
Marine
Next rank: Marine 1st class after 10 points
50

Doom Rate: 3.85
Сообщение Отправлено: 14.02.09 06:57:43

zer0 :
Почему он должен уменьшаться, если ты использовал предмет?

Да я же не про использование (use), а про выкладывание (drop) толкую.

zer0 :
На карте ведь появился новый предмет.

Ну какой же он новый, по меньшей мере б/у

zer0 :
Поставь итему -COUNTITEM, и он вообще не будет учитываться статистикой.

Низя, я на очки играю и статистика для меня очень важна.

Кстати, проверил в Heretic'е - то же самое и без всяких модов. По-ходу - это баг в коде самой проги. И всё-таки, может кто-нибудь знает как вывернуться из этого затруднительного положения, а ?
Nemesis
- Master Sergeant -
Next rank: = Master Sergeant = after 30 points
530

Doom Rate: 1.36
Сообщение Отправлено: 14.02.09 11:30:06

FalseMaster :
Ну какой же он новый, по меньшей мере б/у

он новый т.к. он залез в твой инвентарь т.е. исчез с карты, а когда ты его дропаешь он снова появляется на карте т.е. он новый на мапе
Guest
= 2nd Lieutenant =
Next rank: - Captain - after 68 points
1572

Doom Rate: 1.51
Сообщение Отправлено: 14.02.09 13:30:36

FalseMaster :
И всё-таки, может кто-нибудь знает как вывернуться из этого затруднительного положения, а ?

Если я правильно понял, о чем речь, то это лечится "стандартными непрямыми методами". Типа самому айтему флажок, что его не считают, а на карту его спавнить вместе с невидимым актором, который считают, но который ничего не делает и сразу исчезает при взятии. Ну а дропаться будет уже без этого второго.
3 1
Archi
Lieutenant Colonel
Next rank: Lieutenant Colonel after 23 points
2187

Doom Rate: 1.68
Сообщение Отправлено: 14.02.09 16:59:19

Интересный и оригинальный метод. Я бы до такого не додумался Smile
Но... а если сделать примерно так:
actor ?: item
...
Spawn:
... A_dropInventar(необходимый предмет)

необходимый предмет::item
-countitem
,,,

Вы уж простите, без подложки не могу. А тут могут быть и ошибки(обязаны быть!).
1 1
nprotect
= Colonel =
Next rank: - Commissar - after 44 points
2546

Doom Rate: 1.48
Сообщение Отправлено: 14.02.09 18:16:11

Archi :
A_dropInventar(необходимый предмет)

это чего еще за A_dropInventar ? сам чтоль придумал

Archi :
А тут могут быть и ошибки(обязаны быть!).

зачем тогда код постить, если в нем "обязаны быть!" ошибки и функцию к тому же черт знает какую писать. а потом аффтар орать будет, "ЧЕ НЕ РАБОТАЕТ ТО?"
1 2
FalseMaster
Marine
Next rank: Marine 1st class after 10 points
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 -
Next rank: = Sergeant Major = after 47 points
643

Doom Rate: 1.81
Сообщение Отправлено: 02.03.09 00:33:28

+INVENTORY.FANCYPICKUPSOUND
+INVENTORY.INVBAR ?
чёто либо я не въехал, либо чё ещё. помоему всегда писалось просто +INVBAR и +FANCYPICKUPSOUND
nprotect
= Colonel =
Next rank: - Commissar - after 44 points
2546

Doom Rate: 1.48
Сообщение Отправлено: 02.03.09 09:22:07

Часовщик :
+INVENTORY.FANCYPICKUPSOUND +INVENTORY.INVBAR ? чёто либо я не въехал, либо чё ещё. помоему всегда писалось просто +INVBAR и +FANCYPICKUPSOUND

вроде можно и так и так. но лучше приписывать ИНВЕНТОРИ. и в педии тоже с приписками все написано:
http://zdoom.org/wiki/Inventory_flags
1 2
Часовщик
- Sergeant Major -
Next rank: = Sergeant Major = after 47 points
643

Doom Rate: 1.81
Сообщение Отправлено: 02.03.09 13:57:39

ну я впринцепе так и думал.
Michаеlis
Recruit
Next rank: Marine after 18 points
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
Страница 1 из 1Перейти наверх
   Список разделов - Местечко Мапперов и Моддеров - Лажа с дропом инвентаря