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] error 12: invalid function call, not a valid adress - Pola bitowe


Najlepsza odpowiedź GwynBleidD, 26.08.2014 09:10

A sprawdź, czy zadziała:

(kupionehe &= ~(1<<id))
Czyli to, co sugeruje sebul.

Poza tym weź pod uwagę to, co się stanie, jeśli zmienne w amxx będą 32 bitowe (czyli możesz wykorzystać bity od 0 do 31) i będziesz miał gracza z ID = 32 :)

Lepiej zrobić jedną tablicę 33 elementową dla graczy, a odpowiednie "flagi" przypisywać dla konkretnych przedmiotów, czyli:

sklep[id] |= (1<<kupionehe)
oznacza, że ktoś kupił granat. Również dużo szybciej jest "wyzerować" flagi dla konkretnego gracza:
sklep[id] = 0
albo jeśli chcesz tylko kilka flag wyzerować:
sklep[id] &= ~(1<<kupionekroki) & ~(1<<kupionerender)
Tak samo zainicjować można konkretnymi flagami.

Oczywiście przy tym rozwiązaniu zmienne (lub stałe) kupione* muszą mieć wartości 1, 2, 3... do czego możesz wykorzystać enum :)

Jeszcze ciekawiej: przypisać im wartości: 1, 2, 4, 8, 16... i używać tak:

sklep[id] &= ~kupionekroki & ~kupionehe
Czyli dosłownie tak, jak flagi admina. I co ciekawe, można to "odpalić" pojedynczym enumem, co w zamierzchłych czasach opisywałem na forum: http://amxx.pl/topic...um/#entry127116 możesz użyć zamiast mnożenia, przesunięcie bitowe ;) Ale to na to samo wyjdzie. Przejdź do postu


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

#1 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Online

Napisano 25.08.2014 19:17

Witam.

Używam tego kodu:

public client_connect(id)
{
      ClearBit(kupionehe, id);
      ClearBit(kupionefb, id);
      ClearBit(kupioneexp, id);
      ClearBit(kupionekroki, id);
      ClearBit(kupionestroj, id);
      ClearBit(kupionerender, id);
      ClearBit(kupionereawp, id);
}

I wywala błędy.

Dodam jeszcze że w bibliotece amxmodx.inc mam dodane to:

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

Załączone miniatury

  • bez

  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#2 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

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

Napisano 25.08.2014 23:56

A zastąpienie tego skrótu pełnym wyrażeniem eliminuje błąd?
  • +
  • -
  • 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

#3 sebul

    Godlike

  • Junior Admin

Reputacja: 2016
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 26.08.2014 01:01

Na moje wina nawiasu zewnętrznego.
  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#4 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Online

Napisano 26.08.2014 06:50

kupionehe = kupionehe & (1<<id)

Takie coś pomogło.

Dlaczego wywala błąd ? Używam tych flag w wielu pluginach. Może dlatego że nie jedna pod drugą?


  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#5 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

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

Napisano 26.08.2014 09:10   Najlepsza odpowiedź

A sprawdź, czy zadziała:

(kupionehe &= ~(1<<id))
Czyli to, co sugeruje sebul.

Poza tym weź pod uwagę to, co się stanie, jeśli zmienne w amxx będą 32 bitowe (czyli możesz wykorzystać bity od 0 do 31) i będziesz miał gracza z ID = 32 :)

Lepiej zrobić jedną tablicę 33 elementową dla graczy, a odpowiednie "flagi" przypisywać dla konkretnych przedmiotów, czyli:

sklep[id] |= (1<<kupionehe)
oznacza, że ktoś kupił granat. Również dużo szybciej jest "wyzerować" flagi dla konkretnego gracza:
sklep[id] = 0
albo jeśli chcesz tylko kilka flag wyzerować:
sklep[id] &= ~(1<<kupionekroki) & ~(1<<kupionerender)
Tak samo zainicjować można konkretnymi flagami.

Oczywiście przy tym rozwiązaniu zmienne (lub stałe) kupione* muszą mieć wartości 1, 2, 3... do czego możesz wykorzystać enum :)

Jeszcze ciekawiej: przypisać im wartości: 1, 2, 4, 8, 16... i używać tak:

sklep[id] &= ~kupionekroki & ~kupionehe
Czyli dosłownie tak, jak flagi admina. I co ciekawe, można to "odpalić" pojedynczym enumem, co w zamierzchłych czasach opisywałem na forum: http://amxx.pl/topic...um/#entry127116 możesz użyć zamiast mnożenia, przesunięcie bitowe ;) Ale to na to samo wyjdzie.
  • +
  • -
  • 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

#6 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Online

Napisano 26.08.2014 09:34


Poza tym weź pod uwagę to, co się stanie, jeśli zmienne w amxx będą 32 bitowe (czyli możesz wykorzystać bity od 0 do 31) i będziesz miał gracza z ID = 32 :)

 

Czyżby Benio się pomylił?


  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#7 sebul

    Godlike

  • Junior Admin

Reputacja: 2016
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 26.08.2014 13:54

Poza tym weź pod uwagę to, co się stanie, jeśli zmienne w amxx będą 32 bitowe (czyli możesz wykorzystać bity od 0 do 31) i będziesz miał gracza z ID = 32 smile.png

 
Czyżby Benio się pomylił?

Pisałem o tym wielokrotnie i nawet sam benio przyznał mi rację, że w przypadku id = 32 mogą być problemy, chyba że właśnie id graczy będzie się numerować od 0, ale wtedy wszędzie trzeba by robić tak "id-1". Czyli benio się nie pomylił, dobrze o tym wiedział.
  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#8 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Online

Napisano 26.08.2014 14:30

A jakby do tej makrodefinicji dodać takie coś żeby od indexu odejmowało 1 ?
  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#9 sebul

    Godlike

  • Junior Admin

Reputacja: 2016
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 26.08.2014 18:00

#define id_gracza(%1) %1-1 // nie wiem czy tu można/trzeba dać nawiasy
Na to samo wyjdzie i tak będziesz musiał wpisywać makrodefinicję, zamiast po prostu id, dodatkowo nie będziesz mieć oddzielnej wartości dla zera (czyli tak jakby dla serwera), ale to akurat raczej rzadko jest przydatne.
  • +
  • -
  • 1
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#10 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Online

Napisano 26.08.2014 18:39

Nie trzeba mi w tym przypadku wartości dla zera.

 

A jak to dodać do makrodefinicji, Clear/Set/Check Bit

#define CheckBit(%1,%2)    (%1 & (1<<((%2-1))))

Żeby w środku odejmować jeden od indexu i się pomieści wszystko.


  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!





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

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