Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Blokowanie atakuPotrzebuje blokowanie strzelania

strzelanie atak cs blokada

Najlepsza odpowiedź Asiap, 27.06.2015 15:03

new Float:fTime = 60.0; //czas blokady strzelania
set_pdata_float(id, 83, fTime);
Przejdź do postu


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
7 odpowiedzi w tym temacie

#1 Jcr

    Pomocny

  • Użytkownik

Reputacja: -3
Nowy

  • Postów:69
  • Lokalizacja:Wroclaw
Offline

Napisano 27.06.2015 14:08

Wie ktoś może, jak zrobić, że gdy gracz będzie miał: zmienna[id] = 1, to nie może strzelać?

np coś takiego

 

if(zmienna[id] == 1)

{

       //kod blokujacy strzelanie

}

 

Nie może być to blokada typu: zmiana broni na nóż, wyrzucenie broni, ustawienie 0 ammo.

 

Najlepiej by było jakby blokowało +attack i +attack2, cos w tym stylu


  • +
  • -
  • 0

#2 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 27.06.2015 15:03   Najlepsza odpowiedź

new Float:fTime = 60.0; //czas blokady strzelania
set_pdata_float(id, 83, fTime);

  • +
  • -
  • 1

#3 Jcr

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: -3
Nowy

  • Postów:69
  • Lokalizacja:Wroclaw
Offline

Napisano 27.06.2015 15:25

new Float:fTime = 60.0; //czas blokady strzelania
set_pdata_float(id, 83, fTime);

 

A da się zrobić tak, żeby nie podawać czasu, tylko 1 komenda na włączenie 2ga na wyłączenie?


  • +
  • -
  • 0

#4 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 27.06.2015 16:54

Zamiast strzalu lepiej zablokowac caly klawisz. Sprobuj w ten sposob:

register_forward(FM_CmdStart,"CmdStart");

public CmdStart(id, uc_handle, seed)
{
    if(!is_user_connected(id) || !is_user_alive(id))
        return PLUGIN_CONTINUE;

    if(ma_zmienna[id])
        set_uc(uc_handle, UC_Buttons, get_uc(uc_handle, UC_Buttons) & ~IN_ATTACK);

    return PLUGIN_CONTINUE;
}


  • +
  • -
  • 2

b35020692_qesnxqa.png


#5 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 27.06.2015 17:48


A da się zrobić tak, żeby nie podawać czasu, tylko 1 komenda na włączenie 2ga na wyłączenie?

Wyłączanie:

set_pdata_float(id, 83, 0.0);

  • +
  • -
  • 1

#6 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 27.06.2015 17:48


A da się zrobić tak, żeby nie podawać czasu, tylko 1 komenda na włączenie 2ga na wyłączenie?

Wyłączanie:

set_pdata_float(id, 83, 0.0);

  • +
  • -
  • 0

#7 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 27.06.2015 18:28


register_forward(FM_CmdStart,"CmdStart");

public CmdStart(id, uc_handle, seed)
{
if(!is_user_connected(id) || !is_user_alive(id))
return PLUGIN_CONTINUE;

if(ma_zmienna[id])
set_uc(uc_handle, UC_Buttons, get_uc(uc_handle, UC_Buttons) & ~IN_ATTACK);

return PLUGIN_CONTINUE;
}

 

Nie żebym sie czepiał, ale nienawidzę jakis niedokładności/lekkich błędów:

- to forward z fakemety, używaj więc return FMRES_*

- sprawdz czy gracz jest zywy zamiast sprawdzac czy jest podlaczony i zywy (wsadź alive do warunku nr.2)

- czy po zmienieniu czegos nie powinnismy zwrocic FMRES_HANDLED?

#define FMRES_IGNORED	1	// Calls target function, returns normal value
#define FMRES_HANDLED	2	// Tells metamod you did something, still calls target function and returns normal value
#define FMRES_OVERRIDE	3	// Supposed to still call the target function but return your value instead
							// however this does not work properly with metamod; use supercede instead.
#define FMRES_SUPERCEDE	4	// Block the target call, and use your return value (if applicable)

Ja bym użył kodu Asiap, zamiast hookować forward, który się wykonuje bardzo często...


GwynBleidD (28.06.2015 11:23):
Jak już to FMRES_OVERRIDE

  • +
  • -
  • 2

#8 Jcr

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: -3
Nowy

  • Postów:69
  • Lokalizacja:Wroclaw
Offline

Napisano 27.06.2015 21:17

Można zamknąć, użyłem funckji :

set_pdata_float(id, 83, 5.0);
set_pdata_float(id, 83, 0.0);

Łatwiej, pewniej i szybciej :)


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: strzelanie, atak, cs, blokada

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych