Tablice bool
csMaster
10.06.2018
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
Robiin
10.06.2018
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 ), więc z ciekawości zapytam; do czego to?
csMaster
11.06.2018
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 ), 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 //... } }
Rivit
12.06.2018
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ń .
csMaster
12.06.2018
@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
_McHappy
12.06.2018
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
AwIlL^^
13.06.2018
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