Помогите оптимизировать команду, голову сломал уже
#1

Всем привет .

Помогите пожалуйста оптимизировать команду, всю голову сломал уже, ибо нуб заюзал аж 2 массива по 2000

PHP код:
CMD:bizzlist(playeridparams[])
{
    if(!
IsMafia(playerid)) return true;
    new 
ross_big_string[2000];
    new 
ross_string[2000];
    new 
TOTALBUSINES 0;
    for(new 
1<= TOTALBIZZb++)
    {
        if(
PlayerInfo[playerid][pMember] != BizzInfo[b][bRoof]) continue;
        
TOTALBUSINES++;
        
format(ross_stringsizeof (ross_string), "{FFFFFF}%d. %s [%d] прибыль в час {0BDA51}500 {FFFFFF}долларов\n",TOTALBUSINES,  BizzInfo[b][bName], b);
        
strcat(ross_big_stringross_string);
    }
    if(
strlen(ross_big_string) < 5) return ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Бизлист","\tВладений нет!","Закрыть","");
    
format(nsasizeof(nsa), "{FFFFFF}Бизнесы под контролем: %d"TOTALBUSINES);
    
ShowPlayerDialog(playerid,0,DIALOG_STYLE_LIST,nsa,ross_big_string,"Закрыть","");
    
//ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "{FFFFFF}Бизнесы под контролем: %d", "Выбрать", CloseDialog, TOTALBUSINES);
    
return true;

Нужно именно что бы в диалоге было, все бизнесы которые у мафии писало
Reply
#2

Не знаю лимит строк в диалог-листе, поэтому так.
pawn Код:
CMD:bizzlist(playerid, params[])
{
    if (!IsMafia(playerid)) {
        return 1;
    }

    new
        buffer[128],
        info[128 * sizeof(BizzInfo)],
        biz_owned_count = 0;

    for (new i = 1; i <= TOTALBIZZ; b++) {
        if (PlayerInfo[playerid][pMember] != BizzInfo[b][bRoof]) {
            continue;
        }

        format(buffer, sizeof(buffer), "{FFFFFF}%d. %s [%d] прибыль в час {0BDA51}500 {FFFFFF}долларов\n", biz_owned_count, BizzInfo[i][bName], i);
        strcat(info, buffer);

        biz_owned_count++;
    }

    if (biz_owned_count == 0) {
        ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Бизлист", "\tВладений нет!", "Закрыть", "");
        return 1;
    }

    new caption[64];
    format(caption, sizeof(caption), "{FFFFFF}Бизнесы под контролем: %d", biz_owned_count);
    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, caption, info, "Закрыть", "");
    return 1;
}
Reply
#3

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Не знаю лимит строк в диалог-листе, поэтому так.
pawn Код:
CMD:bizzlist(playerid, params[])
{
    if (!IsMafia(playerid)) {
        return 1;
    }

    new
        buffer[128],
        info[128 * sizeof(BizzInfo)],
        biz_owned_count = 0;

    for (new i = 1; i <= TOTALBIZZ; b++) {
        if (PlayerInfo[playerid][pMember] != BizzInfo[b][bRoof]) {
            continue;
        }

        format(buffer, sizeof(buffer), "{FFFFFF}%d. %s [%d] прибыль в час {0BDA51}500 {FFFFFF}долларов\n", biz_owned_count, BizzInfo[i][bName], i);
        strcat(info, buffer);

        biz_owned_count++;
    }

    if (biz_owned_count == 0) {
        ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Бизлист", "\tВладений нет!", "Закрыть", "");
        return 1;
    }

    new caption[64];
    format(caption, sizeof(caption), "{FFFFFF}Бизнесы под контролем: %d", biz_owned_count);
    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, caption, info, "Закрыть", "");
    return 1;
}
Спасибо большое, вот еще 1 гавно - функцию в моде нашел, помогите оптимизировать пожалуйста последнюю
PHP код:
GameDonate(playerid)
{
    new 
dialog[580];
    
strcat(dialog"1. Полный навык стрельбы\t\t300 очков\n2. Снять уровни розыска\t\t10 очков\n3. 500 грамм наркотиков\t\t150 очков\n");
    
strcat(dialog"4. Аннулировать бан чата\t\t20 очков\n5. Аннулировать предупреждения\t150 очков\n6. Аннулировать бан репорта\t\t50 очков\n7. +1000 к наркозависимости\t\t25 очков\n8. -1000 от наркозависимости\t\t25 очков\n9. VIP статус\n");
    
strcat(dialog"9. Приобрести 1.000.000 $\t\t50 очков\n10. Приобрести 3.000.000 $\t\t100 очков\n11. Приобрести 5.000.000 $\t\t150 очков\n12. Приобрести 10.000.000 $\t\t300 очков\n");
    
strcat(dialog"13. Приобрести 30.000.000 $\t\t700 очков\n14. Приобрести 50.000.000 $\t\t1100 очков\n15. Приобрести 70.000.000 $\t\t1500 очков");
    
ShowPlayerDialog(playerid165DIALOG_STYLE_LIST"ДОНАТ > Улучшения к аккаунту",dialog"Выбрать""Назад");
    return 
true;

Reply
#4

Без лишней переменной и цветового форматирования:
pawn Код:
CMD:bizzlist(playerid, params[])
{
    if (!IsMafia(playerid)) return 1;
    new string[2000],
        caption[64],
        TOTALBUSINES = 1;
    for (new b = 1; b <= TOTALBIZZ; b++) {
        if (PlayerInfo[playerid][pMember] != BizzInfo[b][bRoof]) continue;
        format(string, sizeof(string), "%s%d. %s, прибыль в час {0BDA51}500{FFFFFF}$\n", string, TOTALBUSINES++,  BizzInfo[b][bName]);
    }
    if (TOTALBUSINES == 1) {
        ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Бизлист", "\tСобственности нет!", "Закрыть", "");//"Бизлист", это пздц?!
    } else {
        format(caption, sizeof(caption), "Бизнесов под контролем: %d", TOTALBUSINES);
        ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, caption, string, "Закрыть", "");
    }
    return 1;
}
Reply
#5

Да и кстати, врать про сломанную голову не надо, вы ничего не делали, ваш код вообще не работал!
Reply
#6

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Да и кстати, врать про сломанную голову не надо, вы ничего не делали, ваш код вообще не работал!
Мой код не работал? Вы о чем? А откуда я его взял тогда? Работал он у меня, только бизнесы не все писал, за работу вашу спасибо, если не трудно еще помогите с кодом выше, и я пытался оптимизировать но ничего не вышло) Суть не понял просто.
Reply
#7

Quote:
Originally Posted by Size
Посмотреть сообщение
Мой код не работал? Вы о чем? А откуда я его взял тогда? Работал он у меня, только бизнесы не все писал, за работу вашу спасибо, если не трудно еще помогите с кодом выше, и я пытался оптимизировать но ничего не вышло) Суть не понял просто.
Ок, покажите мне где у вас инициализация переменной nsa?
Во втором коде нечего улучшать.
Reply
#8

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Ок, покажите мне где у вас инициализация переменной nsa?
Во втором коде нечего улучшать.
PHP код:
new nsa[256]; 
- У всех new
Reply
#9

И еще один вопросик, Stepashka поставил ваш код, спасибо все отлично, но есть один минус.
Сверху пишет 34 бизнеса, а показывает 33, размер пытался увеличивать - не вышло, ИД бизнеса начинается с 1, то есть показывает 1-33 а сверху пишет 34
Скриншот
http://img.rp-montano.ru/img/2014-02...6z7gem4nyu.png
Reply
#10

Замени строчку:
pawn Код:
format(caption, sizeof(caption), "Бизнесов под контролем: %d", --TOTALBUSINES);
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)