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

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

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

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

Отнять c4 и передать ее другому игроку

Статус пользователя r1nk0
сообщение 18.1.2015, 18:55
Сообщение #1


Стаж: 12 лет

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

Появилась идея,думаю плагин будет полезен многим,я такого не нашел.
Суть в том чтобы вначале каждого раунда с4 отдавалась игроку с большим числом убийств,а вначале когда у всех по 0 рандомно.
Может кто написать? Или может такой плагин есть.


Создание и редактирование карт ($) - vk.com/id476857873
Настройка и техническое обслуживание ваших игровых серверов - vk.com/id476857873
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя adva
сообщение 18.1.2015, 19:00
Сообщение #2


Иконка группы

Стаж: 12 лет

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

Меценат Меценат

Может быть будет полезен код...
Код:
public func_transfer_bomb(id){

// Abbrechen wenn der Spieler keine Bombe hat
if (!(pev(id, pev_weapons) & (1 << CSW_C4))) return

// Ermittle alle lebenden Terroristen
new iPlayers[32], pNum
get_players(iPlayers, pNum, "ae", "TERRORIST")

// Abbrechen falls weniger als 2 Terroristen leben
if (pNum < 2) return

// Finde den n?sten Terroristen der nicht AFK ist
new vCarrier[3], vRecipient[3], iRecipient, iDistance, iMinDistance = 999999
get_user_origin(id, vCarrier)
for (new p = 0; p < pNum; p++){
if (g_iAFKTime[iPlayers[p]] < 2){
get_user_origin(iPlayers[p], vRecipient)
iDistance = get_distance(vCarrier, vRecipient)
if (iDistance < iMinDistance){
iMinDistance = iDistance
iRecipient = iPlayers[p]
}
}
}

// Abbrechen wenn alle Terroristen AFK sind
if (!iRecipient) return

// Bombe transferieren
engclient_cmd(id, "drop", "weapon_c4")
new iC4 = engfunc(EngFunc_FindEntityByString, -1, "classname", "weapon_c4")
if (is_user_alive(id) & pev_valid(iC4)){
new iBackpack = pev(iC4, pev_owner)
if (iBackpack > g_iMaxPlayers){
set_pev(iBackpack, pev_flags, pev(iBackpack, pev_flags) | FL_ONGROUND)
dllfunc(DLLFunc_Touch, iBackpack, iRecipient)
}
}

// Nachrichten anzeigen
new szRecipient[32], szMsg[128]
get_user_name(iRecipient, szRecipient, 31)
set_hudmessage(255, 255, 0, -1.0, 0.8, 0, 3.0, 6.0, 0.1, 0.2, -1)
for (new p = 0; p < pNum; p++){
if (iPlayers[p] != iRecipient){
format(szMsg, 127, "%L", iPlayers[p], "AFK_TRANSFER_BOMB", szRecipient)
show_hudmessage(iPlayers[p], "%s", szMsg)
}
}
format(szMsg, 127, "%L", iRecipient, "AFK_GOT_BOMB")
show_hudmessage(iRecipient, szMsg)
}


вытащил из плагина, который за простой передаёт бомбу рандомно...

Отредактировал: adva, - 18.1.2015, 19:01
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 19.1.2015, 16:11
Сообщение #3


Стаж: 12 лет

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

adva, много лишнего
можно так
Код:
public func_transfer_bomb(id)
{
if (user_has_weapon(id, CSW_C4)) //проверяем есть ли у игрока С4, если есть то выполняем код
{
new iPlayers[32], pNum
get_players(iPlayers, pNum, "ae", "TERRORIST")

if (pNum < 2) // если в команде терористов меньше 2 игроков, то просто выбрасываем С4
{
engclient_cmd(id, "drop", "weapon_c4")
return
}
new vCarrier[3], vRecipient[3], iRecipient, iDistance, iMinDistance = 999999
get_user_origin(id, vCarrier)
for (new p = 0; p < pNum; p++){
if (g_iAFKTime[iPlayers[p]] < 2){
get_user_origin(iPlayers[p], vRecipient)
iDistance = get_distance(vCarrier, vRecipient)
if (iDistance < iMinDistance){
iMinDistance = iDistance
iRecipient = iPlayers[p]
}
}
}
if (!iRecipient) return

// Bombe transferieren
engclient_cmd(id, "drop", "weapon_c4")
new iC4 = engfunc(EngFunc_FindEntityByString, -1, "classname", "weapon_c4")
if (is_user_alive(id) & pev_valid(iC4)){
new iBackpack = pev(iC4, pev_owner)
if (iBackpack > g_iMaxPlayers){
set_pev(iBackpack, pev_flags, pev(iBackpack, pev_flags) | FL_ONGROUND)
dllfunc(DLLFunc_Touch, iBackpack, iRecipient)
}
}
//тут можно создать сообщение кому передаем С4
//можно сделать сообщение в чат или в худ сообщении
new szRecipient[32] //переменная для имени игрока
// iRecipient - это айди игрока кому передана С4
get_user_name(iRecipient, szRecipient, 31) // получаем имя игрока кому будет передана С4
set_hudmessage(255, 255, 0, -1.0, 0.8, 0, 3.0, 6.0, 0.1, 0.2, -1)
show_hudmessage(iRecipient, "С4 передана^n%s",szRecipient)
}
}

как то так, использовал код с предыдущего поста, с телефона неудобно много печатать но суть понятна)
извините за выравнивание кода) + проверте закрытие }
но функцыя должна работать, разве что компилятор будет выводить предупреждение 217 за выравниевание кода, на предупреждение 217 можно не обращать внимания, оно не влияет на работоспособность плагина

Отредактировал: MiXa, - 19.1.2015, 16:28


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: