JailBreak лимит денег

Сообщения
33
Реакции
0
Всем привет. В моде JailBreak убран лимит денег, то есть можно хоть 100к получить.
А можно как-то установить лимит например в 20.000$? Чтоб например при любой попытке выдачи денег, они не выдавались. А именно: У меня 20.000 денег я начал бунт и за бунт грубо говоря дается 200$ то получается будет 20.200$, а надо чтоб они как бы дались, но из-за лимита исчезают и все равно 20.000$ остается. Итак во всех условиях (бунт, дуель, лотерея, выдал админ и т.д.)
Можно это как-то сделать? Помогите пожалуйста.
 
Сообщения
33
Реакции
0
Minni, не работает это.
28 Май 2020
C++:
new g_iUserMoney[MAX_PLAYERS + 1]
В jail сборках, создана эта переменная, через нее бесконечное количества денег как мне объясняли. Но можно же как-то наверное лимит установить...
 
Сообщения
19
Реакции
3
Помог
1 раз(а)
В "public jbe_set_user_money"
Добавь проверку "if (g_iUserMoney[pPlayer] >= 20000) return;"
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
Что-то вроде такого. Код не видел, точнее не скажу.
C++:
public jbe_set_user_money(pPlayer, iNum)
    g_iUserMoney[pPlayer] = ( (iNum >= 20000) ? 20000 : iNum );
 
Сообщения
33
Реакции
0
irrumabo_me_nomen,
C++:
public jbe_set_user_money(pPlayer, iNum, iFlash)
{
    if(isNotSetBit(g_iBitUserConnected, pPlayer))
        return 0;

    g_iUserMoney[pPlayer] = iNum;
    engfunc(EngFunc_MessageBegin, MSG_ONE, MsgId_Money, {0.0, 0.0, 0.0}, pPlayer);
    write_long(iNum);
    write_byte(iFlash);
    message_end();
    return 1;
}
Вот паблик выдачи денег

C++:
if (g_iUserMoney[pPlayer] >= 20000) return 0;
Если прописать это то все работает проверял (деньги за новый раунд и деньги из привилегий и выдачи админом. Пишет, что выдается, но выше 20к не пишется.

Код:
g_iUserMoney[pPlayer] = ( (iNum >= 20000) ? 20000 : iNum );
Попробовал этот способ, как по мне он лучше выглядит) Но деньги за раунд не выдаются, лимит так и остается, но вот взять в вип меню деньги получается и получается 22к денег, так же админ может выдать 100000ккк денег.

Так вот мне интересно стало, почему в первом варианте все работает, а во втором нет? Ведь проверка почти одна и та же.
28 Май 2020
Выдача денег например у випа вот
C++:
jbe_set_user_money(id, g_iUserMoney[id] + g_iAllCvars[VIP_MONEY_NUM], 1);
28 Май 2020
C++:
if (g_iUserMoney[pPlayer] >= 20000) return 0;
Проверил по лучше, этот код не работает так как нужно.
При данной проверке пол сервера ломается, а именно покупаешь в магазине вещь, она покупается, но деньги не снимаются, нельзя потратить деньги если у тебя лимит
 
Сообщения
33
Реакции
0
Попробовал так
C++:
public jbe_set_user_money(pPlayer, iNum, iFlash)
{
    if(isNotSetBit(g_iBitUserConnected, pPlayer))
        return 0;
    
    g_iUserMoney[pPlayer] = iNum;
    engfunc(EngFunc_MessageBegin, MSG_ONE, MsgId_Money, {0.0, 0.0, 0.0}, pPlayer);
    write_long(iNum);
    write_byte(iFlash);
    message_end();
    if (g_iUserMoney[pPlayer] >= 1000)
    {
        g_iUserMoney[pPlayer] = 1000;
        engfunc(EngFunc_MessageBegin, MSG_ONE, MsgId_Money, {0.0, 0.0, 0.0}, pPlayer);
        write_long(iNum);
        write_byte(iFlash);
        message_end();
    }
    return 1;
}
Работает но не так как совсем. Получается таким способом можно 1 раз взять деньги из привилегии или выдать через админ меню, то выдается и получается больше чем лимит 22.000$, но после уже не выдается.
Хочется чтоб, допустим у меня на руках 20.000$ я беру из вип меню, через админку устанавливаю деньги, или выигрываю и любым другим способом, чтоб они как бы выдались и сразу же отнялись то есть должно быть так:
20.000$ -> Взял в вип меню 2000$ и у меня будет над деньгами показано красным цветом "- 2000$", показывая, что они у меня отнялись. (когда тратишь деньги, красным цветом показывает сколько отнялось) вот так же нужно, если деньги превышают лимит, то лишняя сумма будет отниматься красным цветом.

Через способ который я приложил (свою попытку) я надеялся на это, но этого не происходит, нет ни зеленой ни красной анимации выдачи/забирания денег.
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
Gidroponiks,
C++:
public jbe_set_user_money(pPlayer, iNum, iFlash)
    {
        if(isSetBit(g_iBitUserConnected, pPlayer))
        {
            g_iUserMoney[pPlayer] = iNum;
            engfunc(EngFunc_MessageBegin, MSG_ONE, MsgId_Money, {0.0, 0.0, 0.0}, pPlayer);
            write_long(iNum);
            write_byte(iFlash);
            message_end();
            if(iNum > 20000) jbe_set_user_money(pPlayer, 20000, 1);
        }
    }
 
Сообщения
33
Реакции
0
Minni, согласен костыль, но зато работает как нужно ))
Попробовал 3 раза по разному не работало так как нужно.
А есть вариант с не костылем?)
 
Сообщения
8
Реакции
10
irrumabo_me_nomen,

Код:
public jbe_set_user_money(pPlayer, iNum, iFlash)
{
    if(isSetBit(g_iBitUserConnected, pPlayer))
    {
        g_iUserMoney[pPlayer] = (iNum > 20000 ? 20000 : iNum);
        engfunc(EngFunc_MessageBegin, MSG_ONE, MsgId_Money, {0.0, 0.0, 0.0}, pPlayer);
        write_long(iNum);
        write_byte(iFlash);
        message_end();
    }
}
UPD: Не заметил, что нужно показать снятие
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
AlexandrFiner, тоже с отображением снятия, но на пару операций меньше. А как одной мессагой снятие показать я хз.
C++:
public jbe_set_user_money(pPlayer, iNum, iFlash)
    {
        if(isSetBit(g_iBitUserConnected, pPlayer))
        {
            engfunc(EngFunc_MessageBegin, MSG_ONE, MsgId_Money, {0.0, 0.0, 0.0}, pPlayer);
            write_long(iNum);
            write_byte(iFlash);
            message_end();
            if(iNum > 20000)
            {
                iNum = 20000;
                engfunc(EngFunc_MessageBegin, MSG_ONE, MsgId_Money, {0.0, 0.0, 0.0}, pPlayer);
                write_long(20000);
                write_byte(iFlash);
                message_end();
            }
            g_iUserMoney[pPlayer] = iNum;
        }
    }
 
Сообщения
2,143
Реакции
1,223
Помог
44 раз(а)
irrumabo_me_nomen, никак. Я просто не пойму, зачем весь сыр-бор ради иконки?! ?
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
Minni, захотелось человеку чтобы "сгорающие" деньги отображались, плохо что-ли?
 
Сообщения
33
Реакции
0
irrumabo_me_nomen, Подскажи пожалуйста еще в чем проблема?

C++:
if(isSetBit(g_iBitUserVIP, pPlayer) && iNum > 20000)
        {
            jbe_set_user_money(pPlayer, 20000, 1);
        }
Делая проверку в таком формате не работает, но если сделать так:

C++:
if(isSetBit(g_iBitUserVIP, pPlayer))
        {
            if(iNum > 20000) jbe_set_user_money(pPlayer, 20000, 1);
        }
То работает, в чем прикол? Вроде суть одна и та же. Просто 2 проверки совместил в одну.
 
Сообщения
936
Реакции
187
Помог
4 раз(а)
Gidroponiks, Потому что в условие с && есть где-то false результат, то при этом все if будет false.
 
Сообщения
33
Реакции
0
BiZaJe, Это понятно, но как там может быть false, если эти проверки по отдельности дают true?
Одна проверка дает положительный результат и вторая тоже, то когда совмещаю должно быть тоже самое, но не работает почему-то.
 
Сообщения
936
Реакции
187
Помог
4 раз(а)
Gidroponiks, Если одно из условий false, то все условие становится false (&& - И - умножение)
Если использовать оператор || (ИЛИ - сложение) то тут если хотя бы одно условие true, условие выполнится
А лучше всего почитайте тему "Логические операторы и побитовые операторы"
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу