ReGameDLL и возможность замены звуков/моделей

Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
Доброго времени суток, господа.
Находясь в поисках кое-какой информации по ReAPI, наткнулся на такое вот обсуждение на DS: тык
В нем идет речь о замене любых моделей оружия и звуков к ним через ReGameDLL (тык). Почитав все это, у меня возник ряд вопросов:
1) Возможно ли таким способом заменить модели/звуки?
2) Если возможно заменить, то будут ли они добавляться в прекеш? Если будут добавляться, то как новые файлы или, как замена старых?
3) Можно ли потом, после всех манипуляций, поставить на онлайн сервер это "чудо", как замена различных amxx или meta плагинов, связанных с заменой моделей/звуков?
4) Если все это возможно, то кто мне, жестко тормозящему человеку, сможет объяснить процесс сборки всего этого "скрытого потенциала"?

Заранее спасибо за ответы.
 
Сообщения
1,697
Реакции
1,510
Помог
25 раз(а)
Доброго времени суток, господа.
Находясь в поисках кое-какой информации по ReAPI, наткнулся на такое вот обсуждение на DS: тык
В нем идет речь о замене любых моделей оружия и звуков к ним через ReGameDLL (тык). Почитав все это, у меня возник ряд вопросов:
1) Возможно ли таким способом заменить модели/звуки?
2) Если возможно заменить, то будут ли они добавляться в прекеш? Если будут добавляться, то как новые файлы или, как замена старых?
3) Можно ли потом, после всех манипуляций, поставить на онлайн сервер это "чудо", как замена различных amxx или meta плагинов, связанных с заменой моделей/звуков?
4) Если все это возможно, то кто мне, жестко тормозящему человеку, сможет объяснить процесс сборки всего этого "скрытого потенциала"?

Заранее спасибо за ответы.
1. Все что на сервере можно заменить. И модели, и звуки (взрывов, разрушений и т.д.)
2. Не будут, поэтому менять сразу как минимум в двух местах. Например, в оружии все находится в одном файле и поменять пути нужно только в ItemDeploy и Precache. Search · v_ak47.mdl · GitHub
3. Можно.
4. На гитхабе есть инструкция по сборке. GitHub - s1lentq/ReGameDLL_CS: Reverse-engineered gamedll (CS 1.6 / CZero)
 
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
fl0wer, я пока не смотрел 4-й пункт, но можно по-подробнее о 2-ом пункте?

в оружии все находится в одном файле и поменять пути нужно только в ItemDeploy и Precache. Search · v_ak47.mdl · GitHub
Заменять в ItemDeploy
Код:
BOOL CAK47::Deploy()
{
m_flAccuracy = 0.2f;
m_iShotsFired = 0;
iShellOn = 1;

return DefaultDeploy("models/v_ak47.mdl", "models/p_ak47.mdl", AK47_DRAW, "ak47", UseDecrement() != FALSE);
}


и Precache со spawn
Код:
void CAK47::Spawn()
{
Precache();

m_iId = WEAPON_AK47;
SET_MODEL(edict(), "models/w_ak47.mdl");

m_iDefaultAmmo = AK47_DEFAULT_GIVE;
m_flAccuracy = 0.2f;
m_iShotsFired = 0;

FallInit();
}

void CAK47::Precache()
{
PRECACHE_MODEL("models/v_ak47.mdl");
PRECACHE_MODEL("models/w_ak47.mdl");

PRECACHE_SOUND("weapons/ak47-1.wav");
PRECACHE_SOUND("weapons/ak47-2.wav");
PRECACHE_SOUND("weapons/ak47_clipout.wav");
PRECACHE_SOUND("weapons/ak47_clipin.wav");
PRECACHE_SOUND("weapons/ak47_boltpull.wav");

m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireAK47 = PRECACHE_EVENT(1, "events/ak47.sc");
}


Я верно рассуждаю?
18 Июл 2017
И хотелось бы еще уточнить: если модели и звуки не добавляются в прекеш, то каким образом игроки, заходящие на сервер, будут закачивать модели/звуки, установленные мной в новом ядре?
 
Сообщения
1,697
Реакции
1,510
Помог
25 раз(а)
Minni, так в PRECACHE_MODEL и добавляются в прекеш. Просто есть личности которые заменяют только в одном месте, вот и уточнил.
 
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
fl0wer, в итоге, у меня должно получится так:

Код:
#include "precompiled.h"

LINK_ENTITY_TO_CLASS(weapon_ak47, CAK47, CCSAK47)

void CAK47::Spawn()
{
Precache();

m_iId = WEAPON_AK47;
SET_MODEL(edict(), "models/psina_podkolodnaya/w_ak47.mdl");

m_iDefaultAmmo = AK47_DEFAULT_GIVE;
m_flAccuracy = 0.2f;
m_iShotsFired = 0;

FallInit();
}

void CAK47::Precache()
{
PRECACHE_MODEL("models/psina_podkolodnaya/v_ak47.mdl");
PRECACHE_MODEL("models/psina_podkolodnaya/w_ak47.mdl");

PRECACHE_SOUND("weapons/psina_podkolodnaya/ak47-1.wav");
PRECACHE_SOUND("weapons/psina_podkolodnaya/ak47-2.wav");
PRECACHE_SOUND("weapons/psina_podkolodnaya/ak47_clipout.wav");
PRECACHE_SOUND("weapons/psina_podkolodnaya/ak47_clipin.wav");
PRECACHE_SOUND("weapons/psina_podkolodnaya/ak47_boltpull.wav");

m_iShell = PRECACHE_MODEL("models/rshell.mdl");
m_usFireAK47 = PRECACHE_EVENT(1, "events/ak47.sc");
}

int CAK47::GetItemInfo(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "762Nato";
p->iMaxAmmo1 = MAX_AMMO_762NATO;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = AK47_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 1;
p->iId = m_iId = WEAPON_AK47;
p->iFlags = 0;
p->iWeight = AK47_WEIGHT;

return 1;
}

BOOL CAK47::Deploy()
{
m_flAccuracy = 0.2f;
m_iShotsFired = 0;
iShellOn = 1;

return DefaultDeploy("models/psina_podkolodnaya/v_ak47.mdl", "models/psina_podkolodnaya/p_ak47.mdl", AK47_DRAW, "ak47", UseDecrement() != FALSE);
}

void CAK47::SecondaryAttack()
{
;
}

void CAK47::PrimaryAttack()
{
if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
AK47Fire(0.04 + (0.4 * m_flAccuracy), 0.0955, FALSE);
}
else if (m_pPlayer->pev->velocity.Length2D() > 140)
{
AK47Fire(0.04 + (0.07 * m_flAccuracy), 0.0955, FALSE);
}
else
{
AK47Fire(0.0275 * m_flAccuracy, 0.0955, FALSE);
}
}

void CAK47::AK47Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim)
{
Vector vecAiming, vecSrc, vecDir;
int flag;

m_bDelayFire = true;
++m_iShotsFired;

m_flAccuracy = ((m_iShotsFired * m_iShotsFired * m_iShotsFired) / 200) + 0.35f;

if (m_flAccuracy > 1.25f)
m_flAccuracy = 1.25f;

if (m_iClip <= 0)
{
if (m_fFireOnEmpty)
{
PlayEmptySound();
m_flNextPrimaryAttack = GetNextAttackDelay(0.2);
}

if (TheBots != NULL)
{
TheBots->OnEvent(EVENT_WEAPON_FIRED_ON_EMPTY, m_pPlayer);
}

return;
}

--m_iClip;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1);

UTIL_MakeVectors(m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle);

vecSrc = m_pPlayer->GetGunPosition();
vecAiming = gpGlobals->v_forward;

vecDir = m_pPlayer->FireBullets3(vecSrc, vecAiming, flSpread, 8192, 2, BULLET_PLAYER_762MM,
AK47_DAMAGE, AK47_RANGE_MODIFER, m_pPlayer->pev, false, m_pPlayer->random_seed);

#ifdef CLIENT_WEAPONS
flag = FEV_NOTHOST;
#else
flag = 0;
#endif

PLAYBACK_EVENT_FULL(flag, m_pPlayer->edict(), m_usFireAK47, 0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y,
int(m_pPlayer->pev->punchangle.x * 100), int(m_pPlayer->pev->punchangle.y * 100), FALSE, FALSE);

m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;

m_flNextPrimaryAttack = m_flNextSecondaryAttack = GetNextAttackDelay(flCycleTime);

if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
{
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
}

m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.9f;

if (m_pPlayer->pev->velocity.Length2D() > 0)
{
KickBack(1.5, 0.45, 0.225, 0.05, 6.5, 2.5, 7);
}
else if (!(m_pPlayer->pev->flags & FL_ONGROUND))
{
KickBack(2.0, 1.0, 0.5, 0.35, 9.0, 6.0, 5);
}
else if (m_pPlayer->pev->flags & FL_DUCKING)
{
KickBack(0.9, 0.35, 0.15, 0.025, 5.5, 1.5, 9);
}
else
{
KickBack(1.0, 0.375, 0.175, 0.0375, 5.75, 1.75, 8);
}
}

void CAK47::Reload()
{
#ifdef REGAMEDLL_FIXES
// to prevent reload if not enough ammo
if (m_pPlayer->ammo_762nato <= 0)
return;
#endif

if (DefaultReload(iMaxClip(), AK47_RELOAD, AK47_RELOAD_TIME))
{
m_pPlayer->SetAnimation(PLAYER_RELOAD);

m_flAccuracy = 0.2f;
m_iShotsFired = 0;
m_bDelayFire = false;
}
}

void CAK47::WeaponIdle()
{
ResetEmptySound();
m_pPlayer->GetAutoaimVector(AUTOAIM_10DEGREES);

if (m_flTimeWeaponIdle <= UTIL_WeaponTimeBase())
{
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 20.0f;
SendWeaponAnim(AK47_IDLE1, UseDecrement() != FALSE);
}
}


Ну и в принципе я могу там еще поиграться с анимацией и временем.
18 Июл 2017
Кто-то может помочь мне разобраться в самом сборе проекта, что и как использовать и т.п.?
 

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
А не лучше будет hex-ом пропатчить нужные места? Ты потом на этапе компиляции еще миллион ошибок получишь по-любому
 
Сообщения
649
Реакции
556
Помог
9 раз(а)
Звук выстрела нельзя заменить (без перекомпиляции клиента)
18 Июл 2017
Насчет "миллион ошибок" - бред
18 Июл 2017
hex-ом пропатчить
тоже бред когда есть исходники
 
Сообщения
342
Реакции
65
Помог
6 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Vaqtincha, звук выстрела, можно подменить, ну, да, ладно, вопрос не в этом был
 
Сообщения
124
Реакции
92
Помог
1 раз(а)
Phantom, хексом когда патчишь могут быть проблемы.
Хотя мб это и не связано, но когда я патчил стандартную модель awp, заменяя ее название, при этом используя эту же стандартную модель авп (далее чтобы ее чекать речекером для запрета использования модели с прицелом) была проблема - почему-то при зуме часть модельки попадала в видимую область, чего не случается в оригинале.

Делал я все это еще до использования регейма, на сошке 6153 беты.
 
Сообщения
649
Реакции
556
Помог
9 раз(а)
ops244, Да можешь менять. Но только с костылом. (через эмит напр.)
 
Сообщения
342
Реакции
65
Помог
6 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Vaqtincha, жалко тут лайк ставити нельзя
18 Июл 2017
Vaqtincha, помнишь кстати был плагин, по замене звуков как-раз, на этом форуме AlliedModders
 
Сообщения
649
Реакции
556
Помог
9 раз(а)
ops244, Только не говори что это GHW Weapon Replacement
18 Июл 2017
Даже редактировав qc файл ты звук выстрела менять не можешь. Тк он вшит в client.dll (хардкод)
 

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
Насчет "миллион ошибок" - бред
А то на гитхабе нет пользователей, создающих issue по вопросу неудачной компиляции. Пусть копаются в исходниках те, кто в этом разбирается. Не думаю, что Minni шарит
 
Сообщения
649
Реакции
556
Помог
9 раз(а)
Minni, Для замены моделей используй это или модуль ultimate unprecacher
18 Июл 2017
Phantom, перекомпилить сново и сново когда меняешь моделку не сомое удачное решение. Выше оставил норм способ
 

Вложения

Сообщения
342
Реакции
65
Помог
6 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Vaqtincha, ну изначально пытались так бороться против читеров, и насколько помню, успешно
 
Сообщения
2,750
Реакции
3,013
Помог
61 раз(а)
Minni, можешь заодно и стрельбу пофиксить она прям совсем рядышком меняется :crazy::derisive:
 
Последнее редактирование:
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
Minni, Для замены моделей используй это или модуль ultimate unprecacher
При замене через модуль Unprecacher - сервер крашится. Да и плагин мне не поможет, т.к. у меня почти лимит. 480 файлов :D
А что за костыль по замене звуков выстрела?
18 Июл 2017
А звуки удара об поверхность и взрыв гранат так же нельзя заменить способом перекомпиляции regame?
19 Июл 2017
Никто не подскажет или что?:dntknw:
 
Сообщения
2,750
Реакции
3,013
Помог
61 раз(а)
Minni, все можно заменить. Только, это весьма костыльный метод. И вряд-ли кто его здесь одобрит. Лучше, я полагаю Unprecacher с автором доделать
 
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
Еще хочу уточнить. Если заменить данным методом модели или звуки, и в server.cfg будет стоять переменная mp_consistency со значением 1, то будет игроков кикать с причиной, мол модели или звуки не являются стандартными?
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу