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

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

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

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

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

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

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

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

buyzonerange

, блок иконки
Статус пользователя Tkd
сообщение 29.1.2013, 14:45
Сообщение #1
Стаж: 13 лет

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

Всем ку =) Помогите пожалуйста, кто разбирается в иконках, заблочить иконку корзины в плагине buyzonerange, что бы по окончании времени закупки она пропадала. Время закупки 60 сек.

вот исходник:

buyzonerange.sma
/* AMX Mod X
* Buyzone Range
*
* © Copyright 2006 by VEN
*
* This file is provided as is (no warranties)
*
* DESCRIPTION
* Plugin allows to set buyzone range: everywhere/nowhere/default
* Note: AMX Mod X v1.75+ required
*
* CVARs
* bz_range (0: Nowhere, 1: Default, 2: Everywhere, default: 1)
* Note: CVAR change is accepted every new round and player spawn
*/

#include <amxmodx>
#include <fakemeta>

// plugin's main information
#define PLUGIN_NAME "Buyzone Range"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "VEN"

// OPTIONS BELOW

// CVAR name and its default value
#define CVAR_NAME "bz_range"
#define CVAR_DEF "2"

// uncomment to disable automatic 32/64bit processor detection
// possible values is <0: 32bit | 1: 64bit>
//#define PROCESSOR_TYPE 0

// OPTIONS ABOVE

// mapzone player's private data offset
#define OFFSET_32BIT 235
#define OFFSET_64BIT 268

// offset's linux difference
#define OFFSET_LINUX_DIFF 5

// buyzone bit
#define BIT_BUYZONE (1<<0)

// determination of actual offsets
#if !defined PROCESSOR_TYPE // is automatic 32/64bit processor detection?
#if cellbits == 32 // is the size of a cell 32 bits?
// then considering processor as 32 bit
#define OFFSET OFFSET_32BIT
#else // in other case considering the size of a cell as 64 bits
// and then considering processor as 64 bit
#define OFFSET OFFSET_64BIT
#endif
#else // processor type is specified by PROCESSOR_TYPE define
#if PROCESSOR_TYPE == 0 // 32bit processor defined
#define OFFSET OFFSET_32BIT
#else // considering that defined 64bit processor
#define OFFSET OFFSET_64BIT
#endif
#endif

// get/set mapzone bits
#define CS_GET_USER_MAPZONES(%1) get_pdata_int(%1, OFFSET, OFFSET_LINUX_DIFF)
#define CS_SET_USER_MAPZONES(%1,%2) set_pdata_int(%1, OFFSET, %2, OFFSET_LINUX_DIFF)

// fake buyzone absmin and absmax
new Float:g_buyzone_min[3] = {-8192.0, -8192.0, -8192.0}
new Float:g_buyzone_max[3] = {-8191.0, -8191.0, -8191.0}

new g_buyzone
new g_pcvar

new bool:g_enabled
new g_bit

new bool:g_new_round
new g_maxplayers

#define MAX_PLAYERS 32
new bool:g_alive[MAX_PLAYERS + 1]

new g_msgid_icon
new g_icon_name[] = "buyzone"

#define ICON_R 0
#define ICON_G 160
#define ICON_B 0

public plugin_init() {
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

g_pcvar = register_cvar(CVAR_NAME, CVAR_DEF)

register_clcmd("buy", "menu_block")
register_clcmd("buyequip", "menu_block")
register_clcmd("fullupdate", "clcmd_fullupdate")

register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
register_event("ResetHUD", "event_player_alive", "be")
register_event("Health", "event_player_dead", "bd", "1=0")

register_forward(FM_PlayerPostThink, "forward_player_postthink")

g_msgid_icon = get_user_msgid("StatusIcon")
register_message(g_msgid_icon, "message_status_icon")

g_maxplayers = get_maxplayers()

g_buyzone = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_buyzone"))
dllfunc(DLLFunc_Spawn, g_buyzone)
engfunc(EngFunc_SetSize, g_buyzone, g_buyzone_min, g_buyzone_max)

update_state_vars()
}

public forward_player_postthink(id) {
if (g_alive[id] && g_enabled) {
switch (g_bit) {
case BIT_BUYZONE: dllfunc(DLLFunc_Touch, g_buyzone, id)
default: CS_SET_USER_MAPZONES(id, CS_GET_USER_MAPZONES(id) & ~BIT_BUYZONE)
}
}
}

public event_new_round() {
g_new_round = true
set_task(0.1, "task_unset_var")
update_state_vars()
}

public task_unset_var() {
g_new_round = false
}

public event_player_alive(id) {
g_alive[id] = true

if (g_new_round) {
if (g_enabled)
draw_buyzone_icon(id, g_bit)
}
else {
update_state_vars()
if (g_enabled) {
for (new i = 1; i <= g_maxplayers; ++i) {
if (g_alive[i])
draw_buyzone_icon(i, g_bit)
}
}
}
}

public event_player_dead(id) {
g_alive[id] = false
}

public client_disconnect(id) {
g_alive[id] = false
}

public message_status_icon(msg_id, msg_dest, id) {
if (!g_alive[id] || !g_enabled)
return PLUGIN_CONTINUE

new icon[8]
get_msg_arg_string(2, icon, 7)
if (equal(icon, g_icon_name))
return PLUGIN_HANDLED

return PLUGIN_CONTINUE
}

public menu_block(id) {
if (g_alive[id] && g_enabled && !g_bit)
return PLUGIN_HANDLED

return PLUGIN_CONTINUE
}

public clcmd_fullupdate() {
return PLUGIN_HANDLED
}

update_state_vars() {
new cvar_value = get_pcvar_num(g_pcvar)
g_enabled = true
switch (cvar_value) {
case 0: g_bit = 0
case 1: g_enabled = false
default: g_bit = BIT_BUYZONE
}
}

draw_buyzone_icon(id, draw) {
message_begin(MSG_ONE, g_msgid_icon, _, id)
write_byte(draw)
write_string(g_icon_name)
if (draw) {
write_byte(ICON_R)
write_byte(ICON_G)
write_byte(ICON_B)
}
message_end()
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя LeoBH
сообщение 21.2.2014, 21:10
Сообщение #2


Стаж: 12 лет

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

Мне тоже такое хотелось-бы сделать, для своего ZM-сервера (там закупка на B, и делал захват команды buy). Надоедает постоянно значек...
Искал такой плагин, но не нашел(
Но "заблочить иконку корзины в плагине buyzonerange", именно в самом плагине я не додумался!!!
Спасибо за идейку, вот несколько минут назад сделал! Лови.

Надо было просто убрать следующие строки:
Удаленный код
write_string(g_icon_name)
if (draw) {
write_byte(ICON_R)
write_byte(ICON_G)
write_byte(ICON_B)
}

Изменённый исходник:
Прикрепленный файл  buyzonerange.sma ( 4,53 килобайт ) Кол-во скачиваний: 13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: