Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... 164, 165, 166, 167, 168, 169  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
DOOMFOREVER
- UAC Gunner -
Next rank: = UAC Gunner = after 4 points
56

Doom Rate: 2

Posts quality: +5
Ссылка на пост №3281 Отправлено: 07.06.18 15:42:32
lafoxxx [B0S] :
Hud https://forum.zdoom.org/viewtopic.php?f=3&t=32288#p612277

Это в декорэйте прописывать?

Скрытый текст:

sprite RPGFD0, 640, 480 { xscale 2 yscale 2 offset -9,71 //or what you need patch RPGFA0, 0, 0 //simply the name of the sprite }

YURA_111
= Master Sergeant =
Next rank: - Sergeant Major - after 68 points
462

Doom Rate: 2.02

Posts quality: +61
Ссылка на пост №3282 Отправлено: 07.06.18 16:54:37
DOOMFOREVER :
Это в декорэйте прописывать?


Это в лумп "Textures"
DOOMFOREVER
- UAC Gunner -
Next rank: = UAC Gunner = after 4 points
56

Doom Rate: 2

Posts quality: +5
Ссылка на пост №3283 Отправлено: 07.06.18 17:23:09
YURA_111 :
Это в лумп "Textures"
ок, пасиб
JSO x
= Sergeant =
Next rank: - Master Sergeant - after 42 points
358

Doom Rate: 2.39

Posts quality: +119
Ссылка на пост №3284 Отправлено: 08.06.18 00:06:41
Сразу сделаю оговорку, что в ZScript и вообще объектно-ориентированных языках я слаб.


Итак; ZScript, EventHadler (не StaticEventHandler):

Override bool InputProcess( InputEvent e ) { if ( e.Type == InputEvent.Type_KeyDown && ( e.KeyChar & BT_JUMP ) ) { FLineTraceData RemoteRay; Console.PrintF( "Intercepted BT_JUMP pressing." ); Players[ e.Player ].mo.LineTrace( Angle, 128, Pitch ); if ( RemoteRay.HitType == TRACE_HitActor ) { if ( RemoteRay.HitActor == "Zombieman" ) { Console.Printf( "Zombieman checked." ); } } // of if ( RemoteRay.HitType == TRACE_HitActor ) return True; } // of if ( e.Type == InputEvent.Type_KeyDown && e.KeyChar == 32 ) return False; } // of Override bool InputProcess( InputEvent e )


В этом коде целых три ошибки: две критических и одна просто странная.

"Players [e.Player] .mo.LineTrace (Angle, 128, Pitch)": "Unknown identifier 'player'";
"if (RemoteRay.HitActor == "Zombieman") {": "Incompatible operands for == comparison";

Также сейчас перехватывается часть кнопок (вперёд, назад, стрейф влево и поворот направо); сама BT_JUMP, которая, теоретически, и должна проверяться, не проверяется.


* * *


Когда-то писал вопрос об инвентаре:

Скрытый текст:

JSO_x :
Возможно ли для класса DECORATE "Inventory"/"CustomInventory" сделать при переполнении (достижения лимита "Inventory.MaxAmount") переход итема в следующий слот, например, как в Minecraft'е? Или только костылями -- типа такого ужаса:
Actor StoneBlockItem_Stack1: CustomInventory { Inventory.MaxAmount 64 States { <...> Pickup: TNT1 A 0 A_JumpIfInventory( "StoneBlockItem_Stack2", 0, 4 ) TNT1 A 0 A_JumpIfInventory( "StoneBlockItem_Stack1", 0, 2 ) TNT1 A 0 A_GiveInventory( "StoneBlockItem_Stack1" ) TNT1 A 0 A_GiveInventory( "StoneBlockItem_Stack2" ) TNT1 A 0 A_GiveInventory( "StoneBlockItem_Stack3" ) } } Actor StoneBlockItem_Stack2: Actor StoneBlockItem_Stack1 { }


А также: возможно ли штатными методами DECORATE'а ограничить вместимость инвентаря игрока? Или тоже придётся делать итем, который считает количество разных типов вещей в инвентаре?



Там в конце приписка была:
JSO_x :
P. S.: "ZScript" не предлагать! ACS можно, но нежелательно.

Так вот, теперь просьба прямо противоположная: помочь сделать это же, но силами ZScript. Ещё -- переход на клетку инвентаря при нажатии на цифру (как в том же самом Minecraft'е), но это взаимосвязано с обоими предыдущими вопросами. Надеюсь, сам смогу выводы сделать и реализовать такую схему.
4
Void Weaver
= Sergeant =
Next rank: - Master Sergeant - after 36 points
364

Doom Rate: 2.1

Posts quality: +56
Ссылка на пост №3285 Отправлено: 08.06.18 01:39:18
К слову о скриптах.
В версиях GZDoom старше 2.2.0 начала вылезать фаталэррор "Insufficient arguments in call to isFriend" например на такую строку:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(WOC_DECORATE,STATS,ISFRIEND,ACTIVATOR) == 0, "Healing"),
внутри скрипта ISFRIEND определён как:
if(option == ISFRIEND)
SetResultValue(IsFriendly(0)); //Не знаю важно это или нет, но в этой строке "IsFriendly" Слэйдом пишется чёрным шрифтом а не оранжевым.
Вот исходник "IsFriendly":
Скрытый текст:

function int IsFriendly( int tid ) { int value; if(tid == 0) { If(CheckInventory("ImAFighter")==1 || CheckInventory("ImACleric")==1 || CheckInventory("ImAMage")==1 || CheckInventory("ImAHunter")==1 || CheckInventory("ImAWarlock")==1 || CheckInventory("ImAPet")==1) value = TRUE; else If(CheckInventory("EnemyInDisguise")==0 && CheckActorProperty(0, APROP_Friendly, 0) || CheckInventory("FriendlyInDisguise")>0 ) value = FALSE; else If(CheckActorProperty(0, APROP_Friendly, 1) || CheckInventory("EnemyInDisguise")>0) value = TRUE; } else if(tid != 0) { If(CheckActorInventory(tid, "ImAFighter")==1 || CheckActorInventory(tid, "ImACleric")==1 || CheckActorInventory(tid, "ImAMage")==1 || CheckActorInventory(tid, "ImAHunter")==1 || CheckActorInventory(tid, "ImAWarlock")==1 || CheckActorInventory(tid, "ImAPet")==1) value = TRUE; else If(CheckActorInventory(tid, "EnemyInDisguise")==0 && CheckActorProperty(tid, APROP_Friendly, 0) || CheckActorInventory(tid, "FriendlyInDisguise")>0 ) value = FALSE; else If(CheckActorProperty(tid, APROP_Friendly, 1) || CheckActorInventory(tid, "EnemyInDisguise")>0) value = TRUE; } return value; }

Если кто может поставить диагноз "на глаз" то прошу доходчиво (по возможности) объяснить что значит сия ошибка (ну то что самсинг вронг с аргументом ISFRIEND это понятно) и в какую сторону стОит копать чтобы это пофиксить. На вас последняя надежда.
Скрытый текст:

До кучи аналогичная байда происходит с аргументом TARGET, определённым как:
if(suboption == TARGET)
SetActivatorToTarget(0);
но это вылечилось (?) в своё время прямой заменой аргумента на указатель AAPTR_TARGET.

Код чужой если что, просто автор исчез.
1 1
YURA_111
= Master Sergeant =
Next rank: - Sergeant Major - after 68 points
462

Doom Rate: 2.02

Posts quality: +61
Ссылка на пост №3286 Отправлено: 08.06.18 17:43:00
theleo_ua :
попробовал на свежевышедшем 3.4.0, та же проблема


Вообще очень странный конфликт дехакида и декорейта. Но если по сути, возьми тогда "проблемного" монстра, удали его модификацию из DEH и просто смодифицируй его в декорейте.
theleo_ua
- Captain -
Next rank: = Captain = after 220 points
2120

Doom Rate: 1.82

Posts quality: +186
Ссылка на пост №3287 Отправлено: 08.06.18 19:10:26
YURA_111 :
Вообще очень странный конфликт дехакида и декорейта. Но если по сути, возьми тогда "проблемного" монстра, удали его модификацию из DEH и просто смодифицируй его в декорейте.


думал о таком, но хочется быть на 100% уверенным в механике оригинала

Кстати, если я пишу PK3 патч для чужого вадника, и в моем патче есть dehacked без того монстра, то гздум (при gzdoom.exe -file маппак.wad мой_патч.pk3) поймет что того монстра надо удалить, или же возьмет его код из маппак.wad ?
2 1
YURA_111
= Master Sergeant =
Next rank: - Sergeant Major - after 68 points
462

Doom Rate: 2.02

Posts quality: +61
Ссылка на пост №3288 Отправлено: 08.06.18 20:30:28
theleo_ua :
поймет что того монстра надо удалить


Не поймет конечно, кусок кода из Wad относящего к тому монстру он и загрузит из первого вадника, т.к. во втором ваднике (ну т.е. PK3) этого куска не будет и не будет ничего другого что укажет на иное...
DOOMFOREVER
- UAC Gunner -
Next rank: = UAC Gunner = after 4 points
56

Doom Rate: 2

Posts quality: +5
Ссылка на пост №3289 Отправлено: 09.06.18 01:10:34
Такой вопрос. Как через Keyсonf сделать допустим на кнопке V определённую команду? Предположим чтобы при нажатии на эту клавишу оружие переходило в стэйт twofire , как такое сделать?
alekv
Lieutenant Colonel
Next rank: Lieutenant Colonel after 12 pointsМодератор форума
3628

Doom Rate: 1.94

Posts quality: +534
Ссылка на пост №3290 Отправлено: 09.06.18 01:52:01
DOOMFOREVER :
Такой вопрос. Как через Keyсonf сделать допустим на кнопке V определённую команду? Предположим чтобы при нажатии на эту клавишу оружие переходило в стэйт twofire , как такое сделать?


Можно так:
AddMenuKey "twofire_namecomand" +twofire Alias +twofire "Pukename \"ChangeState\"; Alias -twofire ""; DefaultBind v +twofire



Script "ChangeState" (void) { SetActorState(0, "twofire"); }

Рейтинг сообщения: +3, отметил(и): YURA_111, Void Weaver, DOOMFOREVER
1 3 1
DOOMFOREVER
- UAC Gunner -
Next rank: = UAC Gunner = after 4 points
56

Doom Rate: 2

Posts quality: +5
Ссылка на пост №3291 Отправлено: 09.06.18 13:35:28
alekv :
Можно так:

Спасибо
YURA_111
= Master Sergeant =
Next rank: - Sergeant Major - after 68 points
462

Doom Rate: 2.02

Posts quality: +61
Ссылка на пост №3292 Отправлено: 09.06.18 16:19:50
alekv

Позвольте уточнения:

1) Script я так понимаю ACS ? - а нельзя ли тоже-самое на Zscript ? (ацс меня раздражает)

2) addmenukey "twofire_namecomand" - что за имя команды? - которое отражается в меню?

3) Alias +twofire "Pukename \"ChangeState\"; - тут вообще не понял

4) Alias -twofire ""; - почему тут ничего ?

Извиняюсь за полное нубство - я давно делал релоад - но потом его ввели по умолчанию. Сейчас не могу понять ничего...
MyNameIs
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 60 points
1380

Doom Rate: 1.95

Posts quality: +471
Ссылка на пост №3293 Отправлено: 09.06.18 16:57:19
YURA_111

2 - ты про то, которое опции управления? должно быть оно

3 - Pukename вызывает именованый скрипт, а название скрипта должно быть в кавычках
кейконф же пытается понять эти кавычки и сделать из открывающей закрывающую, поэтому их надо маскировать символом \

4 - минус отвечает за отпускание кнопки. пусто, чтобы происходило ничего при отпускании

Рейтинг сообщения: +2, отметил(и): YURA_111, JSO x
1 1
JSO x
= Sergeant =
Next rank: - Master Sergeant - after 42 points
358

Doom Rate: 2.39

Posts quality: +119
Ссылка на пост №3294 Отправлено: 09.06.18 17:12:04
YURA_111, могу предположить такой вариант насчёт первого пункта: вместо "Pukename \"ChangeState\"" отправлять "netevent ChangeState", затем, в EventHandler, через "Override void NetworkProcess(ConsoleEvent e)" делать "Return ResolveState( "AdditiveFireState" )" или "SetState( "AdditiveFireState" )".

Должно быть что-то типа такого:
class TestHandler: EventHandler { Override void NetworkProcess(ConsoleEvent e) { if ( e.Name == "ChangeState" && PlayerInGame[ e.PlayerNumber ] && Player[ e.PlayerNumber ].mo.FindInventory( <actor_weapon_class> ) ) { Return ResolveState( "AdditionalFire" ); } // of if ( e.Name == "ChangeState" ) } // of Override void NetworkProcess(ConsoleEvent e) } // of class TestHandler: EventHandler


P. S.: единственное что -- не уверен, будет ли врать e.IsManual в этом случае.

P. P. S.: не проще ли через BT_USER1 сделать?

Рейтинг сообщения: +1, отметил(и): YURA_111
4
YURA_111
= Master Sergeant =
Next rank: - Sergeant Major - after 68 points
462

Doom Rate: 2.02

Posts quality: +61
Ссылка на пост №3295 Отправлено: 09.06.18 22:37:15
Спасибо!
Зскрипт в данном случае как-то слишком громоздко смотрится по сравнению с выше-предложенным вариантом на АЦС

BT_USER1 - это ты имеешь ввиду стейты USER которые сейчас как RELOAD и ZOOM добавлены по умолчанию? Если да - то нет у меня возможности, т.к., не поверишь - уже ВСЕ юзаю!
Void Weaver
= Sergeant =
Next rank: - Master Sergeant - after 36 points
364

Doom Rate: 2.1

Posts quality: +56
Ссылка на пост №3296 Отправлено: 10.06.18 00:57:27
В общем трупоед на декоре взлетел

, но есть 2 проблемы:
а) не жрёт утопленные трупы (при waterlevel>0 трупы монстров почему-то не чекаются);
б) всякий раз когда эти мрази берут труп на прицел, они упорно застревают во всём подряд - в объектах, мобах, друг друге, стенах, мостах и проч.
Вот, все трое заблудились в трёх соснах и не схавали трупы мумий в воде:

Как можно пофиксить? Какие флаги в б) убрать\добавить?

Чек на поиск трупа:
Скрытый текст:

A_CheckLOF ("CorpseCheck", CLOFF_FROMBASE|CLOFF_JUMPENEMY|CLOFF_JUMPFRIEND|CLOFF_JUMPNONHOSTILE|CLOFF_SKIPTARGET|CLOFF_BEYONDTARGET|CLOFF_ALLOWNULL|CLOFF_CHECKPARTIAL|CLOFF_SETTRACER, 2048, 0, user_CLOFangle, -180, 0, 0, AAPTR_NULL, 0)


Чек на обход препятствий:
Скрытый текст:

A_CheckLOF ("CorpseChaseW", CLOFF_FROMBASE|CLOFF_JUMPOBJECT|CLOFF_MUSTBESOLID|CLOFF_JUMP_ON_MISS|CLOFF_SKIPTARGET/*|CLOFF_ALLOWNULL|CLOFF_NOAIM*/, 80, 0, 0, 0, 0, 0, AAPTR_TRACER, 0)

"CorpseChaseW" - цикл A_Wander с возвратом к циклу чекЛОФа.
1 1
alekv
Lieutenant Colonel
Next rank: Lieutenant Colonel after 12 pointsМодератор форума
3628

Doom Rate: 1.94

Posts quality: +534
Ссылка на пост №3297 Отправлено: 10.06.18 01:23:44
YURA_111 :
1) Script я так понимаю ACS ? - а нельзя ли тоже-самое на Zscript ? (ацс меня раздражает)

Не знал, не знаю и не буду знать зскрипт. Честно я вообще удивляюсь почему декорейт получил такой апгрейд, а не ацс, ну да ладно.

YURA_111 :
2) addmenukey "twofire_namecomand" - что за имя команды? - которое отражается в меню?

Просто имя которое отображается в настройках управления.

YURA_111 :
3) Alias +twofire "Pukename \"ChangeState\"; - тут вообще не понял

+twofire это как бы твоя созданная команда, означает что игрок нажал кнопку, после этого в кавычках выполняем какие либо действия, в этом случае запуск скрипта с именем. т.к. нельзя внутри кавычек " " писать еще одни кавычки " "some text" " придумали костыль в виде "\"somename\"";

YURA_111 :
4) Alias -twofire ""; - почему тут ничего ?

Не знаю.. Тут каждый по желанию может вызвать какое либо действие. Такое действие сработает когда кнопка была отпущена.

YURA_111 :
Извиняюсь за полное нубство - я давно делал релоад - но потом его ввели по умолчанию. Сейчас не могу понять ничего...

У меня точно так же.. Я ничего толком не помню, все это помню только потому что сделал у себя в игре.
По хорошему надо нормальные доки писать на русском про гздум, он уже необъятный, а доков толком нет по сей день.

Рейтинг сообщения: +1, отметил(и): YURA_111
1 3 1
mutator
- Master Sergeant -
Next rank: = Master Sergeant = after 34 points
426

Doom Rate: 1.86

Posts quality: +16
Ссылка на пост №3298 Отправлено: 10.06.18 01:26:33
I dont understand russian but is this place kind of like a tutor page that help people understand scripting?
alekv
Lieutenant Colonel
Next rank: Lieutenant Colonel after 12 pointsМодератор форума
3628

Doom Rate: 1.94

Posts quality: +534
Ссылка на пост №3299 Отправлено: 10.06.18 01:33:58
mutator :
I dont understand russian but is this place kind of like a tutor page that help people understand scripting?

This group where you can ask a question about the modification of doom and get an answer.
1 3 1
mutator
- Master Sergeant -
Next rank: = Master Sergeant = after 34 points
426

Doom Rate: 1.86

Posts quality: +16
Ссылка на пост №3300 Отправлено: 10.06.18 01:52:08
alekv
I am really bad at scripting is it hard?
Страница 165 из 169Перейти наверх Пред.  1, 2, 3 ... 164, 165, 166, 167, 168, 169  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!