Автор | Сообщение |
Archi]ASTS[ UAC General
 | 12719 |
 Doom Rate: 1.87
|
Отправлено: 11.08.12 08:51:16 | | |  | |
|
2 |
1 |
1 |
 |
|
| |
Ameba - Major -
 | 2837 |
 Doom Rate: 2.32
|
Отправлено: 11.08.12 09:42:51 | | | Archi
Спасибо. | |
|
2 |
1 |
1 |
 |
|
| |
LEX SAFONOV UAC Sergeant Major
 | 685 |
 Doom Rate: 1.49
|
Отправлено: 11.08.12 10:52:52 | | | Igror : | 2. Как сделать перезарядку оружиям на кнопку (а не по истечению патронов)? |
Выделяешь клавишу перезарядки в лампе KEYCONF.
А именно:
addkeysection "My Mod Section" My_Mod
addmenukey "Reload" +reload
alias +reload "use ReloadActive"
alias -reload "use ReloadDeactive"
defaultbind r +reload
Смысл:
Мы выделили отдельную секцию в меню клавиш (addkeysection "My Mod Section" My_Mod) и добавили в эту секцию свою собственную клавишу(addmenukey "Reload" +reload).
Вот эти две строки:
alias +reload "use ReloadActive"
alias -reload "use ReloadDeactive"
отвечают за поведение нашей клавиши при её нажатии и ненажатии, а именно - когда наша клавиша нажата, то выполняется alias +reload "use ReloadActive", а когда не нажата, то выполняется alias -reload "use ReloadDeactive.
Теперь по подробнее о этих двух строках.
use ReloadActive - активируется итем ReloadActive. В этом итеме у нас следующая конструкция:
Actor ReloadActive : CustomInventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
-INVBAR
States
{
Use:
TNT1 A 0 A_GiveInventory("Reload",1)
Fail
}
}
Как видно это кастомная инвентория, и при активации онной выдаётся у нас другая инвентория(Reload) , только простая ибо она только для проверки значения.
use ReloadDeactive - активируется тоже итем. Вот его конструкция:
Actor ReloadDeactive : CustomInventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
-INVBAR
States
{
Use:
TNT1 A 0 A_TakeInventory("Reload",1)
Fail
}
}
Тоже кастомная инвентория, только она отнимает у нас Reload.
Сам Reload наконец:
Actor Reload : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
-INVBAR
}
И так смысл всего этого текста:
Как я писал выше, когда мы жамкаем клавишу перезарядки, то выполняется alias +reload "use ReloadActive", а когда не жамкаем, то выполняется alias -reload "use ReloadDeactive".
В оружии в стейте Ready тебе нужно будет проверять значение инвентории Reload, через A_JumpIfInventory. Например A_JumpIfInventory("Reload", 1, "Reload")
Под самый конец - чтобы эта байда работала, нужно менять плеер класс, а именно выдать при старте игры 2 итема: ReloadActive и ReloadDeactive.
Player.StartItem ReloadActive
Player.StartItem ReloadDeactive
Вроде всё. | |
|
| |
Jurijus - Master Sergeant -
 | 436 |
 Doom Rate: 0.16
|
Отправлено: 11.08.12 17:59:56 | | | Как сделать звук, проигрывающийся по всему уровню на полной громкости, но только один раз?
AmbiendSound дает бесконечный луп. | |
|
| |
Black Samurai Banned flooder
 | 106 |
 Doom Rate: 1.39
|
Отправлено: 11.08.12 20:25:47 | | | ActivatorSound?.. И даже по всему уровню не надо тогда. В любом случае услышишь. | |
|
| |
Jurijus - Master Sergeant -
 | 436 |
 Doom Rate: 0.16
|
Отправлено: 11.08.12 21:07:39 | | | Black Samurai
Надо чтобы все игроки слышали. | |
|
| |
Black Samurai Banned flooder
 | 106 |
 Doom Rate: 1.39
|
Отправлено: 11.08.12 21:37:45 | | | http://zdoom.org/wiki/AmbientSound
Где ты там увидел бесконечный луп, не знаю. В статье написано, что приведенный пример даёт один звук.
Возможно у тебя в SNDINFO указан повтор. | |
|
| |
Jurijus - Master Sergeant -
 | 436 |
 Doom Rate: 0.16
|
Отправлено: 11.08.12 22:27:54 | | | Black Samurai : | Где ты там увидел бесконечный луп |
Попробовал, блеать!
Black Samurai : | Возможно у тебя в SNDINFO указан повтор. |
$random piano { piano1 piano2 piano3 }
piano1 dspiano1
piano2 dspiano2
piano3 dspiano3 | |
|
| |
Black Samurai Banned flooder
 | 106 |
 Doom Rate: 1.39
|
|
| |
Jurijus - Master Sergeant -
 | 436 |
 Doom Rate: 0.16
|
|
| |
Black Samurai Banned flooder
 | 106 |
 Doom Rate: 1.39
|
Отправлено: 12.08.12 02:01:07 | | | Нет, не так. Я проигрываю звук в внутреннем формате DooM, а ты проигрываешь WAV. Попробуй конвертнуть в другой формат, поможет (мне помогло). | |
|
| |
Jurijus - Master Sergeant -
 | 436 |
 Doom Rate: 0.16
|
Отправлено: 12.08.12 02:59:52 | | | Black Samurai
Огромное спасибо, теперь все играет
Никогда бы не подумал, что формат файла имеет какую-то роль.
Добавлено спустя 18 часов 33 минуты 39 секунд:
Как сделать счетчик убийств одного игрока отдельно от остальных?
То есть чтобы скрипт сканировал, сколько убийств сделал один отдельный игрок (и показывал это число), а потом сканировал убийства всех остальных кроме него (и это тоже показывал)? | |
|
| |
Black Samurai Banned flooder
 | 106 |
 Doom Rate: 1.39
|
Отправлено: 12.08.12 23:48:17 | | | Делаешь массив из 64(?, вроде максимум) int'ов, дальше по номеру игрока записываешь. При выходе игрока не забудь обнулять только. Или сделай два int'а и записывай убийства в первый или второй в зависимости от игрока, который умер. | |
|
| |
Jurijus - Master Sergeant -
 | 436 |
 Doom Rate: 0.16
|
Отправлено: 13.08.12 00:38:34 | | |
Аэыэ?!
Black Samurai : | сделай два int'а и записывай убийства в первый или второй в зависимости от игрока, который умер |
Что-то я не понимаю ©, а как тогда игра узнает, убил один игрок или другой? | |
|
| |
Igror = Corporal =
 | 108 |
Doom Rate: 1.89
|
Отправлено: 13.08.12 15:59:25 | | | Возможно ли сделать такой предмет (из инвентаря), который будет работать на виду игрока при активации (достается, используется, убирается и меняется на предыдущее оружие). | |
|
| |
Black Samurai Banned flooder
 | 106 |
 Doom Rate: 1.39
|
Отправлено: 13.08.12 17:04:18 | | |
http://zdoom.org/wiki/Arrays
FLYBAT : | Что-то я не понимаю ©, а как тогда игра узнает, убил один игрок или другой? |
Ну вот смотри, если убит не этот другой игрок, значит он сам убил кого-то.
Igror : | Возможно ли сделать такой предмет (из инвентаря), который будет работать на виду игрока при активации (достается, используется, убирается и меняется на предыдущее оружие). |
Syntax error at line 0 near "на виду игрока". | |
|
| |
Jurijus - Master Sergeant -
 | 436 |
 Doom Rate: 0.16
|
Отправлено: 13.08.12 17:36:31 | | | Black Samurai : | Ну вот смотри, если убит не этот другой игрок, значит он сам убил кого-то. |
Нихера не понял
Black Samurai : | Syntax error at line 0 near "на виду игрока". |
XD
Script "Using na vidu igroka"
{
if (GetPlayerInput (use))
{
TakeInventory(%item%);
GiveInventory("Using%item%");
PlayUsingAnimation(once,tillend);
TakeInventory("Using%item%");
}
else
{
Delay(sekunda/4);
loop;
}
}
Добавлено спустя 7 минут 35 секунд:
Короче я сделал так:
| Death:
PLAY # # A_GiveToTarget("Kill",1) |
| Script 3 Death
{
if(CheckInventory("EliminatorToken") == 1)
{
AmbientSound("win", 127);
SetPlayerProperty(1,1,PROP_TOTALLYFROZEN);
SetFont("BIGFONT");
HUDMessageBold(n:randomplayervariable + 1, s:" LOST!"; HUDMSG_PLAIN, 0, CR_WHITE, 0.5, 0.1, 0);
Delay(35*3);
SetFont("CONSOLEFONT");
HUDMessageBold(s:"Total deaths:"; HUDMSG_PLAIN, 0, CR_RED, 0.5, 0.2, 0);
Delay(35);
HUDMessageBold(d:kills; HUDMSG_PLAIN, 0, CR_WHITE, 0.5, 0.225, 0);
Delay(70);
HUDMessageBold(s:"Eliminator kills:"; HUDMSG_PLAIN, 0, CR_RED, 0.5, 0.3, 0);
Delay(35);
HUDMessageBold(d CheckActorInventory(randomplayervariable,"Kill")), s: " out of ", d:kills; HUDMSG_PLAIN, 0, CR_WHITE, 0.5, 0.325, 0);
Delay(70);
SetPlayerProperty(1,0,PROP_TOTALLYFROZEN);
Exit_Normal(0);
} |
Не работает! При выигрыше/проигрыше Eliminator'а показывает "0 out of #".
Что не так? | |
|
| |
Black Samurai Banned flooder
 | 106 |
 Doom Rate: 1.39
|
|
| |
Jurijus - Master Sergeant -
 | 436 |
 Doom Rate: 0.16
|
Отправлено: 14.08.12 00:54:39 | | | Black Samurai
Спасибо. Похоже, эту функцию можно как-то использовать.
Добавлено спустя 5 минут 32 секунды:
Все равно показывает 0 out of #.
Добавлено спустя 16 минут 29 секунд:
HELL YEAH!
Все работает, спасибо  | |
|
| |
c4tnt = 1st Lieutenant =
 | 1879 |
 Doom Rate: 1.92
|
Отправлено: 14.08.12 05:26:32 | | | | Похоже, эту функцию можно как-то использовать. |
хм... ну я ж писал про это чуть выше. В общем вызываешь эту функцию в death скрипте и с этого момента у скрипта активатор больше не умерший игрок, а тот, кто его убил. После этого желательно сделать ещё это: http://zdoom.org/wiki/ClassifyActor чтобы убедиться, что активатор не стал картой (да, некоторые штуковины на карте тоже убивают плееров). После этого всё, что будет вызвано в скрипте с тидом 0 (для активатора), достанется уже не самому убитому плееру, а тому, кто его убил. В частности, можно проверить его тид, сравнить с тидом злодея и делать выводы. | |
|
| |