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

[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
Версия: 3.1
VIP.jpg

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

Код: Выделить всё
3.1
Добавлено:
Добавлен ланг файл
Добавлены настройки connect, drop_or_strip
Добавлен дефайн вырезающий код связанный с выбором пистолета

Исправлено:
настройка item не работала

Переписал немного код.
Я конечно не спец, но мне кажется что переписал в лучшую сторону.


[main]
; Флаг випа
flags "t"

; Что выдавать при спауне
; g - Гранаты
; a - Броня
; d - Щипчики
item "gad"

; Отображать VIP в табе
tab 1

; Выводить в чат сообщение о подключении випа
connect 1

; Что делать с оружием в руках
; 0 - Отобрать
; 1 - Выкинуть
drop_or_strip 0

#################################################################

; Открывать меню автоматически, если нет основного оружия
menu_open 0

; Сколько раз за раунд можно юзать меню
menu_use_round 2

; С какого раунда доступны M4A1, AK47, FAMAS
menu_weapon 2

; С какого раунда доступно AWP
menu_awp 3

; С какого раунда доступно M249
menu_m249 4

#################################################################

; Максимальное количество хп | 0-Выключить
vampire_max_hp 100

; Сколько добавить хп за убийство
vampire_kill 5

; Сколько добавить хп за убийство в голову
vampire_kill_head 10

; Сколько добавить хп за убийство ножом
vampire_kill_knife 15

#################################################################

; Сколько добавить денег за убийство | 0-Выключить
money_kill 0

; Сколько добавить денег за убийство в голову
money_kill_head 300

; Сколько добавить денег за убийство ножом
money_kill_knife 400

[block]
; Карты на которых випка не работает
$2000$
awp_india

SWE_VIP_3_1.rar
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось DoNotFollowMe 08 май 2018, 00:59, всего редактировалось 26 раз(а).
Аватара пользователя
DoNotFollowMe
 
Сообщения: 117
Зарегистрирован: 29 фев 2016, 20:25
Благодарил (а): 41 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше недели
Языки программирования: 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
 
Сообщения: 117
Зарегистрирован: 29 фев 2016, 20:25
Благодарил (а): 41 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше недели
Языки программирования: 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
 
Сообщения: 117
Зарегистрирован: 29 фев 2016, 20:25
Благодарил (а): 41 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше недели
Языки программирования: 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
}

Это более тяжелый код. Оптимизированние работать с отдельными переменными
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

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
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: 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
 
Сообщения: 117
Зарегистрирован: 29 фев 2016, 20:25
Благодарил (а): 41 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

След.

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

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

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