Новые сообщения Участники Правила Поиск
Модератор форума: freeknik, SLAwww, thecre, RealCrazyMan  
Форум » Serious Sam » Серьёзное редактирование » Помощь по SDK для Serious Sam 1.05/1.07 (Вопросы по комплекту средств разработки для Serious Sam 1.)
Помощь по SDK для Serious Sam 1.05/1.07
polymorn Четверг, 26.12.2013, 09:43 | Сообщение # 1981


Сообщений: 123
Награды: 15
Замечания: 0%
 
Товарищи, serious engine 1 действительно великий, но меня очень огорчает прыжок, он портит весь движок в целом, как по мне :C
В теории, возможно ли в сдк сделать хороший, приближенный к квейку прыжок? Даже без распрыжки хотя бы. Или исходники физики закрыты?


SLAwww Четверг, 26.12.2013, 21:38 | Сообщение # 1982


Рряа? ^..^
Сообщений: 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.
attar Четверг, 26.12.2013, 21:56 | Сообщение # 1983


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

azazazaz
N3K0K0T3 Четверг, 26.12.2013, 22:03 | Сообщение # 1984


Сообщений: 395
Награды: 3
Замечания: 0%
 
SLAwww,
"Гравитация - 800 wu/с2
Скорость при беге игрока - 320 wu/с
Скорость при прыжке - 270 wu/с
"
Имеется ввиду распрыг, не иначе.


Fallgor Четверг, 26.12.2013, 22:07 | Сообщение # 1985


Сообщений: 372
Награды: 0
Замечания: 20%
 
N3K0K0T3, так и скорость передвижения игрока тогда должна быть выше

Добавлено (26.12.2013, 22:07)
---------------------------------------------
омг что я несу

хочу чеснок
N3K0K0T3 Четверг, 26.12.2013, 22:08 | Сообщение # 1986


Сообщений: 395
Награды: 3
Замечания: 0%
 
Сообщение отредактировал N3K0K0T3 - Четверг, 26.12.2013, 22:11


Fallgor Четверг, 26.12.2013, 22:15 | Сообщение # 1987


Сообщений: 372
Награды: 0
Замечания: 20%
 
N3K0K0T3, ага,называется deathrun,+ в кс можно делать двойной прыжок,
не думаю что в Сэме он пригодится,но было бы круче


хочу чеснок
N3K0K0T3 Четверг, 26.12.2013, 22:19 | Сообщение # 1988


Сообщений: 395
Награды: 3
Замечания: 0%
 
У меня в принципе есть идея, как осуществить данный прыжок.Нужен GravityMarker + повышенная скорость персонажа (которую скорее всего можно изменить с помощью SDK).

shadow_tin Пятница, 27.12.2013, 00:20 | Сообщение # 1989


Сообщений: 164
Награды: 6
Замечания: 0%
 
Вам правила угла недостаточно, вижу. -_-


"Просто у него окрепшая физика, а ты ещё не дорос..."
SLAwww Суббота, 28.12.2013, 02:23 | Сообщение # 1990


Рряа? ^..^
Сообщений: 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.
NucaCat Понедельник, 06.01.2014, 16:26 | Сообщение # 1991


Сообщений: 46
Награды: 2
Замечания: 0%
 
Мне нужно чтобы из рокет лаунчера вылетало 4 ракеты, но не в одном месте, а рядом как бы по углам квадрата. Может кто нибудь написать код, кому это не составит больших усилий. Скомпилировать я сам смогу.

SLAwww Понедельник, 06.01.2014, 19:52 | Сообщение # 1992


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Скомпилировать все могут. =Р
В PlayerWeapons есть функция:
Код
// fire rocket
   void FireRocket(void) {
     // rocket start position
     CPlacement3D plRocket;
     CalcWeaponPosition(
       FLOAT3D(wpn_fFX[WEAPON_ROCKETLAUNCHER],wpn_fFY[WEAPON_ROCKETLAUNCHER], 0),  
       plRocket, TRUE);
     // create rocket
     CEntityPointer penRocket= CreateEntity(plRocket, CLASS_PROJECTILE);
     // init and launch rocket
     ELaunchProjectile eLaunch;
     eLaunch.penLauncher = m_penPlayer;
     eLaunch.prtType = PRT_ROCKET;
     penRocket->Initialize(eLaunch);
   };

Всё, что тебе нужно - скопировать её содержимое три раза, только исправить имена переменных, чтобы не повторялись, ну и выставить разные координаты для каждой ракеты (передавать разные значения в CalcWeaponPosition).


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.
NucaCat Вторник, 07.01.2014, 12:42 | Сообщение # 1993


Сообщений: 46
Награды: 2
Замечания: 0%
 
Большое спасибо, все получилось. Я думал, что у меня с моими то знаниями ничего не выйдет.

CAHEK Воскресенье, 12.01.2014, 13:57 | Сообщение # 1994


Сообщений: 794
Награды: 15
Замечания: 0%
 
Как написать проверку дитсанции от врага до игрока. Проверна находится в scorpman.es

Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
Heming_Hitrowski Воскресенье, 12.01.2014, 15:02 | Сообщение # 1995


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
FLOAT fDistance = (m_penEnemy->GetPlacement() - GetPlacement()).Length();
вроде так


SeriousAlexej Воскресенье, 12.01.2014, 15:39 | Сообщение # 1996


Serious Editor
Сообщений: 1245
Награды: 52
Замечания: 0%
 
Heming_Hitrowski, надо получать не всю позицию, а только местонахождение. Правильнее будет так:
FLOAT fDistance = (m_penEnemy->GetPlacement().pl_PositionVector - GetPlacement().pl_PositionVector).Length();


CAHEK Воскресенье, 12.01.2014, 16:20 | Сообщение # 1997


Сообщений: 794
Награды: 15
Замечания: 0%
 
Пробую так.
if ( fDistance > 20)
Выдает ошибку

Добавлено (12.01.2014, 16:17)
---------------------------------------------
И ещё. Как менять радиус и громкость звука у врага.

Добавлено (12.01.2014, 16:20)
---------------------------------------------
Про дистанцию спасибо работает. Осталось со звуком.

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


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Какую ошибку? Покажи код. А по поводу параметров звука, ищи строку m_soSound.Set3DParameters или как-то так.

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.
Heming_Hitrowski Пятница, 17.01.2014, 19:56 | Сообщение # 1999


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Впилил поддержку .ini файлов.
Создаю файл, который заполняется при старте игрока. В итоге у меня отличаются значения у клиента и у сервера:

Server:

server INDEX: 3
client INDEX: 3

Client:

Server INDEX: -10495252
client INDEX: 3
client INDEX: 2559252

как добиться идентичности этих значений?


SLAwww Пятница, 17.01.2014, 21:38 | Сообщение # 2000


Рряа? ^..^
Сообщений: 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.
Heming_Hitrowski Суббота, 18.01.2014, 08:43 | Сообщение # 2001


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
/* load variables from ini file */
void LoadInventory() {
string strInv = ".\\Inventory.ini";
const UBYTE MAX_ID = 255;
UBYTE i = 0;
UBYTE b = 0;
for (i = 0; i<MAX_ID; i++) {

switch (i) {
// red guardian barret
case 1:
if (CIniFile::GetValue("RG BARR", "INVENTORY", strInv) == "TRUE") {
//GetPlayerWeapons()->ConfirmTexture(WEAPON_BARRET, WT_RED_GUARDIAN);
arr_invItems[i] = TRUE;
arr_iItems[b] = i;
b++;

}
break;

case 2:
if (CIniFile::GetValue("RG KNIFE", "INVENTORY", strInv) == "TRUE") {
//GetPlayerWeapons()->ConfirmTexture(WEAPON_KNIFE, WT_RED_GUARDIAN);
arr_invItems[i] = TRUE;
arr_iItems[b] = i;
b++;
}
break;

case 3:
if (CIniFile::GetValue("CR M4A1", "INVENTORY", strInv) == "TRUE") {
arr_invItems[i] = TRUE;
arr_iItems[b] = i;
b++;
}
break;

case 4:
if (CIniFile::GetValue("CR SPAS-12", "INVENTORY", strInv) == "TRUE") {
arr_invItems[i] = TRUE;
arr_iItems[b] = i;
b++;
}
break;

case 100:
if (CIniFile::GetValue("THE CRE", "INVENTORY", strInv) == "TRUE") {
arr_invItems[i] = TRUE;
arr_iItems[b] = i;
b++;
}
break;

case 101:
if (CIniFile::GetValue("AR2R", "INVENTORY", strInv) == "TRUE") {
arr_invItems[i] = TRUE;
arr_iItems[b] = i;
b++;

}
break;

case 102:
if (CIniFile::GetValue("KOTE", "INVENTORY", strInv) == "TRUE") {
arr_invItems[i] = TRUE;
arr_iItems[b] = i;
b++;
}
break;

case 103:
if (CIniFile::GetValue("ART-SERIOUS", "INVENTORY", strInv) == "TRUE") {
arr_invItems[i] = TRUE;
arr_iItems[b] = i;
b++;
}
break;

}
}
GetRareItems();
return;
};

/* how much id's player have */
void GetRareItems(void) {

const UBYTE MAX_ID = 255;
uIDs_NOW = 0; // how much rare items player have
UBYTE i; // for "for"

for (i = 0; i<MAX_ID; i++) {
if (arr_invItems[i] == TRUE) {
uIDs_NOW++;
}
}

return;
};

uIDs_NOW отличаются
Сообщение отредактировал Heming_Hitrowski - Суббота, 18.01.2014, 13:09


SLAwww Суббота, 18.01.2014, 19:52 | Сообщение # 2002


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Похоже на то, что массив arr_invItems не заполняется значениями FALSE в начале. В памяти по этому адресу может находиться любой мусор. Как вариант - можно в switch добавить обработчик состояния по умолчанию:
Код
default: { arr_invItems[i] = FALSE; break; }


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.
Heming_Hitrowski Суббота, 18.01.2014, 22:08 | Сообщение # 2003


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
SLAwww, я забыл упомянуть функцию, которая выполняется до этого. Я с самого начала забил массивы нулями. Скидываю весь код фунции, на всякий случай.

/* Create Player Inventory if not exists */
void CreateInventory() {
string strInv = ".\\Inventory.ini";
arr_invItems.New(255);
arr_iItems.New(255);

if (_IsFileExists(".\\Inventory.ini")) {
CPrintF("File Exists\n");
LoadInventory();
return;
}
INDEX i;
// we don't have any items
for (i=0; i<255; i++) {
arr_invItems[i] = FALSE;
arr_iItems[i] = 0; // no id's
}

//###########################//
// //
// C O N T E N T //
// //
//###########################//
/*
& CATEGORY : WEAPONS

# ID # # NAME #
1. RED GUARDIAN BARRET
2. RED GUARDIAN KNIFE
3. CONTADOR M4A1
4. CONTADOR SPAS-12

& CATEGORY : SKINS
100. DEFAULT THE GRAND FIGHTER
101. THE CRE
102. AR2R-DEVIL-PINKY
103. KOTE THE MEDIC
104. ART-SERIOUS
*/

if (CIniFile::Create(strInv)) {
CPrintF("File created!\n");
CIniFile::SetValue("RG BARR", "TRUE", "INVENTORY", strInv);
CIniFile::SetValue("RG KNIFE", "TRUE", "INVENTORY", strInv);
CIniFile::SetValue("CR M4A1", "TRUE", "INVENTORY", strInv);
CIniFile::SetValue("CR SPAS-12", "TRUE", "INVENTORY", strInv);
//CIniFile::SetValue("", "FALSE", "INVENTORY", strInv);

CIniFile::SetValue("THE CRE", "TRUE", "INVENTORY", strInv);
CIniFile::SetValue("AR2R", "TRUE", "INVENTORY", strInv);
CIniFile::SetValue("KOTE", "TRUE", "INVENTORY", strInv);
CIniFile::SetValue("ART-SERIOUS", "TRUE", "INVENTORY", strInv);
//CIniFile::SetValue("", "FALSE", "INVENTORY", strInv);
//CIniFile::SetValue("", "FALSE", "INVENTORY", strInv);
} else {
FatalError("Mistakes with creating inventory file");
}
LoadInventory();
return;
};
Сообщение отредактировал Heming_Hitrowski - Суббота, 18.01.2014, 22:10


SLAwww Суббота, 18.01.2014, 22:28 | Сообщение # 2004


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
А почему GetValue и SetValue статические? Можно ведь передавать путь к файлу аргументом конструктора твоего CIniFile. Это было бы логично. И почему в одном месте у тебя есть константа MAX_ID, а в другом просто число 255? Поставь везде эту константу, и чтобы она задавалась в единственном месте.
Если только выполнить CreateInventory(), то созданный файл у всех выглядит одинаково?


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.
Heming_Hitrowski Воскресенье, 19.01.2014, 11:07 | Сообщение # 2005


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Цитата
А почему GetValue и SetValue статические? Можно ведь передавать путь к файлу аргументом конструктора твоего CIniFile. Это было бы логично. И почему в одном месте у тебя есть константа MAX_ID, а в другом просто число 255? Поставь везде эту константу, и чтобы она задавалась в единственном месте.


Окей, пофиксил.

Файлы идентичны, да. Выяснилось, что значения uIDs_NOW умудряются меняться даже во время игры. Интересно, в чем тут дело, ведь у сервера все в порядке.
Прикрепляю дебаггер с ошибкой, если тебе это что-нибудь скажет. Это произошло тогда, когда я попытался выбрать предмет сервером. Клиент вылетел с ошибкой.

Прикрепления: 7567160.jpg (147.5 Kb)
Сообщение отредактировал Heming_Hitrowski - Воскресенье, 19.01.2014, 11:12


SLAwww Воскресенье, 19.01.2014, 16:40 | Сообщение # 2006


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Это говорит о том, что каким-то образом команда arr_iItems.New(255); вообще не была вызвана, и размер массива нулевой. Откуда именно у тебя вызывается функция, заполняющая этот массив?

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.
Heming_Hitrowski Воскресенье, 19.01.2014, 18:18 | Сообщение # 2007


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
SLAwww, в игроке, при FirstInit()

Heming_Hitrowski Воскресенье, 19.01.2014, 19:44 | Сообщение # 2008


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Попытаюсь перенести весь инвентарь в отдельный класс, возможно это как-то поможет.
____
Помогло! Спасибо за наводки!
Сообщение отредактировал Heming_Hitrowski - Воскресенье, 19.01.2014, 20:24


CAHEK Вторник, 21.01.2014, 11:06 | Сообщение # 2009


Сообщений: 794
Награды: 15
Замечания: 0%
 
Как сделать чтобы урон принимал не скайбокс модели, а скайбокс атачмента.
Ситуация 1. Враг имеет модель внешне схожую с биомеханоидом. Когда стреляешь между ног, то врагу вписывают урон, хотя видно что на самом деле промах. Поднял скайбокс повыше. Модель стала проваливаться под пол. Думал решить проблему двумя скайбоксами. Первый отвечает за не проваливание под пол (высоту ноль, а ширину по 0,1 поставил), а теперь скайбокс по урону не могу поставить.
Ситуация 2. Хотелось реализовать врага с щитом. Предположил добавить атачмент со скайбоксом со здоровьем 999999999999


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
Ar2R-devil-PiNKy Вторник, 21.01.2014, 15:28 | Сообщение # 2010


Creative virtuoso
Сообщений: 3123
Награды: 58
Замечания: 
 
CAHEK,

Прикрепления: 9623199.png (131.3 Kb)


Мои работы
Форум » Serious Sam » Серьёзное редактирование » Помощь по SDK для Serious Sam 1.05/1.07 (Вопросы по комплекту средств разработки для Serious Sam 1.)
Поиск:

Статистика


Кто сегодня был