←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Cod array must be index

  • +
  • -
Ukema - zdjęcie Ukema 06.06.2020

Witam otóż chciałem sobie zrobić 2 perk od lvl oraz klan od lvl w hud lecz przy kompilacji mam problem array must be indexed ,variable unknow.

cod_get_user_level[id] > 25000 ? nazwy_perkow[perk_gracza[1][id]] : "OD 25K LVL", hp, cod_get_user_coins(id), cod_get_user_level[id] < 15000 ? szGroupName[id] : "BRAK");

nad hudem

new hp = get_user_health(id);
new cod_get_user_level[32];
new szGroupName[20];

próbowałem już 

new cod_get_user_level[32][1];

ale dalej to samo pomożecie jakoś ?

 

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 06.06.2020

cod_get_user_level to jest prawdopodobnie natyw, a nie tablica.

W silniku cod mod masz bezpośrednio dostęp do danych o tyk, który poziom ma gracz. Spróbuj zamienić sobie w swoim kodzie cod_get_user_level na poziom_gracza (chyba tak się ta zmienna nazywała)

Odpowiedz

  • +
  • -
Ukema - zdjęcie Ukema 06.06.2020

Nie tak też próbowałem i również ten sam błąd.

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 06.06.2020

ok, to daj więcej kodu tak, żeby można to było u siebie przetestować.

Odpowiedz

  • +
  • -
Ukema - zdjęcie Ukema 06.06.2020

public PokazInformacje(id)
{
id -= ZADANIE_POKAZ_INFORMACJE;


if(!is_user_connected(id))
{
remove_task(id+ZADANIE_POKAZ_INFORMACJE);
return PLUGIN_CONTINUE;
}


if(!is_user_alive(id))
{
new target = pev(id, pev_iuser2);


if(!target)
return PLUGIN_CONTINUE;


new hp = get_user_health(target);
new cod_get_user_level[33];
set_hudmessage(0, 255, 255, 0.8, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
ShowSyncHudMsg(id, SyncHudObj, "|| FORUM : xx ||^n| KLASA : %s |^n| EXP : %i / %i |^n| LEVEL : %i |^n| PERK I : %s|^n| PERK II : %s |^n| AKTUALNE HP : %d |^n| MONETY : %i |^n^n^n|| STATYSTYKI ||^n|INT : %i|^n|HP : %i|^n|ODP : %i|^n|SPEED : %i|^n| DMG : +%0.2f%% |", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], PobierzDoswiadczeniePoziomu(poziom_gracza[target]), poziom_gracza[target],
nazwy_perkow[perk_gracza[0][target]], cod_get_user_level[id] > 25000 ? nazwy_perkow[perk_gracza[1][target]] : "OD 25K LVL", hp, cod_get_user_coins(target),  inteligencja_gracza[target], zdrowie_gracza[target], wytrzymalosc_gracza[target], kondycja_gracza[target], float(obrazenia_gracza[target])*0.3);
return PLUGIN_CONTINUE;
}


new hp = get_user_health(id);
new szGroupName[20];
new cod_get_user_level[33];
set_hudmessage(255, 255, 0, 0.8, 0.1, 0, 0.0, 0.3, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj, "[FORUM : xx]^n[KLASA : %s]^n[EXP : %i / %i]^n[LEVEL : %i]^n[PERK I : %s]^n[PERK II : %s]^n[AKTUALNE HP : %d]^n[MONETY :  %i]", nazwy_klas[klasa_gracza[id]], doswiadczenie_gracza[id],
PobierzDoswiadczeniePoziomu(poziom_gracza[id]), poziom_gracza[id], nazwy_perkow[perk_gracza[0][id]], cod_get_user_level[id] > 25000 ? nazwy_perkow[perk_gracza[1][id]] : "OD 25K LVL", hp, cod_get_user_coins(id));


return PLUGIN_CONTINUE;
}

obecny hud to ten tylko chciałbym własnie dodac sobie klany do hud bo gdy nie mamy klanu to nie ma info tylko pusty hud jest a chciałbym aby własnie od levelu 15k wyswietlalo dopiero nasz klan a gdy nie mamy tyle lvl to pisze brak 

cod_get_user_perk[id] < 15000 ? szGroupName[id] : "BRAK"

lecz gdy właśnie ten kod do klanu to wyskakuje mi array must be indexed variable unknow czytałem i wiem że nie może się powtarzać ale dodawałem  

cod_get_user_perk[0][id] albo [1]

ale to samo jest . 

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 06.06.2020


cod_get_user_perk[id] < 15000 ? szGroupName[id] : "BRAK"

Powiedz mi co chciałeś tym osiągnąć bo ja dalej nie rozumiem. Najpierw poziom potem perk... Sprecyzuj dokładnie

cod_get_user_perk[id]

To nie jest poprawne nijak.

Jest funkcja cod_get_user_perk, a funkcje wywołuje się używając okrągłych nawiasów.

Kwadratowe nawiasy stosuje się do tablic. Tak jak mówiłem wcześniej. Poziom gracza mamy w tablicy poziom_gracza[33], więc tam można się odwoływać stylem: poziom_gracza[id], identyfikator perku gracza jest zapisany w tablicy: perk_gracza[2][33]  i możesz sie odwoływać do pierwszego slota perku np tak: perk_gracza[0][id], do drugiego: perk_gracza[1][id]

new cod_get_user_level[33];

nie wiem też co chciałeś osiągnąć tym, ale tworzysz tylko pusta tablicę, która nie zawiera żadnych danych.

Odpowiedz

  • +
  • -
Ukema - zdjęcie Ukema 06.06.2020

o pomyłka bo chciałem ci dać poprawna 

ma być

cod_get_user_level[id] < 15000 ? szGroupName[id] : "BRAK"

ale gdy mam to czyli nazwe klanu i rownież

cod_get_user_level[id] > 25000 ? nazwy_perkow[perk_gracza[1][id]] : "OD 25K LVL"

czyli perk od 25k lvl to wyskakuje błąd indexu 

czyli 

aray must be indexed valiable unkown

chyba że da się jakoś inaczej ustawić że gdy gracz ma klan to nazwa klanu a gdy nie ma to pisze brak tylko jaki wtedy kod ? 

Odpowiedz

  • +
  • -
Alelluja - zdjęcie Alelluja 07.06.2020

Jeżeli rozumiem co chcesz zrobić to raczej powinno być tak:

 

 poziom_gracza[id] >= 25000 ? nazwy_perkow[perk_gracza[1][id]] : "OD 25K LVL"
Odpowiedz

  • +
  • -
Ukema - zdjęcie Ukema 07.06.2020

Nie słuchaj, mam teraz tak

cod_get_user_level[id] > 25000 ? nazwy_perkow[perk_gracza[1][id]] : "OD 25K LVL"

i to dziala dobrze lecz chce dodać też klan w hud albo od lvl 15k i gdy nie ma tylu to pisze brak albo  gdy ktos go nie ma to pisze brak bo teraz gdy nikt nie ma klanu to jest puste pole. 

 

probowałem zrobić to tak 

cod_get_user_level[id] < 15000 ? szGroupName[id] : "BRAK"

lecz wtedy pokazuje się błąd o indexie ponieważ są dwa razy 

cod_get_user_level[id]
Odpowiedz

  • +
  • -
Toldi - zdjęcie Toldi 07.06.2020

Można to zrobić też w natywie wysyłającym nazwę klanu.

Odpowiedz