Welcome to U.A.C. [O.S.A.]
login / register 
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... 13, 14, 15 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №261 Отправлено: 27.10.15 21:17:08
Shadowman:
Интересно, а как ты пропишешь в ацс, какие звуки проигрывать в зависимости от пола игрока? Пока только видится вариант с созданием 2 как бы "классов" - мужской и женский, у которых разные звуки и спрайты. Но отсюда следуют все неудобства выбора класса.

Я не задумывался в серьез, но пол игрока это простая переменная, которую надо вывести туда где игрок сможет ее поменять в настройках(cvar) или в самой игре(переменная int).
Вот примерно так я представляю это дело...
int myshik;
Script "smena_pola" void
{
While(on){
PrintBold(s:"If you male press USE\nIf you famale press other key, but not USE");
But = GetPlayerInput(-1,INPUT_BUTTONS);
if (But & BT_USE)
{myshik = yes; PrintBold(s:"pozdravlay ti myshik!"); terminate;}
else{ myshik = no; PrintBold(s:"pozdravlay ti baba!"terminate;);
Delay(1);
}
}

Script "play_sound" (void)
{if (myshik == yes) PlaySound(myshiksound);
else playsound(babaSound);
}

Script "CheckBaba" (int baba)
{if (myshik == yes) baba = no; PlaySound(myshiksound);
else playsound(babaSound); baba = yes;
SetResultValue(baba);
}

Actor player
{
Spawn:
PLAY A 0 ACS_NamedExecute("play_sound",0)
//PLAY A 0 A_JumpIf(CallACS("Checkbaba")==true,"PlaySoundBaba") //или такой вариант
//PLAY A 1 A_PlaySound("myshik")
PlaySoundBaba:
PLAY A 0 A_PlaySound(...)
Goto spawn

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

Shadowman:
На видео ничего толком не видно - чел что-то набирает, потом появляется сообщение внизу экрана. Вот если бы там ссылку на код дали, это было бы другое дело...

Дак вот самому интересно, он как-то вывел консольный ввод, т.е. там не просто набор какой-то, а именно консольные команды туда вводит!!! Я там на англ почитал, но сути не уловил, понял что он это сделал в какой-то сборке гоззы, мб из той сборки можно вырвать такую фичу да в свою сборку запихнуть.
А юзер тот что рпг делает забанен походу и не спросить ничего(
1 3 1
Shadowman
UAC General
Next rank: Unavailable after 0 points
8391

Doom Rate: 2.08

Posts quality: +1993
Ссылка на пост №262 Отправлено: 27.10.15 23:11:56
alekv
Идея то была немного в другом: пол задается изначально при генерации игрока, и сменять его по ходу игры НЕЛЬЗЯ. Наличие опции пола в Player Setup эту идиллию рушит. Ну или надо задавать пол независимо от значений, которые игрок вздумает проставить в Player Setup.
1 7 2
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №263 Отправлено: 27.10.15 23:37:37
Shadowman:
Идея то была немного в другом: пол задается изначально при генерации игрока, и сменять его по ходу игры НЕЛЬЗЯ. Наличие опции пола в Player Setup эту идиллию рушит. Ну или надо задавать пол независимо от значений, которые игрок вздумает проставить в Player Setup.

Ну дак смотри, игрок начал новую игру, стартует какой либо ролик, после уже в игре игроку предлогается выбрать пол персонажа, там же можно прикрутить возможность что-то еще настроить, а поле player setup вообще убрать из менюдефа, мб можно даже сделать выбор перса в самой игре, а не только его настроку путем морфа в заранее прописанные классы(хотя я морфом еще не пользовался, потому не знаю есть ли у морф персов какие-то недостатки или нет).
В общем что получается, игрок 1 раз в начале игры настраивает перса и все, он до самой смерти или конца игры пол поменять не сможет. Если юзать морф классы удобно, тогда и со звуками парится не особо надо т.к. каждому классу в декорейте писать свои звуки, а если юзаешь глум там и текст проще для каждого класса писать, т.е. с помощью функции ReadUserData(""); реально уменьшает путаници в скриптах т.к. все диалоги, тексты и прочее можно вынести в отдельную папку и отдельные файлы.
Да и генерацией игрока в player setup не особо то и назовешь.. имхо если делать, так делать свою более настраиваемую.
1 3 1
VladGuardian
= Commissar =
Next rank: - UAC Commissar - after 263 points
5537

Doom Rate: 1.28

Posts quality: +1934
Ссылка на пост №264 Отправлено: 28.10.15 10:00:53
Shadowman:
Наличие опции пола в Player Setup эту идиллию рушит.

Не рушит. Заводишь свою переменную пола, которая подхватывает то значение пола, которое было в момент нажатия кнопки [New Game].
Это значение в дальнейшем считается истинным.
Каждую секунду (внутри вечного цикла) проверять, сменился ли пол.
Если пол сменился, надавать читеру по рукам (это можно сделать сотней разных способов).

Ну или надо задавать пол независимо от значений, которые игрок вздумает проставить в Player Setup.

Это даже более лучший вариант.
4 10 23
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1032
Ссылка на пост №265 Отправлено: 30.10.15 00:05:34
alekv:
Script "CheckBaba" (int baba)


до слез:)

Народ - такой вопрос возник: у арчвайла есть такой код на See стейте:

VILE AABBCCDDEEFF 2 A_VileChase

Т.е. на каждый фрейм (букву) выполняется A_VileChase. Мне нужно, чтобы кроме VileChase выполнятся еще и мой собственный код. Например можно сделать так:

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



VILE A 0 мой код 1
VILE A 0 мой код 2
VILE A 0 мой код ...
VILE A 2 A_VileChase

VILE A 0 мой код 1
VILE A 0 мой код 2
VILE A 0 мой код ...
VILE A 2 A_VileChase

VILE B 0 мой код 1
VILE B 0 мой код 2
VILE B 0 мой код ...
VILE B 2 A_VileChase

VILE B 0 мой код 1
VILE B 0 мой код 2
VILE B 0 мой код ...
VILE B 2 A_VileChase

...

VILE F 0 мой код 1
VILE F 0 мой код 2
VILE F 0 мой код ...
VILE F 2 A_VileChase

VILE F 0 мой код 1
VILE F 0 мой код 2
VILE F 0 мой код ...
VILE F 2 A_VileChase



И все будет работать как мне надо. Вопрос лишь в том, как из миллиона строк сделать несколько строк циклом (иными словами, как сделать цикл, в котором будут последовательно меняться спрайты с VILE A до VILE F)

alekv:

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


UsernameAK :
Я плохой маппер, все мои уровни симметричные. Как научиться красиво маппить?

Детали, в них секрет, сделай коробку из секторов и подумай что и как расположить в этой коробке, твоя цель сделать обычную коробку интересной, что бы в ней было интересно находиться... Что для этого надо? Начни с идеи, что будет представлять твоя коробка, мб это каюта корабля или некий склеп в какой-то пещере..? Как определился, подумай где будут источники света т.к. в думе для сочной картинки приходится подстраиваться под свет а не наоборот. Начни подбирать текстуры для твоего дизайна, рисуй сам или гугл.. Как найдешь что надо, подумай о различном декоре который логичо видеть в стилистике твоей комнаты, если это склеп, гробы, свечи, черепа, мусор, не большие бугорки с землей как бы упавшей с потолка, возможно разные предметы бальзамирования или ритульного характера(тут уже от стилистики зависит) и т.д. как определишься с декором и если умеешь рисовать хоть как-то, хотя бы простую тень(мазнуть кистью черного цвета с альфа каналом там где должна быть тень), подумай какие объекты не будут двигаться, к примеру какой либо ящик в углу, то на текстурах можно добавить статичную тень(которая не будет двигаться) которую отбрасывает такой ящик, раньше так и делали, запекали тень от статичных объектов в текстуры. Ну и до того как рисовать тень, конечно надо определиться где будет лежать твой декор, для этого можешь нагуглить картинок с подобной стилистикой и черпать идеи, а можешь придумать для каждого декора свою мини историю, например ящик что стоит в углу, принесли рабочие когда склеп только сторился и забыли около него ломик или еще какой предмет. Священик который спустя 50 лет заходил в склеп, проводил какой либо ритуал и поставил и забыл подсвечник с тогда еще горевшей свечой на таком ящике, крысы бегая в поисках еды, уронили этот подсвечник, ящик частично обгорел, тем самым стены около него чуть почернели от копоти..

В таком духе можешь попробовать расставить предметы, это не так долго как кажется и еще что важно, это оттенок цвета который будет передавать твоя комната с помощью дин лайтов например. Тоесть если это склеп, то темно, горящая свеча(на текстурах должен быть оттенок цвета исходящего от всечи, просто подбери палитру в ФШ например это делается очень просто Изображение>Корекция>Варианты).
И последнее, всегда помни что полюбому получится хуже чем представляешь в голове, пытайся смотреть так сказать трезво что бы не разочаровываться.
Надеюсь сойдет за не полный ответ..



Ответ знакомого геймдизайнера (в прошлом левелдизайнера) на твою цитату:

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

http://www.progamer.ru/dev/level-design-in-the-last-of-us.htm
игра очень успешная, эксклюзив на PlayStation 3 и 4
это пока лучшая статья по левел дизайну, которую я читал



еще вопрос: есть быстро бегающий актор А, который разово спавнит (например через spawnitemex) актора Б. Требуется, чтобы на каждый тик актор Б знал координаты актора А (с целью спавнить в том месте акторы через тот же spawnitemex например). Как это сделать? И какие, в таком случае, координаты получит актор Б в случае смерти актора А ?
3 1
LEX SAFONOV
- Sergeant Major -
Next rank: = Sergeant Major = after 3 points
597

Doom Rate: 1.5

Posts quality: +294
Ссылка на пост №266 Отправлено: 30.10.15 16:05:13
theleo_ua:
И какие, в таком случае, координаты получит актор Б в случае смерти актора А ?

грубо говоря - никакие
theleo_ua:
еще вопрос: есть быстро бегающий актор А, который разово спавнит (например через spawnitemex) актора Б. Требуется, чтобы на каждый тик актор Б знал координаты актора А (с целью спавнить в том месте акторы через тот же spawnitemex например). Как это сделать?

лично я вижу реализацию в АЦС. И тут ещё есть нюанс небольшой...
Вообщем если актор Б - проджектайл, то координаты актора А через "Цель" можно получить достаточно просто(у проджектайла целью является создатель, т.е. актор А).
Если актор простой, не проджектайл, то можно попробовать в spawnitemex выставить последний флаг как Children(я просто сейчас не помню как он называется, вообщем он делает созданный объект по умолчанию "созданным кем то"). Опять же вызывать скрипт из актора Б и в проверять в нём координаты создателя через APP_MASTER(не помню держится ли сейчас такое, вообще тот флаг у функции Children уже хреновато работает).
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1032
Ссылка на пост №267 Отправлено: 30.10.15 19:43:12
LEX SAFONOV

Актор простой, не проджектайл. Идея понятна, вопрос лишь в том, как наиболее эффективно актору Б узнать, что актора А убили (пока вижу 3 способа: либо актору А в стейте Death вызывать a_killchildren, либо менять себе какой-то проперти (например speed), а актору Б соответственно это проперти проверять и если оно отличается от дефолтного, то goto death (актор Б по задумке тоже должен умереть, если родитель умирает), либо актору Б анализировать health актора А (и при health<1 goto Death) )

Позже проверю, как оно сработает, но если у кого есть идеи лучше, просьба отписать
3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №268 Отправлено: 31.10.15 08:28:23
theleo_ua:
еще вопрос: есть быстро бегающий актор А, который разово спавнит (например через spawnitemex) актора Б. Требуется, чтобы на каждый тик актор Б знал координаты актора А (с целью спавнить в том месте акторы через тот же spawnitemex например). Как это сделать? И какие, в таком случае, координаты получит актор Б в случае смерти актора А ?

Спавнить скриптом через ACS, а не через SpawnItemEx.
Тогда скрипт запускается от имени актора А, и имеет его координаты через TID 0 (активатор), а актору Б назначаешь UniqueTID(). И while(true) с Delay(1).
script "spawn_actor_b" (void)
{
  int actor_b_tid = UniqueTID();
  SpawnForced("actor_b_class", GetActorX(0), GetActorY(0), GetActorZ(0), actor_b_tid, 0);
  while (true)
  {
    // GetActorX(0), GetActorY(0), GetActorZ(0) = координаты актора который вызвал скрипт
    // Все действия с актором Б делать через actor_b_tid
    Delay(1);
  }
}


theleo_ua:
как наиболее эффективно актору Б узнать, что актора А убили

if (GetActorProperty(0, APROP_Health) <= 0)
{
  Thing_Remove(actor_b_tid);
  terminate;
}
2 2 1
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1032
Ссылка на пост №269 Отправлено: 31.10.15 13:43:46
ZZYZX

большое спасибо, таким способом заработало
3 1
SAM
= Lance Corporal =
Next rank: - Master Corporal - after 1 points
199

Doom Rate: 1.86

Posts quality: +17
Ссылка на пост №270 Отправлено: 01.11.15 13:52:34
Всем доброго дня и вечера!! подскажите пожалуйста код для оружия? нужно чтобы игрок с помощью руки мог охладить опр. радиус вокруг себя (пока удерживаешь кнопку выстрела все вокруг замерзают) без всяких видимых эффектов.
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №271 Отправлено: 01.11.15 15:31:06
Не то чтобы такую штуку было легко закодить. Особенно чтобы работало на нативных монстрах, например.
Проще всего... Ну... Если монстры все свои (или заменённые нативные), то делаешь им стейт Pain.FreezeRadius, который замораживает монстра на один тик. Беззвучно.
После этого оружие игрока должно спавнить на месте игрока (прямо на месте) мгновенно взрывающегося актора с флагом +FORCEPAIN, +CAUSEPAIN и с нулевым уроном. С необходимым радиусом атаки. Каждый тик (т.е. с промежутком 1).
В итоге когда игрок нажмёт на атаку, то у него каждый тик должна спавниться взрывная волна с типом дамага FreezeRadius, которая будет на 1 тик замораживать всех монстров, у которых прописан Pain.FreezeRadius.
И просто доставлять неприятности тем, у кого не прописан Pain.FreezeRadius, потому что у них есть свой стейт боли, который обычно тоже их заставляет остановиться.
2 2 1
SAM
= Lance Corporal =
Next rank: - Master Corporal - after 1 points
199

Doom Rate: 1.86

Posts quality: +17
Ссылка на пост №272 Отправлено: 01.11.15 17:55:46
ZZYZX

Спасибо! я пробовал делать не видимые снаряды почти 0й скорости которые при нахождении на карте выкидывали кучу очень быстрых, вторичных снарядов в разные стороны и затем основной снаряд исчезал после проигрывания стейта "spawn" (срок жизни назначал так чтобы он исчез перед след. выстрелом), спрайты отключены (TNT1), получалось кривовато да и мне доставалось тоже в обратную хотя флаг "friendly" был прописан как у основного снаряда так и у вторичного.

Добавлено спустя 17 часов 54 минуты 13 секунд:

вот хотел за одно спросить какие параметры нужно задать оружию чтобы при выстреле снаряды разлетались на 360 гр. от игрока это было бы самый раз для имитации заморозки, не обязательно чтобы замерзли все и одним разом главное чтобы морозило на 360 гр. относительно игрока.
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №273 Отправлено: 02.11.15 12:30:40
Ещё можно вот эту конструкцию юзать http://zdoom.org/wiki/A_RadiusGive
Давать монстрам итем, который их морозит скриптом.

И в отличие от моего устаревшего подхода, описанного выше, это работает на всех юнитах которые вообще прописаны как монстры.
2 2 1
D1m3
= Sergeant Major =
Next rank: UAC Sergeant Major after 62 points
618

Doom Rate: 1.92

Posts quality: +53
Ссылка на пост №274 Отправлено: 02.11.15 13:33:57
Возникла проблема с dropitem
Скрытый текст:

ACTOR NewZombieMan : ZombieMan replaces ZombieMan
{
	Game Doom
	SpawnID 4
	Health 20
	Radius 20
	Height 56
	Speed 8
	PainChance 200
	Monster
	+FLOORCLIP
	SeeSound "grunt/sight"
	AttackSound "grunt/attack"
	PainSound "grunt/pain"
	DeathSound "grunt/death"
	ActiveSound "grunt/active"
	Obituary "$OB_ZOMBIE"
	dropitem "Pistol2"
	States
	{
	Spawn:
		POSS AB 10 A_Look
		Loop
	See:
		POSS AABBCCDD 4 A_Chase
		Loop
	Missile:
		POSS E 10 A_FaceTarget
		POSS F 8 A_PosAttack
		POSS E 8
		Goto See
	Pain:
		POSS G 3
		POSS G 3 A_Pain
		Goto See
	Death:
		POSS H 5
		POSS I 5 A_Scream
		POSS J 5 A_NoBlocking
		POSS K 5
		POSS L -1
		Stop
	XDeath:
		POSS M 5
		POSS N 5 A_XScream
		POSS O 5 A_NoBlocking
		POSS PQRST 5
		POSS U -1
		Stop
	Raise:
		POSS K 5
		POSS JIH 5
		Goto See
	}
}


Проблема в том,что актор "Pistol2" заменяет пистолет игрока и он прописан у зомби как dropitem,но при убийстве зомби из него всё также выпадает обойма
Это с dropitem косяки или в коде зомби глюк какой то?
Порт GZDoom
5 4
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1032
Ссылка на пост №275 Отправлено: 03.11.15 01:16:42
D1m3:
Возникла проблема с dropitem


Раз уж пошла такая пьянка, опишу и свою проблему с дропитем: есть такие акторы HereticImp и HereticImpLeader . Если им прописать Dropitem "что-нибудь", то ничего дропаться не будет. Почему так происходит и как это наиболее эффективно исправить? На данный момент я (в качестве обходного костыля) в стейтах смерти и креша прописал spawnitemex (первыми фреймами)

И еще вопрос: представим себе летающего монстра, например HereticImp или Dragon , у которого есть стейт crash. Цель - сделать, чтобы при смерти этого монстра (например если игрок или другой монстр убивает данного монстра) обязательно со 100%-й вероятностью дропался целевой монстр (НЕлетающий). Как это наиболее эффективно реализовать? Что в данном случае лучше - dropitem или spawnitemex? Если второе - в какие стейты его писать - Death или Crash? Если первое - тогда вопрос "как заставить его работать для проблемных акторов а-ля HereticImp " ?

Заранее спасибо за ответы

Добавлено спустя 8 минут 35 секунд:

D1m3:
Проблема в том,что актор "Pistol2" заменяет пистолет игрока и он прописан у зомби как dropitem,но при убийстве зомби из него всё также выпадает обойма
Это с dropitem косяки или в коде зомби глюк какой то?
Порт GZDoom


Как костыль, можешь прописать Dropitem "None", а в стейтах смерти A_spawnitemex ("Pistol2")
3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №276 Отправлено: 03.11.15 08:00:17
SpawnItemEx, Crash

P.S. А костыль который ты предложил это очень херовый костыль, я против.
Приколи потом кто-то ответвится от этого монстра и будет в шоке смотреть как у него одновременно пистоль и дропитем работают ))
2 2 1
zzXenobytEzz
= Corporal =
Next rank: - Lance Corporal - after 20 points
110

Doom Rate: 2

Posts quality: +15
Ссылка на пост №277 Отправлено: 03.11.15 14:40:43
Всем привет! Вот решил освоить такого зверя, как HUB:

GZDoom - Doom in UDMF format (я так понимаю, мапинфо для UDMF и других форматов - отличаются).

1. Порывшись в ZDoom Wiki, не обнаружил подробного описания. Я так понимаю, что это делается через кластеры в mapinfo?
2. Можно ли, вернувшись с уровня обратно в хаб, вносить в хаб изменения (как в Hexen - seven portals, например), двери открывать... Как это реализуется?
3. Не найдется ли у кого нибудь Вад-пример (дабы не объяснять, а просто тыкнуть носом)? :bitsa:
VladGuardian
= Commissar =
Next rank: - UAC Commissar - after 263 points
5537

Doom Rate: 1.28

Posts quality: +1934
Ссылка на пост №278 Отправлено: 03.11.15 15:08:32
zzXenobytEzz
Я сам хабы не программировал, но занимаясь другим, наталкивался на туториалы по сабжу на ZDoom.Вики.
Находятся они правда не очень легко, надо признать.

Оглавление туториалов: http://zdoom.org/wiki/Tutorials
Туториалы Ричарда Кларка: http://zdoom.org/wiki/Richard_Clark's_tutorials

И наконец, один из них, по хабам: http://doomnexus.drdteam.org/Tutorial/hubs.html
4 10 23
zzXenobytEzz
= Corporal =
Next rank: - Lance Corporal - after 20 points
110

Doom Rate: 2

Posts quality: +15
Ссылка на пост №279 Отправлено: 03.11.15 15:13:23
VladGuardian

Спасибо! Щас пороюсь, посмотрю :beer:
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №280 Отправлено: 03.11.15 18:07:33
zzXenobytEzz:
GZDoom - Doom in UDMF format (я так понимаю, мапинфо для UDMF и других форматов - отличаются).

Не отличаются.

Хаб делается как-то так:
cluster 1
{
  hub
}

map map01
{
  levelnum = 1
  cluster = 1
}

map map02
{
  levelnum = 2
  cluster = 1
}


zzXenobytEzz:
2. Можно ли, вернувшись с уровня обратно в хаб, вносить в хаб изменения (как в Hexen - seven portals, например), двери открывать... Как это реализуется?

ACS_Execute принимает параметр "map" (второй по списку). Указываешь номер карты (levelnum), скрипт будет выполнен сразу когда ты вернёшься на эту карту.
Работает только в пределах текущего кластера.

zzXenobytEzz:
3. Не найдется ли у кого нибудь Вад-пример (дабы не объяснять, а просто тыкнуть носом)?

hexen.wad :x
2 2 1
Страница 14 из 200Перейти наверх Пред.  1, 2, 3 ... 13, 14, 15 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!