Видите ли, в вашем случае лучше использовать if, т.к. switch перебирает все значения в диапазоне, а на if можно просто сравнить с самым маленьким и самым большим.
Так будет лучше:
if(pInfo[playerid][pKills] >= 0 && pInfo[playerid][pKills] <= 199) newlevel = 0; else if(pInfo[playerid][pKills] >= 200 && pInfo[playerid][pKills] <= 399) newlevel = 1; else if(pInfo[playerid][pKills] >= 400 && pInfo[playerid][pKills] <= 599) newlevel = 2; else if(pInfo[playerid][pKills] >= 600 && pInfo[playerid][pKills] <= 799) newlevel = 3; else if(pInfo[playerid][pKills] >= 800 && pInfo[playerid][pKills] <= 999) newlevel = 4; else if(pInfo[playerid][pKills] >= 1000 && pInfo[playerid][pKills] <= 1499) newlevel = 5; else if(pInfo[playerid][pKills] >= 1500 && pInfo[playerid][pKills] <= 1999) newlevel = 6; else if(pInfo[playerid][pKills] >= 2000 && pInfo[playerid][pKills] <= 2499) newlevel = 7; else if(pInfo[playerid][pKills] >= 2500 && pInfo[playerid][pKills] <= 2999) newlevel = 8; else if(pInfo[playerid][pKills] >= 3000 && pInfo[playerid][pKills] <= 3499) newlevel = 9; else if(pInfo[playerid][pKills] >= 3500 && pInfo[playerid][pKills] <= 3999) newlevel = 10; else if(pInfo[playerid][pKills] >= 4000 && pInfo[playerid][pKills] <= 4999) newlevel = 11; else if(pInfo[playerid][pKills] >= 5000 && pInfo[playerid][pKills] <= 5999) newlevel = 12; else if(pInfo[playerid][pKills] >= 6000 && pInfo[playerid][pKills] <= 11999) newlevel = 13; else if(pInfo[playerid][pKills] >= 12000 && pInfo[playerid][pKills] <= 14999) newlevel = 14; else if(pInfo[playerid][pKills] >= 15000 && pInfo[playerid][pKills] <= 24999) newlevel = 15; else if(pInfo[playerid][pKills] >= 25000 && pInfo[playerid][pKills] <= 50000) newlevel = 16;
Да и к слову, в вашем варианте с switch была допущена ошибка
switch(pInfo[playerid][pKills)
От
PHP код:
&& pInfo[playerid][pKills] <= 199
и всех подобных прочих условий можно также избавиться, просто выстроив ветвление в обратном порядке:
PHP код:
if(pInfo[playerid][pKills] >= 25000 && pInfo[playerid][pKills] <= 50000) newlevel = 16;
else if(pInfo[playerid][pKills] >= 15000) newlevel = 15;
else if(pInfo[playerid][pKills] >= 12000) newlevel = 14;
else if(pInfo[playerid][pKills] >= 6000) newlevel = 13;
else if(pInfo[playerid][pKills] >= 5000) newlevel = 12;
else if(pInfo[playerid][pKills] >= 4000) newlevel = 11;
else if(pInfo[playerid][pKills] >= 3500) newlevel = 10;
else if(pInfo[playerid][pKills] >= 3000) newlevel = 9;
else if(pInfo[playerid][pKills] >= 2500) newlevel = 8;
else if(pInfo[playerid][pKills] >= 2000) newlevel = 7;
else if(pInfo[playerid][pKills] >= 1500) newlevel = 6;
else if(pInfo[playerid][pKills] >= 1000) newlevel = 5;
else if(pInfo[playerid][pKills] >= 800) newlevel = 4;
else if(pInfo[playerid][pKills] >= 600) newlevel = 3;
else if(pInfo[playerid][pKills] >= 400) newlevel = 2;
else if(pInfo[playerid][pKills] >= 200) newlevel = 1;
else if(pInfo[playerid][pKills] >= 0) newlevel = 0;
//Возможные дыры, не учитываемые в изначальной логике условий и в этой: newlevel ничему не присвоится при значениях pInfo[playerid][pKills] ниже нуля и больше 50000
Хотя самым эффективным вариантом было бы приведение всего этого к единой формуле вместо большого количества условий.
Последний раз редактировалось Nexius_Tailer; 10.01.2020 в 01:31.
Не хотите постоянно проверять обновления моих скриптов?
Подключите его последним, после всех остальных
Nexius's Update Checker
R1KO (10.01.2020)
При текущих цифрах нет прямых прогрессий (будь то арифметической или геометрической). Если есть желание менять значения с киллами в угоду построения простой формулы, то можно провернуть как раз через эти арифметические или геометрические прогрессии (погугли). В первом случае кол-во киллов для нового lvl'а будет равно старому lvl'у + некое постоянное число (киллов), являющееся разницей между двумя лвлами. В геометрической прогрессии похоже, но кол-во киллов в каждом новом лвле уже будет во сколько-то раз большим предыдущего (умножение), а не на сколько-то (прибавление). Если желания менять сами значения ради такой оптимизации нет, то вполне можно оставить и как есть, ну или попробовать ещё сделать с использованием массива + цикл, хотя там в скорости точно прироста ожидать не стоит (максимум - в удобстве добавления новых уровней).
Последний раз редактировалось Nexius_Tailer; 10.01.2020 в 03:02.
Не хотите постоянно проверять обновления моих скриптов?
Подключите его последним, после всех остальных
Nexius's Update Checker
R1KO (10.01.2020)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)