Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

2 пистолета в одном слоте

, авто drop дефолтового пистолета в начале раунда
Статус пользователя mcrc
сообщение 1.2.2014, 10:24
Сообщение #1


Стаж: 12 лет

Сообщений: 70
Благодарностей: 6
Полезность: 70

Добрый день!
У меня в VIP плагине реализована возможность в начале раунда выдавать Deagle. Беда в том, что не могу избавиться от дефолтового пистолета. Таким образом, VIP игроки бегают с двумя пестолями сразу, что не есть гуд.
Я честно полазил на форуме и вроде бы нашёл подходящую реализацию, но не смог её правильно добавить в код плагина, не хватает знаний :(

Помогите, пожалуйста, сделать так, чтобы у VIP игрока в начале раунда выкидывался бы дефолтовый пистолет и выдавался Deagle, кроме случаев, когда у него уже есть Deagle!

Вот код плагина (с моим копипастом):
Код:

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

static const COLOR[] = "^x04" //green
static const CONTACT[] = ""

public plugin_init()
{
register_plugin("Admins VIP", "1.0", "UNREAL")
register_event("ResetHUD", "ResetHUD", "be")

}

public ResetHUD(id)
{
set_task(0.5, "VIP", id + 6910)
return PLUGIN_CONTINUE
}

//
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_AK47)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)

stock drop_weapons(id, dropwhat)
{
static weapons[32], num, i, weaponid
num = 0
get_user_weapons(id, weapons, num)

for (i = 0; i < num; i++)
{
weaponid = weapons[i]

if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
{
static wname[32], weapon_ent
get_weaponname(weaponid, wname, sizeof wname - 1)

engclient_cmd(id, "drop", wname)
}
}
}

public VIP(id)
{
id -= 6910


if (get_user_flags(id) & ADMIN_LEVEL_G)
{
message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
write_byte(id)
write_byte(4)
message_end()
give_item(id,"weapon_hegrenade")
give_item(id,"item_assaultsuit")
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")
}
return PLUGIN_HANDLED
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Esecman
сообщение 1.2.2014, 10:27
Сообщение #2
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

fm_strip_user_gun вам в помощь :D
Код:
#include <fakemeta_util>


Код:
fm_strip_user_gun(id, CSW_USP)
fm_strip_user_gun(id, CSW_GLOCK18)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Esecman
сообщение 1.2.2014, 10:38
Сообщение #3
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Скрытый текст
Код:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta_util>


public plugin_init()
{
register_plugin("Admins VIP", "1.0", "UNREAL")
register_event("ResetHUD", "ResetHUD", "be")

}

public ResetHUD(id)
{
set_task(0.5, "VIP", id + 6910)
return PLUGIN_CONTINUE
}

const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_AK47)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)

stock drop_weapons(id, dropwhat)
{
static weapons[32], num, i, weaponid
num = 0
get_user_weapons(id, weapons, num)

for (i = 0; i < num; i++)
{
weaponid = weapons[i]

if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
{
static wname[32], weapon_ent
get_weaponname(weaponid, wname, sizeof wname - 1)

engclient_cmd(id, "drop", wname)
}
}
}

public VIP(id) {
id -= 6910
if(get_user_flags(id) & ADMIN_LEVEL_G) {
message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
write_byte(id)
write_byte(4)
message_end()
fm_strip_user_gun(id, CSW_USP)
fm_strip_user_gun(id, CSW_GLOCK18)
give_item(id,"weapon_hegrenade")
give_item(id,"item_assaultsuit")
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")
}
return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 1.2.2014, 10:46
Сообщение #4
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

ham_strip_weapon stock

Отредактировал: csnet, - 1.2.2014, 10:47


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 1.2.2014, 10:57
Сообщение #5
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(csnet @ 1.2.2014, 11:46) *
ham_strip_weapon stock

fm_strip_user_gun нельзя что ли? :-)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xSav
сообщение 1.2.2014, 11:13
Сообщение #6
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

Вы издеваетесь ? Там уже все готово в коде.. Добавить одну строчку.. а вы тут фекмету суете :)

Перед
give_item(id,"weapon_hegrenade")
добавить
drop_weapons(id, 1)

Отредактировал: xSav, - 1.2.2014, 11:14
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя csnet
сообщение 1.2.2014, 11:19
Сообщение #7
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

drop != remove weapon entity
задача была удалить энтити оружия.
в любом случае все способы включают в себя последовательный перебор индексов оружия....либо поиск entity owner и получение айди.

Отредактировал: csnet, - 1.2.2014, 11:20


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mcrc
сообщение 1.2.2014, 11:41
Сообщение #8


Стаж: 12 лет

Сообщений: 70
Благодарностей: 6
Полезность: 70

Цитата(xSav @ 1.2.2014, 16:13) *
Вы издеваетесь ? Там уже все готово в коде.. Добавить одну строчку.. а вы тут фекмету суете :)

Перед
give_item(id,"weapon_hegrenade")
добавить
drop_weapons(id, 1)


Добавил, но чуда не произошло sad.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя xSav
сообщение 1.2.2014, 12:33
Сообщение #9
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

У тебя там строчки вверх ногами попутаны поэтому я не доглядел.. поменяй на
drop_weapons(id, 2)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mcrc
сообщение 1.2.2014, 12:35
Сообщение #10


Стаж: 12 лет

Сообщений: 70
Благодарностей: 6
Полезность: 70

Цитата(mcrc @ 1.2.2014, 16:41) *
Добавил, но чуда не произошло sad.gif

Сорри за дезинформацию, xSav, всё работает.
Правда есть одно "но":
в начале раунда выкидывается любой пистолет, а мне надо, чтобы выкидывался только GLOCK или USP.

Esecman, спасибо за ваш вариант, он работает как мне нужно!

Но насколько я понял использование fakemeta нежелательно?
Это нагружает сервер или в чём подводные камни?
Esecman, xSav, подскажите, пожалуйста

Отредактировал: mcrc, - 1.2.2014, 12:38
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 1.2.2014, 12:42
Сообщение #11
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(mcrc @ 1.2.2014, 13:35) *
Esecman, xSav, подскажите, пожалуйста

Ниче не нагружает :D
Пользуйся на здоровье :)

Отредактировал: Esecman, - 1.2.2014, 12:42
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xSav
сообщение 1.2.2014, 12:54
Сообщение #12
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

Лично я пользуюсь теми модулями которые уже есть по максимуму. Ибо зачем для одной функции включать еще один. А так в принципе нагрузку ты не заметишь ни в одном из вариантов
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mcrc
сообщение 1.2.2014, 13:00
Сообщение #13


Стаж: 12 лет

Сообщений: 70
Благодарностей: 6
Полезность: 70

Ребята, спасибо вам!
А-то прям так бесила эта недоделка в плагине :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 1.2.2014, 13:13
Сообщение #14
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(mcrc @ 1.2.2014, 14:00) *
Ребята, спасибо вам!
А-то прям так бесила эта недоделка в плагине :)

И скорее всего, нужно добавить все-таки проверку на тиму :D
fm_strip_user_gun(id, CSW_USP) // у террористов не имеется же при спавне.
как бы это не грузило еще из-за неверного стрипа оружия :3
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 1.2.2014, 13:16
Сообщение #15
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

я придумал более логичный способ

делаем так

Код:
fwd_player_respawn(id) {
engclient_cmd(id,"slot2") // пофиг какой пистолет выбрасывать то
engclient_cmd(id,"drop")
give_item(id,"weapon_deagle")
}


на 2м слоте всегда пистолет, выбрасываем все и не надо изобретать велосипед

Отредактировал: csnet, - 1.2.2014, 13:22


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mcrc
сообщение 1.2.2014, 13:56
Сообщение #16


Стаж: 12 лет

Сообщений: 70
Благодарностей: 6
Полезность: 70

Цитата(csnet @ 1.2.2014, 18:16) *
я придумал более логичный способ

делаем так

Код:
fwd_player_respawn(id) {
engclient_cmd(id,"slot2") // пофиг какой пистолет выбрасывать то
engclient_cmd(id,"drop")
give_item(id,"weapon_deagle")
}


на 2м слоте всегда пистолет, выбрасываем все и не надо изобретать велосипед


Дак при таком раскладе в начале каждого раунда из меня будет пистолет вылетать :)
А хочется, чтобы пушка просто исчезала
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Esecman
сообщение 1.2.2014, 13:58
Сообщение #17
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Просто, пользуйтесь тем кодом, который я кинул :)
И все :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mcrc
сообщение 1.2.2014, 14:05
Сообщение #18


Стаж: 12 лет

Сообщений: 70
Благодарностей: 6
Полезность: 70

Цитата(Esecman @ 1.2.2014, 18:13) *
И скорее всего, нужно добавить все-таки проверку на тиму :D
fm_strip_user_gun(id, CSW_USP) // у террористов не имеется же при спавне.
как бы это не грузило еще из-за неверного стрипа оружия :3


Вот жеж..а как такую проверку реализовать применительно к моему плагину?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 1.2.2014, 14:07
Сообщение #19
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

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

разве не видно в коде, что после дропа дается дигл???


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 1.2.2014, 14:10
Сообщение #20
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(mcrc @ 1.2.2014, 15:05) *
Вот жеж..а как такую проверку реализовать применительно к моему плагину?

проверку на тиму.

Код:
if(get_user_team(id) == 1) {
fm_strip_user_gun(id, CSW_GLOCK18)
}
if(get_user_team(id) == 2) {
fm_strip_user_gun(id, CSW_USP)
}


А проще, пока ничего не делай.
Может скриптеры какие-нибудь отпишутся по этому поводу :)
Может не нагружает вовсе )

Тестируйте.
Код:
#include <amxmodx>
#include <fun>
#include <fakemeta_util>

public plugin_init() {
register_plugin("Admins VIP", "1.0", "UNREAL/Esecman")
register_event("ResetHUD", "ResetHUD", "be")
}

public ResetHUD(id) {
set_task(0.5, "VIP", id + 6910)
return PLUGIN_CONTINUE
}

public VIP(id) {
id -= 6910
if(get_user_flags(id) & ADMIN_LEVEL_G) {
message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
write_byte(id)
write_byte(4)
message_end()
if(get_user_team(id) == 1) {
fm_strip_user_gun(id, CSW_GLOCK18)
}
if(get_user_team(id) == 2) {
fm_strip_user_gun(id, CSW_USP)
}
give_item(id,"weapon_hegrenade")
give_item(id,"item_assaultsuit")
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")
}
return PLUGIN_HANDLED
}


+ Забыл урезать сток drop_weapons :D

Отредактировал: Esecman, - 1.2.2014, 14:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: