Новые сообщения Участники Правила Поиск
Модератор форума: freeknik, SLAwww, thecre, RealCrazyMan  
Помощь по SDK для Serious Sam 1.05/1.07
seriously_petr Пятница, 30.11.2012, 21:16 | Сообщение # 1681


Сообщений: 446
Награды: 4
Замечания: 0%
 
SLAwww, Спс

CAHEK Вторник, 04.12.2012, 10:55 | Сообщение # 1682


Сообщений: 794
Награды: 16
Замечания: 0%
 
И еще раз спасибо. :)
И еще вопрос. Как включать и выключать аттачменты на модели. (Ну чтобы они исчезали и появлялись) не знаю как правильно написать. :(


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Среда, 05.12.2012, 22:49 | Сообщение # 1683


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Code
GetModelObject()->RemoveAttachmentModel(MY_ATTACHMENT);

Если в следующий раз нужно будет посмотреть методы класса, не задавай вопрос здесь, просто напиши где-нибудь в IDE само название класса (в данном случае - CModelObject), нажми на нём ПКМ и Go to definition of...


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
CAHEK Четверг, 06.12.2012, 10:47 | Сообщение # 1684


Сообщений: 794
Награды: 16
Замечания: 0%
 
1. Как включить АНИМАЦИЮ АТТАЧМЕНТА АТТАЧМЕНТА у оружия Сэма. Пробовал этим невыходит (хотя с врагами работает)

GetModelObject()->GetAttachmentModel( НАЗВАНИЕ_АТТАЧМЕНТА )->amo_moModelObject.GetAttachmentModel( НАЗВАНИЕ_АТТАЧМЕНТА_АТТАЧМЕНТА )->amo_moModelObject.PlayAnim( НАЗВАНИЕ_АНИМАЦИИ_АТТАЧМЕНТА_АТТАЧМЕНТА , ФЛАГИ_АНИМАЦИИ_АТТАЧМЕНТА_АТТАЧМЕНТА );

2. Ситуация: у оружия есть 3 атачмент. У каждого из них есть анимации. Как сделать что бы когда Сэм выбирает это оружие кроме анимации ACTIVATE у оружия стартовала анимация атачмента.
(надеюсь понятно написал)
Сообщение отредактировал CAHEK - Четверг, 06.12.2012, 14:01


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Четверг, 06.12.2012, 17:05 | Сообщение # 1685


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
С аттачментами вроде бы всё правильно, возможно, ты ошибся где-нибудь в НАЗВАНИЕ_АНИМАЦИИ_АТТАЧМЕНТА_АТТАЧМЕНТА - тебе ведь нужно включить анимацию аттачмента аттачмента? А тут три слова "аттачмент". )

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
CAHEK Четверг, 06.12.2012, 19:12 | Сообщение # 1686


Сообщений: 794
Награды: 16
Замечания: 0%
 
Не выходит. А ладно Максом буду делать. А вот со вторым вопросиком как быть.

Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
Denil Понедельник, 10.12.2012, 21:35 | Сообщение # 1687


Сообщений: 113
Награды: 0
Замечания: 0%
 
кто нибудь подскажет как как декомпилировать dll ?








SLAwww Вторник, 11.12.2012, 03:59 | Сообщение # 1688


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Никак. Настраивай СДК и компилируй свои собственные ДЛЛ. Реальная работа с дизассемблированным кодом гораздо сложнее, чем тихое и спокойное написание классов на С++, так что можешь об этом забыть.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
CAHEK Вторник, 11.12.2012, 10:05 | Сообщение # 1689


Сообщений: 794
Награды: 16
Замечания: 0%
 
И еще вопросы.
Ситуация 1. Модель оружия имеет анимацию и 2 атачмента которые тоже имеют свою анимацию.
Я сделал так
Quote

INDEX iAnim; //Играет аним оружия
switch (IRnd()%3) {
case 0: iAnim = COLT_ANIM_FIRE1; break;
case 1: iAnim = COLT_ANIM_FIRE2; break;
case 2: iAnim = COLT_ANIM_FIRE3; break;
}
m_moWeapon.PlayAnim(iAnim, 0);

autowait(0.1f); // играет аним аттачмента 1
CModelObject *pmo = &(m_moWeapon.GetAttachmentModel(COLT_ATTACHMENT_COLT)->amo_moModelObject);
pmo->PlayAnim(COLT_ANIM_FIRE1, 0);
FireSniperBullet(wpn_fFX[WEAPON_SNIPER], wpn_fFY[WEAPON_SNIPER], 500.0f,
(GetSP()->sp_bCooperative) ? 10.0f : 20.0f, 5.0f);

DecAmmo(m_iBMagasinePEST, 1);

SpawnRangeSound(40.0f);
m_iPESTPUL--;
SetFlare(0, FLARE_ADD);
PlayLightAnim(LIGHT_ANIM_COLT_SHOTGUN, 0);
autowait(0.1f); // играет анимация второго аттачмента
CModelObject *pmo = &(m_moWeapon.GetAttachmentModel(COLT_ATTACHMENT_BULLETS)->amo_moModelObject);
pmo->PlayAnim(COLT_ANIM_FIRE1, 0 );


Но при этом когда начинает играть анимация второво аттачмента, анимация оружия прекращается хотя ей еще идти и идти. Как исправить.

Ситуация 2. Аттачмент имеет анимированную текстуру. Как ,ну скажем при старте анимации "FIRE",
запустить у него текстурную анимацию "2"
Сообщение отредактировал CAHEK - Вторник, 11.12.2012, 13:34


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Вторник, 11.12.2012, 19:31 | Сообщение # 1690


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
А существует ли у COLT_ATTACHMENT_BULLETS анимация с индексом COLT_ANIM_FIRE1?
Про анимированную текстуру - там подход аналогичный, просто используется объект типа CTextureObject, который входит в состав CAttachmentModel или как его там.


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
CAHEK Среда, 12.12.2012, 11:18 | Сообщение # 1691


Сообщений: 794
Награды: 16
Замечания: 0%
 
COLT_ATTACHMENT_BULLETS анимация с индексом COLT_ANIM_FIRE1
Да существует и работает но с багом.(см выше)(я сам добавил)

А с аним текстурой я непонял. (К сожалению я не програмист и в СДК лазию "Методом научного тыка"

На основе этого делать?

CModelObject *pmo = &(m_moWeapon.GetAttachmentModel(COLT_ATTACHMENT_COLT)->amo_moModelObject);
pmo->PlayAnim(COLT_ANIM_FIRE1, 0 );

Можно пример?
Сообщение отредактировал CAHEK - Среда, 12.12.2012, 13:13


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Среда, 12.12.2012, 21:24 | Сообщение # 1692


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Code
CModelObject *pmo = &(m_moWeapon.GetAttachmentModel(COLT_ATTACHMENT_COLT)->amo_moModelObject);  
pmo->mo_toTexture.PlayAnim(TEXTURE_ANIMATION_INDEX,0);

По поводу предыдущего бага - точно не знаю, что это может быть. Попробуй по очереди комментировать строки, относящиеся ко второму выстрелу (начиная с конца), пока баг не исчезнет.


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
seriously_petr Суббота, 15.12.2012, 15:55 | Сообщение # 1693


Сообщений: 446
Награды: 4
Замечания: 0%
 
Всем привет :D ! У меня проблемка:

В классе CPlayer в процедуре смерти хочу вызвать функцию из CPlayerWeapons:

Code
Death(EDeath eDeath)
{
...
penWeapon->DestroyGhostBusterRay();
...
}


Code
  DestroyGhostBusterRay() {
     // destroy ray
     ((CGhostBusterRay&)*m_penGhostBusterRay).DestroyGhostBusterRay();     
     CPlayer &pl = (CPlayer&)*m_penPlayer;
     pl.m_soWeapon5.Stop();
     return EEnd();
   };


При компиляции выдаёт ошибку:
Code
E:/Mymod/Sources/EntitiesMP/Player.es(5561) : error C2660: 'DestroyGhostBusterRay' : function does not take 0 parameters


Я не пойму причём здесь функция, если это процедура.


SLAwww Суббота, 15.12.2012, 17:38 | Сообщение # 1694


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
В стандарте языка нет разделения на функции и процедуры, это всё - примочки ES-диалекта, поэтому IDE называет их функциями, но всё-же процедуры извне лучше не вызывать, потому что они являются "состояниями", в одном из которых находится объект. Они вызываются, как правило, самим объектом соответствующего класса: в CPlayerWeapons в какой-то точке происходит ожидание ивента (wait), и при получении определённого ивента вызывается процедура. Как-то так:
Code
on (EDestroyGhostBusterRay) : { call DestroyGhostBusterRay() EReturn; resume; }

Вариант полегче - просто оформить этот твой DestroyGhostBusterRay функцией, а не процедурой.


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
CAHEK Понедельник, 17.12.2012, 19:54 | Сообщение # 1695


Сообщений: 794
Награды: 16
Замечания: 0%
 
Спасибо SLAwww все работает. (Что бы я без тебя делал.)
Вопрос Как при попадании во врага с опр. оружия сделать появление аттачмента у этого оружия.
Как добавить аттач. я знаю, а как вызвать эту функцию только при попадении опр. оружия нет.


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Понедельник, 17.12.2012, 20:14 | Сообщение # 1696


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
В функции стрельбы у каждого оружия, стреляющего пулями (FireTommygun, FireDoubleShotgun и т. д.), пропиши проверку m_penRayHit. Если m_penRayHit указывает на врага (m_penRayHit ненулевой и IsDerivedFromClass(m_penRayHit,"Enemy Base") возвращает TRUE), добавляй аттачмент.
Можно пойти другим путём - в RecieveDamage у CEnemyBase прописать проверку Inflictor'а - если таковым является игрок, отправить ему ивент или иным образом сообщить о необходимости добавления аттачмента.


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
CAHEK Понедельник, 17.12.2012, 20:24 | Сообщение # 1697


Сообщений: 794
Награды: 16
Замечания: 0%
 
Примерно понял.
А если оружие бензопила.
(я для нее этот эффект готовлю)


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Вторник, 18.12.2012, 00:30 | Сообщение # 1698


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Начиная со строки 2089 в PlayerWeapons.es выполняются действия над объектом, который получает повреждения от бензопилы (penClosest). Можешь проверять этот penClosest, и в зависимости от него добавлять или убирать аттачмент.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
CAHEK Вторник, 18.12.2012, 12:07 | Сообщение # 1699


Сообщений: 794
Награды: 16
Замечания: 0%
 
Я вставил код
Code
if( penClosest!=NULL)  
            { .........}

после строки
Code
m_moWeapon.PlayAnim(CHAINSAW_ANIM_FIRE, AOF_LOOPING|AOF_NORESTART);


Выдает ошибку C:/MyMod/Sources/EntitiesMP/PlayerWeapons.es(6245) : error C2065: 'penClosest' : undeclared identifier


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Вторник, 18.12.2012, 19:34 | Сообщение # 1700


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Конечно, ведь penClosest - локальная переменная метода CutWithChainsaw, а тебе нужно сделать её глобальной.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
XFighter Пятница, 21.12.2012, 20:00 | Сообщение # 1701


Сообщений: 20
Награды: 0
Замечания: 20%
 
Привет, вопрос такой: как рандонмизировать бег врагов (Random)? Например один гнаар бежит быстрее другого.

SLAwww Пятница, 21.12.2012, 20:43 | Сообщение # 1702


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
В процедуре Main задаются все начальные параметры врага. Начиная со строки 492 в Eyeman.es:
Код
if (m_EecChar==EYC_SERGEANT) {
       m_fAttackRunSpeed = FRnd()*2.0f + 10.0f;
       m_aAttackRotateSpeed = AngleDeg(FRnd()*100 + 600.0f);
       m_fCloseRunSpeed = FRnd()*2.0f + 10.0f;
       m_aCloseRotateSpeed = AngleDeg(FRnd()*100 + 600.0f);
     } else {
       m_fAttackRunSpeed = FRnd()*2.0f + 9.0f;
       m_aAttackRotateSpeed = AngleDeg(FRnd()*100 + 600.0f);
       m_fCloseRunSpeed = FRnd()*2.0f + 9.0f;
       m_aCloseRotateSpeed = AngleDeg(FRnd()*100 + 600.0f);
     }

Как видишь, скорости бега и так рандомизированы, хотя, можно увеличить разброс, сделав, например, не FRnd()*2.0f + 10.0f, а FRnd()*6.0f + 8.0f.


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
XFighter Воскресенье, 23.12.2012, 19:27 | Сообщение # 1703


Сообщений: 20
Награды: 0
Замечания: 20%
 
ок, спасибо.

Добавлено (23.12.2012, 19:27)
---------------------------------------------
--------------------Configuration: EntitiesMP - Win32 Release--------------------
Compiling...
Command line warning D4002 : ignoring unknown option '/Ot'
Command line warning D4002 : ignoring unknown option '/Og'
Command line warning D4002 : ignoring unknown option '/Oi'
Command line warning D4002 : ignoring unknown option '/Oy-'
HUD.cpp
E:\Program Files\Croteam\SeriousSam-2\The Second Encounter\Mods\MyMod\Sources\EntitiesMP\Common\HUD.cpp(752) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Error executing cl.exe.

EntitiesMP.dll - 1 error(s), 4 warning(s)
wtf?? что за ошибка, утром её не было.

SLAwww Воскресенье, 23.12.2012, 21:46 | Сообщение # 1704


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Неправильно настроен проект и/или сама IDE. Возможно, ты открыл проект не в VC++ 6.0.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
XFighter Понедельник, 24.12.2012, 13:09 | Сообщение # 1705


Сообщений: 20
Награды: 0
Замечания: 20%
 
SLAwww, я его открывал в vc++6.0, как что буду заново настраивать сдк.

Добавлено (24.12.2012, 09:10)
---------------------------------------------
хм, вроде бы всё работает, я просто диск когда вытащил (:E) у меня там сдк, как сразу вирус выдал, который половину файлов сожрал >( , я в HUD.CPP хотел радар отрегулировать, чтобы он ловил врагов с далекого расстояния, а не с близкого, не получилось ошибку эту выдал.

Добавлено (24.12.2012, 13:09)
---------------------------------------------
Помогите, я решил сделать SeriousSpeed для врагов, он что-то не работает. Я прописал в EnemyBase.es вот это, вот код:
// SeriousSpeed for enemies
void SeriousSpeed(void)
{
if (!m_bSeriousSpeed)

{
m_bSeriousSpeed = TRUE;
m_fAttackRunSpeed = 25.0f,
Particles_RunAfterBurner(this, m_bSeriousSpeed, 1.6f, 0);



}
}
Если что-то не правильно, подправьте код, пожалуйста.

Сообщение отредактировал XFighter - Понедельник, 24.12.2012, 09:11


SLAwww Понедельник, 24.12.2012, 20:57 | Сообщение # 1706


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Во-первых, когда вызывается этот метод? Он должен вызываться уже после того, как в процедуре Main у врага были заданы значения его переменных. Во-вторых, m_fAttackRunSpeed - не единственный параметр, отвечающий за скорость бега, там ещё есть m_fCloseRunSpeed. В третьих, партикли отрисовываются не так - их нужно отрисовывать в AdjustShadingParameters в каждом кадре.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
CAHEK Среда, 26.12.2012, 10:56 | Сообщение # 1707


Сообщений: 794
Награды: 16
Замечания: 0%
 
Ситуация. Я хочу сделать так что бы когда работает «Камера» (в смысле ентия) то от при нажатии левой или правой кнопки мыши идут сигналы на триггеры которые указаны в камере.
Указатели в камере я сделал на примере триггеров добавив

Код

   75 enum EventEType m_eetEvent1     "Event type Tar 01" 'G' = EET_TRIGGER,    
  76 enum EventEType m_eetEvent2     "Event type Tar 02" 'Z' = EET_TRIGGER,  

   77 CEntityPointer m_penTar1     "Tar 01" 'X' COLOR(C_RED|0xFF),
78 CEntityPointer m_penTar2     "Tar 01" 'X' COLOR(C_RED|0xFF),
   79 CEntityPointer m_penCaused,       


Теперь нужно (как я думаю) в player.es
Нужно добавить типа вот этого

Код

if (ulNewButtons&(PLACT_FIRE|PLACT_USE|PLACT_COMPUTER)) {
        if (111111111) {
CEntity *m_penTar1 = ((CCamera&)*m_penCamera).m_penTar1; // 222222
}
}


Но я не знаю
1. Что с чем сравнивать там, где стоят единицы.
2. Правильно составлена строка там, где стоят двойки.
3. Куда этот код вставить (в player.es много чего с камерой а какая верная я незнаю).
4. (Сначала сделал, а потом задумался) ход мыслей вообще верен или я тут всякую чушь написал.
Сообщение отредактировал CAHEK - Среда, 26.12.2012, 11:00


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Среда, 26.12.2012, 21:01 | Сообщение # 1708


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Вообще, не обязательно это делать через игрока. Я об этом уже не раз писал - достаточно в цикле в любой энтити проверять _pShell->GetINDEX("ctl_bMoveForward") (вместо clt_bMoveForward можно любой другой Control-параметр); это выражение вернёт 1, если клавиша нажата. Твой путь тоже будет работать, но он сложнее, и тебе лучше пока что туда не лезть.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
SeriousAlexej Пятница, 28.12.2012, 17:12 | Сообщение # 1709


Serious Editor
Сообщений: 1245
Награды: 52
Замечания: 0%
 
Такая вот проблема:

Запускаю у себя сервер и подключаюсь к нему, повторно запустив Сэма. Выбираю тип связи - старый модем.
Проблема в том, что иногда у сервера и у клиента функция GetPlacement() возвращает разные значения с отклонением от 1й тысячной, до 2х целых в одном из параметров... Как с этим бороться?
Еще хотел бы узнать разницу между GetPlacement() и GetLerpedPlacement().


XFighter Пятница, 28.12.2012, 20:44 | Сообщение # 1710


Сообщений: 20
Награды: 0
Замечания: 20%
 
SLAwww, я вообще ничего не понял, а ты можешь подробнее описать эту функцию?

Поиск:

Статистика