ex4mpl3
24.01.2023, 18:08
Здравствуйте, решил написать простую систему лицензий, при вводе команды, часть отрабатывает нормально, а часть нет.
Команда.
CMD:show_licenses(playerid, params[])
{
new
targetid;
if (sscanf(params, "d", targetid))
{
return SendClientMessage(playerid, COLOR_WHITE, "Введите: /show_licenses ");
}
if (!IsPlayerConnected(targetid))
{
return SendClientMessage(playerid, COLOR_LIGHTRED, "Игрока с таким ником/ид нет в игре.");
}
ShowLicensesArray(playerid);
ShowPlayerLicenses(playerid, targetid);
return true;
}
enum E_LICENSES_TYPE
{
E_LICENSE_CAR,
E_LICNESE_AIRPLANE,
E_LICNESE_BOAT,
E_LICNESE_MOTORBIKE,
E_LICENSE_WEAPON,
E_LICENSE_BUSSINES
}
const
MAX_LICENSES_TYPE = _:E_LICENSES_TYPE,
MAX_LICENSE_NAME = 40;
new
bool:g_players_licenses[MAX_PLAYERS][E_LICENSES_TYPE] = {false, ...};
static const g_licenses_name[E_LICENSES_TYPE][MAX_LICENSE_NAME] =
{
"Водительские права",
"Лицензия на возждение самолётом",
"Лицензия на вождение водным транспортом",
"Лицензия на вождения мотоцкла",
"Лицензия на ношей оружия",
"Лицензия на ведения бизнеса"
};
ShowLicensesArray(playerid); - отрабатывает полностью нормально.
stock ShowLicensesArray(playerid)
{
for (new i = 0; i < MAX_LICENSES_TYPE; ++i)
{
printf("[ShowLicensesArray]: i: %d, lic: %d", i, g_players_licenses[playerid][i]);
}
}
GeneratePlayerLicenseList - доходит до строки (11) "[I]printf("[GeneratePlayerLicenseList]: i + 1: %d", i + 1);" отрабатывает и дальше не идёт.
stock GeneratePlayerLicenseList(playerid, output_string[512], const size = sizeof(output_string))
{
printf("[GeneratePlayerLicenseList]: ОТРАБОТАЛ");
output_string[0] = EOS;
format(output_string, size, "Лицензии игрока: %s",
GetPlayerName(playerid));
for (new i = 0; i < MAX_LICENSES_TYPE; ++i)
{
printf("[GeneratePlayerLicenseList]: i + 1: %d", i + 1);
printf("[GeneratePlayerLicenseList]: g_players_licenses[playerid][i]: %d)", g_players_licenses[playerid][i]);
printf("[GeneratePlayerLicenseList]: g_licenses_name[i]: %s", g_licenses_name[i]);
printf("[GeneratePlayerLicenseList]: (GetPlayerLicense(playerid, i): %d)", GetPlayerLicense(playerid, i));
printf("[GeneratePlayerLicenseList]: ДОШЛО!");
format(output_string, size, "%s%d. %s: %s\n",
output_string,
i + 1,
g_licenses_name[i],
(GetPlayerLicense(playerid, i)) ? "Есть": "Отсутствует");
}
}
Не понятно как такое происхсодит, т.к. 12 строка делаёт всё то же, что и цикл в ShowLicensesArray(playerid), но тот отрабатывает нормально, а это нет.
В крашлоге это:
[16:04:46] #0 00012ee8 in ?? (0, 4282148, 512) at C:ссылка\gamemodes\Tested.pwn:885 *(16 строка в GeneratePlayerLicenseList)*
и это:
[16:04:46] #1 00410334 in public pc_cmd_show_licenses () at C:\ссылка\gamemodes\Tested.pwn:38911 *(вообще в самый конец мода, который никак не связан)*
Команда.
CMD:show_licenses(playerid, params[])
{
new
targetid;
if (sscanf(params, "d", targetid))
{
return SendClientMessage(playerid, COLOR_WHITE, "Введите: /show_licenses ");
}
if (!IsPlayerConnected(targetid))
{
return SendClientMessage(playerid, COLOR_LIGHTRED, "Игрока с таким ником/ид нет в игре.");
}
ShowLicensesArray(playerid);
ShowPlayerLicenses(playerid, targetid);
return true;
}
enum E_LICENSES_TYPE
{
E_LICENSE_CAR,
E_LICNESE_AIRPLANE,
E_LICNESE_BOAT,
E_LICNESE_MOTORBIKE,
E_LICENSE_WEAPON,
E_LICENSE_BUSSINES
}
const
MAX_LICENSES_TYPE = _:E_LICENSES_TYPE,
MAX_LICENSE_NAME = 40;
new
bool:g_players_licenses[MAX_PLAYERS][E_LICENSES_TYPE] = {false, ...};
static const g_licenses_name[E_LICENSES_TYPE][MAX_LICENSE_NAME] =
{
"Водительские права",
"Лицензия на возждение самолётом",
"Лицензия на вождение водным транспортом",
"Лицензия на вождения мотоцкла",
"Лицензия на ношей оружия",
"Лицензия на ведения бизнеса"
};
ShowLicensesArray(playerid); - отрабатывает полностью нормально.
stock ShowLicensesArray(playerid)
{
for (new i = 0; i < MAX_LICENSES_TYPE; ++i)
{
printf("[ShowLicensesArray]: i: %d, lic: %d", i, g_players_licenses[playerid][i]);
}
}
GeneratePlayerLicenseList - доходит до строки (11) "[I]printf("[GeneratePlayerLicenseList]: i + 1: %d", i + 1);" отрабатывает и дальше не идёт.
stock GeneratePlayerLicenseList(playerid, output_string[512], const size = sizeof(output_string))
{
printf("[GeneratePlayerLicenseList]: ОТРАБОТАЛ");
output_string[0] = EOS;
format(output_string, size, "Лицензии игрока: %s",
GetPlayerName(playerid));
for (new i = 0; i < MAX_LICENSES_TYPE; ++i)
{
printf("[GeneratePlayerLicenseList]: i + 1: %d", i + 1);
printf("[GeneratePlayerLicenseList]: g_players_licenses[playerid][i]: %d)", g_players_licenses[playerid][i]);
printf("[GeneratePlayerLicenseList]: g_licenses_name[i]: %s", g_licenses_name[i]);
printf("[GeneratePlayerLicenseList]: (GetPlayerLicense(playerid, i): %d)", GetPlayerLicense(playerid, i));
printf("[GeneratePlayerLicenseList]: ДОШЛО!");
format(output_string, size, "%s%d. %s: %s\n",
output_string,
i + 1,
g_licenses_name[i],
(GetPlayerLicense(playerid, i)) ? "Есть": "Отсутствует");
}
}
Не понятно как такое происхсодит, т.к. 12 строка делаёт всё то же, что и цикл в ShowLicensesArray(playerid), но тот отрабатывает нормально, а это нет.
В крашлоге это:
[16:04:46] #0 00012ee8 in ?? (0, 4282148, 512) at C:ссылка\gamemodes\Tested.pwn:885 *(16 строка в GeneratePlayerLicenseList)*
и это:
[16:04:46] #1 00410334 in public pc_cmd_show_licenses () at C:\ссылка\gamemodes\Tested.pwn:38911 *(вообще в самый конец мода, который никак не связан)*