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

Tablice bool


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

#1 csMaster

    Wszechwiedzący

  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 10.06.2018 12:48

Czy tak sformatowana tablica bool mogła by działać ?

#define LICZBA 30

enum liczby { zero = 0, jeden, dwa, trzy, cztery }

new bool:bTab[33][liczby][LICZBA];

//...

     bTab[id][trzy][6] = true;
     
     if(bTab[id][trzy][6]) // true
     //...

I czy taka nie wywalała by warninga ?

new iTab[33][liczby];

//...

     iTab[id][trzy] = 6;
     
     if(iTab[id][trzy] == 6)
     //...

Przy przypisywaniu danych do tych tablic był warning "tag mismatch" także nie wiem czy te tablice poprawnie zapisywałyby informacje :/


  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 103
Super Hero

  • Postów:2 043
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 10.06.2018 16:49

Pokaż linijkę na której wywalało ci tag mismatch. Błąd ten mówi o niepoprawnym przypisaniu wartości, na przykład 

new bool:zmienna;

zmienna = 3;

wywali błąd o tag mismatch, bo przypisujemy liczbę całkowitą do zmiennej "enumowej".

 

Jeszcze chyba się nie spotkałem z tym, żeby ktoś używał tablic większych niż dwuwymiaryowych (nie mówię, że nie można, albo się nie da, po prostu się nie spotkałem :P ), więc z ciekawości zapytam; do czego to?


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#3 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 11.06.2018 16:02

Pokaż linijkę na której wywalało ci tag mismatch. Błąd ten mówi o niepoprawnym przypisaniu wartości, na przykład 

new bool:zmienna;

zmienna = 3;

wywali błąd o tag mismatch, bo przypisujemy liczbę całkowitą do zmiennej "enumowej".

 

Jeszcze chyba się nie spotkałem z tym, żeby ktoś używał tablic większych niż dwuwymiaryowych (nie mówię, że nie można, albo się nie da, po prostu się nie spotkałem :P ), więc z ciekawości zapytam; do czego to?

 

Aaa no wiesz...

Pisze csgo moda i zmienna trójwymiarowa o której mówisz znaczy:

#define MAX_ILOSC_SKINOW 28

enum bronie { noz = 0, p228, scout, xm1014, mac10, aug, elites, fiveseven, ump45, galil, famas, usp,
glock18, awp, mp5, m249, m3, m4a1, tmp, deagle, sg552, ak47, p90 }

new bool:ma_skin[33][bronie][MAX_ILOSC_SKINOW];

//...

public sql_createdata(id)
{
     //...
    
     for(new i=0; i<=22; i++)
     {
          ma_skin[id][i][0] = true; // ustawienie skina nr 0 (Domyslny) do broni [i] graczowi o identyfikatorze [id] przy dodawaniu go do bazy danych
          //...
     }
}

  • +
  • -
  • 0

#4 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 12.06.2018 07:23

Looks good

Bez


  • +
  • -
  • 0

#5 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 12.06.2018 10:13

Do sprawdzenia czy gracz ma dany skin/przechowywania skinów gracza w tablicy, mógłbyś użyć  pól bitowych. Tak jak naprzykład flagi są zrobione albo nie wiem typ obrażeń .


  • +
  • -
  • 0

#6 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 12.06.2018 16:09

@TibacK, nie wiem jak miałoby to wyglądać >.<

Jak miałbym zapisywać skiny, używając pól bitowych jeśli maksymalna ilość skinów to ilość broni ze skinami (23) w każdej broni max po 28 skinów. Czyli razem 644. Zapisywać każdy skin, i przy tym do jakiej broni należy... No nie wiem jak miałbym to robić.

Jeśli chodzi o (1<<0), (1<<1), (1<<2), ..., (1<<643) to raczej nie zapisze w ten sposób do jakiej broni należy dany skin. Musiałbym do takich identyfikatorów zapisywać w jakiejś tablicy do jakiej broni dany skin należy.


Użytkownik csMaster edytował ten post 12.06.2018 16:10

  • +
  • -
  • 0

#7 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 12.06.2018 22:00

Istnieje możliwość zapisania liczby 1<<643.
Więcej informacji można znaleźć na zaprzyjaźnionym forum, w tym temacie:
https://forums.allie...ad.php?t=139916

 


  • +
  • -
  • 0

#8 AwIlL^^

    Magiczny Gość

  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:263
  • Steam:steam
  • Imię:Eryk
  • Lokalizacja:Gdańsk
Offline

Napisano 13.06.2018 13:46

enum _:bronie { noz = 0, p228, scout, xm1014, mac10, aug, elites, fiveseven, ump45, galil, famas, usp,
glock18, awp, mp5, m249, m3, m4a1, tmp, deagle, sg552, ak47, p90 };

new g_iskiny[33][bronie];

public DodajSkin(id, bron, id_skina)
{
    g_iskiny[id][bron] |= (1<<id_skina);
}

public ZabierzSkin(id, bron, id_skina)
{
    g_iskiny[id][bron] &= ~(1<<id_skina);
}

public PobierzSkiny(id, bron)
{
    return g_iskiny[id][bron];
}

public bool:SprawdzPosiadanieSkina(id, bron, id_skina)
{
    return (g_iskiny[id][bron] & (1<<id_skina))>0;
}

w taki sposób też możesz zrobić i wtedy masz tablicę dwuwymiarową.
Te funkcje trochę nie mają sensu, ale mają przedstawić w jaki sposób wykonujesz działania przy takim rozwiązaniu,
brak komentarzy bo wszystko co robią funkcje jest w ich nazwach.
w ostatnim celowo dałem bool oraz >0 żeby pokazać, że się da.
Można oczywiście pominąć boola i >0, działanie w ifach byłoby takie samo.

Jedyna różnica byłaby taka, że zamiast true, false miałbyś 0 lub id_skina.


Użytkownik AwIlL^^ edytował ten post 13.06.2018 13:54

  • +
  • -
  • 1

Potrzebujesz porad do amxx?? Pisz na [PW]





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

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