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

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

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

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

> Правила форума

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

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Открытие меню первые 20 секенд

Статус пользователя moodle
сообщение 26.6.2014, 16:22
Сообщение #1
Стаж: 12 лет

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

Можно ли сделать так, чтобы меню можно было открывать в начале раунда первые 20 секунд(и если можно, чтобы им писало сообщение "Меню можно открыть первые 20 сек")? Код:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define KEYS (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9)

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define clr_bit(%1,%2) %1 &= ~(1 << (%2 & 31))

new receivedPrimaryWeapons = 0,
receivedSecWeapons = 0

new const VIP_ACCESS = ADMIN_LEVEL_H
new g_roundCount

new bool:isWarmupRound = true,
bool:isFirstRound = true

new const 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)
new const SECONDARY_WEAPONS_BITSUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

public plugin_init()
{
register_plugin("VIP", "1.0", "neygomon")

register_event("TextMsg","eventRoundRestart","a","2&#Game_w")
register_event("TextMsg","eventCommencingRestart","a","2&#Game_C")
register_event("HLTV", "eventRoundStartHLTV", "a","1=0","2=0")
register_event("ResetHUD","Event_reset_hud","be")
RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1);

register_clcmd( "say /vipmenu", "CmdMenu" );
register_clcmd( "vipmenu", "CmdMenu" );

register_menucmd(register_menuid("VIP_MENU"), KEYS, "menu_handler");
}
public client_putinserver(id)
{
clr_bit(receivedPrimaryWeapons,id)
clr_bit(receivedSecWeapons,id)
}

public eventCommencingRestart()
isFirstRound = isWarmupRound = true

public eventRoundRestart()
g_roundCount = 0

public eventRoundStartHLTV()
{
if(isFirstRound){
isFirstRound = false
g_roundCount = 0
}
g_roundCount++
if(isWarmupRound){
isWarmupRound = false
g_roundCount = 0
}
receivedPrimaryWeapons = receivedSecWeapons = 0
}

public Event_reset_hud(id)
if(get_user_flags(id) & VIP_ACCESS) setVipScoreAttrib(id)

public Player_Spawn(id)
{
if(is_user_alive (id) && get_user_flags(id) & VIP_ACCESS){

give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
give_item_ex(id,"weapon_deagle",35,1)

cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
cs_set_user_bpammo(id, CSW_DEAGLE, 35);
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
if(get_user_team(id) == 2)
cs_set_user_defuse(id, 1)
}
}

public CmdMenu(id)
{
if(is_user_alive (id) && get_user_flags(id) & VIP_ACCESS){
if(g_roundCount != 0){
if(g_roundCount >= 3){
if(!get_bit(receivedPrimaryWeapons,id)){
show_menu(id, KEYS, "\wВыберите оружие:\w^n^n\r1\r. \wВзять \r[\yAK-47\r]^n\r2\r. \wВзять \r[\yM4A1\r]^n\r3\r. \wВзять \r[\yAWP\r]^n\r4\r. \wВзять \r[\yFamas\r]^n^n\r0\r. \wВыход", -1, "VIP_MENU");

return PLUGIN_HANDLED;
}
else{
client_print_color(id, 0, "^1[^4Vip^1] Запрещено повторно пользоваться этой командой.")
}
}
else {
client_print_color(id, 0, "^1[^4Vip^1] Меню доступно только с 3 раунда")
}
return PLUGIN_HANDLED
}
client_print_color(id, 0, "^1[^4Vip^1] Разминочный раунд. Запрещено пользоваться командой.")
return PLUGIN_HANDLED
}
else{
client_print_color(id, 0, "^1[^4Vip^1] Вы мертвы.")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED;
}

public menu_handler(id, key)
{
switch(key)
{
case 0: {
give_item_ex(id,"weapon_ak47",90,1)
set_bit(receivedPrimaryWeapons,id)
}

case 1: {
give_item_ex(id,"weapon_m4a1",90,1)
set_bit(receivedPrimaryWeapons,id)
}

case 2: {
give_item_ex(id,"weapon_awp",30,1)
set_bit(receivedPrimaryWeapons,id)
}

case 3: {
give_item_ex(id,"weapon_famas",90,1)
set_bit(receivedPrimaryWeapons,id)
}
}
}
stock give_item_ex(id,currWeaponName[],ammoAmount,dropFlag=0)
{
static weaponsList[32],
weaponName[32],
weaponsNum,
currWeaponID

currWeaponID = get_weaponid(currWeaponName)
if(dropFlag){
weaponsNum = 0
get_user_weapons(id,weaponsList,weaponsNum)
for (new i = 0;i < weaponsNum;i++){
if(((1 << currWeaponID) & PRIMARY_WEAPONS_BITSUM && (1 << weaponsList[i]) & PRIMARY_WEAPONS_BITSUM) | ((1 << currWeaponID) & SECONDARY_WEAPONS_BITSUM && (1 << weaponsList[i]) & SECONDARY_WEAPONS_BITSUM)){
get_weaponname(weaponsList[i],weaponName,charsmax(weaponName))
engclient_cmd(id,"drop",weaponName)
}
}
}
give_item(id,currWeaponName)
cs_set_user_bpammo(id,currWeaponID,ammoAmount)
}

stock setVipScoreAttrib(id)
{
if(is_user_alive(id)){
message_begin(MSG_ALL,84,{0,0,0},id)
write_byte(id)
write_byte(4)
message_end()
}
}


Отредактировал: moodle, - 26.6.2014, 16:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Legenda
сообщение 26.6.2014, 16:38
Сообщение #2


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

Стаж: 16 лет

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

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

приложи исходник как файл
сделаю тебе
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
trollface
сообщение 26.6.2014, 16:40
Сообщение #3
Стаж: 12 лет

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

Legenda,
только не таском)
пинай get_systime()
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 26.6.2014, 16:41
Сообщение #4


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

Стаж: 16 лет

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

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

ты читаешь мои мысли)
а чем тебе таск не нравится?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
trollface
сообщение 26.6.2014, 16:44
Сообщение #5
Стаж: 12 лет

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

Legenda,
таймер есть таймер...
при большом кол-ве тасков можно зациклить проц(если я правильно понял инфу с аленей)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя moodle
сообщение 26.6.2014, 16:47
Сообщение #6
Стаж: 12 лет

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

Цитата(Legenda @ 26.6.2014, 16:38) *
приложи исходник как файл
сделаю тебе

Прикрепленный файл  vip_for_csnet.sma ( 4,84 килобайт ) Кол-во скачиваний: 5
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 26.6.2014, 16:48
Сообщение #7


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

Стаж: 16 лет

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

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

в принципе использовать можно, но осторожно
надо глянуть просто исходники amxmodx
и посмотреть как работает task

например в этом случаи может раунд быть короче 20 секунд
длительность раунда может вообще быть меньше 0.5 секунды )
иногда нужно это учитывать)
и таск в циклах не использовать)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
trollface
сообщение 26.6.2014, 16:48
Сообщение #8
Стаж: 12 лет

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

moodle,
скачайте обновление данной випки.. https://c-s.net.ua/forum/index.php?showtopic=62298
эта версия старая и кривоватая;)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 26.6.2014, 17:14
Сообщение #9


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

Стаж: 16 лет

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

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

лови

Код:

#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define KEYS (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9)

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define clr_bit(%1,%2) %1 &= ~(1 << (%2 & 31))

new receivedPrimaryWeapons = 0,
receivedSecWeapons = 0

new const VIP_ACCESS = ADMIN_LEVEL_H
new g_roundCount
new TimeRoundStart


new bool:isWarmupRound = true,
bool:isFirstRound = true

new const 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)
new const SECONDARY_WEAPONS_BITSUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

public plugin_init()
{
register_plugin("VIP", "1.0", "neygomon")

register_event("TextMsg","eventRoundRestart","a","2&#Game_w")
register_event("TextMsg","eventCommencingRestart","a","2&#Game_C")
register_event("HLTV", "eventRoundStartHLTV", "a","1=0","2=0")
register_event("ResetHUD","Event_reset_hud","be")
RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1);

register_clcmd( "say /vipmenu", "CmdMenu" );
register_clcmd( "vipmenu", "CmdMenu" );

register_menucmd(register_menuid("VIP_MENU"), KEYS, "menu_handler");
}
public client_putinserver(id)
{
clr_bit(receivedPrimaryWeapons,id)
clr_bit(receivedSecWeapons,id)
}

public eventCommencingRestart()
isFirstRound = isWarmupRound = true

public eventRoundRestart()
g_roundCount = 0

public eventRoundStartHLTV()
{
TimeRoundStart = get_systime()

if(isFirstRound){
isFirstRound = false
g_roundCount = 0
}
g_roundCount++
if(isWarmupRound){
isWarmupRound = false
g_roundCount = 0
}
receivedPrimaryWeapons = receivedSecWeapons = 0
}

public Event_reset_hud(id)
if(get_user_flags(id) & VIP_ACCESS) setVipScoreAttrib(id)

public Player_Spawn(id)
{
if(is_user_alive (id) && get_user_flags(id) & VIP_ACCESS){

give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
give_item_ex(id,"weapon_deagle",35,1)

cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
cs_set_user_bpammo(id, CSW_DEAGLE, 35);
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
if(get_user_team(id) == 2)
cs_set_user_defuse(id, 1)
}
}

public CmdMenu(id)
{
if(is_user_alive (id) && get_user_flags(id) & VIP_ACCESS){
if(g_roundCount != 0){
if(g_roundCount >= 3){
if (get_systime() - 20 > TimeRoundStart)
{
client_print_color(id, 0, "^1[^4Vip^1] Меню можно открыть первые 20 сек.")
return PLUGIN_HANDLED
}
if(!get_bit(receivedPrimaryWeapons,id)){
show_menu(id, KEYS, "\wВыберите оружие:\w^n^n\r1\r. \wВзять \r[\yAK-47\r]^n\r2\r. \wВзять \r[\yM4A1\r]^n\r3\r. \wВзять \r[\yAWP\r]^n\r4\r. \wВзять \r[\yFamas\r]^n^n\r0\r. \wВыход", -1, "VIP_MENU");

return PLUGIN_HANDLED;
}
else{
client_print_color(id, 0, "^1[^4Vip^1] Запрещено повторно пользоваться этой командой.")
}
}
else {
client_print_color(id, 0, "^1[^4Vip^1] Меню доступно только с 3 раунда")
}
return PLUGIN_HANDLED
}
client_print_color(id, 0, "^1[^4Vip^1] Разминочный раунд. Запрещено пользоваться командой.")
return PLUGIN_HANDLED
}
else{
client_print_color(id, 0, "^1[^4Vip^1] Вы мертвы.")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED;
}

public menu_handler(id, key)
{
switch(key)
{
case 0: {
give_item_ex(id,"weapon_ak47",90,1)
set_bit(receivedPrimaryWeapons,id)
}

case 1: {
give_item_ex(id,"weapon_m4a1",90,1)
set_bit(receivedPrimaryWeapons,id)
}

case 2: {
give_item_ex(id,"weapon_awp",30,1)
set_bit(receivedPrimaryWeapons,id)
}

case 3: {
give_item_ex(id,"weapon_famas",90,1)
set_bit(receivedPrimaryWeapons,id)
}
}
}
stock give_item_ex(id,currWeaponName[],ammoAmount,dropFlag=0)
{
static weaponsList[32],
weaponName[32],
weaponsNum,
currWeaponID

currWeaponID = get_weaponid(currWeaponName)
if(dropFlag){
weaponsNum = 0
get_user_weapons(id,weaponsList,weaponsNum)
for (new i = 0;i < weaponsNum;i++){
if(((1 << currWeaponID) & PRIMARY_WEAPONS_BITSUM && (1 << weaponsList[i]) & PRIMARY_WEAPONS_BITSUM) | ((1 << currWeaponID) & SECONDARY_WEAPONS_BITSUM && (1 << weaponsList[i]) & SECONDARY_WEAPONS_BITSUM)){
get_weaponname(weaponsList[i],weaponName,charsmax(weaponName))
engclient_cmd(id,"drop",weaponName)
}
}
}
give_item(id,currWeaponName)
cs_set_user_bpammo(id,currWeaponID,ammoAmount)
}

stock setVipScoreAttrib(id)
{
if(is_user_alive(id)){
message_begin(MSG_ALL,84,{0,0,0},id)
write_byte(id)
write_byte(4)
message_end()
}
}




Отредактировал: Legenda, - 26.6.2014, 17:37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
trollface
сообщение 26.6.2014, 17:26
Сообщение #10
Стаж: 12 лет

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

Legenda,
get_systime() - 20
так как получится что сумма всегда больше старта а надо чтобы наоброт была разность;)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 26.6.2014, 17:36
Сообщение #11


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

Стаж: 16 лет

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

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

Цитата(trollface @ 26.6.2014, 19:26) *
Legenda,
get_systime() - 20
так как получится что сумма всегда больше старта а надо чтобы наоброт была разность;)



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