PDA

Просмотр полной версии : [Вопрос] Оптимизация кода



ALIT13
19.01.2016, 18:58
Оптимизация кода , как можно упростить рандом или что нибудь чтоб код был более меньше

case 17:
{
switch(listitem)
{
case 0:
{
if(P::[playerid][pSex] == 1)
{
new NegrM = random(sizeof(NegrRandM));
SetPlayerSkin(playerid,NegrRandM[NegrM]);
PlayerInfo[playerid][pSkin] = NegrRandM[NegrM];
}
else
{
new NegrF = random(sizeof(NegrRandF));
SetPlayerSkin(playerid,NegrRandF[NegrF]);
PlayerInfo[playerid][pSkin] = NegrRandF[NegrF];
}
SendClientMessage(playerid,COLOR_ORANGE,"Õîðîøî, âàøà ðàñà òåïåðü:{FFFFFF} 'Àâñòðàëîèäíàÿ (òåìíîêîæèå)'"), PlayerInfo[playerid][pRasa] = 0;
}
case 1:
{
if(P::[playerid][pSex] == 1)
{
new NegrM = random(sizeof(NegrRandM2));
SetPlayerSkin(playerid,NegrRandM2[NegrM]);
PlayerInfo[playerid][pSkin] = NegrRandM2[NegrM];
}
else
{
new NegrF = random(sizeof(NegrRandF));
SetPlayerSkin(playerid,NegrRandF[NegrF]);
PlayerInfo[playerid][pSkin] = NegrRandF[NegrF];
}
SendClientMessage(playerid,COLOR_ORANGE,"Õîðîøî, âàøà ðàñà òåïåðü:{FFFFFF} 'Íåãðîèäíàÿ (òåìíîêîæèå)'"), PlayerInfo[playerid][pRasa] = 1;
}
case 2:
{
if(P::[playerid][pSex] == 1)
{
new BeloM = random(sizeof(BeloRandM));
SetPlayerSkin(playerid,BeloRandM[BeloM]);
PlayerInfo[playerid][pSkin] = BeloRandM[BeloM];
}
else
{
new BeloF = random(sizeof(BeloRandF));
SetPlayerSkin(playerid,BeloRandF[BeloF]);
PlayerInfo[playerid][pSkin] = BeloRandF[BeloF];
}
SendClientMessage(playerid,COLOR_ORANGE,"Õîðîøî, âàøà ðàñà òåïåðü:{FFFFFF} 'Åâðîïåîèäíàÿ (áåëîêîæèå)'"), PlayerInfo[playerid][pRasa] = 2;
}
case 3:
{
if(P::[playerid][pSex] == 1)
{
new JoltM = random(sizeof(JoltRandM));
SetPlayerSkin(playerid,JoltRandM[JoltM]);
PlayerInfo[playerid][pSkin] = JoltRandM[JoltM];
}
else
{
new JoltF = random(sizeof(JoltRandF));
SetPlayerSkin(playerid,JoltRandF[JoltF]);
PlayerInfo[playerid][pSkin] = JoltRandF[JoltF];
}
SendClientMessage(playerid,COLOR_ORANGE,"Õîðîøî, âàøà ðàñà òåïåðü:{FFFFFF} 'Ìîíãîëîèäíàÿ (æåëòîêîæèå)'"), PlayerInfo[playerid][pRasa] = 3;
}
}
}

[ForD]
19.01.2016, 19:14
"чтоб код был более меньше" - думаешь отразится на производительности в лучшую сторону?...

ALIT13
19.01.2016, 19:16
ну да , может можно не заносить в каждую case рандом

VVWVV
19.01.2016, 19:17
Мифы о Pawn-скриптинге - #2 (http://pro-pawn.ru/showthread.php?12773-%D0%9C%D0%B8%D1%84%D1%8B-%D0%BE-Pawn-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B8%D0%BD%D0%B3%D0%B5-2)

vovandolg
20.01.2016, 00:49
// перед switch(listitem) объявить переменные
new sex = P::[playerid][pSex];
new NegrM = random(sizeof(NegrRandM));
// далее так
if(sex == 1)
{
SetPlayerSkin(playerid,NegrRandM[NegrM]);
PlayerInfo[playerid][pSkin] = NegrRandM[NegrM];
}
else if(sex == 2)
{
SetPlayerSkin(playerid,NegrRandF[NegrF]);
PlayerInfo[playerid][pSkin] = NegrRandF[NegrF];
}

+ как писал кортез, sizeof увеличивает время компиляции,
там тоже можно было бы вручную ввести цифры и тогда это всё что можно оптимизировать.

DeimoS
20.01.2016, 01:01
new sex = P::[playerid][pSex];
new NegrM = random(sizeof(NegrRandM));
if(sex == 1)
{
SetPlayerSkin(playerid,NegrRandM[NegrM]);
PlayerInfo[playerid][pSkin] = NegrRandM[NegrM];
}
else if(sex == 2)
{
SetPlayerSkin(playerid,NegrRandF[NegrF]);
PlayerInfo[playerid][pSkin] = NegrRandF[NegrF];
}

Только забыл учесть, что там разные массивы используются ;) Но ход мыслей верный. Как-то так:

case 17:
{
if(!response) return 1;
new sex = P::[playerid][pSex];
switch(listitem)
{
case 0:
{
PlayerInfo[playerid][pSkin] = (sex == 1 ? NegrRandM[random(sizeof(NegrRandM)] : NegrRandF[random(sizeof(NegrRandF)]);
SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваша раса теперь:{FFFFFF} 'Австралоидная (темнокожие)'");
}
case 1:
{
PlayerInfo[playerid][pSkin] = (sex == 1 ? NegrRandM[random(sizeof(NegrRandM2)] : NegrRandF[random(sizeof(NegrRandF)]);
SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваша раса теперь:{FFFFFF} 'Негроидная (темнокожие)'");
}
case 2:
{
PlayerInfo[playerid][pSkin] = (sex == 1 ? NegrRandM[random(sizeof(BeloRandM)] : NegrRandF[random(sizeof(BeloRandF)]);
SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваша раса теперь:{FFFFFF} 'Европеоидная (белокожие)'");
}
case 3:
{
PlayerInfo[playerid][pSkin] = (sex == 1 ? NegrRandM[random(sizeof(JoltRandM)] : NegrRandF[random(sizeof(JoltRandF)]);
SendClientMessage(playerid,COLOR_ORANGE,"Хорошо, ваша раса теперь:{FFFFFF} 'Монголоидная (желтокожие)'");
}
}
PlayerInfo[playerid][pRasa] = listitem;
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
return 1;
}
Только насчёт тернарника не совсем уверен, ибо давно им уже не пользовался

vovandolg
20.01.2016, 01:10
Ошмёток забыли вставить:pardon:


if(response)
{