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

[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: 549
Wszechwiedzący

  • Postów:1 501
  • 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

b35020692_qesnxqa.png


#2 Klakier

    Volenti non fit iniuria

  • Power User

Reputacja: 391
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

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • 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: 391
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: 549
Wszechwiedzący

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

Napisano 13.06.2013 15:55

okey wielkie dzięki za pomoc, mozna zamknac


  • +
  • -
  • 0

b35020692_qesnxqa.png





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

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