←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CS:GO
Cichobiegi SM

  • +
  • -
Sniper Elite - zdjęcie Sniper Elite 06.07.2015

Witam.

Ma ktoś pomysł jak zrobić aby gracz chodził po cichu? Tylko jeden, taka jakby moc.

 

Próbowałem tak:

AddNormalSoundHook(NormalSHook:sound_hook); 

public Action:sound_hook(clients[64], &numClients, String:sample[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags) 
{
if(StrContains(sample, "player/footsteps", false) != -1)
{
StopSound(entity, channel, sample);
ClientCommand(clients[0], "playgamesound Music.StopAllMusic");
PrintToChatAll("Normal Sound: %s", sample);
return Plugin_Handled;
}
return Plugin_Continue;
}

oraz zabierałem graczowi flage FL_ONGROUND.

Pierwszy sposób nie działa, drugi powoduje że gracz ciągle kuca chociaż już nie trzyma ctrl.

 

Odpowiedz

  • +
  • -
Maximus Mxh - zdjęcie Maximus Mxh 06.07.2015

#include <amxmodx>
#include <fun>
#include <hamsandwich>

forward amxbans_admin_connect(id);

new bool:g_Vip[33];

public plugin_init(){
	register_plugin("VIP Ultimate", "12.3.0.2", "benio101 & speedkill");
	RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
}
public client_authorized(id){
	if(get_user_flags(id) & 131072 == 131072){
		client_authorized_vip(id);
	}
}
public client_authorized_vip(id){
	g_Vip[id]=true;
}
public client_disconnect(id){
	if(g_Vip[id]){
		client_disconnect_vip(id);
	}
}
public client_disconnect_vip(id){
	g_Vip[id]=false;
}
public SpawnedEventPre(id){
	if(g_Vip[id]){
		if(is_user_alive(id)){
			SpawnedEventPreVip(id);
		}
	}
}
public SpawnedEventPreVip(id){
	set_user_footsteps(id,1);
}
public amxbans_admin_connect(id){
	client_authorized(id);
}
plugin na flagę admin Level f daje ciche chodzenie
Odpowiedz

  • +
  • -
Sniper Elite - zdjęcie Sniper Elite 06.07.2015

To jest dział SourceMod, nie amxx.

Odpowiedz

  • +
  • -
Maximus Mxh - zdjęcie Maximus Mxh 06.07.2015

:0 sorry nie zauważyłem. Jestem nowy xD
Odpowiedz

  • +
  • -
sharkowy - zdjęcie sharkowy 06.07.2015

public OnPluginStart()
{
    HookEvent("player_footstep", Event_FootStep, EventHookMode_Pre);
}
 
public Action:Event_FootStep(Handle:event, const String:name[], bool:dontBroadcast)
{
            new client = GetClientOfUserId(GetEventInt(event, "userid"));
            SetEntProp(client, Prop_Data, "m_fFlags", 4);
}

Sprawdź takie cuś, wygooglowane.

Odpowiedz

  • +
  • -
Linux' - zdjęcie Linux' 06.07.2015

Sam nad tym myslalem kiedys, opublikowane w necie jest tylko to co podales. będę myslal, jak wymysle to dam znac. Proponuje moze w prethinku wykryc dzwiek odpowiedzialny za chod i go blokowac.
Odpowiedz

  • +
  • -
th7nder - zdjęcie th7nder 09.08.2015

Żaden z powyższych sposobów wymienionych o góry nie zadziała, trzeba podejść do tego z innej spory,

 

Pozdrawiam - właściciel działających cichych kroków(bez buga na lewtiacje) (;

Odpowiedz

  • +
  • -
th7nder - zdjęcie th7nder 10.08.2015

@plx211, nie, to nie działa
Odpowiedz

  • +
  • -
plx211 - zdjęcie plx211 10.08.2015

To dziala tylko trzeba umiec zrobic


Dla tych co nie wiedza o co chodzi to trzeba:
1) Wyslac do graczy sv_footstep 0 (przy pomocy sendconvar)
2) emitowac po stronie servera dzwiek 'stup' z wyjatkiem osob ktore maja aktywna danną zmienna
Użytkownik plx211 edytował ten post 10.08.2015 06:37
Odpowiedz

  • +
  • -
Sniper Elite - zdjęcie Sniper Elite 10.08.2015

Jokby ktoś chciął to proszę kod.

 

#include <sourcemod>
#include <sdktools>


new bool:cichobiegi[MAXPLAYERS+1] = false;


new Handle:TFootstepsEnabledConVar;


public OnPluginStart()
{
TFootstepsEnabledConVar = FindConVar("sv_footsteps");
AddNormalSoundHook(Event_SoundPlayed);
}


public OnClientPutInServer(client)
{
cichobiegi[client] = false;

SendConVarValue(client, TFootstepsEnabledConVar, "0");
}
/*public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
{
SendConVarValue(client, TFootstepsEnabledConVar, "0");
}*/


public Action:Event_SoundPlayed(clients[64],&numClients,String:sample[PLATFORM_MAX_PATH],&entity,&channel,&Float:volume,&level,&pitch,&flags) 
{
if (entity && entity <= MaxClients && (StrContains(sample, "physics") != -1 || StrContains(sample, "footsteps") != -1))
{
if (IsClientInGame(entity) && cichobiegi[entity])
{
//PrintToChat(entity, "Daje cichobiegi");
return Plugin_Handled;
}
else
{
//PrintToChat(entity, "Emituje dzwiek");
EmitSoundToAll(sample, entity);
return Plugin_Handled;
}
}


return Plugin_Continue
}

Wszystko jest zależne od zmiennej cichobiegi.

 

Odpowiedz

  • +
  • -
plx211 - zdjęcie plx211 10.08.2015

wrzuc to na pastebin (lub wklej) bo usunelo tab'y.

 

po za tym gdzie podziekowania xD?


Użytkownik plx211 edytował ten post 10.08.2015 20:28
Odpowiedz

  • +
  • -
Sniper Elite - zdjęcie Sniper Elite 10.08.2015

Masz plusa i siedź cicho  :P

Odpowiedz