PDA

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



DmitriyVasilev
07.04.2019, 13:21
Привет, какая разница будет если я сделаю диалог так:
new listitems[] = " [1] Deagle\t[70 материалов/50 патронов]\n [2] Shotgun\t[50 материалов/15 патронов]\n [3] Rifle\t[100 материалов/10 патронов]\n [4] M4\t\t[500 материалов/100 патронов]\n [5] AK-47\t[500 материалов/100 патронов]\n [6] MP5\t[400 материалов/200 патронов]\n [7] SDPistol\t[100 материалов/100 патронов])";
ShowPlayerDialog(playerid, 2014, DIALOG_STYLE_LIST, !"Взять оружие со склада", listitems, !"Взять", !"Отмена");
ИЛИ сделаю просто через диалог без []

и еще вопрос, как лучше сделать здесь проверку свич или if/else?
switch(User[playerid][pMember])
{
case 5:
{
if(MafiaBank[0][nLcn] < 500000) return SCM(playerid,COLOR_GREY,!"Â áàíêå ìàôèè íåò ñòîëüêî äåíåã");
lcnmats = 100000;
SCM(playerid,COLOR_YELLOW, !"Âû êóïèëè 100000 ìàòåðèàëîâ çà 500000 âèðò");
MafiaBank[0][nLcn]-=500000;
}
case 6:
{
if(MafiaBank[0][nYakuza] < 500000) return SCM(playerid,COLOR_GREY,!"Â áàíêå ìàôèè íåò ñòîëüêî äåíåã");
yakuzamats = 100000;
SCM(playerid,COLOR_YELLOW, !"Âû êóïèëè 100000 ìàòåðèàëîâ çà 500000 âèðò");
MafiaBank[0][nYakuza]-=500000;
}
case 14:
{
if(MafiaBank[0][nRm] < 500000) return SCM(playerid,COLOR_GREY,!"Â áàíêå ìàôèè íåò ñòîëüêî äåíåã");
rmmats = 100000;
SCM(playerid,COLOR_YELLOW, !"Âû êóïèëè 100000 ìàòåðèàëîâ çà 500000 âèðò");
MafiaBank[0][nRm]-=500000;
}
}

DeimoS
08.04.2019, 11:12
1) Как я понимаю, "без []" - это указание текста сразу в ShowPlayerDialog. Если да, то лучше либо объявлять массив через "static", а не через "new", либо приписывать текст напрямую в ShowPlayerDialog. В твоём текущем варианте текст будет храниться в сегменте данных и каждый вызов этого кода текст будет сначала копироваться из сегмента данных в локальную переменную, а только потом использоваться в диалоге. В общем, будет несколько лишних действий.

2) В этом случае лучше switch

DmitriyVasilev
13.04.2019, 19:52
а что дает static в данном случае??

Daniel_Cortez
13.04.2019, 20:55
а что дает static в данном случае??
То, что массив будет находиться в секции данных (вместо стека, как у массива, объявленного с помощью new) и не будет лишнего копирования его содержимого оттуда в стек - собственно, о чём вам говорил DeimoS постом выше.