Русское сообщество по скриптингу

Vip model: ограничение по флагам

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Vip model: ограничение по флагам

Сообщение Zloy-DED » 25 сен 2017, 08:35

Здравствуйте, есть такой вопрос, возможно ли реализовать следущее ??
есть плагин замены моделей по флагу но если стоят модели вип и админ они конфликтуют так как накладывается чаще модель випа а не админа

В общем сделать проверку по флагам если у человека есть флаги (but) то не выдается модель випа
а если у него только флаг (t) то выдавать модель.


Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        
register_plugin("AMX VIP Model""1.0""Starik")
        
register_event("ResetHUD""resetModel""b")
        return 
PLUGIN_CONTINUE
}

public 
plugin_precache() {
        
precache_model("models/player/vip_ct/vip_ct.mdl")
        
precache_model("models/player/vip_te/vip_te.mdl")

        return 
PLUGIN_CONTINUE
}

public 
resetModel(idlevelcid) {
        if (
get_user_flags(id) & ADMIN_LEVEL_H) {
                new 
CsTeams:userTeam cs_get_user_team(id)
                if (
userTeam == CS_TEAM_T) {
                        
cs_set_user_model(id"vip_te")
                }
                else if(
userTeam == CS_TEAM_CT) {
                        
cs_set_user_model(id"vip_ct")
                }
                else {
                        
cs_reset_user_model(id)
                }
        }

        return 
PLUGIN_CONTINUE
}
 
Аватара пользователя
Zloy-DED
 
Сообщения: 256
Зарегистрирован: 30 мар 2013, 12:31
Благодарил (а): 33 раз.
Поблагодарили: 33 раз.
Языки программирования: Counter-Strike 1.6

Re: Vip model: ограничение по флагам

Сообщение ALIK » 25 сен 2017, 10:37

Zloy-DED, перед
Код: Выделить всё
if (get_user_flags(id) & ADMIN_LEVEL_H) { 

сделай проверку на свои флаги и всё. Ничего сложного.

Тебе стоит подумать над сменой плагина. Событие ResetHUD используется совсем для других целей, но никак не для смены модели.
Аватара пользователя
ALIK
 
Сообщения: 227
Зарегистрирован: 01 июн 2010, 23:05
Благодарил (а): 116 раз.
Поблагодарили: 55 раз.
Опыт программирования: Меньше недели
Языки программирования: Pawn

Re: Vip model: ограничение по флагам

Сообщение Zloy-DED » 25 сен 2017, 10:59

ALIK писал(а):Zloy-DED, перед
Код: Выделить всё
if (get_user_flags(id) & ADMIN_LEVEL_H) {

сделай проверку на свои флаги и всё. Ничего сложного.

Тебе стоит подумать над сменой плагина. Событие ResetHUD используется совсем для других целей, но никак не для смены модели.

такая проверка и стоит получается дает админу модель випа если есть аналог то можно попросить его показать так как в интернете только такие варианты
Аватара пользователя
Zloy-DED
 
Сообщения: 256
Зарегистрирован: 30 мар 2013, 12:31
Благодарил (а): 33 раз.
Поблагодарили: 33 раз.
Языки программирования: Counter-Strike 1.6

Re: Vip model: ограничение по флагам

Сообщение DeMNiX » 25 сен 2017, 13:56

попробуй этот вариант

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define SOMEFLAGS "but"

new customflags;

public plugin_init() {
        register_plugin("AMX VIP Model", "1.0", "Starik")
        register_event("ResetHUD", "resetModel", "b")

        customflags = get_flags(SOMEFLAGS);

        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/vip_ct/vip_ct.mdl")
        precache_model("models/player/vip_te/vip_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        new PlayerFlags = get_user_flags(id);
        if( PlayerFlags & customflags ) return PLUGIN_CONTINUE;
        if (PlayerFlags & ADMIN_LEVEL_H) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "vip_te")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "vip_ct")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}
Работа с моделями для кс 1.6
Telegram @DeMNiX
vk com/sbalburov
Аватара пользователя
DeMNiX
 
Сообщения: 177
Зарегистрирован: 24 сен 2011, 17:48
Благодарил (а): 25 раз.
Поблагодарили: 37 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Vip model: ограничение по флагам

Сообщение Zloy-DED » 25 сен 2017, 14:08

DeMNiX писал(а):попробуй этот вариант

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define SOMEFLAGS "but"

new customflags;

public plugin_init() {
        register_plugin("AMX VIP Model", "1.0", "Starik")
        register_event("ResetHUD", "resetModel", "b")

        customflags = get_flags(SOMEFLAGS);

        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/vip_ct/vip_ct.mdl")
        precache_model("models/player/vip_te/vip_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        new PlayerFlags = get_user_flags(id);
        if( PlayerFlags & customflags ) return PLUGIN_CONTINUE;
        if (PlayerFlags & ADMIN_LEVEL_H) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "vip_te")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "vip_ct")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}
 


ошибка в компиляции
Аватара пользователя
Zloy-DED
 
Сообщения: 256
Зарегистрирован: 30 мар 2013, 12:31
Благодарил (а): 33 раз.
Поблагодарили: 33 раз.
Языки программирования: Counter-Strike 1.6

Re: Vip model: ограничение по флагам

Сообщение DeMNiX » 25 сен 2017, 15:36

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define SOMEFLAGS "but"

new customflags;

public plugin_init() {
        register_plugin("AMX VIP Model", "1.0", "Starik")
        register_event("ResetHUD", "resetModel", "b")

        customflags = read_flags(SOMEFLAGS);

        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/vip_ct/vip_ct.mdl")
        precache_model("models/player/vip_te/vip_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        new PlayerFlags = get_user_flags(id);
        if( PlayerFlags & customflags ) return PLUGIN_CONTINUE;
        if (PlayerFlags & ADMIN_LEVEL_H) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "vip_te")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "vip_ct")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}


Добавлено спустя 1 час 22 минуты 43 секунды:
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>

#define SOMEFLAGS "but"

new customflags;

public 
plugin_init() {
        
register_plugin("AMX VIP Model""1.0""Starik")
        
RegisterHam(Ham_Spawn"player""resetModel")
        
        
customflags read_flags(SOMEFLAGS);
        return 
PLUGIN_CONTINUE
}

public 
plugin_precache() {
        
precache_model("models/player/vip_ct/vip_ct.mdl")
        
precache_model("models/player/vip_te/vip_te.mdl")

        return 
PLUGIN_CONTINUE
}

public 
resetModel(id) {
        new 
PlayerFlags get_user_flags(id);
        if( 
PlayerFlags customflags ) return PLUGIN_CONTINUE;
        if (
PlayerFlags ADMIN_LEVEL_H) {
                new 
CsTeams:userTeam cs_get_user_team(id)
                if (
userTeam == CS_TEAM_T) {
                        
cs_set_user_model(id"vip_te")
                }
                else if(
userTeam == CS_TEAM_CT) {
                        
cs_set_user_model(id"vip_ct")
                }
                else {
                        
cs_reset_user_model(id)
                }
        }

        return 
PLUGIN_CONTINUE
}  


этот лучше и должен работать
Работа с моделями для кс 1.6
Telegram @DeMNiX
vk com/sbalburov
Аватара пользователя
DeMNiX
 
Сообщения: 177
Зарегистрирован: 24 сен 2011, 17:48
Благодарил (а): 25 раз.
Поблагодарили: 37 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Vip model: ограничение по флагам

Сообщение артист666 » 25 сен 2017, 17:52

Код: Выделить всё
if( PlayerFlags & customflags ) return PLUGIN_CONTINUE

>>>
Код: Выделить всё
if( (PlayerFlags & customflags) == customflags ) return PLUGIN_CONTINUE


Иначе будет срабатывать, если хоть 1 из флагов есть.

Оператор and он же & сравнивает каждый бит, если у обоих сравниваемых байтов они равны 1, тогда в результат идёт 1, иначе ставится 0.

Пример:
10101010 & 00000010 == 00000010
10101010 & 00000001 == 00000000

Это получается при сравнивании нескольких флагов:
10101010 & 00000011 == 00000010

Так, как 00000010 больше 0, оно же просто 2 в десятичной, получается, что условие верно.
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 14