←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Wywolywanie freezetime w funkcji

Locked

  • +
  • -
MAGNET's Photo MAGNET 02.07.2013

Pytanie - jak moglbym wywolac zamrozenie graczy w pewnej funkcji (nie na poczatku rundy)??
Wiem, ze moglbym tez zredukowac szybkosc gracza, ale chce wiedziec, czy istnieje inny sposob.
Pozdrawiam
Quote

  • +
  • -
d0naciak's Photo d0naciak 03.07.2013

Możesz zablokować używania guzików WSAD. Ale zmiana prędkości będzie lepszym sposobem. Pamiętaj że przy zmianie broni prędkość jest resetowana, więc nie wystarczy użycie set_user_maxspeed

Quote

  • +
  • -
MAGNET's Photo MAGNET 03.07.2013

W jaki sposób zablokować wsad?? Pamietam, że to sie robilo jakos tak:

register cl_cmd("w" "block"

Jakoś tak

Quote

  • +
  • -
Droso's Photo Droso 03.07.2013

O wiele lepiej będzie zmienić prędkość gracza na 0.1 tylko przy Ham_CS_Player_ResetMaxSpeed

 

Więcej napisał o tym Benio101:

http://amxx.pl/topic...edkosci-gracza/

 

Quote

  • +
  • -
MAGNET's Photo MAGNET 03.07.2013

Możesz mi jakiś przykładowy plug napisać, który w funkcji wywołuje "freezetime", a potem ją usuwa np. przy pomocy taska??

Quote

Gość_21977_* 03.07.2013

Plugin zamraża gracza, na 5 sekund lub do końca rundy, po wpisaniu na sayu "freezeme":

#include <amxmodx>
#include <fun>
#include <HamSandwich>

#define SetBit(%1,%2) (%1|=(1<<(%2)))
#define ClearBit(%1,%2) (%1&=~(1<<(%2)))
#define CheckBit(%1,%2) (%1&(1<<(%2)))

new speedbuff;

public plugin_init(){
	register_plugin("Freezer", "1.0", "benio101");
	RegisterHam(get_player_resetmaxspeed_func(), "player", "speed", 1);
	register_logevent("roundEnd", 2, "1=Round_End");
	register_clcmd("say freezeme", "freeze");
}

public freeze(id){
	SetBit(speedbuff, id);
	speed(id);
	
	new data[1];
	data[0]=id;
	
	set_task(5.0, "unfreeze", .parameter=data, .len=1);
}

Ham:get_player_resetmaxspeed_func(){
	#if defined Ham_CS_Player_ResetMaxSpeed
		return IsHamValid(Ham_CS_Player_ResetMaxSpeed)?Ham_CS_Player_ResetMaxSpeed:Ham_Item_PreFrame;
	#else
		return Ham_Item_PreFrame;
	#endif
}

// obsługa bonusu prędkości
public speed(id){
	if(
			is_user_alive(id)
		&&	 CheckBit(speedbuff, id)
	){
		set_user_maxspeed(id, 0.1);
	}
}

public unfreeze(data[]){
	new id=data[0];
	if(is_user_alive(id)){
		ClearBit(speedbuff, id);
		ExecuteHam(get_player_resetmaxspeed_func(), id);
	}
}

public client_connect(id){
	ClearBit(speedbuff, id);
}

public roundEnd(){
	speedbuff=0;
	remove_task();
}
Quote

  • +
  • -
MAGNET's Photo MAGNET 03.07.2013

Aa ok juz lapie. Powycinam jutro z tego pare rzeczy. Dzieki za pomoc, plusiki4all
Do zamkniecia
Quote

Gość_21977_* 04.07.2013

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked