Итак дорогие читатели я решил снять завесу тайны с очень популярной темы:
- А как сделать много крови?
- Как сделать чтобы всё было замазано кровищей?
- Как сделать чтобы кровь долго не пропадала?
- Как сделать чтобы мясо лежало непроходимыми горами и на земле были галлоны крови?
На эти вопросы никто не хочет отвечать или говорят "разбирайся сам", я тоже получил когда-то такой ответ, но я разобравшись как это сделать самостоятельно посчитал долгом рассказать об этом кодерам.
Эта статья актуальна только для тех у кого настроен рабочий СДК.
Мы будем работать с классами:
- CDebris
- CBasicEffects
Я не буду здесь писать как сделать такие-же кровавые настройки какие реализовал Molodec; если вы уж так хотите сделать такие-же, вам поможет его статья про поля сессии, которую написал Molodec. Здесь просто будет рассказаны основы и где лежит нужный для модификации код.
Рекомендую использовать Notepad++, т.к. он очень удобный для редактирования SDK
Приступим.
1.) Мясо и кол-во крови
Fresh flesh =)
Открываем CDebris, здесь мы увеличим кол-во крови которую оставляют куски мяса и ее время жизни =) Где-то на 135 строке мы должны увидеть вот такое:
// don't allow too many stains to be left
if (m_ctLeftStains>5) {
return;
}
Увеличим ка число к примеру до 15, теперь крови от катящегося по земле мяса будет в 3 раза больше.
- Но боже мой, что же будет в мультиплеере?
- Будут ужасные лаги от кучи мяса?
- А мы это предусмотрели и сделаем своё значение для мультиплеера. Потом даже можно будет туда пихнуть вместо цифрового значения, значение поля сессии.
FLOAT fBloodStainsNum = 5;
if (GetSP()->sp_bSinglePlayer) {
fBloodStainsNum = 15;
}else{
fBloodStainsNum = 5;
}
// don't allow too many stains to be left
if (m_ctLeftStains>fBloodStainsNum) {
return;
}
Теперь в сингле будет значение 15, а в мультиплеере 5, вы можете взять числа и побольше, моё дело показать.
Следующий наш шаг в CDebris - увеличить время жизни мяса.
Идём куда-то на 360 строку и видим вот такой код
SetCollisionFlags(ECF_DEBRIS);
m_fFadeStartTime = _pTimer->CurrentTick();
m_fFadeTime = 5.0f;
m_bFade = TRUE;
autowait(m_fFadeTime);
И перед ним ставим это:
FLOAT fDebrisBFadeTime = 60.0f;
if (m_iBodyType==EIBT_FLESH) {
autowait(fDebrisBFadeTime);
}
Теперь куски мяса поживут минуту.
- Но как же быть с мультиплеером?
- А вот так:
FLOAT fDebrisBFadeTime = 60.0f;
if (GetSP()->sp_bSinglePlayer) {
fDebrisBFadeTime = 60.0f;
}else{
fDebrisBFadeTime = 20.0f;
}
if (m_iBodyType==EIBT_FLESH) {
autowait(fDebrisBFadeTime);
}
Вот мы и закончили с CDebris. Можете скомпилировать исходник и протестировать на паре десятках гнааров пушечкой SBC
2.) Время жизни крови.
Blood, this is blood...
Открываем CBasicEffects и ищем void BloodStain(void)
Внутри функции находим m_fWaitTime = 12.0f + FRnd()*3.0f;
И вставляем код вместо него:
m_fWaitTime = 12.0f;
if (GetSP()->sp_bSinglePlayer) {
m_fWaitTime = 300.0f;
}else{
m_fWaitTime = 60.0f;
}
Вот собственно и всё, в следующей части я расскажу про то как подключить к этому поля сессий.
Удачи вам! =)
Комментарии
На сайте серый фон
Я же на стиле Сириус уже как 2 месяца сижу и кнопку стилей не открывал =)
Это просто =) Тем более была уже статья)
Было бы замечательно если бы что-то новое. Например, как добавить новое оружие, чтобы оно не заменило какое-то а добавился дополнительный пункт, когда выбираешь оружие. Ну или типо. =)
Здесь просто будет рассказаны основы и где лежит нужный для модификации код код.
здесь мы
укажемувеличимСледующий нащ шаг в CDebris