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

[SWE] Vip | Бонусы + Меню

Новые плагины для AMX Mod X, которые были добавлены в базу плагинов нашего форума. Плагины еще не утвеждены администратором/модератором.

Модератор: Leonidddd

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

Данный раздел форума служит для добавления новых плагинов в базу нашего форума. После того, как администратор/модератор утвердит плагин, он будет перемещен в раздел "Утвежденные плагины".

Правила при добавлении новых плагинов:

1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. Обязательно выкладывайте исходник sma плагина. Запрещено выкладывать amxx файл.
4. Обязательно указывайте настоящих авторов плагина, если вы использовали чьи-то наработки или функции, указывайте их авторов в сообщении.
5. Необходимо заполнять детальную информацию о плагине (версию, настройки, используемые модули, список изменений и другую).

[SWE] Vip | Бонусы + Меню

Сообщение DoNotFollowMe » 20 июл 2016, 18:23

Автор: IIPU3PAK
Версия: 2.8
VIP.jpg

Описание:
Вип меню :-)

Код: Выделить всё
2.8
Добавил вампиризм.
Поправил отступы в меню.
Добавил отображение VIP в табе.


//[SWE] Vip//
swe_vip_flags "t" // Флаг VIP игрока
swe_vip_item "gad" // g-Гранаты, a-Броня, d-Щипчики
swe_vip_tab 1 // Отображать VIP в табе

//VipMenu//
swe_vip_menu_open 1 // Открывать меню автоматически, если нет основного оружия
swe_vip_menu_use_round 1 // Сколько раз за раунд можно открыть меню
swe_vip_menu_weapon 2 // С какого раунда доступны M4A1, AK47, FAMAS
swe_vip_menu_awp 3 // С какого раунда доступно AWP
swe_vip_menu_m249 4 // С какого раунда доступно M249

//Vampire//
swe_vip_vampire_max_hp 0 // Максимальное количество хп | 0-Выключить вампиризм
swe_vip_vampire_kill 0 // Сколько добавить хп за убийство
swe_vip_vampire_kill_head 0 // Сколько добавить хп за убийство в голову
swe_vip_vampire_kill_knife 0 // Сколько добавить хп за убийство ножом


;Карты на которых плагин не будет работать
;Имя карты с новой строчки

35hp_2
$2000$
awp_india

SWE_VIP2.8.rar
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось DoNotFollowMe 02 янв 2017, 12:17, всего редактировалось 25 раз(а).
Аватара пользователя
DoNotFollowMe
 
Сообщения: 110
Зарегистрирован: 29 фев 2016, 20:25
Благодарил (а): 38 раз.
Поблагодарили: 1 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: [SWE] Vip Bonus | Бонусы для випов.

Сообщение BloodMoon » 21 июл 2016, 00:07

1. Функция is_user_alive включает в себя проверку на коннект.
2. Функцию get_cvar_num следовало бы заменить на get_pcvar_num, так как работает эта функция значительно быстрее.
3.
Код: Выделить всё
if(get_cvar_num("swe_vip_deagle") == 1){
    fm_strip_user_gun(id, CSW_USP)
    fm_strip_user_gun(id, CSW_GLOCK18)

весьма странное и нерациональное решение. А если я играю на какой-то карте, где мне дается при спавне не glock/usp? Или, я купил в предыдущем раунде какой-нибудь P228 или Five Seven и тут мне еще прилетает Deagle. Используйте функцию дропа оружия из определенного слота, на том же amxxmodx.ru можете найти сток. :-)
4. Здесь даже комментировать не буду, думаю и так ясно.
Код: Выделить всё
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")

5. PLUGIN_HANDLED в HAM функции.
Аватара пользователя
BloodMoon
 
Сообщения: 270
Зарегистрирован: 20 июл 2013, 19:34
Забанен
Благодарил (а): 98 раз.
Поблагодарили: 62 раз.
Опыт программирования: Больше трех лет

Re: [SWE] Vip Bonus | Бонусы для випов.

Сообщение DoNotFollowMe » 21 июл 2016, 11:18

BloodMoon писал(а):1. Функция is_user_alive включает в себя проверку на коннект.
2. Функцию get_cvar_num следовало бы заменить на get_pcvar_num, так как работает эта функция значительно быстрее.
3.
Код: Выделить всё
if(get_cvar_num("swe_vip_deagle") == 1){
    fm_strip_user_gun(id, CSW_USP)
    fm_strip_user_gun(id, CSW_GLOCK18)

весьма странное и нерациональное решение. А если я играю на какой-то карте, где мне дается при спавне не glock/usp? Или, я купил в предыдущем раунде какой-нибудь P228 или Five Seven и тут мне еще прилетает Deagle. Используйте функцию дропа оружия из определенного слота, на том же amxxmodx.ru можете найти сток. :-)
4. Здесь даже комментировать не буду, думаю и так ясно.
Код: Выделить всё
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")
give_item(id,"ammo_50ae")

5. PLUGIN_HANDLED в HAM функции.

Та не нашел я инфы как отбирать вторичное оружие. Я не пишу все из головы так как не знаю язык. Посмотрю в других плагинах, что да как пишется, на amxxmodx загляну, гуглом попользуюсь)
Хоть и читал уроки, мануалы, все равно не могу с головы писать

Добавлено спустя 27 минут 27 секунд:
Так получше?
Код: Выделить всё
#include <amxmodx>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <fakemeta_util>

#define PLUGIN "[SWE] Vip Bonus"
#define VERSION "0.1"
#define AUTHOR "IIPU3PAK"

#define ACCESS_FLAG        ADMIN_LEVEL_H        //Флаг випа. По умолчанию на t

new vipDeaglevipGrenadevipArmorvipDefusevipMoney

public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
vipDeagle    register_cvar("swe_vip_deagle""1")        //Давать дигл.
    
vipGrenade    register_cvar("swe_vip_grenade""1")        //Давать гранаты.
    
vipArmor    register_cvar("swe_vip_armor""1")            //Давать броню.
    
vipDefuse    register_cvar("swe_vip_defuse""1")        //Давать дефуз.
    
vipMoney    register_cvar("swe_vip_money""1000")        //Давать деньги, 0 не давать.

    
RegisterHam(Ham_Spawn"player""HamSpawnPost"1)
}

public 
HamSpawnPost(id) {
    if(
get_user_flags(id) & ACCESS_FLAG){
        if(
is_user_alive(id)){
        
            if(
get_pcvar_num(vipDeagle)){
                
fm_strip_user_gun(idCSW_USP)
                
fm_strip_user_gun(idCSW_GLOCK18)
            }
            
            if(
get_pcvar_num(vipDeagle)){
                
give_item(id,"weapon_deagle")
                
give_item(id,"ammo_50ae")
                
give_item(id,"ammo_50ae")
                
give_item(id,"ammo_50ae")
                
give_item(id,"ammo_50ae")
                
give_item(id,"ammo_50ae")
            }
            
            if(
get_pcvar_num(vipGrenade)){
                
give_item(id,"weapon_hegrenade")
                
give_item(id,"weapon_smokegrenade")
                
give_item(id,"weapon_flashbang")
                
give_item(id,"weapon_flashbang")
            }
            
            if(
get_pcvar_num(vipDefuse)){
                
cs_set_user_defuse(id,1,0,160,0,_,0)
            }
            
            if(
get_pcvar_num(vipMoney) > 0){
                
cs_set_user_money(idcs_get_user_money(id) + get_pcvar_num(vipMoney))
            }
            
            if(
get_pcvar_num(vipArmor)){
                
set_user_armor(id,100)
            }
        }
    }
}


 


я не знал как pcvar`om пользоваться. Залез в amx_parashute и подглядел в нем
Аватара пользователя
DoNotFollowMe
 
Сообщения: 110
Зарегистрирован: 29 фев 2016, 20:25
Благодарил (а): 38 раз.
Поблагодарили: 1 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: [SWE] Vip Bonus | Бонусы для випов.

Сообщение BloodMoon » 21 июл 2016, 11:53

С кварами можно поступить и так, например:
Код: Выделить всё
enum CVAR_STRUCT {
    deagle, grenade, armor, defuse, money
};

new const gl_szCvarList[][][] = {
    {"swe_vip_deagle", "1"},
    {"swe_vip_grenade", "1"},
    {"swe_vip_armor", "1"},
    {"swe_vip_defuse", "1"},
    {"swe_vip_money", "1000"}
};

new gl_iCvarPoint[CVAR_STRUCT];

public plugin_init() {
    for (new any:i; i < sizeof gl_szCvarList; i++) {
        gl_iCvarPoint[i] = register_cvar(gl_szCvarList[i][0], gl_szCvarList[i][1]);
    }
}
и далее уже работать с массивом gl_iCvarPoint, к примеру:
Код: Выделить всё
if (get_pcvar_num(gl_iCvarPoint[deagle])) {
    //code
}
Последний раз редактировалось BloodMoon 21 июл 2016, 19:51, всего редактировалось 1 раз.
Аватара пользователя
BloodMoon
 
Сообщения: 270
Зарегистрирован: 20 июл 2013, 19:34
Забанен
Благодарил (а): 98 раз.
Поблагодарили: 62 раз.
Опыт программирования: Больше трех лет

Re: [SWE] Vip Bonus | Бонусы для випов.

Сообщение DoNotFollowMe » 21 июл 2016, 12:29

Код: Выделить всё

            if
(get_pcvar_num(vipDeagle)){
            
                new iWeapon 
= cs_get_user_hasprim(id)
                new iAmmo = cs_get_user_bpammo(id, iWeapon)
                
                strip_user_weapons
(id)
                
                give_item
(id, "iWeapon")
                cs_set_user_bpammo(id, iWeapon, iAmmo)
        
                give_item
(id,"weapon_deagle")
                cs_set_user_bpammo(id, CSW_DEAGLE, 35)
            }
 


Что я делаю не так, плагин не пашет. Пытаюсь получить основное оружие и патроны. После все оружие выкинуть и дать снова. Как выкинуть вторичное оружие правильно.
Если так не вариант
Код: Выделить всё
    fm_strip_user_gun(id, CSW_USP)
    fm_strip_user_gun(id, CSW_GLOCK18


Добавлено спустя 1 минуту 55 секунд:
BloodMoon писал(а):С кварами можно поступить и так, например:
Код: Выделить всё
enum CVAR_STRUCT {
    deagle, grenade, armor, defuse, money
};

new const gl_szCvarList[][][] = {
    {"swe_vip_deagle", "1"},
    {"swe_vip_grenade", "1"},
    {"swe_vip_armor", "1"},
    {"swe_vip_defuse", "1"},
    {"swe_vip_money", "1000"}
};

new gl_iCvarPoint[CVAR_STRUCT];

public plugin_init() {
    for (new any:i; i < sizeof gl_szCvarList; i++) {
        gl_iCvarPoint[i] = register_cvar(gl_szCvarList[i][0], gl_szCvarList[i][1]);
    }
и далее уже работать с массивом gl_iCvarPont, к примеру:
Код: Выделить всё
if (get_pcvar_num(gl_iCvarPoint[deagle])) {
    //code

Не, это сложновато) я не понимаю как оно работает и как это использовать, пока остановимся на pcvar)

Добавлено спустя 6 минут 19 секунд:
вот нашел вариант
Вы должны зарегистрироваться, чтобы видеть ссылки. ... t&p=603154
сейчас попробую

Добавлено спустя 3 минуты 52 секунды:
Код: Выделить всё


#include <amxmodx>
#include <hamsandwich>
#include <fun>
#include <cstrike>

#define PLUGIN "[SWE] Vip Bonus"
#define VERSION "1.0"
#define AUTHOR "IIPU3PAK"

#define ACCESS_FLAG        ADMIN_LEVEL_H        //Флаг випа. По умолчанию на t

new const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

new vipDeagle, vipGrenade, vipArmor, vipDefuse, vipMoney

public plugin_init
() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    vipDeagle    
= register_cvar("swe_vip_deagle", "1")        //Давать дигл.
    vipGrenade    = register_cvar("swe_vip_grenade", "1")        //Давать гранаты.
    vipArmor    = register_cvar("swe_vip_armor", "1")            //Давать броню.
    vipDefuse    = register_cvar("swe_vip_defuse", "1")        //Давать дефуз.
    vipMoney    = register_cvar("swe_vip_money", "1000")        //Давать деньги, 0 не давать.

    RegisterHam(Ham_Spawn, "player", "HamSpawnPost", 1)
}

public HamSpawnPost(id) {
    if(get_user_flags(id) & ACCESS_FLAG){
        if(is_user_alive(id)){
            
            if
(get_pcvar_num(vipDeagle)){
                drop_weapons(id, 2)
                give_item(id,"weapon_deagle")
                cs_set_user_bpammo(id, CSW_DEAGLE, 35)
            }
            
            if
(get_pcvar_num(vipGrenade)){
                give_item(id,"weapon_hegrenade")
                give_item(id,"weapon_smokegrenade")
                give_item(id,"weapon_flashbang")
                give_item(id,"weapon_flashbang")
            }
            
            if
(get_pcvar_num(vipDefuse)){
                cs_set_user_defuse(id,1,0,160,0,_,0)
            }
            
            if
(get_pcvar_num(vipMoney) > 0){
                cs_set_user_money(id, cs_get_user_money(id) + get_pcvar_num(vipMoney))
            }
            
            if
(get_pcvar_num(vipArmor)){
                set_user_armor(id,100)
            }
        }
    }
}


stock drop_weapons(id, dropwhat)
{
   static weapons[32], num, i, weaponid
   num 
= 0
   get_user_weapons
(id, weapons, num)
    
   for 
(= 0; i < num; i++)
   {
      weaponid = weapons[i]
       
      if 
((dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
      {
         static wname[32]
         get_weaponname(weaponid, wname, charsmax(wname))
         engclient_cmd(id, "drop", wname)
      }
   }
}



Вот, все. Вроде норм, спасибо за то что на ошибки указали)
Аватара пользователя
DoNotFollowMe
 
Сообщения: 110
Зарегистрирован: 29 фев 2016, 20:25
Благодарил (а): 38 раз.
Поблагодарили: 1 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: [SWE] Vip Bonus | Бонусы для випов.

Сообщение RevCrew » 21 июл 2016, 18:08

BloodMoon писал(а):С кварами можно поступить и так, например:
Код: Выделить всё
enum CVAR_STRUCT {
    deagle, grenade, armor, defuse, money
};

new const gl_szCvarList[][][] = {
    {"swe_vip_deagle", "1"},
    {"swe_vip_grenade", "1"},
    {"swe_vip_armor", "1"},
    {"swe_vip_defuse", "1"},
    {"swe_vip_money", "1000"}
};

new gl_iCvarPoint[CVAR_STRUCT];

public plugin_init() {
    for (new any:i; i < sizeof gl_szCvarList; i++) {
        gl_iCvarPoint[i] = register_cvar(gl_szCvarList[i][0], gl_szCvarList[i][1]);
    }
}
и далее уже работать с массивом gl_iCvarPont, к примеру:
Код: Выделить всё
if (get_pcvar_num(gl_iCvarPoint[deagle])) {
    //code
}

Это более тяжелый код. Оптимизированние работать с отдельными переменными
Skype revcrew77
https://vk.com/cs_suite_ru - создал группу в вк
CS-Suite
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1190
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 219 раз.
Поблагодарили: 225 раз.
Языки программирования: Counter-Strike 1.6

Re: [SWE] Vip Bonus | Бонусы для випов.

Сообщение BloodMoon » 21 июл 2016, 18:47

RevCrew, пруфы?
Аватара пользователя
BloodMoon
 
Сообщения: 270
Зарегистрирован: 20 июл 2013, 19:34
Забанен
Благодарил (а): 98 раз.
Поблагодарили: 62 раз.
Опыт программирования: Больше трех лет

Re: [SWE] Vip Bonus | Бонусы для випов.

Сообщение Mistrick » 21 июл 2016, 19:00

BloodMoon, читать сложнее, памяти больше занимает.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2577
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 41 раз.
Поблагодарили: 1087 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: [SWE] Vip Bonus | Бонусы для випов.

Сообщение BloodMoon » 21 июл 2016, 20:06

Mistrick, там памяти занимает больше всего на 60 байт. И то, из-за трехмерного массива, которым можно вполне обойтись. Зато код выглядит куда более рациональнее, как по мне.
Аватара пользователя
BloodMoon
 
Сообщения: 270
Зарегистрирован: 20 июл 2013, 19:34
Забанен
Благодарил (а): 98 раз.
Поблагодарили: 62 раз.
Опыт программирования: Больше трех лет

Re: [SWE] Vip Bonus | Бонусы для випов.

Сообщение DoNotFollowMe » 21 июл 2016, 22:20

а может кто нить разжевать. Для чего нужен return, PLUGIN_HANDLED и подобное. Я читал че то там возвращает. Но не понял не чего

Добавлено спустя 10 минут 57 секунд:
PLUGIN_HANDLED - Плагин останавливает операцию и плагины следующих ниже в plugins.ini не будут вызваны.

то есть если я сделаю так

Код: Выделить всё



#include <amxmodx>
#include <hamsandwich>
#include <fun>
#include <cstrike>

#define PLUGIN "[SWE] Vip Bonus"
#define VERSION "1.0"
#define AUTHOR "IIPU3PAK"

#define ACCESS_FLAG        ADMIN_LEVEL_H        //Флаг випа. По умолчанию на t

new const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

new 
vipDeaglevipGrenadevipArmorvipDefusevipMoney

public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
vipDeagle    register_cvar("swe_vip_deagle""1")        //Давать дигл.
    
vipGrenade    register_cvar("swe_vip_grenade""1")        //Давать гранаты.
    
vipArmor    register_cvar("swe_vip_armor""1")            //Давать броню.
    
vipDefuse    register_cvar("swe_vip_defuse""1")        //Давать дефуз.
    
vipMoney    register_cvar("swe_vip_money""1000")        //Давать деньги, 0 не давать.

    
RegisterHam(Ham_Spawn"player""HamSpawnPost"1)
}

public 
HamSpawnPost(id) {
    if(
get_user_flags(id) & ACCESS_FLAG){
        if(
is_user_alive(id)){
            
            if(
get_pcvar_num(vipDeagle)){
                
drop_weapons(id2)
                
give_item(id,"weapon_deagle")
                
cs_set_user_bpammo(idCSW_DEAGLE35)
            }
            
            if(
get_pcvar_num(vipGrenade)){
                
give_item(id,"weapon_hegrenade")
                
give_item(id,"weapon_smokegrenade")
                
give_item(id,"weapon_flashbang")
                
give_item(id,"weapon_flashbang")
            }
            
            if(
get_pcvar_num(vipDefuse)){
                
cs_set_user_defuse(id,1,0,160,0,_,0)
            }
            
            if(
get_pcvar_num(vipMoney) > 0){
                
cs_set_user_money(idcs_get_user_money(id) + get_pcvar_num(vipMoney))
            }
            
            if(
get_pcvar_num(vipArmor)){
                
set_user_armor(id,100)
            }
        }
    }
    return 
PLUGIN_HANDLED
}


stock drop_weapons(iddropwhat)
{
   static 
weapons[32], numiweaponid
   num 
0
   get_user_weapons
(idweaponsnum)
    
   for (
0numi++)
   {
      
weaponid weapons[i]
       
      if ((
dropwhat == && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
      {
         static 
wname[32]
         
get_weaponname(weaponidwnamecharsmax(wname))
         
engclient_cmd(id"drop"wname)
      }
   }
}

 


то плагины которые ниже в plugins, работать не будут?
Аватара пользователя
DoNotFollowMe
 
Сообщения: 110
Зарегистрирован: 29 фев 2016, 20:25
Благодарил (а): 38 раз.
Поблагодарили: 1 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

След.

Вернуться в Добавленные новые плагины

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1