Archived copy of war3source.com, the War3Source forum (2009–2020), rebuilt from the Internet Archive by wc3mods.net. This page was captured on 2012-09-22 (original capture). Forum · All archived topics · Wiki · Bug tracker · Blog
Chat

War3:Source
September 21, 2012, 10:10:59 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Download: http://war3source.com/index.php?board=9.0
What is War3Source?: http://war3source.com/index.php?topic=200.0
Sample Stats: http://war3source.com/war3stats
Steam Community Group: http://steamcommunity.com/groups/war3source
War3Source SVN Checkout: http://ownageclan.com/svn/war3source/
War3Source servers: http://www.game-monitor.com/search.php?vars=war3_version=
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: [Russian] Как убрать звуки шагов?  (Read 348 times)
Arturius
Moderator
Full Member
*****
Posts: 155



View Profile Email
« on: February 23, 2012, 07:02:52 AM »

Раз пошла такая пьянка... Тоже задам хитроумный вопрос Grin. Как можно назначить игроку двигаться шагом, как при нажатой клавише Shift? Нет, изменение скорости при помощи fSlow мне не подходит. Надо чтобы движение игрока определялось именно как "шагом".
Logged
Divix
Sr. Member
****
Posts: 280


View Profile Email
« Reply #1 on: February 23, 2012, 10:09:40 AM »

Раз пошла такая пьянка... Тоже задам хитроумный вопрос Grin. Как можно назначить игроку двигаться шагом, как при нажатой клавише Shift? Нет, изменение скорости при помощи fSlow мне не подходит. Надо чтобы движение игрока определялось именно как "шагом".

Мне кажется в css это не возможно, т.к. при попытке установить MOVETYPE_STEP игрок просто стоит (естественно.. ведь я не моб), а при отправке команды клиенту он ее не воспринимает... Хотя возможно я делаю что-то не правильно.

Разве что сделать простым способом: убрать звуки шагов и уменьшить скорость... Собственно напрашивается вопрос: а зачем это надо ?
« Last Edit: February 23, 2012, 11:03:07 AM by Divix » Logged
Arturius
Moderator
Full Member
*****
Posts: 155



View Profile Email
« Reply #2 on: February 23, 2012, 11:29:04 AM »

Разве что сделать простым способом: убрать звуки шагов и уменьшить скорость...
А ты знаешь простой способ убрать звуки шагов? Smiley Только не надо предлагать то, что ты вставил в хэдкраба. Да, звуки шагов убираются, но только потому, что игрок считается не на земле, со всеми вытекающими отсюда последствиями. Изменять MOVETYPE тоже не вариант. Вот я и подумал, нет ли вариантов поиграться с кнопками, типа SetEntProp(client, Prop_Data, "m_nButtons", IN_WALK); ?
Logged
Divix
Sr. Member
****
Posts: 280


View Profile Email
« Reply #3 on: February 23, 2012, 12:37:33 PM »

Разве что сделать простым способом: убрать звуки шагов и уменьшить скорость...
А ты знаешь простой способ убрать звуки шагов? Smiley Только не надо предлагать то, что ты вставил в хэдкраба. Да, звуки шагов убираются, но только потому, что игрок считается не на земле, со всеми вытекающими отсюда последствиями. Изменять MOVETYPE тоже не вариант. Вот я и подумал, нет ли вариантов поиграться с кнопками, типа SetEntProp(client, Prop_Data, "m_nButtons", IN_WALK); ?

К сожалению нет. Испробовал несколько вариантов, но не получилось... Вот последний из них:
Code:
public OnPluginStart()
{
HookEvent("player_footstep", Event_FootStep, EventHookMode_Post);
}

public Action:Event_FootStep(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
for(new i=1; i <= 4; i++)
{
decl String:stepsound[128];
Format(stepsound, sizeof(stepsound), "player/footsteps/sand%i.wav", i);
StopSound(client, SNDCHAN_AUTO, stepsound);
}
}
Logged
Arturius
Moderator
Full Member
*****
Posts: 155



View Profile Email
« Reply #4 on: February 23, 2012, 03:38:00 PM »

Я далеко не силён в HookEvent и их работа для меня тёмный лес. Покопался по форумам на подобную тему, но окончательного решения так и не нашёл. Везде какие-то косяки или недоработки выскакивают. Но в одном файле, мне так кажется, есть нечто очень напоминающее работоспособный вариант. Правда он для ТФ2, но возможно и подойдёт. Приведу только интересующую нас часть кода, убрав всё лишнее:
Code:
#include <sourcemod>
#include <sdktools>

public Plugin:myinfo =
{
name = "[TF2] Be a Cacodemon",
author = "FlaminSarge [EDITED HEAVILY BY GAGE]",
description = "Become the Cacodemon from Doom",
version = PLUGIN_VERSION,
url = ""
}

public OnPluginStart()
{
AddNormalSoundHook(HorsemannSH);
}

public Action:HorsemannSH(clients[64], &numClients, String:sample[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags)
{
if (!IsValidClient(entity)) return Plugin_Continue;
if (strncmp(sample, "player/footsteps/", 17, false) == 0)
{
if (StrContains(sample, "1.wav", false) != -1 || StrContains(sample, "3.wav", false) != -1) sample = LEFTFOOT;
else if (StrContains(sample, "2.wav", false) != -1 || StrContains(sample, "4.wav", false) != -1) sample = RIGHTFOOT;
EmitSoundToAll(sample, entity, _, 150);
return Plugin_Changed;
}
return Plugin_Continue;
}
LEFTFOOT и RIGHTFOOT в коде нигде значений не заимствовали и откуда они взялись - осталось для меня загадкой. Но не это главное. Главное суть самой идеи. Я пробовал подобный код, только с выборкой клиентов из массива clients[64]. Что-то мудрёное и в результате не получилось как надо. Вот только мне не приходило в голову использовать в качестве клиента параметр &entity, как это сделано здесь. Можно попробовать поэкспериментировать. Если у кого-то что-то получится, прошу отписаться)
Logged
Divix
Sr. Member
****
Posts: 280


View Profile Email
« Reply #5 on: February 24, 2012, 01:40:32 AM »

Я далеко не силён в HookEvent и их работа для меня тёмный лес. Покопался по форумам на подобную тему, но окончательного решения так и не нашёл. Везде какие-то косяки или недоработки выскакивают. Но в одном файле, мне так кажется, есть нечто очень напоминающее работоспособный вариант. Правда он для ТФ2, но возможно и подойдёт. Приведу только интересующую нас часть кода, убрав всё лишнее:
Code:
#include <sourcemod>
#include <sdktools>

public Plugin:myinfo =
{
name = "[TF2] Be a Cacodemon",
author = "FlaminSarge [EDITED HEAVILY BY GAGE]",
description = "Become the Cacodemon from Doom",
version = PLUGIN_VERSION,
url = ""
}

public OnPluginStart()
{
AddNormalSoundHook(HorsemannSH);
}

public Action:HorsemannSH(clients[64], &numClients, String:sample[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags)
{
if (!IsValidClient(entity)) return Plugin_Continue;
if (strncmp(sample, "player/footsteps/", 17, false) == 0)
{
if (StrContains(sample, "1.wav", false) != -1 || StrContains(sample, "3.wav", false) != -1) sample = LEFTFOOT;
else if (StrContains(sample, "2.wav", false) != -1 || StrContains(sample, "4.wav", false) != -1) sample = RIGHTFOOT;
EmitSoundToAll(sample, entity, _, 150);
return Plugin_Changed;
}
return Plugin_Continue;
}
LEFTFOOT и RIGHTFOOT в коде нигде значений не заимствовали и откуда они взялись - осталось для меня загадкой. Но не это главное. Главное суть самой идеи. Я пробовал подобный код, только с выборкой клиентов из массива clients[64]. Что-то мудрёное и в результате не получилось как надо. Вот только мне не приходило в голову использовать в качестве клиента параметр &entity, как это сделано здесь. Можно попробовать поэкспериментировать. Если у кого-то что-то получится, прошу отписаться)

Я тоже похожие методы пробовал... Но к сожалению return Plugin_Changed или return Plugin_Stop не чего не делают...

PS Опять же повторюсь: я могу не правильно писать код...
Logged
Schmarotzer
Full Member
***
Posts: 189


Ich schmarotze dich!

258631507
View Profile WWW
« Reply #6 on: March 18, 2012, 04:47:30 PM »

Насколько я помню это было сделано через оффсеты в вкс. А после 35 апдейта ксс его убрали.
Но если все же хотите, то поковыряйте, я вот вижу :
Code:
347 CCSPlayer::UpdateStepSound(surfacedata_t *,Vector  const&,Vector  const&)
348 CCSPlayer::PlayStepSound(Vector &,surfacedata_t *,float,bool)
Logged

Welcome to my server
Arturius
Moderator
Full Member
*****
Posts: 155



View Profile Email
« Reply #7 on: March 19, 2012, 02:28:42 AM »

Я совершенно не умею работать с оффсетами и даже приблизительно не имею понятия куда их втыкать Huh.
Logged
Divix
Sr. Member
****
Posts: 280


View Profile Email
« Reply #8 on: March 24, 2012, 01:36:12 PM »

А почему такой способ не работает ?
Code:
new OffsTest;

public OnPluginStart()
{
OffsTest=FindSendPropOffs("CFootstepControl", "m_flSimulationTime");
if(OffsTest == -1)
LogError("Error: test offset");
HookEvent("player_footstep", Event_FootStep, EventHookMode_Pre);
}

public Action:Event_FootStep(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
SetEntDataFloat(client, OffsTest, 0.0, true);
}

PS
Quote
CFootstepControl:
 Sub-Class Table (1 Deep): DT_FootstepControl
  Sub-Class Table (2 Deep): DT_BaseEntity
   Sub-Class Table (3 Deep): DT_AnimTimeMustBeFirst
   -Member: m_flAnimTime (offset 40)
  -Member: AnimTimeMustBeFirst (offset 0)
  -Member: m_flSimulationTime (offset 44)
  -Member: m_vecOrigin (offset 796)
  -Member: m_nModelIndex (offset 30)
   Sub-Class Table (3 Deep): DT_CollisionProperty
   -Member: m_vecMins (offset Cool
   -Member: m_vecMaxs (offset 20)
   -Member: m_nSolidType (offset 41)
   -Member: m_usSolidFlags (offset 36)
   -Member: m_nSurroundType (offset 40)
   -Member: m_triggerBloat (offset 42)
   -Member: m_vecSpecifiedSurroundingMins (offset 44)
   -Member: m_vecSpecifiedSurroundingMaxs (offset 56)
  -Member: m_Collision (offset 236)
  -Member: m_nRenderFX (offset 28)
  -Member: m_nRenderMode (offset 29)
  -Member: m_fEffects (offset 108)
  -Member: m_clrRender (offset 32)
  -Member: m_iTeamNum (offset 520)
  -Member: m_CollisionGroup (offset 500)
  -Member: m_flElasticity (offset 640)
  -Member: m_flShadowCastDistance (offset 508)
  -Member: m_hOwnerEntity (offset 492)
  -Member: m_hEffectEntity (offset 496)
  -Member: moveparent (offset 224)
  -Member: m_iParentAttachment (offset 221)
  -Member: movetype (offset 222)
  -Member: movecollide (offset 223)
  -Member: m_angRotation (offset 808)
  -Member: m_iTextureFrameIndex (offset 684)
   Sub-Class Table (3 Deep): DT_PredictableId
   -Member: m_PredictableID (offset 52)
   -Member: m_bIsPlayerSimulated (offset 836)
  -Member: predictable_id (offset 0)
  -Member: m_bSimulatedEveryTick (offset 685)
  -Member: m_bAnimatedEveryTick (offset 686)
  -Member: m_bAlternateSorting (offset 687)
 -Member: baseclass (offset 0)
 -Member: m_source (offset 1068)
 -Member: m_destination (offset 1072)
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!