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

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

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

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

Отобрать основное оружее

Статус пользователя MiXa
сообщение 20.9.2014, 18:50
Сообщение #1


Стаж: 12 лет

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

вот список оружия которые отбираются в випке при выборе нового

Код:
new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_USP, CSW_GALIL, CSW_GLOCK18}

new g_Gun[18] = { CSW_AK47, CSW_M4A1, CSW_AWP, CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_UMP45, CSW_SG550, CSW_FAMAS, CSW_MP5NAVY, CSW_M249, CSW_M3, CSW_TMP, CSW_G3SG1, CSW_SG552, CSW_P90};

но когда ты за Т , то при покупке В-4-1 , это оружее не отбирается
вот как я отбиаю оружие:

Код:
for(new i = 0; i < charsmax(g_Gun); i++)
fm_strip_user_gun(id, g_Gun[i]) // отбираю оружие

give_item( id, "weapon_m4a1" ) //выдаю оружие
cs_set_user_bpammo( id , CSW_M4A1, 90 )
}


когда делаю так:
Код:
new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_USP, CSW_GLOCK18}

new g_Gun[18] = { CSW_GALIL, CSW_AK47, CSW_M4A1, CSW_AWP, CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_UMP45, CSW_SG550, CSW_FAMAS, CSW_MP5NAVY, CSW_M249, CSW_M3, CSW_TMP, CSW_G3SG1, CSW_SG552, CSW_P90};

я вить просто перенес CSW_GALIL из pistols в g_Gun
то основное оружие отбирается каждый раунд, бред ,как правильно отобрать В-4-1 у терориста?или просто отбирать основное оружие? strip_weapon.inc не очень хочется использовать

Отредактировал: MiXa, - 20.9.2014, 19:07


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Safety1st
сообщение 21.9.2014, 22:49
Сообщение #2
Стаж: 14 лет
Город: Moscow

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

Как же меня умиляет, когда выкладывают маленькие кусочки своего мегаприватного кода в надежде получить халявную помощь в паблике

Ваших кусков мало, чтобы что-то конкретное можно было подсказать. Судя по всему, вы вообще плохо представляете, что делаете.

Могу порекомендовать поразбираться с плагином 'Weapon Menu Hardcoded' на Складе. Глядишь - и научитесь чему ;)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
voed
сообщение 21.9.2014, 22:56
Сообщение #3
Стаж: 11 лет

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

Цитата
for(new i = 0; i < charsmax(g_Gun); i++)

Это законно вообще?)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 21.9.2014, 23:05
Сообщение #4
Стаж: 14 лет
Город: Moscow

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

Цитата(voed @ 22.9.2014, 0:56) *
Это законно вообще?)

Это неверно, потому что нужно sizeof array, а charsmax - это sizeof array - 1. Потому charsmax только для строк и можно применять ;)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Dante's
сообщение 23.9.2014, 7:05
Сообщение #5
Стаж: 15 лет

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

Я не кодер не разу, поэтому то что я скажу может быть полная чушь, но предположу что дело в массивах. Ты меняешь что-то а индексы не не меняешь, пустые ячейки и дают неожиданные результаты. Я просто пытаюсь думать логически.

Я тоже на днях изменял плагин с подобным кодом - добавлял дроп оружия перед выдачей, у меня все работает, но код с точки зрения правильности может быть убогим. Кстати тоже галил в пистолетах, работаем с одними исходниками?! smile.gif

Код:
new pistols[5] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_USP, CSW_GLOCK18};
new guns[18] = {CSW_AWP, CSW_SCOUT, CSW_MP5NAVY, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_UMP45, CSW_SG550, CSW_GALIL, CSW_FAMAS, CSW_M249, CSW_M3, CSW_M4A1, CSW_TMP, CSW_G3SG1, CSW_SG552, CSW_AK47, CSW_P90};



Код:
for(new i = 0; i < 18; i++)
fm_strip_user_gun(id, gunn[i])
give_item(id, "weapon_ak47")
cs_set_user_bpammo( id , CSW_AK47, 90 )


Так же рискну предположить, что счетчик на дроп пистолета перед выдачей дропа выглядет так

Код:
for (new i = 0; i < 6; i++)


Думаю надо пятерку, если убираешь галил из пистолетов.

Отредактировал: Dante's, - 23.9.2014, 7:06
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nixon
сообщение 23.9.2014, 8:42
Сообщение #6


Стаж: 12 лет

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

Вот кусок отбора оружия, пистолеты и основное(+ еще гранаты):

Код:
#define ALL_WEAPONS 	(1<<CSW_HEGRENADE|1<<CSW_FLASHBANG|1<<CSW_SMOKEGRENADE|1<<CSW_SCOUT|1<<CSW_XM1014|1<<CSW_MAC10|1<<CSW_AUG|1<<CSW_UMP45|1<<CSW_SG550|1<<CSW_GALIL|1<<CSW_FAMAS|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)
#define PISTOLS_WEAPONS (1<<CSW_P228|1<<CSW_ELITE|1<<CSW_FIVESEVEN|1<<CSW_USP|1<<CSW_GLOCK18|1<<CSW_DEAGLE)

stock fnDropWeapons(const id, iNum)
{
new iWeapons[32], iWeaponsNum;
get_user_weapons(id, iWeapons, iWeaponsNum);
for(new i; i < iWeaponsNum; i++)
{
if((iNum == 1 ? ALL_WEAPONS : PISTOLS_WEAPONS) & (1<<iWeapons[i]))
{
new szWeaponName[24], iEnt;
get_weaponname(iWeapons[i], szWeaponName, charsmax(szWeaponName));
while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", szWeaponName)) && pev(iEnt, pev_owner) != id) {}
if(iEnt)
{
ExecuteHamB(Ham_Weapon_RetireWeapon, iEnt);
if(ExecuteHamB(Ham_RemovePlayerItem, id, iEnt))
{
ExecuteHamB(Ham_Item_Kill, iEnt);
set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<iWeapons[i]));
}
}
}
}
}


Вот функция дропа

Код:
	fnDropWeapons(id, 1);
fnDropWeapons(id, 2);

1 - пистолеты, 2 - основное оружие

Отредактировал: Nixon, - 23.9.2014, 8:43
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя admir
сообщение 23.9.2014, 13:40
Сообщение #7
Стаж: 13 лет

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

Цитата(MiXa @ 20.9.2014, 18:50) *
вот список оружия которые отбираются в випке при выборе нового

Код:
new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_USP, CSW_GALIL, CSW_GLOCK18}

new g_Gun[18] = { CSW_AK47, CSW_M4A1, CSW_AWP, CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_UMP45, CSW_SG550, CSW_FAMAS, CSW_MP5NAVY, CSW_M249, CSW_M3, CSW_TMP, CSW_G3SG1, CSW_SG552, CSW_P90};

но когда ты за Т , то при покупке В-4-1 , это оружее не отбирается
вот как я отбиаю оружие:

Код:
for(new i = 0; i < charsmax(g_Gun); i++)
fm_strip_user_gun(id, g_Gun[i]) // отбираю оружие

give_item( id, "weapon_m4a1" ) //выдаю оружие
cs_set_user_bpammo( id , CSW_M4A1, 90 )
}


когда делаю так:
Код:
new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_USP, CSW_GLOCK18}

new g_Gun[18] = { CSW_GALIL, CSW_AK47, CSW_M4A1, CSW_AWP, CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_UMP45, CSW_SG550, CSW_FAMAS, CSW_MP5NAVY, CSW_M249, CSW_M3, CSW_TMP, CSW_G3SG1, CSW_SG552, CSW_P90};

я вить просто перенес CSW_GALIL из pistols в g_Gun
то основное оружие отбирается каждый раунд, бред ,как правильно отобрать В-4-1 у терориста?или просто отбирать основное оружие? strip_weapon.inc не очень хочется использовать


ну, B-4-1 - это и есть оружие CSW_GALIL. Если его нету в массиве g_Gun, то и отбирать его соответственно не будет. Правильно отбирать оружие (через fm_strip_user_gun) будет так, с проверкой на его присутствие, а не пытаться убрать все подряд.

Код:
#define PRIMARY_WEAPONS_BITSUM ((1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(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))
#define SECONDARY_WEAPONS_BITSUM ((1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE))

stock drop_primary(id)
{
new weapons[32], num;
get_user_weapons(id, weapons, num);
for(new i = 0; i < num; i++)
if(PRIMARY_WEAPONS_BITSUM & (1<<weapons[i]))
fm_strip_user_gun(id, weapons[i]);
}

stock drop_secondary(id)
{
new weapons[32], num;
get_user_weapons(id, weapons, num);
for(new i = 0; i < num; i++)
if(SECONDARY_WEAPONS_BITSUM & (1<<weapons[i]))
fm_strip_user_gun(id, weapons[i]);
}


при использовании drop_primary(id игрока) выкинет всё основное оружие, при использовании drop_secondary(id игрока) выкинет все пистолеты.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: