Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

[ROZWIĄZANE] Uzycie funkcji - 2 klawisze


Najlepsza odpowiedź GwynBleidD, 13.06.2013 14:55

Klakier, ten kod nie zadziała. Gdy wciśniesz CTRL, następnie Spację, to funkcja wywoła się 2x. W pierwszym wywołaniu buttons przyjmie wartość IN_DUCK, w drugim już będzie IN_JUMP|IN_DUCK. Jednak oldbuttons przyjmie IN_DUCK, co spowoduje brak wejścia do IFa. Prawidłowy kod:

public fwd_CmdStart(id, uc_handle, seed)
{
   
    if(!is_user_alive(id) || !ma_perk[id])
    {
        return FMRES_IGNORED;
    }
   
    new buttons = get_uc(uc_handle,UC_Buttons)
    new oldbuttons = get_user_oldbutton(id);
   
    if((buttons & (IN_JUMP | IN_DUCK))==(IN_JUMP | IN_DUCK) && (oldbuttons & (IN_JUMP | IN_DUCK))!=(IN_JUMP | IN_DUCK))
    {
        Funkcja1(id)
    }
   
    return FMRES_IGNORED;
   
}

Można to również rozwiązać dając || zamiast ostatniego &&, jednak ten sposób jest bardziej elegancki :)

Przejdź do postu


  • Zamknięty Temat jest zamknięty
4 odpowiedzi w tym temacie

#1 Linux'

    Pan Pomocny

  • Power User

Reputacja: 488
Wszechobecny

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

Napisano 13.06.2013 11:53

public fwd_CmdStart(id, uc_handle, seed) 
{

	if(!is_user_alive(id) || !ma_perk[id])
        {

		return FMRES_IGNORED;

	}

	new buttons = get_uc(uc_handle,UC_Buttons)
	new oldbuttons = get_user_oldbutton(id);

	if((buttons & IN_USE) && !(oldbuttons & IN_USE))

        {
            Funkcja1(id)
	}

	return FMRES_IGNORED;

}

ten kod uzywa funkcji po nacisnieciu klawisza E. Chcialbym sie dowiedziec jak by wygladal kod gdyby uzywal funkcji po wcisnieciu klawiszy: ctr + spacja


  • +
  • -
  • 0

Posiadam na sprzedaż w pełni odwzorowaną paczkę nowego coda do csgo. Kliknij by dowiedzieć się więcej!

 

- PISZE MODYFIKACJE.

- NAPRAWIAM POPSUTE PLUGINY.

- DZIALAM W DZIALACH AMXX/SOURCEMOD. MASZ ZLECENIE? PISZ.


#2 Klakier

    Volenti non fit iniuria

  • Power User

Reputacja: 389
Wszechpomocny

  • Postów:878
  • GG:
  • Imię:Sebastian
  • Lokalizacja:Mogilno
Offline

Napisano 13.06.2013 14:21

Coś takiego: ?

#define IN_JUMP (1<<1)
#define IN_DUCK (1<<2)

public fwd_CmdStart(id, uc_handle, seed)
{
    
    if(!is_user_alive(id) || !ma_perk[id])
    {
        return FMRES_IGNORED;
    }
    
    new buttons = get_uc(uc_handle,UC_Buttons)
    new oldbuttons = get_user_oldbutton(id);
    
    if(((buttons & IN_JUMP) && (buttons & IN_DUCK)) && (!(oldbuttons & IN_JUMP) || !(oldbuttons & IN_DUCK)))
    {
        Funkcja1(id)
    }
    
    return FMRES_IGNORED;
    
}

 
@edit post na dole


  • +
  • -
  • 0

Sell - System Klanów (wojny, top15 etc)

 

Kontakt GG: 7285018


#3 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 13.06.2013 14:55   Najlepsza odpowiedź

Klakier, ten kod nie zadziała. Gdy wciśniesz CTRL, następnie Spację, to funkcja wywoła się 2x. W pierwszym wywołaniu buttons przyjmie wartość IN_DUCK, w drugim już będzie IN_JUMP|IN_DUCK. Jednak oldbuttons przyjmie IN_DUCK, co spowoduje brak wejścia do IFa. Prawidłowy kod:

public fwd_CmdStart(id, uc_handle, seed)
{
   
    if(!is_user_alive(id) || !ma_perk[id])
    {
        return FMRES_IGNORED;
    }
   
    new buttons = get_uc(uc_handle,UC_Buttons)
    new oldbuttons = get_user_oldbutton(id);
   
    if((buttons & (IN_JUMP | IN_DUCK))==(IN_JUMP | IN_DUCK) && (oldbuttons & (IN_JUMP | IN_DUCK))!=(IN_JUMP | IN_DUCK))
    {
        Funkcja1(id)
    }
   
    return FMRES_IGNORED;
   
}

Można to również rozwiązać dając || zamiast ostatniego &&, jednak ten sposób jest bardziej elegancki :)


Użytkownik GwynBleidD edytował ten post 13.06.2013 14:56

  • +
  • -
  • 1
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#4 Klakier

    Volenti non fit iniuria

  • Power User

Reputacja: 389
Wszechpomocny

  • Postów:878
  • GG:
  • Imię:Sebastian
  • Lokalizacja:Mogilno
Offline

Napisano 13.06.2013 15:12

Coś takiego również zadziała

public fwd_CmdStart(id, uc_handle, seed)
{
    
    if(!is_user_alive(id) || !ma_perk[id])
    {
        return FMRES_IGNORED;
    }
    
    new buttons = get_uc(uc_handle,UC_Buttons)
    new oldbuttons = get_user_oldbutton(id);
    
    if((buttons == (IN_JUMP | IN_DUCK)) && (oldbuttons != (IN_JUMP | IN_DUCK)))
    {
        Funkcja1(id)
    }
    
    return FMRES_IGNORED;
    
}

  • +
  • -
  • 0

Sell - System Klanów (wojny, top15 etc)

 

Kontakt GG: 7285018


#5 Linux'

    Pan Pomocny

  • Autor tematu
  • Power User

Reputacja: 488
Wszechobecny

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

Napisano 13.06.2013 15:55

okey wielkie dzięki za pomoc, mozna zamknac


  • +
  • -
  • 0

Posiadam na sprzedaż w pełni odwzorowaną paczkę nowego coda do csgo. Kliknij by dowiedzieć się więcej!

 

- PISZE MODYFIKACJE.

- NAPRAWIAM POPSUTE PLUGINY.

- DZIALAM W DZIALACH AMXX/SOURCEMOD. MASZ ZLECENIE? PISZ.





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

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