Problem z kompilacją klasy cod mod nowy
Rafii
23.07.2025
Witam edytowałem silnik cod mod nowy aby były 4 linie opisu klas, lecz ukazuje się błąd podczas kompilacji.
// SILNIK
opis1_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1],
opis2_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1],
opis3_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1],
opis4_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1],
public ZarejestrujKlase(plugin, params) {
if(params != 9)
return PLUGIN_CONTINUE;
if(++ilosc_klas > MAX_ILOSC_KLAS)
return -1;
pluginy_klas[ilosc_klas] = plugin;
get_string(1, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY);
get_string(2, opis1_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
get_string(3, opis2_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
get_string(4, opis3_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
get_string(5, opis4_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
zdrowie_klas[ilosc_klas] = get_param(6);
kondycja_klas[ilosc_klas] = get_param(7);
inteligencja_klas[ilosc_klas] = get_param(8);
wytrzymalosc_klas[ilosc_klas] = get_param(9);
for(new i=0;i<klasid;i++) {
if(equali(nazwy_klas[ilosc_klas],nazwa_klasy[i])) {
frakcja_klas[ilosc_klas] = nazwa_frakcji[i];
}
}
return ilosc_klas;
}
native cod_register_class(const nazwa[], const opis1[], const opis2[], const opis3[], const opis4[], punkty_zdrowia, punkty_kondycji, punkty_inteligencji, punkty_wytrzymalosci);
// KLASA
new const opis1[] = "1";
new const opis2[] = "2";
new const opis3[] = "3";
new const opis4[] = "4";
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
cod_register_class(nazwa, opis1, opis2, opis3, opis4, zdrowie, kondycja, inteligencja, wytrzymalosc);
// Kompilacja klasy
AMX Mod X Compiler 1.8.3-dev+5201
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team
Error: Array dimensions do not match on line 33
Warning: Symbol is never used: "inteligencja" on line 19
Warning: Symbol is never used: "kondycja" on line 18
Warning: Symbol is never used: "wytrzymalosc" on line 20
1 Error, 3 Warning
Linia 33: cod_register_class(nazwa, opis1, opis2, opis3, opis4, zdrowie, kondycja, inteligencja, wytrzymalosc);
Linia 18: new const kondycja = 0;
Linia 19: new const inteligencja = 0;
Linia 20: new const wytrzymalosc = 0;
Użytkownik Rafii edytował ten post 23.07.2025 20:04
xSPECJALSx
28.07.2025
Błąd kompilacji „Error: Array dimensions do not match” wskazuje na problem z niezgodnością
rozmiarów tablic w wywołaniu funkcji cod_register_class. Prawdopodobnie wynika to z przekazywania
nieodpowiednich typów danych lub niezgodnych rozmiarów tablic.
Funkcja cod_register_class oczekuje, że argumenty opis1, opis2, opis3, opis4 będą pojedynczymi tablicami znaków (np. const opis1[]), a nie dwuwymiarowymi tablicami. Dlatego kompilator zgłasza błąd niezgodności rozmiarów tablic.
^^DeeD^^
28.07.2025
wpisywanie kodu bledy do chatu gpt to nie rozwiązanie problemu dla kolegi.
Podeslij całe sma albo link do silnika tego coda
xSPECJALSx
11.08.2025
Witam edytowałem silnik cod mod nowy aby były 4 linie opisu klas, lecz ukazuje się błąd podczas kompilacji.
// SILNIK opis1_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1], opis2_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1], opis3_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1], opis4_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1], public ZarejestrujKlase(plugin, params) { if(params != 9) return PLUGIN_CONTINUE; if(++ilosc_klas > MAX_ILOSC_KLAS) return -1; pluginy_klas[ilosc_klas] = plugin; get_string(1, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY); get_string(2, opis1_klas[ilosc_klas], MAX_WIELKOSC_OPISU); get_string(3, opis2_klas[ilosc_klas], MAX_WIELKOSC_OPISU); get_string(4, opis3_klas[ilosc_klas], MAX_WIELKOSC_OPISU); get_string(5, opis4_klas[ilosc_klas], MAX_WIELKOSC_OPISU); zdrowie_klas[ilosc_klas] = get_param(6); kondycja_klas[ilosc_klas] = get_param(7); inteligencja_klas[ilosc_klas] = get_param(8); wytrzymalosc_klas[ilosc_klas] = get_param(9); for(new i=0;i<klasid;i++) { if(equali(nazwy_klas[ilosc_klas],nazwa_klasy[i])) { frakcja_klas[ilosc_klas] = nazwa_frakcji[i]; } } return ilosc_klas; } native cod_register_class(const nazwa[], const opis1[], const opis2[], const opis3[], const opis4[], punkty_zdrowia, punkty_kondycji, punkty_inteligencji, punkty_wytrzymalosci); // KLASA new const opis1[] = "1"; new const opis2[] = "2"; new const opis3[] = "3"; new const opis4[] = "4"; new const zdrowie = 0; new const kondycja = 0; new const inteligencja = 0; new const wytrzymalosc = 0; cod_register_class(nazwa, opis1, opis2, opis3, opis4, zdrowie, kondycja, inteligencja, wytrzymalosc); // Kompilacja klasy AMX Mod X Compiler 1.8.3-dev+5201 Copyright (c) 1997-2006 ITB CompuPhase Copyright (c) 2004-2013 AMX Mod X Team Error: Array dimensions do not match on line 33 Warning: Symbol is never used: "inteligencja" on line 19 Warning: Symbol is never used: "kondycja" on line 18 Warning: Symbol is never used: "wytrzymalosc" on line 20 1 Error, 3 Warning Linia 33: cod_register_class(nazwa, opis1, opis2, opis3, opis4, zdrowie, kondycja, inteligencja, wytrzymalosc); Linia 18: new const kondycja = 0; Linia 19: new const inteligencja = 0; Linia 20: new const wytrzymalosc = 0;
Powinno działać
#include <amxmodx>
// --- KONFIG ---
#define MAX_ILOSC_KLAS 64
#define MAX_WIELKOSC_NAZWY 32
#define MAX_WIELKOSC_OPISU 127
// --- PAMIĘĆ SILNIKA ---
new ilosc_klas;
new pluginy_klas[MAX_ILOSC_KLAS + 1];
new nazwy_klas[MAX_ILOSC_KLAS + 1][MAX_WIELKOSC_NAZWY + 1];
new opis1_klas[MAX_ILOSC_KLAS + 1][MAX_WIELKOSC_OPISU + 1];
new opis2_klas[MAX_ILOSC_KLAS + 1][MAX_WIELKOSC_OPISU + 1];
new opis3_klas[MAX_ILOSC_KLAS + 1][MAX_WIELKOSC_OPISU + 1];
new opis4_klas[MAX_ILOSC_KLAS + 1][MAX_WIELKOSC_OPISU + 1];
new zdrowie_klas[MAX_ILOSC_KLAS + 1];
new kondycja_klas[MAX_ILOSC_KLAS + 1];
new inteligencja_klas[MAX_ILOSC_KLAS + 1];
new wytrzymalosc_klas[MAX_ILOSC_KLAS + 1];
// (opcjonalnie) frakcje – jeśli używasz
new frakcja_klas[MAX_ILOSC_KLAS + 1];
// --- NATYWA (API) ---
public plugin_init()
{
register_plugin("CoD Core", "1.0", "");
}
public plugin_natives()
{
// bez stylu paramów (domyślnie), 9 argumentów
register_native("cod_register_class", "ZarejestrujKlase");
}
// native cod_register_class(const nazwa[], const opis1[], const opis2[], const opis3[], const opis4[], hp, kond, int, wyt)
public ZarejestrujKlase(plugin, params)
{
if (params != 9)
return -1;
if (++ilosc_klas > MAX_ILOSC_KLAS)
return -1;
pluginy_klas[ilosc_klas] = plugin;
// Bufory na dane z wołania natywy
get_string(1, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY + 1);
get_string(2, opis1_klas[ilosc_klas], MAX_WIELKOSC_OPISU + 1);
get_string(3, opis2_klas[ilosc_klas], MAX_WIELKOSC_OPISU + 1);
get_string(4, opis3_klas[ilosc_klas], MAX_WIELKOSC_OPISU + 1);
get_string(5, opis4_klas[ilosc_klas], MAX_WIELKOSC_OPISU + 1);
zdrowie_klas[ilosc_klas] = get_param(6);
kondycja_klas[ilosc_klas] = get_param(7);
inteligencja_klas[ilosc_klas] = get_param(8);
wytrzymalosc_klas[ilosc_klas] = get_param(9);
// TODO: jeśli masz mapowanie frakcji po nazwie, zrób je tu.
// for (...) if (equali(nazwy_klas[ilosc_klas], ...)) frakcja_klas[ilosc_klas] = ...
return ilosc_klas; // ID nowej klasy
}




