Автор | Сообщение |
zzXenobytEzz = Corporal =
| 110 |
Doom Rate: 2 Posts quality: +15 |
Отправлено: 03.11.15 21:32:53 | | | ZZYZX
Насколько я понял из твоего примера и мануала, выложенного выше: концентратором (центральной мапой т.е.), можно сделать любую карту в кластере? Или она обязательно должна быть одна, как тот же Seven Portals в Hexen? | |
|
| |
theleo_ua = Colonel =
| 4802 |
Doom Rate: 1.8 Posts quality: +1032 |
Отправлено: 04.11.15 04:49:22 | | | ZZYZX: | P.S. А костыль который ты предложил это очень херовый костыль, я против. Приколи потом кто-то ответвится от этого монстра и будет в шоке смотреть как у него одновременно пистоль и дропитем работают )) |
ZZYZX: | Приколи потом кто-то ответвится от этого монстра |
И переопределит стейт death так, как ему надо. Но предположу, что вероятность того, что кто-то захочет ответвляться от чужих модов мододелов из текущей темы, крайне мала (не знаю, как насчет модов D1m3, но в своих модах я уверен, что мало кому будет интересно копаться в них, ответвляясь от моих акторов, соответственно я не парюсь использовать такие костыли, мне важнее работоспособность мода уже сейчас (так как альфа версию уже стримят на твиче и гудгейме) ). Я понимаю, что костыль не самый удачный, но что делать, если решение удачнее я пока не знаю?
Но это лирика, мне больше интересно, какой костыль ты предложишь D1m3, чтобы он работал | |
|
3 |
1 |
|
|
| |
alekv - Colonel -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 04.11.15 08:16:20 | | | D1m3: | Проблема в том,что актор "Pistol2" заменяет пистолет игрока и он прописан у зомби как dropitem,но при убийстве зомби из него всё также выпадает обойма Это с dropitem косяки или в коде зомби глюк какой то? Порт GZDoom |
На сколько я помню, у DropItem в параметрах актора есть 3 аргумента, 1 = имя предметя, 2= шанс выпадания предмета, 3= кол. выпавшего предмета Если не ошибаюсь, то у тебя оно == 0 т.к. ты их просто не прописал dropitem "Pistol2" 256, 1 //как-то так должно быть (возможно имя предмета можно писать без кавычек..)
Добавлено спустя 45 секунд:
DropItem Вот даже ссылку нарыл.
theleo_ua Не парься, в гоззе все на костылях, одним больше одним меньше, главное что бы работало как надо хД
Добавлено спустя 17 минут 2 секунды:
zzXenobytEzz: | Насколько я понял из твоего примера и мануала, выложенного выше: концентратором (центральной мапой т.е.), можно сделать любую карту в кластере? Или она обязательно должна быть одна, как тот же Seven Portals в Hexen? |
1 уровень получается как HUB, из hub можно пройти в другие уровни, hub уровнем может быть любая карта, какая тебе угодна, что касается один hub или много.. тут поможет функция Teleport_NewMap. С такой функцией hub уровни, кластеры прописывать не надо, просто делаешь карту центральную и в ней делаешь выходы на другие уровни, в общем так можно целые паутины из уровней выстраивать. Есть вад пример хороший, называется omega_complex.wad, где брать чесн не знаю, может тут есть на сайте, может кто ссылку даст, там весь мод типа на hub уровнях был или везде Teleport_NewMap точно не помню, но там "паутинка" ниче так. | |
|
1 |
3 |
1 |
|
|
| |
zzXenobytEzz = Corporal =
| 110 |
Doom Rate: 2 Posts quality: +15 |
Отправлено: 04.11.15 19:27:58 | | | alekv
Спасибо, поищу! Просто есть идея, реализовать хабы как в Q2, без определенной центральной мапы)
Добавлено спустя 8 минут 51 секунду:
Кстати, назрел еще вопрос, не знаю где задать, спрошу тут: старая тема "для новичков", обладала огромным количеством необходимой инфы, но ее давненько потерли... Собственно, вопрос: есть ли архив темы? Если "да", где можно раздобыть? Будьте толерантны, не сочтите за флуд))) | |
|
| |
alekv - Colonel -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 04.11.15 20:30:04 | | | zzXenobytEzz: | Спасибо, поищу! Просто есть идея, реализовать хабы как в Q2, без определенной центральной мапы) |
Ну с teleport_NewMap можно переходить на любой уровень, когда угодно. Хоть как в скайриме можно сделать
т.е. ставишь экшен на линию или просто скриптом вызываешь функцию и игрока перенесет на карту которую пропишешь в функции. Да, на карте в которую будет телепортироваться игрок должно быть 2 thinga игрока, 1 простой, а у 2ого, 1аргумент должен быть равен номеру карты если не ошибаюсь, т.е. игрок пересекает линию с функцией teleport_NewMap, в функции прописан телепорт к примеру на 5 ур., то на 5 уровне должен быть thing игрока с 1 аргументом равным 5. Аргумент ставится в окне ThingEdit>Action/Tag/Misc.>Argument1
zzXenobytEzz: | Кстати, назрел еще вопрос, не знаю где задать, спрошу тут: старая тема "для новичков", обладала огромным количеством необходимой инфы, но ее давненько потерли... Собственно, вопрос: есть ли архив темы? Если "да", где можно раздобыть? Будьте толерантны, не сочтите за флуд))) |
Архивы | |
|
1 |
3 |
1 |
|
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 04.11.15 21:08:09 | | | zzXenobytEzz: | Насколько я понял из твоего примера и мануала, выложенного выше: концентратором (центральной мапой т.е.), можно сделать любую карту в кластере? Или она обязательно должна быть одна, как тот же Seven Portals в Hexen? |
Концентратор это вообще понятие виртуальное, хаб грузится целиком.
theleo_ua: | Но это лирика, мне больше интересно, какой костыль ты предложишь D1m3, чтобы он работал |
Пусть дебажит DropItem. | |
|
2 |
2 |
1 |
|
|
| |
zzXenobytEzz = Corporal =
| 110 |
Doom Rate: 2 Posts quality: +15 |
Отправлено: 04.11.15 21:12:09 | | | ZZYZX
Ну под "концентратором", я имею ввиду "центр" хаба) | |
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 04.11.15 21:49:27 | | | zzXenobytEzz: | Ну под "концентратором", я имею ввиду "центр" хаба) |
Я тоже. Нет его, этого центра. Хаб это просто группа карт, переход между хабами происходит когда ты переходишь с карты одного хаба на карту другого хаба. Любую. | |
|
2 |
2 |
1 |
|
|
| |
sanek_47 = Master Corporal =
| 272 |
Doom Rate: 2.16 Posts quality: +64 |
Отправлено: 04.11.15 22:11:01 | | | Можно как-нибудь в gzdb автоматически заполнять сектор объектами? Хочу добавить траву на карты, а вручную ставить довольно долго. | |
|
| |
zzXenobytEzz = Corporal =
| 110 |
Doom Rate: 2 Posts quality: +15 |
Отправлено: 04.11.15 22:28:50 | | | sanek_47
А рандомно натыкать, выделить, и ctrl-c ctrv-v со смещением? Трава, вроде не настолько заметный элемент, для густоты должно хватить | |
|
| |
sanek_47 = Master Corporal =
| 272 |
Doom Rate: 2.16 Posts quality: +64 |
Отправлено: 04.11.15 22:39:15 | | | zzXenobytEzz Я так и делаю. Просто подумал, может есть какой-то более быстрый способ - чтобы выделить все нужные сектора и они равномерно заполнились... | |
|
| |
zzXenobytEzz = Corporal =
| 110 |
Doom Rate: 2 Posts quality: +15 |
Отправлено: 04.11.15 22:50:31 | | | sanek_47
Ну в рефмануале к гздб - я ничего подобного не нашел, следовательно - нет. Более простого способа нет. | |
|
| |
alekv - Colonel -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 05.11.15 09:53:31 | | | Shadowman: | Вопрос, что значит +1 к защите? Ты повышаешь % резист к урону? Учти, что гздум плохо работает с % для малых величин, по моим наблюдениям он округляет их до целых чисел. Например, если паук ударит игрока на 1 хп, а у игрока 5% резиста, то игрок получит 0 урона - резист округляется в большую сторону. В Инквизиторе 3 это было видно хорошо. Поэтому мелкие % защиты при округлении потеряются и ты не сможешь дифференцировать брони так, как хотелось бы. Но этот вопрос лучше обсудить в другом разделе, если будет желание. |
Смотри, BasicArmorBonus и http://zdoom.org/wiki/Actor_properties#Armor.SavePercent там есть строка отвечающая за % так сказать защиты armor.savepercent 33.33333, т.е. 0.000.. нормально высчитываются, просто надо так же помучаться с атакой монстров, именно в монстрах у меня возникла проблема когда я делал сеты для игрока, если 1 сет дает 0.50% защ. то в игре это практически не заметно, потому что надо настраивать монстров, т.е. для какого-то слабого вида монстров 0.50% защ. уже достаточно что бы не пробивать игрока, ну или отбирать меньше оз, я вот о таком балансе, ракета кибера конеш даже не заметит такой низкий % защ.
Выглядит в декорейте это примерно так:
Actor Armor1 : BasicArmorPickUp
{
Inventory.InterHubAmount 1
Inventory.MaxAmount 1
Inventory.DefMaxAmount
Armor.SaveAmount 0x7fffffff
Armor.SavePercent 0.5
Armor.MaxFullAbsorb 1
+AUTOACTIVATE
+HUBPOWER
+DROPPED
}
Actor Armor2 : Armor1 {Armor.SavePercent 1}
Actor Armor3 : Armor1 {Armor.SavePercent 1.5}
Actor Armor4 : Armor1 {Armor.SavePercent 2}
.....
И так прописываешь акторов ArmorХ до SavePercent 100(можно начать и с armor1 SavePercent= 0.1 Armor2 SavePercent =0.2...)после уже игроку давать этих акторов когда он одел шмотку и забирать если снял. То же можно сделать и с атакой игрока, у монстров там по другому, но надо и монстров настраивать что бы игрок хоть как-то замечал что он одел шмотку и она его защитила.
Добавлено спустя 32 минуты 45 секунд:
Да, вот еще не много задумался, можно сделать такую систему защита\атака Защита это переменная от 0 до 1000 к примеру..(т.е. класс BasicArmorPickUp даже не трогаем) И монстр сам чекает защиту игрока т.е. если защ. у игрока == 3, монстр бьет с силой 5 единиц чего-то там(возможно монстру надо изменять damagetype что бы он бил то сильнее если защ. меньше, то слабее если защ. больше.) если у игрока защ. ==5 монстр ударит с силой 3 единици и т.д. Только вот не знаю сложно ли так прописать. Таким образом можно сделать так если игрок начинает игру с 1ого лвл и защ. игрока по дефолту без шмоток == 3, то паук бьет больно, по 10оз, когда игрок покачается, оденет шмотки его защ. к примеру станет 10, то паук уже будет отнимать по 2-3 оз, когда игрок совсем сильно прокачался, такой паук игрока даже не царапнет, т.е. монстр как был такой и остался, а игрок будет чуствовать свою растущую силу и так делать с каждым монстром.
И хорошо если монстр будет чекать защ. игрока в декорейте онли, т.к. если acs, тогда много писанины, ну или сидеть и думать над одним универсальным скриптом для всех монстров который будет менять силу монстра в зависимости от значения защ. игрока. | |
|
1 |
3 |
1 |
|
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 05.11.15 10:52:57 | | | Проще скрипт с SetActorProperty/DamageFactor. | |
|
2 |
2 |
1 |
|
|
| |
UsernameAK - Lance Corporal -
| 150 |
Doom Rate: 1.79 Posts quality: +13 |
Отправлено: 05.11.15 14:12:04 | | | alekv: | а у 2ого, 1аргумент должен быть равен номеру карты если не ошибаюсь, |
ошибаешься, второму параметру Teleport_NewMap
P.S. вот это лагнуло, засунуло текст в теги [youtube] при отправке | |
|
| |
Shadowman UAC General
| 8391 |
Doom Rate: 2.08 Posts quality: +1993 |
Отправлено: 05.11.15 15:10:27 | | | alekv: | Защита это переменная от 0 до 1000 к примеру..(т.е. класс BasicArmorPickUp даже не трогаем) И монстр сам чекает защиту игрока т.е. если защ. у игрока == 3, монстр бьет с силой 5 единиц чего-то там(возможно монстру надо изменять damagetype что бы он бил то сильнее если защ. меньше, то слабее если защ. больше.) |
Интересный способ, надо подумать. Плюс в том, что класс брони как таковой не нужен, все определяется через переменные, значения которых меняются, когда игрок надевает-снимает броню. А вот с атакой монстров сложнее - как прописать, что параметр работает, только если монстр атакует игрока? А если начинается внутренняя свара, то не работает. Например, если прописать в дамаге что-т о типа damage = (random(1,10)*(1 - Acs_NamedExecuteWith Result("Defence",0)/100)), где defence - показатель защиты игрока от 0 до 100 единиц, возвращаемый через ацс скрипт, то как указать, что ацс должен возвращать дефенс игрока только когда монстр атакует именно игрока? в этом главная сложность. Аналогично со снарядами. Если прописать формулу дамага в декорэйте снаряда, то она же будет работать независимо от того, кто и в кого выпустил снаряд? Иначе почучится, что крутизна игрока влияет на междусобойные стычки разных монстров тоже. | |
|
1 |
7 |
2 |
|
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 05.11.15 15:34:26 | | | Вы меня-то почему проигнорили? Это просто п***ц какой код, делать 200 акторов, да ещё и каждого монстра отдельно прописывать. Если какая-то фича требует такого кода и не допускает нормального, то от этой фичи лучше отказаться. Серьёзно. | |
|
2 |
2 |
1 |
|
|
| |
alekv - Colonel -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 05.11.15 16:50:06 | | | Shadowman: | А вот с атакой монстров сложнее - как прописать, что параметр работает, только если монстр атакует игрока? А если начинается внутренняя свара, то не работает. |
Тут уже я не в курсе, самому интересно как узнать что монстр собирается ударить игрока... мб есть какие функции которые могут это проверить? В CheckActorProperty есть APROP_TargetTID The TID of the actor linked to by the actor's target field. не знаю чего оно делает, может такое могло бы помочь ? Но думаю какая-то функция должна быть, как-то же можно узнать что монстр нацелен на игрока. Еще возможно так получилось бы SetActivatorToTarget(); тоесть как только скрипт который чекает защиту срабатывает, назначаем активатора скрипта на цель, если цель монстр, у него такого защ не будет, тогда и выполнится что-то другое... если активатором окажется игрок то там уже будет учитывать значение защ. Это как вариант.
ZZYZX: | Это просто п***ц какой код, делать 200 акторов, да ещё и каждого монстра отдельно прописывать. |
200 акторов это если юзать способ с BasicArmorPickUp, и то по хорошему не 200 акторов, а около 2 000, если начинать с 0.1 по 100.0 Со вторым способом, я хз сколько писать надо, мб только 1 скрипт, а может и много разных тут уже что придумается.
ZZYZX: | Если какая-то фича требует такого кода и не допускает нормального, то от этой фичи лучше отказаться. Серьёзно. |
Ну тут кому как, мне к примеру важен результат, а не способ.
ZZYZX: | Проще скрипт с SetActorProperty/DamageFactor. |
Так по другому и не получится нормально изменять атаку монстра, ну еще APROP_Damage есть. Это надо посидеть подумать как такой скрипт лучше записать.. Я просто предлагаю варианты. | |
|
1 |
3 |
1 |
|
|
| |
theleo_ua = Colonel =
| 4802 |
Doom Rate: 1.8 Posts quality: +1032 |
Отправлено: 05.11.15 17:11:39 | | | alekv: | На сколько я помню, у DropItem в параметрах актора есть 3 аргумента, 1 = имя предметя, 2= шанс выпадания предмета, 3= кол. выпавшего предмета Если не ошибаюсь, то у тебя оно == 0 т.к. ты их просто не прописал dropitem "Pistol2" 256, 1 //как-то так должно быть (возможно имя предмета можно писать без кавычек..)
Добавлено спустя 45 секунд:
DropItem Вот даже ссылку нарыл. |
Два примера:
http://zdoom.org/wiki/Classes:ChaingunGuy http://zdoom.org/wiki/Classes:ZombieMan
Никаких значений после дропитем не написано, а айтем дропается почти всегда. Т.е. по умолчанию там 255 скорее всего стоит
Добавлено спустя 10 минут 46 секунд:
alekv: | Ну тут кому как, мне к примеру важен результат, а не способ. |
Мне аналогично, кстати. В том моде, который я делаю сейчас, мне пришлось переписать каждого монстра (из еретика, хексена и 10 дополнительных) + сделать еще около 100 дополнительных акторов (и это еще не предел), но результатом доволен
Добавлено спустя 2 минуты 36 секунд:
ZZYZX: | Вы меня-то почему проигнорили? Это просто п***ц какой код, делать 200 акторов, да ещё и каждого монстра отдельно прописывать. Если какая-то фича требует такого кода и не допускает нормального, то от этой фичи лучше отказаться. Серьёзно. |
кстати, одна из хотелок для моего мода была "увеличить урон врагам на 25%", вместо чего я уменьшил хп и броню игрока на 20% (как у игрока, так и у предметов), ибо эффект почти тот же, а реализовать проще | |
|
3 |
1 |
|
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 05.11.15 19:09:54 | | | alekv: | Это надо посидеть подумать как такой скрипт лучше записать.. |
script "apply_armor" ENTER
{
while (true)
{
int coef = CheckInventory("MyArmorCount")<<16>=0;
coef /= 2;
coef /= 100;
SetActorProperty(0, APROP_DamageFactor, 1.0-coef);
Delay(1);
}
}
alekv: | Тут уже я не в курсе, самому интересно как узнать что монстр собирается ударить игрока... мб есть какие функции которые могут это проверить? |
Этот гениальный код гениального программиста (я имею в виду наш форум ДП) не даёт мне запостить соответствующий код сюда, потому что там знак больше, который сей гениальный код принимает за HTML и обрезает пост до неузнаваемости. Так что вот, две строчки в пастебине: http://pastebin.com/CrdrRAWj | |
|
2 |
2 |
1 |
|
|
| |