Исключение для админа

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
WILL_BE, Вы для начала дайте конкретный ответ - blablabla какое значение должно возвращать при успешной валидации? Хватит народу мозги пудрить уже. Или вы сами не знаете что хотите получить в случае успеха? Вот реально, перечитал тему и так и не понял - в каком случае у вас там true, а в каком false.
 
Сообщения
486
Реакции
89
Помог
5 раз(а)
Sonyx,
Скрытое содержимое могут видеть только пользователь группы: Web Dev, Администратор, Модератор, Разработчик, Скриптер
23 Окт 2018
Я думаю, так полная ясность
 
Последнее редактирование:
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
печально конечно, что сами не знаете что эта проверка должна возвращать и в каких случаях)
судя по коду надо в начале blablabla()

Код:
if(get_user_flags(id) & ADMIN_LEVEL_H)
    return true;
а вообще совет на будущее хотя бы логические ходы научиться прослеживать в коде
 
Сообщения
271
Реакции
348
Помог
15 раз(а)
Sonyx, так не будет работать скорее всего. Из этого поста видно, что у него ещё есть другие условия. Если хоть одно условие вернёт true, то другие условия не будут проверяться. А если сделать так?
Код:
public bool:blablabla(iEntity, id)
{
    if(pev(iEntity, pev_iuser2) != id && get_user_flags(id) & ACCESS_FLAG)
        return true;

    if(pev(iEntity, pev_iuser4) != id && get_user_flags(id) & ACCESS_FLAG)
        return true;

    return false;
}
 
Сообщения
486
Реакции
89
Помог
5 раз(а)
Denzer, аналогично не работает
23 Окт 2018
Sonyx, так не будет работать скорее всего. Из этого поста видно, что у него ещё есть другие условия. Если хоть одно условие вернёт true, то другие условия не будут проверяться. А если сделать так?
Код:
public bool:blablabla(iEntity, id)
{
    if(pev(iEntity, pev_iuser2) != id && get_user_flags(id) & ACCESS_FLAG)
        return true;

    if(pev(iEntity, pev_iuser4) != id && get_user_flags(id) & ACCESS_FLAG)
        return true;

    return false;
}
После данных "манипуляций"
Объясню так: функция blablabla проверяет на доступность - возможно ли это сделать при определенных условиях
условия вообще не учитываются
 
Сообщения
271
Реакции
348
Помог
15 раз(а)
WILL_BE, ну тогда сами подумайте, раз фулл код не предоставляете, гадать не хочу что у вас там.
 
Сообщения
486
Реакции
89
Помог
5 раз(а)
Основа кода только его :)
24 Окт 2018
Код:
public bacon_Touch( iEnt, id )
{
    if( !pev_valid( iEnt ) )
        return HAM_IGNORED;

    if( !is_user_alive( id ) )
        return HAM_IGNORED;

    new szClassname[32];
    pev(iEnt, pev_classname, szClassname, charsmax(szClassname));

    if(equal(szClassname, gEntClassname))
    {
        if(CanUpgradeEnt(iEnt, id))
        {
            if(get_member(id, m_iAccount) >= get_pcvar_num(g_EntCost[pev(iEnt, pev_iuser1) + 1]))
                EntUpgrade(iEnt, id);
        }
    }

    return HAM_IGNORED;
}

public bool:CanUpgradeEnt( iEntity, id )
{
    if(pev(iEntity, pev_iuser2) == id)
        return false;

    if(pev(iEntity, pev_iuser4) == id)
        return false;

    return true;
}
24 Окт 2018
Прошу прощения за hide :sorry:
 
Сообщения
134
Реакции
463
Помог
2 раз(а)
ну попробуй так, хотя мне кажется я херню какую-то сделал.
Код:
public bool:CanUpgradeEnt( iEntity, id )
{
    new iuser2 = pev(iEntity, pev_iuser2);
    new iuser4 = pev(iEntity, pev_iuser4);
    
    if(get_user_flags(iuser2) & ADMIN_LEVEL_H || get_user_flags(iuser4) & ADMIN_LEVEL_H)
        return true;

    if(iuser2 == id || iuser4 == id)
        return false;

    return true;
}
Хотя я бы попробовал лучше проверить непосредственно в функции на админа.
Ибо странно что проверка if(get_user_flags(id) & ADMIN_LEVEL_H) return true; в булле не срабатывает.
Код:
public bacon_Touch( iEnt, id )
{
    if( !pev_valid( iEnt ) )
        return HAM_IGNORED;

    if( !is_user_alive( id ) )
        return HAM_IGNORED;

    new szClassname[32];
    pev(iEnt, pev_classname, szClassname, charsmax(szClassname));

    if(equal(szClassname, gEntClassname))
    {
        if(CanUpgradeEnt(iEnt, id) || get_user_flags(id) & ADMIN_LEVEL_H)
        {
            if(get_member(id, m_iAccount) >= get_pcvar_num(g_EntCost[pev(iEnt, pev_iuser1) + 1]))
                EntUpgrade(iEnt, id);
        }
    }

    return HAM_IGNORED;
}
Короче я пытался.
 
Сообщения
486
Реакции
89
Помог
5 раз(а)
medusa, попробовал 1 вариант, безуспешно и валит ошибки на строку if(get_member(id, m_iAccount) >= get_pcvar_num(g_EntCost[pev(iEnt, pev_iuser1) + 1]))
Run time error 4: index out of bounds
 
Последнее редактирование:
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
WILL_BE, pev(iEnt, pev_iuser1) логируйте чо там. Сцдя по всему там должно быть число + 1 которое является индексом массива g_EntCost. Вам нужно быть увереным что там именно то что вы положили. И также быть увренным что вы установили верное свойство.
 
Сообщения
486
Реакции
89
Помог
5 раз(а)
fantom,
Код:
new g_EntCost[2];
g_EntCost[0] = register_cvar("blablabla1","1");
g_EntCost[1] = register_cvar("blablabla2","2");
if(get_member(id, m_iAccount) >= get_pcvar_num(g_EntCost[pev(iEnt, pev_iuser1) + 1]))
 
Последнее редактирование:
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
WILL_BE, в pev(iEnt, pev_iuser1) что находится в тот момент? И зачем вы +1 делаете если индексы с 0 начинаються
25 Окт 2018
И еще раз повторюсь. Залогируйте значение в тот момент. Без "Ну я же вон 10 мин тому в другом хуке выставил 1 значит тут должно быть 1". Логируйте, проверяйте, следите. Любой другой плагин спокойно имеет возможность переопределить значение на свое
 
Сообщения
4
Реакции
3
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Код:
public bool:CanUpgradeEnt( iEntity, id )
{
    if(get_user_flags(id) & ADMIN_KICK)
        return true;
      
    if(pev(iEntity, pev_iuser2) == id)
        return false;

    if(pev(iEntity, pev_iuser4) == id)
        return false;

    return true;
}
Без проверок на админа, эти условия точно работают нормально и как нужно?
 
Последнее редактирование:
Сообщения
486
Реакции
89
Помог
5 раз(а)
RiasGG, да
25 Окт 2018
Я из-за этого и недоумеваю, что не так
 
Сообщения
4
Реакции
3
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
RiasGG, да
25 Окт 2018
Я из-за этого и недоумеваю, что не так
Код который я скинул, не работает?
--
Сделайте как предлагает fantom

Код:
public bool:CanUpgradeEnt( iEntity, id )
{

server_print("ID: %d, iUser2: %d, iUser4: %d", id, pev(iEntity, pev_iuser2), pev(iEntity, pev_iuser4));
if(pev(iEntity, pev_iuser2) == id)
return false;

if(pev(iEntity, pev_iuser4) == id)
return false;

return true;
}
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
полного кода нет, а мы всё усердно гадаем, ещё и крохоборите.... :rofl:
Я не понимаю, чё вы так запариваетесь и строите из себя экстрасенсов. Не стоит оно внимания...:good2:
 
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
wopox1337, битва экстрасенсов :mosking:
 
Статус
В этой теме нельзя размещать новые ответы.

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

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