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

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

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

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

Подсобите добавить условие в код

Статус пользователя Dante's
сообщение 20.9.2014, 21:22
Сообщение #1
Стаж: 15 лет

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

В общем есть випка. Все устраивает кроме одного, можно брать оружия сколько угодно. Нужно чтобы брать 1 оружие за раунд. Пытался вставлять условие по аналогии из других випок, но ничего не сработало конечно pardon.gif

Подсобите с условием или хотя на словах объясните куда такое воткнуть - условие на проверку и вывод ChatColor(id, "!g[VIP]!y Оружия можна брать 1 раз в раунд! blush2.gif
Код:
public event_round_start ( ) 
{
round_number++
}

public giveWeapon(id, key)
{
if ( ! is_user_alive ( id ) )
{
ChatColor ( id , "!g[V.I.P]!team Ты мертв!" );
return PLUGIN_HANDLED;
}
if (key == 0)
{
if ( round_number <= 1 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 2 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_ak47")
cs_set_user_bpammo( id , CSW_AK47, 90 )
}
else if (key == 1)
{
if ( round_number <= 1 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 2 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_m4a1")
cs_set_user_bpammo( id , CSW_M4A1, 90 )
}
else if (key == 2)
{
if ( round_number <= 2 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 3 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_awp")
cs_set_user_bpammo( id , CSW_AWP, 30 )
}
else if (key == 3)
{
if ( round_number <= 1 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 2 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_famas")
cs_set_user_bpammo( id , CSW_FAMAS, 90 )
}
else if (key == 4)
{
}
return PLUGIN_HANDLED;
}



Весь код на всякий случай
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <fakemeta_util>

#define DAMAGE_RECIEVED
#define VIP_FLAG ADMIN_LEVEL_H

new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_GALIL, CSW_USP, CSW_GLOCK18};
new round_number
new g_HudSync
new g_HudSync2
new health_add
new health_hs_add
new health_max

new nKiller
new nKiller_hp
new nHp_add
new nHp_max

public plugin_init()
{
register_plugin("Vipka", "1.5", "7eVen");
register_event("ResetHUD", "ResetHUD", "be");
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("Damage", "damage_message", "b", "2!0", "3=0", "4!0")
register_event("DeathMsg", "hook_death", "a", "1>0")
register_clcmd("say /vip","ShowMotd");
register_clcmd("vipmenu", "showWeaponMenu");

new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5
register_menucmd(register_menuid("Выберите оружия?"), keys, "giveWeapon");

g_HudSync = CreateHudSyncObj()
#if defined DAMAGE_RECIEVED
g_HudSync2 = CreateHudSyncObj()
#endif

health_add = register_cvar("amx_vampire_hp", "5")
health_hs_add = register_cvar("amx_vampire_hp_hs", "10")
health_max = register_cvar("amx_vampire_max_hp", "100")
}

public hook_death()
{
nKiller = read_data(1)

if(!(get_user_flags(nKiller) & VIP_FLAG))
return PLUGIN_HANDLED;

if ( (read_data(3) == 1) && (read_data(5) == 0) )
{
nHp_add = get_pcvar_num (health_hs_add)
}
else
nHp_add = get_pcvar_num (health_add)

nHp_max = get_pcvar_num (health_max)

nKiller_hp = get_user_health(nKiller)
nKiller_hp += nHp_add

if (nKiller_hp > nHp_max) nKiller_hp = nHp_max

set_user_health(nKiller, nKiller_hp)

set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
show_hudmessage(nKiller, "Healed +%d hp", nHp_add)

return PLUGIN_CONTINUE;
}

public damage_message(id)
{
new attacker = get_user_attacker(id)

if (get_user_flags(attacker) & VIP_FLAG && is_user_connected(attacker))
{
new damage = read_data(2)
set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
ShowSyncHudMsg(id, g_HudSync2, "%i", damage)

set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(attacker, g_HudSync, "%i", damage)
}
return PLUGIN_CONTINUE;
}

public showWeaponMenu(id)
{
if ( ! ( get_user_flags ( id ) & VIP_FLAG ) )
{
ChatColor ( id , "!g[V.I.P]!team Только для !g[V.I.P] " );
return PLUGIN_HANDLED;
}

new menu[192]
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5
format(menu, 191, "Выберите оружия?^n^n\r1. \wВзять \r[\yAK47\r]^n\r2. \wВзять \r[\yM4A1\r]^n\r3. \wВзять \r[\yAWP\r]^n\r4. \wВзять \r[\yFAMAS\r]^n^n\r5. \wВыход^n")
show_menu(id, keys, menu)
return PLUGIN_HANDLED
}

public event_round_start ( )
{
round_number++

}






public giveWeapon(id, key)
{
if ( ! is_user_alive ( id ) )
{
ChatColor ( id , "!g[V.I.P]!team Ты мертв!" );
return PLUGIN_HANDLED;
}

if (key == 0)
{
if ( round_number <= 1 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 2 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_ak47")
cs_set_user_bpammo( id , CSW_AK47, 90 )
}
else if (key == 1)
{
if ( round_number <= 1 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 2 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_m4a1")
cs_set_user_bpammo( id , CSW_M4A1, 90 )
}
else if (key == 2)
{
if ( round_number <= 2 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 3 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_awp")
cs_set_user_bpammo( id , CSW_AWP, 30 )
}
else if (key == 3)
{
if ( round_number <= 1 )
{
ChatColor ( id , "!g[V.I.P]!team Доступно со 2 раунда!" );
return PLUGIN_HANDLED;
}
give_item(id, "weapon_famas")
cs_set_user_bpammo( id , CSW_FAMAS, 90 )
}
else if (key == 4)
{
}
return PLUGIN_HANDLED;
}

public client_authorized(id)
{
client_cmd(id, "bind ^"F3^" ^"vipmenu^"")
}



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

public VIP(TaskID)
{
new id = TaskID - 6910

if (get_user_flags(id) & VIP_FLAG && is_user_connected(id) && is_user_alive(id))
{
for (new i = 0; i < 6; i++)
{
if (fm_strip_user_gun(id, pistols[i]))
{
break;
}
message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
write_byte(id)
write_byte(4)
message_end()
give_item( id, "weapon_hegrenade" )
give_item( id, "weapon_flashbang" );
give_item( id, "weapon_flashbang" );
give_item( id, "weapon_smokegrenade" );
give_item( id, "item_assaultsuit" );
give_item( id, "item_thighpack" );
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
}

public ShowMotd(id)
{
show_motd(id, "vip.txt")
}

stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)

replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}


P.S. Еще там есть такая хрень, что можно брать оружие с собой одновременно много и авп и ак и мку, но я так понимаю, если брать оружие только 1 раз то такого не будет?

Отредактировал: Dante's, - 20.9.2014, 21:35
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя ssx
сообщение 20.9.2014, 22:36
Сообщение #2


Стаж: 12 лет

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

Делаем
new ololo[33]

Далее в
public event_round_start ( )
вставляем

ololo[id] = 0

Далее в public giveWeapon(id, key)
Вставляем
if (ololo[id] == 0)
{
далее код..


Далее после каждого cs_set_user_bpammo добавляем строчку
ololo[id] = 1


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Dante's
сообщение 21.9.2014, 18:52
Сообщение #3
Стаж: 15 лет

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

Спасибо, попробовал сделать прям вставляя такие значения, но компилятор выдавал кучу ошибок и прерывал компиляция. Но в приницпе сделал по такой же схеме, только через булевые derisive.gif

Теперь бы еще рестарт поддержать и оружку дропать перед выдачей, чертов исходник оказался далек от плагина который уже стоит на серваке ubeysya.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: