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

Doom Rate: 4.35

Posts quality: +1264
Ссылка на пост №2501 Отправлено: 24.07.17 17:52:04
sanek_47 Тогда может быть Thing_Projectile это то что надо?
1 4 32
YURA_111
UAC Sergeant Major
Next rank: Chief Petty Officer after 82 points
768

Doom Rate: 1.98

Posts quality: +136
Ссылка на пост №2502 Отправлено: 26.07.17 22:06:28
sanek_47:
Как заспавнить монстра с определенной скоростью под определенным углом? Есть SpawnProjectile, но через него спавнящиеся монстры всегда повернуты лицом в одну и ту же сторону...


A_SpawnItemEx (string type [, float xofs [, float yofs [, float zofs [, float xvel [, float yvel [, float zvel [, float angle [, int flags [, int failchance [, int tid]]]]]]]]])

Первое значение - это тип монстра или другого объекта
далее три значения - это координаты
после них еще три значения - это скорость/ускорение (тоже делящаяся по координатам)
далее значение - это УГОЛ
Далее флаги
после флагов - шанс
и последнее тид

Функция идеально подходящая для твоей задачи:
https://zdoom.org/wiki/A_SpawnItemEx
sanek_47
= Master Corporal =
Next rank: - Sergeant - after 18 points
272

Doom Rate: 2.16

Posts quality: +64
Ссылка на пост №2503 Отправлено: 26.07.17 23:44:31
YURA_111:
A_SpawnItemEx
мне через acs нужно было.
1
theleo_ua
= Colonel =
Next rank: - Commissar - after 96 points
4794

Doom Rate: 1.8

Posts quality: +1032
Ссылка на пост №2504 Отправлено: 27.07.17 01:12:13
sanek_47:
мне через acs нужно было.


когда-то была такая проблема, вижу 3 решения:
1) трахаться с синусами и косинусами
2) если ACS скрипт вызван актором, на угол которого надо повернуть, то setactorangle(getactorangle(0))
3) сделать так, чтобы ACS посылал команды в декорейт и ждал ответа от декорейта (методом переменных), и спавнить через декорейт (я такой метод использовал для вращения статуй, только там вместо spawn другая команда была)
3 1
MyNameIs
= 1st Lieutenant =
Next rank: - Captain - after 36 points
2054

Doom Rate: 2.04

Posts quality: +893
Ссылка на пост №2505 Отправлено: 27.07.17 11:20:49
у меня вопрос. я его вроде уже задавал, но найти не смог.

если стрелять A_FireBullets одиночными выстрелами, то они всегда точны и на выставленный разброс не смотрят.
а как сделать, чтобы разброс влиял и на самый первый выстрел тоже?
1 1 1
Doomstalker
Chief Petty Officer
Next rank: - Warrant Officer - after 71 points
969

Doom Rate: 1.49

Posts quality: +847
Ссылка на пост №2506 Отправлено: 27.07.17 11:48:58
MyNameIs
В параметре, который отвечает за количество пуль, поставь -1.

Рейтинг сообщения: +1, отметил(и): MyNameIs
1 1
[D2D]_Revenant
Banned flooder
4358

Doom Rate: 1.49

Posts quality: -23
Ссылка на пост №2507 Отправлено: 27.07.17 15:28:54
Не то что бы проект, интересует, возможно ли такое:
Мод, который после запуска и начала игры переносит камеру из одной точки в другую (то есть типа рывками, телепортами, не нужно типа бегать и шотить), делая скриншоты :))
То есть, есть карта, мод каким-то неведомым для меня образом считает диспозицию камеры относительно стен и пола, как и ее направление, так же можно было бы забивать в мод всякие параметры, и т.д., в общем, я надеюсь, что понятно объяснил, не кидайтесь камнями, я не шарю в программировании) Просто скажите в принципе возможно такое или нет? Ну даже не на Здуме, а вообще как-либо, чистый интерес.
10 2 6
Kragoth762
= Master Sergeant =
Next rank: - Sergeant Major - after 56 points
474

Doom Rate: 1.93

Posts quality: +47
Ссылка на пост №2508 Отправлено: 28.07.17 01:22:21
как сделать инвентарь или скрипт который не даёт игроку умереть при 0 HP? как Quartz Flask в Hexen.
2 1
YURA_111
UAC Sergeant Major
Next rank: Chief Petty Officer after 82 points
768

Doom Rate: 1.98

Posts quality: +136
Ссылка на пост №2509 Отправлено: 28.07.17 21:12:50
Kragoth762:
как сделать инвентарь или скрипт который не даёт игроку умереть при 0 HP? как Quartz Flask в Hexen.


Я не уверен, но имхо 0 процентов и не умереть - никак.

Но вот 1 процент = поверап "БУДДА". В этом случае ниже 1 хп не опустится (пока поверап не закончится)
https://zdoom.org/wiki/Classes:PowerBuddha

Рейтинг сообщения: +1, отметил(и): Kragoth762
MyNameIs
= 1st Lieutenant =
Next rank: - Captain - after 36 points
2054

Doom Rate: 2.04

Posts quality: +893
Ссылка на пост №2510 Отправлено: 29.07.17 11:49:18
когда в гздумбилдере делаешь треугольники, по краям появляются точки, которые можно поднимать\опускать.
а можно, например, один треугольник оставить сверху, опустив точки другого? или придется между ними четырехугольники ставить
1 1 1
Kragoth762
= Master Sergeant =
Next rank: - Sergeant Major - after 56 points
474

Doom Rate: 1.93

Posts quality: +47
Ссылка на пост №2511 Отправлено: 29.07.17 12:03:57
MyNameIs
это уже Curve получается, типа разделение рёбер.
2 1
DOOMGABR
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 114 points
1176

Doom Rate: 1.87

Posts quality: +773
Ссылка на пост №2512 Отправлено: 31.07.17 21:36:46
Как с помощью ACS удалить шотган, который упал с сержанта после Thing_Remove? Просто я его потом рессарекчу и после смерти он оставляет еще один шотган.
АффтаR NдеN
- Sergeant -
Next rank: = Sergeant = after 16 points
324

Doom Rate: 1.41

Posts quality: +140
Ссылка на пост №2513 Отправлено: 31.07.17 21:45:48
реально сделать подбираемые записки, которые потом можно будет читать?
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 106 points
1334

Doom Rate: 2.26

Posts quality: +726
Ссылка на пост №2514 Отправлено: 01.08.17 00:19:32
2 АффтаR NдеN:
Конечно.
Например, делаешь какой-нибудь актор Custom-инвентаря типа "Notepage1", затем в стейте "Use" делаешь ссылку на нужный скрипт.

Actor Notepage1: CustomInventory 12731         // Example actor
{
    Inventory.Amount 1
    Inventory.MaxAmount 1
    Inventory.Icon "PAGEA0"
    States
    {
    Spawn:
        PAGE A -1
        Stop
    Use:
//      TNT1 A 0                               // May prevent the bug
        TNT1 A 0 ACS_ExecuteWithResult( 321 )  // Needed ACS-script
        Stop
    }
}

Script 321 ( void ) {
    Print( s: "You read the notepage 1:" );
    Delay( 2*35 );
    Print( s: "...They will be h...re at any mome...t..." );
}



Либо прямо в стейте "Use" написать "A_Print( <...> )".

Actor Notepage2: CustomInventory 12732       // Example actor 2
{
    Inventory.Amount 1
    Inventory.MaxAmount 1
    Inventory.Icon "PAGEB0"
    States
    {
    Spawn:
        PAGE B -1
        Stop
    Use:
//      TNT1 A 0                             // May prevent the bug
        TNT1 A 70 A_Print( "You read the second notepage:", 35*2 )
        TNT1 A 105 A_Print( "...You're ...ot be abl... to scream... Yo...'re alone..." )
        Stop
    }
}


Ну, в "Use" можно всё что угодно подставить, хоть скрипт с выводом на экран картинки этой самой странички.

Рейтинг сообщения: +2, отметил(и): Kragoth762, АффтаR NдеN
2 7 1
Kragoth762
= Master Sergeant =
Next rank: - Sergeant Major - after 56 points
474

Doom Rate: 1.93

Posts quality: +47
Ссылка на пост №2515 Отправлено: 01.08.17 06:33:29
DOOMGABR
изначально никак, потому что у шотгана нет TID (Tag). Придётся вместо DropItem, писать вручную в decorate. Для этого я воспользуюсь UserVariable у мёртвого шотгая.
нужен этот acs скрипт для decorate:
script "set_UniqueTID" (void) {
   SetResultValue(UniqueTID());
}

Модифицируем шотгая в decorate:
actor shotgunguy2 : shotgunguy replaces shotgunguy {
   DropItem ""
   var int user_TID; //шотгай будет хранить tid своего дроп шотгана..
   States {
      Death:
      SPOS H 5 A_SetUserVar("user_TID",CallACS("set_uniqueTID")) //задаем уникальный tid в хранение, потом мы используем его..
      SPOS I 5 A_Scream
      SPOS J 5
      {
         A_NoBlocking;
         A_SpawnItemEx("Shotgun",0,0,0,random(-1,1),random(-1,1),5,0,SXF_NOCHECKPOSITION,0,user_TID); //задаем уникальный tid из хранения на дроп шотган, чтобы можно было удалить через скрипт..
      //для красоты написал отталкивающий от шотгая эффект <random(-1,1),random(-1,1),5>
      }
      SPOS K 5
      SPOS L -1
      Stop
   }
}

Удаляем шотган через ACS:
Thing_Remove(GetUserVariable(<ShotgunGuy TID>,"user_TID"));

или можно скопировать тег шотгая к шотгану (transfering).
мини туториал

АффтаR NдеN
Попробовал написать скрипт меню для чтения записей. Потестил, не забудь задать кнопку в настройках для отображения меню.
туториал
Скрытый текст:


DECORATE:
ACTOR ShowMenu : inventory { //trigger
   Inventory.MaxAmount 1
}

ACTOR Note : inventory {
   height 16
   radius 8
   scale 0.5
   Inventory.MaxAmount 1
   States {
      Spawn:
         NOTE A -1
         Stop
   }
}

//notes for reading
ACTOR Note1 : Note 25000 {
   Inventory.PickupMessage "you got a note1"
}

ACTOR Note2 : Note 25001 {
   Inventory.PickupMessage "you got a note2"
}

ACTOR Note7 : Note 25006 {
   Inventory.PickupMessage "you got a note7"
}

ACTOR Note8 : Note 25007 {
   Inventory.PickupMessage "you got a note8"
}

ACS:
#include "zcommon.acs"

#define maxnotes 8
//8 notes, u can add more, but add also string (actor class for responding).
str noteactors[maxnotes]={"Note1","Note2","Note3","Note4","Note5","Note6","Note7","Note8"};

int sel_i[8][maxnotes];
int select[8];
int textspace[8];
bool isreading[8];
str notes[maxnotes]={ //note data
   "You're reading the first created note.",
   "Doom was released in December 10, 1993.",
   "-",
   "-",
   "-",
   "-",
   "My best cheats: IDDQD, IDKFA.",
   "This is a last note...",
};

Script 1 (void) NET { //menu trigger
   GiveInventory("ShowMenu",1);
   Suspend;
   TakeInventory("ShowMenu",1);
}

Script 2 ENTER { //note menu
   SetHudSize(320,200,1);
   int countnotes;
   while(TRUE) {
      int pn=PlayerNumber();
      if (CheckInventory("ShowMenu") && ThingCount(0,0) && PlayerInGame(pn)) {
         SetPlayerProperty(0,1,PROP_TOTALLYFROZEN);
         FadeTo(0,0,0,0.5,0);
         int buttons=getplayerinput(pn,INPUT_BUTTONS);
         int oldbuttons=getplayerinput(pn,INPUT_OLDBUTTONS);
         if (buttons & BT_FORWARD && !(oldbuttons & BT_FORWARD) && !isreading[pn] && countnotes>0) {
            select[pn]--;
            if(select[pn]<0)select[pn]=0;
         }
         if (buttons & BT_BACK && !(oldbuttons & BT_BACK) && !isreading[pn] && countnotes>0) {
            select[pn]++;
            if(select[pn]>textspace[pn]-1)select[pn]=textspace[pn]-1;
         }
            if (buttons & BT_USE && !(oldbuttons & BT_USE) && countnotes>0) {
               if (!isreading[pn]) isreading[pn]=TRUE;
                  else isreading[pn]=FALSE;
               }
               textspace[pn]=0;
               if (!isreading[pn]) {
               for (int i = 0; i < maxnotes; i++) {
                   if(!CheckInventory(noteactors[i])) continue;
                  sel_i[pn][textspace[pn]]=i;
                  str setcolor;
                  if (sel_i[pn][select[pn]]==i) setcolor=CR_RED;
                  else setcolor=CR_WHITE;
                  HudMessage(s:noteactors[i];HUDMSG_FADEOUT,textspace[pn]+1,setcolor,280.0,100.0+(8.0*textspace[pn]),0.1,0.5);
                  textspace[pn]++;
               }
               countnotes=textspace[pn];
               if (!countnotes) {
                  hudmessage(s:"Empty";hudmsg_plain,1,CR_WHITE, 280.0,100.0,0.1);
               }
            } else {
               //print(s:noteactors[sel_i[pn][select[pn]]]);
               for (i = 1; i < maxnotes+1; i++) {
                  hudmessage(s:"";hudmsg_plain,i,0, 0,0,0);
               }
               hudmessage(s:"Note",d:sel_i[pn][select[pn]]+1,s:"\n\n",s:notes[sel_i[pn][select[pn]]];
               HUDMSG_PLAIN,1,CR_WHITE,32.1,64.1,0.1);
            }
         }
      else {
         TakeInventory("ShowMenu",1);
         SetPlayerProperty(0,0,PROP_TOTALLYFROZEN);
         isreading[pn]=FALSE;
         if(!ThingCount(0,0) || !PlayerInGame(pn))select[pn]=0;
      }
      FadeTo(0,0,0,0,1.0);
      Delay(1);
   }
}

наверняка и в co-op сработает



[D2D]_Revenant
это управляемая камера?

Рейтинг сообщения: +1, отметил(и): JSO x
2 1
MyNameIs
= 1st Lieutenant =
Next rank: - Captain - after 36 points
2054

Doom Rate: 2.04

Posts quality: +893
Ссылка на пост №2516 Отправлено: 02.08.17 10:41:00
декорейтом ведь можно заменять некоторые строки кода у какого-либо актора, так?
а можно, например, массово убрать у всего оружия флаг +WEAPON.NOAUTOAIM? заменить плюс на минус, например..

чтобы вгрузить вад поверх оружия и возможно было стрелять из такого оружия без фрилука
Скрытый текст:

понимаю, что что-нибудь может сломаться, но это уже из принципа



пробовал сделать что-то с актором Weapon, но не вышло
1 1 1
DOOMGABR
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 114 points
1176

Doom Rate: 1.87

Posts quality: +773
Ссылка на пост №2517 Отправлено: 02.08.17 10:58:18
Kragoth762
от души конечно за код, однако будут ли конфликты с модами, у которых сержантовский код свой :sad4:
Kragoth762
= Master Sergeant =
Next rank: - Sergeant Major - after 56 points
474

Doom Rate: 1.93

Posts quality: +47
Ссылка на пост №2518 Отправлено: 02.08.17 12:16:56
MyNameIs
ну разве что только чтобы писать вот это в оружие:
TNT1 A 0 A_ChangeFlag("WEAPON.NOAUTOAIM", FALSE) //изменит флаг активатора

или скриптом:
SetActorFlag(tag, "WEAPON.NOAUTOAIM", FALSE); //только это не сменит оружие, а только монстров, декораций или игрока. Или просто любой актор только на карте, а не в инвентаре.

если каждое оружие, то можно циклом:
Скрытый текст:

TNT1 A 0 { //VM - Anonymous function
    for (A_SetUserVar(user_i, 0); user_i < 9; A_SetUserVar(user_i, user_i + 1)) //все 9 оружий к операции
    {
        CallACS("ChangeFlag",i); //TID Оружия
    }
}
---
ACS:

Script "ChangeFlag" (int i) {
SetActorFlag(i, "WEAPON.NOAUTOAIM", FALSE);
}

нет, это не сработает тоже(


извини не знаю другого способа
DOOMGABR
тогда надо заменять сержантовского шотгая, как в этом примере. а без сержантовского, этот пример сработает.
хотя без всего этого можно наверное.. но не знаю как, надо придумать)

Добавлено спустя 7 минут 32 секунды:

я не силён в этом
2 1
sanek_47
= Master Corporal =
Next rank: - Sergeant - after 18 points
272

Doom Rate: 2.16

Posts quality: +64
Ссылка на пост №2519 Отправлено: 02.08.17 15:58:37
Есть ли возможность через декорейт проверить тег сектора, в котором находится актор?
1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №2520 Отправлено: 02.08.17 20:52:29
Нет.

Рейтинг сообщения: +2, отметил(и): Kragoth762, JSO x
2 2 1
Страница 126 из 200Перейти наверх Пред.  1, 2, 3 ... 125, 126, 127 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!