[ROZWIĄZANE] problem z opisem klas
1stADXionC
30.01.2021
Co robię żle ?
próbuje zrobić 4 linie opisu klas
opisy_klas[4][MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1],
public OpisKlasy_Handle(id, menu, item) { hud_znika[id]=0; if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } new data[65], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback) item = str_to_num(data); new bronie[320]; for(new i=1, n=1; i <= 32; i++) { if((1<<i) & bronie_klasy[item]) { new weaponname[22]; get_weaponname(i, weaponname, 21); replace_all(weaponname, 21, "weapon_", " "); if(n > 1) add(bronie, charsmax(bronie), ","); add(bronie, charsmax(bronie), weaponname); n++; } } new opis[416+MAX_WIELKOSC_OPISU]; format(opis, charsmax(opis), "^n^n^n^n\yKlasa:^n ------>\d %s^n\yBronie:^n ------>\d %s^n\yOpis1:^n ------>\d %s^n%s^n\yOpis2:^n ------>\d %s^n%s^n\yOpis3:^n ------>\d %s^n%s^n\yOpis4:^n ------>\d %s^n%s", nazwy_klas[item], bronie, opisy_klas[0][item], opisy_klas[0][item][79], opisy_klas[1][item], opisy_klas[1][item][79], opisy_klas[2][item], opisy_klas[2][item][79], opisy_klas[3][item], opisy_klas[3][item][79]); show_menu(id, 1023, opis); return PLUGIN_CONTINUE; }
public PobierzOpisKlasy(klasa, Return[], len) { if(klasa <= ilosc_klas) { param_convert(2); copy(Return, len, opisy_klas[0][klasa]); copy(Return, len, opisy_klas[1][klasa]); copy(Return, len, opisy_klas[2][klasa]); copy(Return, len, opisy_klas[3][klasa]); } }
native cod_register_class(const nazwa[], const opis[0][], const opis[1][], const opis[2][], const opis[3][], bronie, punkty_zdrowia, punkty_kondycji, punkty_inteligencji, punkty_wytrzymalosci); /*------------------------------ Rejestruje nowa klase oraz zwraca jej numer ------------------------------*/
new const nazwa[] = "Hajter (P)"; new const opis[0][] = "1"; new const opis[1][] = "2"; new const opis[2][] = "3"; new const opis[3][] = "4"; new const bronie = (1<<CSW_M4A1); new const zdrowie = 0; new const kondycja = 0; new const inteligencja = 0; new const wytrzymalosc = 0;
Błędy podczas kompilacji:
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team C:\Gry\Counter-Strike 1.6 v43\cstrike\addons\amxmodx\scripting\include\codmod.inc(223) : error 021: symbol already defined: "opis" C:\Gry\Counter-Strike 1.6 v43\cstrike\addons\amxmodx\scripting\include\codmod.inc(223) : error 021: symbol already defined: "opis" C:\Gry\Counter-Strike 1.6 v43\cstrike\addons\amxmodx\scripting\include\codmod.inc(223) : error 021: symbol already defined: "opis" C:\Gry\Counter-Strike 1.6 v43\cstrike\addons\amxmodx\scripting\include\codmod.inc(223) : fatal error 107: too many error messages on one line Compilation aborted. 4 Errors. Could not locate output file C:\Users\olsza\Desktop\cod\codclass_hajter.amx (compile failed).
Robiin
30.01.2021
Po pierwsze:
opisy_klas[2][item][79]
To Ci wypisze 1 znak. Zadziała to tak samo jak to:
new s[10] = "abcdef"; log_amx(s[5]); // f
Po drugie:
native cod_register_class(const nazwa[], const opis[3][], bronie, punkty_zdrowia, punkty_kondycji, punkty_inteligencji, punkty_wytrzymalosci); // log_amx("Opis 1: %s", opis[0]); // log_amx("Opis 2: %s", opis[1]); // log_amx("Opis 3: %s", opis[2]);
1stADXionC
31.01.2021
Po pierwsze:opisy_klas[2][item][79]To Ci wypisze 1 znak. Zadziała to tak samo jak to:new s[10] = "abcdef";log_amx(s[5]); // fPo drugie:native cod_register_class(const nazwa[], const opis[3][], bronie, punkty_zdrowia, punkty_kondycji, punkty_inteligencji, punkty_wytrzymalosci);// log_amx("Opis 1: %s", opis[0]);// log_amx("Opis 2: %s", opis[1]);// log_amx("Opis 3: %s", opis[2]);
Czyli powinno być:
", nazwy_klas[item], bronie, opisy_klas[4][item], opisy_klas[4][item][79]);
Robiin
31.01.2021
Nie wiem po co Ci to 79?
Jak już to:
", nazwy_klas[item], bronie, opisy_klas[0][item], opisy_klas[1][item], opisy_klas[2][item], opisy_klas[3][item]);
1stADXionC
01.02.2021
Nie wiem po co Ci to 79?
Jak już to:", nazwy_klas[item], bronie, opisy_klas[0][item], opisy_klas[1][item], opisy_klas[2][item], opisy_klas[3][item]);
Jeszcze został jeden KOD a mianowicie:
cod_register_class(nazwa, opis[4], bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);Tak będzie poprawnie?
Robiin
01.02.2021
Raczej tak:
cod_register_class(nazwa, opis[4][150], bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
Argument "opis" to tablica przechowująca 4 opisy (stąd [4]) i każdy ma po max. 150 znaków (stąd [150]).
Warto na początku zapamiętać, że napisy w amxxie będą podlegać zasadzie: zrób tak jak inne argumenty, ale dodaj wielkość. Będzie Ci łatwiej, jak zawsze będziesz o tym pamiętać
1stADXionC
01.02.2021
Raczej tak:
cod_register_class(nazwa, opis[4][150], bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);Argument "opis" to tablica przechowująca 4 opisy (stąd [4]) i każdy ma po max. 150 znaków (stąd [150]).
Warto na początku zapamiętać, że napisy w amxxie będą podlegać zasadzie: zrób tak jak inne argumenty, ale dodaj wielkość. Będzie Ci łatwiej, jak zawsze będziesz o tym pamiętać
Dzięki wielkie. A czy dla ułatwienia mogę zamiast liczby użyć 'lp' ponieważ klasy się różnią opisami i jedna klasa posiada 3 linie a druga klasa np 4?
Engi
01.02.2021
jedna klasa posiada 3 linie a druga klasa np 4
Do wyświetlania pętle? A raczej do doklejania do stringa nowej linii? Czy jak to chcesz? Każda tablica w nowej linii czy w jednej wszystko (co się nie wejdzie na czat)?
https://amxx.pl/topic/6814-p%C4%99tle/
i sprawdzenie w pętli czy istnieje X linii https://forums.allie...ad.php?t=47691 https://forums.allie...ad.php?t=218572 ?
Robiin
01.02.2021
Raczej bym proponował zrobić to tak jak Engi mówi. Generalnie zamiast tablicy opisy[4][150] możesz zrobić opisy[512] (choć powinieneś 256, bo w menu i tak wiecej się nie zmieści) i zamienić osobne tablice na jeden napis z line-breakiem. Czyli z tego:
new opisy[4][150]; formatex(opisy[0], charsmax(opisy[]), "Opis 1"); formatex(opisy[1], charsmax(opisy[]), "Opis 2"); formatex(opisy[2], charsmax(opisy[]), "Opis 3"); formatex(opisy[3], charsmax(opisy[]), "Opis 4");
zrobić to:
new opisy[512]; formatex(opisy, charsmax(opisy), "Opis 1^n\ Opis 2^n\ Opis 3^n\ Opis 4");
DarkGL
01.02.2021
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz,

Z pozdrowieniami,
Zespół AMXX.PL