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

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

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

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

Extra items

etkins
сообщение 27.1.2013, 21:11
Сообщение #1
Стаж: 17 лет

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

Помогите парни)) есть такой код )) хочу сделать так, чтобы можно было покупать экстра итемы в любом месте карты и в любое время, нажав допустим "V".

/
* Buy Menu Management 1.0beta
* Copyright © 2011 by Mr. Frost | Danakt
*
* Changelog
*
— Version: 0.1beta (Dec 26, 2012 MSK)
* First public beta-version.
*
— Version: 0.2beta (Dec 28, 2012 MSK)
* Сode amendments.
* Added the ability to add items to certain admin levels.
* When registering item with repeated name is added number after the name. (Item(1), Item(2) and so on).
* Some minor fixes
*
— Version: 1.0beta (Dec 29, 2012 MSK)
* Rewrite and optimization code
* Added ability to add console commands to the items (amx_bmm_additem)
* Registetion all items in file "bmm_items.ini"
* Some bugs fixes
* Increased usability of the plugin
*/
#pragma semicolon 1

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define PLUGIN "Buy Menu Management"
#define VERSION "1.0sbeta"
#define AUTHOR "Mr. Frost"

// If you use plugin "Money more than 16000", remove double slash below
// #define MONEY_UL 1
#if defined MONEY_UL
#include < money_ul >
#endif // MONEY_UL

#define FILE_NAME "bmm_items"
#define FILE_FORMAT "ini"

#define ADD_BMM 1
#define ADD_ZP 2
#define ADD_CMD 3

enum{
BMM_PISTOL = 1,
BMM_SHOTGUN,
BMM_SUBMACHINE,
BMM_RIFLE,
BMM_MACHINE ,
BMM_EQUIP,
BMM_UNCATEGORIZED
}

const ZP_TEAM_NO_ONE = 0;
const ZP_TEAM_ANY = 0;
const ZP_TEAM_ZOMBIE = ( 1<<0 );
const ZP_TEAM_HUMAN = ( 1<<1 );
const ZP_TEAM_NEMESIS = ( 1<<2 );
const ZP_TEAM_SURVIVOR = ( 1<<3 );

const BMM_TEAM_NO_ONE = 0;
const BMM_TEAM_ANY = 0;
const BMM_TEAM_ALL = ( 1<<1 );
const BMM_TEAM_T = ( 2<<4 );
const BMM_TEAM_CT = ( 2<<5 );

new titles[ 8 ][ ] = {"",
"BMM_PISTOL",
"BMM_SHOTGUN",
"BMM_SUBMACHINE",
"BMM_RIFLE",
"BMM_MACHINE",
"BMM_EQUIP",
"BMM_UNCATEGORIZED"
};

/* Words for remove from names of items */
new const g_toreplace[ ][ ] = {"\r", "\w", "[CSO] ", "[Rifle] ", "[Sn. Rifle] ", "[Sniper Rifle] ", "[Machinegun] ", "[Automat] ", "[Pistol] ", "[", "]"};

/* Some ZP-natives */
new const g_native_name[][] = {"zp_get_user_zombie", "zp_get_user_nemesis", "zp_get_user_survivor", "_get_user_survivor", "zp_get_user_first_zombie", "zp_get_user_last_zombie", "zp_get_user_last_human",
"zp_get_user_zombie_class", "zp_get_user_next_class", "zp_set_user_zombie_class", "zp_get_user_ammo_packs", "zp_set_user_ammo_packs", "zp_get_zombie_maxhealth", "zp_get_user_batteries",
"zp_set_user_batteries", "zp_get_user_nightvision", "zp_set_user_nightvision", "zp_infect_user", "zp_disinfect_user", "zp_make_user_nemesis", "zp_make_user_survivor", "zp_respawn_user",
"zp_force_buy_extra_item", "zp_override_user_model", "zp_has_round_started", "zp_is_nemesis_round", "zp_is_survivor_round", "zp_is_swarm_round", "zp_is_plague_round", "zp_get_zombie_count",
"zp_get_human_count", "zp_get_nemesis_count", "zp_get_survivor_count", "zp_register_zombie_class", "zp_get_extra_item_id", "zp_get_zombie_class_id", "zp_get_zombie_class_info"};

const PRIMARY_WEAPONS_BIT_SUM =
( 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 );
const PISTOLS_BIT_SUM = ( 1<<CSW_USP | 1<<CSW_GLOCK18 | 1<<CSW_DEAGLE | 1<<CSW_ELITE | 1<<CSW_FIVESEVEN | 1<<CSW_P228 );

new const default_wpn_cmds[ ][ ] = {"glock18", "usp", "p228", "deagle", "elite", "fiveseven", "m3", "xm1014", "mac10", "tmp",
"mp5navy", "ump45", "p90", "galil", "ak47", "famas", "scout", "m4a1", "aug", "sg550", "sg552", "awp", "g3sg1", "m249"};

new buymenu, submenu;
new g_mode, multiple, mult_min, mult_num;
new count = 0, g_submenu_type[ 33 ], g_weapons_num[ 8 ] = 0;
new g_edit_mode[ 33 ], g_edit_num[ 33 ], g_registred[ 128 ] = 0;
new data_name[ 128 ][ 64 ], data_cost[ 128 ], data_team[ 128 ], data_type[ 128 ], data_source[ 128 ], data_access[ 128 ], data_cmd[ 128 ][ 64 ], data_cmd_acc[ 128 ] = 0;
new bmm_item_selected, zp_item_selected, fwd_return;
new filename[ 256 ], bm_op[ 33 ], sm_op[ 33 ];

public plugin_init(){
register_plugin( PLUGIN, VERSION, AUTHOR );
register_dictionary( "bmm.txt" );

g_mode = register_cvar( "bmm_on", "1" );
multiple = register_cvar( "bmm_multiple", "1" );
mult_min = register_cvar( "bmm_multiple_min", "100" );
mult_num = register_cvar( "bmm_multiple_num", "1000" );

register_clcmd( "buy" , "clcmd_buy" );
register_clcmd( "autobuy" , "clcmd_buy" );
register_clcmd( "cl_autobuy" , "clcmd_buy" );
register_clcmd( "shop" , "clcmd_buy" );
register_clcmd( "buyequip" , "clcmd_buyequip" );
register_clcmd( "client_buy_open" , "clcmd_client_buy_open" );

register_clcmd( "amx_bmm_category" , "cat_menu", ADMIN_CVAR );
register_concmd( "amx_bmm_additem" , "add_item_console", ADMIN_CVAR );
register_concmd( "amx_bmm_clear" , "config_clear", ADMIN_CVAR );

get_configsdir( filename, 255 );
format( filename, 255, "%s/%s.%s", filename, FILE_NAME, FILE_FORMAT );
fclose( fopen( filename, "a+" ) );

bmm_item_selected = CreateMultiForward( "bmm_item_selected", ET_CONTINUE, FP_CELL, FP_CELL );
zp_item_selected = CreateMultiForward( "zp_extra_item_selected", ET_CONTINUE, FP_CELL, FP_CELL );

load_cmd_items();
}

public clcmd_buy( id ){
g_edit_num[ id ] = -1;
g_edit_mode[ id ] = 0;
buymenu_m( id );
return PLUGIN_HANDLED;
}

public clcmd_buyequip( id ){
g_edit_mode[ id ] = 0;
g_edit_num[ id ] = -1;
g_submenu_type[ id ] = 8;
submenu_m( id );
return PLUGIN_HANDLED;
}

public clcmd_client_buy_open( id ){
static msg_buyclose; if ( !msg_buyclose ) msg_buyclose = get_user_msgid( "BuyClose" );
message_begin( MSG_ONE, msg_buyclose, _, id ), message_end();
clcmd_buy( id );
}

public cat_menu( id, level, cid ){
if( !cmd_access( id, level, cid, 1 ) )
return PLUGIN_HANDLED;
g_edit_mode[ id ] = 1;
g_edit_num[ id ] = -1;
buymenu_m( id );
return PLUGIN_HANDLED;
}

public client_command(id){
new command[ 128 ];
read_argv( 0, command, 127 );

new pres=0;
for( new i = 0 ; i < sizeof default_wpn_cmds ; i++ ){
for( new j = 0 ; j < sizeof data_cmd ; j++ )
if( equal( default_wpn_cmds[ i ], data_cmd[ j ] ) )
pres++;
if( equal( command, default_wpn_cmds[ i ]) && pres == 0 )
return PLUGIN_HANDLED;
}

for( new i = 0 ; i < sizeof data_cmd ; i++ )
if( equali( command, data_cmd[ i ] ) ){
if( data_cmd_acc[ i ] == 0 ){
client_print(id, print_console, "Error");
return PLUGIN_HANDLED;
}else{
data_cmd_acc[ i ] = 0;
return PLUGIN_CONTINUE;
}
}

return PLUGIN_CONTINUE;
}

/*****************************************
Main Buy Menu
*****************************************/
public buymenu_m( id ){
if ( g_edit_mode[ id ] == 0 && ( get_user_team( id ) == 0 || get_user_team( id ) == 3 || !is_user_alive( id ) || !is_user_connected( id ) || !get_user_buyzone( id ) ) || get_pcvar_num( g_mode ) == 0 )
return PLUGIN_CONTINUE;
new title[ 256 ];
bm_op[ id ] = true;
if ( g_edit_num[ id ] != -1 ) format( title, 255, "\r%L:", id, "BMM_NEW_CAT" );
else if ( g_edit_mode[ id ] == 1 ) format( title, 255, "\r%L:", id, "BMM_CHANGE_CAT" );
else format( title, 255, "%L:", id, "BMM_BUYITEM" );


buymenu = menu_create( title, "buymenu_handler" );

for( new i = 1; i < 6; i++ ){
format( title, 255, "%s%L", ( g_weapons_num[ i ] > 0 || g_edit_num[ id ] != -1 )?( ( g_edit_mode[ id ] != 0 )?"\y":"\w" ):"\d", id, titles[ i ] );
new nums[ 2 ];
num_to_str( i, nums, 1 );
menu_additem( buymenu, title, nums );
}
menu_addblank( buymenu, 0 );
if ( g_edit_mode[ id ] == 0 && g_edit_num[ id ] == -1 ){
format( title, 255, "%L", id, "BMM_PRIMARY_AMMO" );
menu_additem( buymenu, title, "6" );
format( title, 255, "%L", id, "BMM_SECONDARY_AMMO" );
menu_additem( buymenu, title, "7" );
menu_addblank( buymenu, 0 );
}
format( title, 255, "%s%L", ( g_weapons_num[ BMM_EQUIP ] > 0 || g_edit_num[ id ] != -1 )?( ( g_edit_mode[ id ] != 0 )?"\y":"\w" ):"\d", id, "BMM_EQUIP" );
menu_additem( buymenu, title, "8" );

if ( g_weapons_num[ BMM_UNCATEGORIZED ] > 0 || g_edit_num[ id ] != -1 ){
format( title, 255, "%s%L", ( g_edit_mode[ id ] != 0 )?"\y":"\w", id, titles[ 7 ] );
menu_additem( buymenu, title, "9" );
}else menu_addblank( buymenu, 1 );

if ( g_edit_mode[ id ] != 0 )
for( new i = 1; i < 3; i++ )
menu_addblank( buymenu, 1 );

menu_addblank( buymenu, 0 );
format( title, 255, "%s%L", ( g_edit_mode[ id ] != 0 )?"\y":"\w", id, "BMM_EXIT" );
if ( g_edit_mode[ id ] == 0 ) menu_setprop( buymenu, MPROP_NUMBER_COLOR, "\w" );
menu_additem( buymenu, title, "MENU_EXIT" );

menu_setprop( buymenu, MPROP_PERPAGE, 0 );
menu_display( id, buymenu, 0 );
return PLUGIN_CONTINUE;
}

/* Handler Main Menu */

public buymenu_handler( id, buymenu, item ){
if ( g_edit_mode[ id ] == 0 && ( get_user_team( id ) == 0 || item == MENU_EXIT || !is_user_alive( id ) || !is_user_connected( id ) ) || ( !get_user_buyzone( id ) && g_edit_mode[ id ] == 0 ) || get_pcvar_num( g_mode ) == 0 ){
menu_destroy( buymenu );
bm_op[ id ] = false;
return PLUGIN_HANDLED;
}

new data[ 6 ], name[ 64 ];
new access, callback;
menu_item_getinfo( buymenu, item, access, data, charsmax( data ), name, charsmax( name ), callback );
new key = str_to_num( data );

if ( g_edit_num[ id ] != -1 ){
new oldtype = data_type[ g_edit_num[ id ] ];
for( new i = 1; i < 6; i++ )
if ( key == i ) data_type[ g_edit_num[ id ] ] = i;
switch( key ){
case 6: client_cmd( id, "buyammo1" );
case 7: client_cmd( id, "buyammo2" );
case 8: data_type[ g_edit_num[ id ] ] = BMM_EQUIP;
case 9: if ( g_weapons_num[ BMM_UNCATEGORIZED ] > 0 || g_edit_num[ id ] != -1 )
data_type[ g_edit_num[ id ] ] = BMM_UNCATEGORIZED;
}
g_weapons_num[ oldtype ]--;
g_weapons_num[ data_type[ g_edit_num[ id ] ] ]++;
g_submenu_type[ id ] = oldtype;

new readdata[ 128 ], line = 0, alr = 0, len,
wpname[ 64 ], wptype[ 8 ], wpsource[ 2 ], wpinf[ 128 ], wpcost[ 8 ], wpteam[ 16 ], wpaccess[ 32 ], wpcmd[ 64 ];
while( ( line = read_file( filename, line, readdata, 127, len ) ) ){
if ( !len || readdata[ 0 ] == ';' || readdata[ 0 ] == '/' ) continue;
if( data_source[ g_edit_num[ id ] ] != ADD_CMD ){
parse( readdata, wpname, 63, wptype, 8, wpsource, 1, wpcost, 8, wpteam, 16, wpaccess, 32 );
if ( equali( wpname, data_name[ g_edit_num[ id ] ] ) ){
format( wpinf, 127, "^"%s^" %d %d %d %d %d^r", data_name[ g_edit_num[ id ] ], data_type[ g_edit_num[ id ] ], data_source[ g_edit_num[ id ] ], data_cost[ g_edit_num[ id ] ], data_team[ g_edit_num[ id ] ], data_access[ g_edit_num[ id ] ] );
write_file( filename, wpinf, line-1 );
alr++;
}
}else{
parse( readdata, wpname, 63, wptype, 8, wpsource, 1, wpcost, 7, wpteam, 15, wpaccess, 31, wpcmd, 63 );
if ( equali( wpname, data_name[ g_edit_num[ id ] ] ) ){
format( wpinf, 127, "^"%s^" %d %d %d %d %d ^"%s^"^r", data_name[ g_edit_num[ id ] ], data_type[ g_edit_num[ id ] ], data_source[ g_edit_num[ id ] ], data_cost[ g_edit_num[ id ] ], data_team[ g_edit_num[ id ] ], data_access[ g_edit_num[ id ] ], data_cmd[ g_edit_num[ id ] ] );
write_file( filename, wpinf, line-1 );
alr++;
}
}
}
if ( alr == 0 ) write_file( filename, wpinf );

g_edit_num[ id ] = -1;
client_print( id, print_chat, "[BMM] %L", id, "BMM_CHANGED" );
}else{
for( new i = 1; i < 6; i++ )
if ( key == i ) g_submenu_type[ id ] = i;
switch( key ){
case 6: client_cmd( id, "buyammo1" );
case 7: client_cmd( id, "buyammo2" );
case 8: g_submenu_type[ id ] = BMM_EQUIP;
case 9: if ( g_weapons_num[ BMM_UNCATEGORIZED ] > 0 || g_edit_num[ id ] != -1 )
g_submenu_type[ id ] = BMM_UNCATEGORIZED;
}
}
if( key != 6 && key != 7 && key != 0 ) submenu_m( id );

if ( key != 0 && g_weapons_num[ g_submenu_type[ id ] ] == 0 && key != 6 && key != 7 ) buymenu_m( id );
else if ( key != 0 && key != 6 && key != 7 ) submenu_m( id );

return PLUGIN_CONTINUE;
}

/*****************************************
Items Buy Menu
*****************************************/
public submenu_m( id ){
if ( g_edit_mode[ id ] == 0 && ( get_user_team( id ) == 0 || get_user_team( id ) == 3 || !is_user_alive( id ) || !is_user_connected( id ) || !get_user_buyzone( id ) ) || get_pcvar_num( g_mode ) == 0 )
return PLUGIN_CONTINUE;

sm_op[ id ] = true;
new submenu_title[ 128 ];

for( new i = 1; i < 8; i++ ) if ( g_submenu_type[ id ] == i ){
if ( g_edit_mode[ id ] != 1 ){
format( submenu_title, 255, "%L %L", id, "BMM_BUY", id, titles[ i ] );
if ( i == BMM_PISTOL ){
new desc[ 32 ];
format( desc, 31, "^n(%L)", id, "BMM_SECONDARY" );
add( submenu_title, 255, desc );
}else if ( i != BMM_EQUIP && i != BMM_UNCATEGORIZED ){
new desc[ 32 ];
format( desc, 31, "^n(%L)", id, "BMM_PRIMARY" );
add( submenu_title, 255, desc );
}
new cost[ 32 ];
format( cost, 31, "\R$ %L", id, "BMM_COST" );
add( submenu_title, 255, cost );
}else format( submenu_title, 255, "%L", id, titles[ i ] );
}

if ( g_edit_mode[ id ] == 1 ) add( submenu_title, 255, "^n\rChange category" );

submenu = menu_create( submenu_title, "submenu_handler" );

new index[ 8 ], itemname[ 64 ];
new num = 1;
for( new i = 1; i <= count; i++ ){
if ( g_edit_mode[ id ] == 1 ){
if ( g_submenu_type[ id ] != data_type[ i ] )
continue;
formatex( itemname, 63, "\w%s", data_name[ i ] );
}else{
if( !data_name[ i ][ 0 ])
continue;
new team = data_team[ i ];
if ( team & BMM_TEAM_ALL || team & BMM_TEAM_ANY ) team = ( BMM_TEAM_T | BMM_TEAM_CT );
if ( ( ( get_user_team( id ) == 1 ) && !( team & BMM_TEAM_T ) ) || ( ( get_user_team( id ) == 2 ) && !( team & BMM_TEAM_CT ) ) || g_submenu_type[ id ] != data_type[ i ] ) continue;

new cost = data_cost[ i ], money;

#if defined MONEY_UL
money = cs_get_user_money_ul( id );
#else
money = get_user_money( id );
#endif

if ( get_pcvar_num( multiple ) && data_cost[ i ] < get_pcvar_num( mult_min ) ) cost *= get_pcvar_num( mult_num );
#if !defined MONEY_UL
if ( cost > 16000 ) cost = 16000;
#endif
if ( data_access[ i ] == ADMIN_ALL || get_user_flags( id ) & data_access[ i ] ){
if ( cost == 0 )
formatex( itemname, 63, "\w%s \R\y%L", data_name[ i ], id, "BMM_FREE" );
else{
if ( money-cost > -1 ){
formatex( itemname, 63, "\w%s \R\y$%d", data_name[ i ], cost );
}else
formatex( itemname, 63, "\d%s \R\r$%d", data_name[ i ], cost );
}
}else{
formatex( itemname, 63, "\d%s\R\r%L", data_name[ i ], id, "BMM_NOACCESS" );
}
}
num_to_str( num++, index, 7 );
if ( g_edit_mode[ id ] == 0 ) menu_setprop( submenu, MPROP_NUMBER_COLOR, "\w" );
menu_additem( submenu, itemname, index );
}

formatex( itemname, 63, "%L", id, "BMM_BACK" );
menu_setprop( submenu, MPROP_BACKNAME, itemname );
formatex( itemname, 63, "%L", id, "BMM_NEXT" );
menu_setprop( submenu, MPROP_NEXTNAME, itemname );

menu_setprop( submenu, MPROP_EXIT, MEXIT_ALL );

menu_display( id, submenu, 0 );
return PLUGIN_CONTINUE;
}

/* Handler Items Menu */

public submenu_handler( id, submenu, item ){
if ( g_edit_mode[ id ] == 0 && ( get_user_team( id ) == 0 || item == MENU_EXIT || !is_user_alive( id ) || !is_user_connected( id ) ) || ( !get_user_buyzone( id ) && g_edit_mode[ id ] == 0 ) || get_pcvar_num( g_mode ) == 0 ){
menu_destroy( submenu );
sm_op[ id ] = false;
return PLUGIN_HANDLED;
}

new data[ 6 ], name[ 64 ];
new access, callback;
menu_item_getinfo( submenu, item, access, data, charsmax( data ), name, charsmax( name ), callback );
new key = str_to_num( data );

new num = 1;
for( new i = 1; i <= count; i++ ){
if ( g_edit_mode[ id ] == 1 ){
if ( g_submenu_type[ id ] != data_type[ i ] ) continue;
if ( key == num ){
g_edit_num[ id ] = i;
buymenu_m( id );
}
}else{
if( !data_name[ i ][ 0 ])
continue;
new team = data_team[ i ];
if ( team & BMM_TEAM_ALL || team & BMM_TEAM_ANY ) team = ( BMM_TEAM_T | BMM_TEAM_CT );
if ( ( ( get_user_team( id ) == 1 ) && !( team & BMM_TEAM_T ) ) || ( ( get_user_team( id ) == 2 ) && !( team & BMM_TEAM_CT ) ) || g_submenu_type[ id ] != data_type[ i ] ) continue;
if ( key == num ){
if ( data_access[ i ] == ADMIN_ALL || get_user_flags( id ) & data_access[ i ] ){
new cost = data_cost[ i ], money;

#if defined MONEY_UL
money = cs_get_user_money_ul( id );
#else
money = get_user_money( id );
#endif

if ( get_pcvar_num( multiple ) && data_cost[ i ] < get_pcvar_num( mult_min ) && data_source[ i ] == ADD_ZP ) cost *= get_pcvar_num( mult_num );
#if !defined MONEY_UL
if ( cost > 16000 ) cost = 16000;
#endif
if ( money-cost > -1 ){
#if defined MONEY_UL
money = cs_set_user_money_ul( id, money-cost );
#else
money = set_user_money( id, money-cost );
#endif
if ( data_type[ i ] == 1 ) drop_weapons( id, 2 );
else if ( data_type[ i ] != 6 && data_type[ i ] != 7 ) drop_weapons( id, 1 );

if ( data_source[ i ] == ADD_ZP )
ExecuteForward( zp_item_selected, fwd_return, id, i );
else if ( data_source[ i ] == ADD_BMM )
ExecuteForward( bmm_item_selected, fwd_return, id, i );
else if ( data_source[ i ] == ADD_CMD ){
data_cmd_acc[ i ] = 1;
client_cmd( id, "%s", data_cmd[ i ] );
}

menu_destroy( submenu );
}else submenu_m( id );
}else{
client_print(id, print_chat, "[BMM] %L", id, "BMM_NOACCESS_MSG");
submenu_m( id );
}
}
}
num++;
}
return PLUGIN_CONTINUE;
}


/*****************************************
Register BMM items in Buy Menu
*****************************************/
public add_item_bmm( plugin, params ){
new name[ 64 ], temp_name[ 64 ];
get_string( 1, name, 63 );
bmm_name_clear( name, 63 );
temp_name=name;
for( new i = 1; i <= count; i++ )
if ( equali( name, data_name[ i ] ) ){
g_registred[ count ]++;
format( name, 63, "%s(%d)", temp_name, g_registred[ count ] );
}

count++;

new readdata[ 128 ], line = 0, alr = 0, len,
wpname[ 64 ], wptype[ 8 ], wpsource[ 2 ], wpinf[ 128 ], wpcost[ 8 ], wpteam[ 16 ], wpaccess[ 32 ];
while( ( line = read_file( filename, line, readdata, 127, len ) ) ){
parse( readdata, wpname, 63, wptype, 8, wpsource, 1, wpcost, 8, wpteam, 16, wpaccess, 32 );
if ( !len || readdata[ 0 ] == ';' || readdata[ 0 ] == '/' ) continue;
if ( equali( wpname, name ) ){
data_type[ count ] = str_to_num( wptype );
data_cost[ count ] = str_to_num( wpcost );
data_team[ count ] = str_to_num( wpteam );
data_access[ count ] = str_to_num( wpaccess );
alr++;
}
}

data_name[ count ] = name;
data_source[ count ] = ADD_BMM;
bmm_name_clear( data_name[ count ], 63 );

if ( alr == 0 ){
if ( !get_param( 5 ) ) data_access[ count ] = ADMIN_ALL;
else data_access[ count ] = get_param( 5 );
data_cost[ count ] = get_param( 2 );
data_team[ count ] = get_param( 3 );
if ( !get_param( 4 ) ) data_type[ count ] = BMM_UNCATEGORIZED;
else data_type[ count ] = get_param( 4 );
format( wpinf, 127, "^"%s^" %d %d %d %d %d^r", data_name[ count ], data_type[ count ], data_source[ count ], data_cost[ count ], data_team[ count ], data_access[ count ] );
write_file( filename, wpinf );
}

server_print("[BMM] %d. Register BMM item ^"%s^"", count, data_name[ count ] );
g_weapons_num[ data_type[ count ] ]++;
return count;
}


/*****************************************
Register ZP Extra items in Buy Menu
*****************************************/
public add_item_zp( plugin, params ){
new name[ 64 ], temp_name[ 64 ];
get_string( 1, name, 63 );
bmm_name_clear( name, 63 );
temp_name=name;
for( new i = 1; i <= count; i++ )
if ( equali( name, data_name[ i ] ) ){
g_registred[ count ]++;
format( name, 63, "%s(%d)", temp_name, g_registred[ count ] );
}

count++;

new readdata[ 128 ], line = 0, alr = 0, len,
wpname[ 64 ], wptype[ 8 ], wpsource[ 2 ], wpinf[ 128 ], wpcost[ 8 ], wpteam[ 16 ], wpaccess[ 32 ];
while( ( line = read_file( filename, line, readdata, 127, len ) ) ){
parse( readdata, wpname, 63, wptype, 8, wpsource, 1, wpcost, 8, wpteam, 16, wpaccess, 32 );
if( !len || readdata[ 0 ] == ';' || readdata[ 0 ] == '/' ) continue;
if( equali( wpname, name ) ){
data_type[ count ] = str_to_num( wptype );
data_cost[ count ] = str_to_num( wpcost );
data_team[ count ] = str_to_num( wpteam );
data_access[ count ] = str_to_num( wpaccess );
alr++;
}
}
data_name[ count ] = name;
data_source[ count ] = ADD_ZP;
bmm_name_clear( data_name[ count ], 63 );

if ( alr == 0 ){
data_type[ count ] = BMM_UNCATEGORIZED;
data_access[ count ] = ADMIN_ALL;
data_cost[ count ] = get_param( 2 );
data_team[ count ] = get_param( 3 );
format( wpinf, 127, "^"%s^" %d %d %d %d %d^r", data_name[ count ], data_type[ count ], data_source[ count ], data_cost[ count ], data_team[ count ], data_access[ count ] );
write_file( filename, wpinf);
}
server_print("[BMM] %d. Register ZP item ^"%s^"", count, data_name[ count ] );
g_weapons_num[ data_type[ count ] ]++;
return count;
}

/*****************************************
Register clcmd's in Buy Menu
*****************************************/
public add_item_console( id, level, cid ){
if( !cmd_access( id, level, cid, 1 ) )
return PLUGIN_HANDLED;

if(read_argc()<6){
client_print(id, print_console, "Usage: amx_bmm_additem <item name> <cost> <team> <flags (^"^" or ^"0^" if you want to allow for all)> <command>");
client_print(id, print_console, "Sample: amx_bmm_additem ^"AK47^" 2500 CT bcd ^"ak47^"");
return PLUGIN_HANDLED;
}
new name[ 64 ], wpinf[ 128 ], temp_name[ 64 ];
read_argv( 1, name, 63 );
remove_quotes( name );
bmm_name_clear( name, 63 );
temp_name=name;
for( new i = 1; i <= count; i++ )
if ( equali( name, data_name[ i ] ) ){
g_registred[ count ]++;
format( name, 63, "%s(%d)", temp_name, g_registred[ count ] );
}
count++;

new cmd[ 64 ], cost[ 8 ], team[ 32 ], access[ 32 ];
read_argv( 2, cost, 7 ), read_argv( 3, team, 31 ), read_argv( 4, access, 31 ), read_argv( 5, cmd, 63 );
remove_quotes( cost ), remove_quotes( team ), remove_quotes( access ), remove_quotes( cmd );

data_type[ count ] = BMM_UNCATEGORIZED;
data_cmd[ count ] = cmd;

data_access[ count ] = read_flags( access );

data_source[ count ] = ADD_CMD;
data_name[ count ] = name;
data_cost[ count ] = str_to_num( cost );

if( containi(team, "CT") != -1 )
data_team[ count ] = BMM_TEAM_CT;
else if( containi(team, "T") != -1 )
data_team[ count ] = BMM_TEAM_T;
if( containi(team, "ALL") != -1 || containi(team, "ANY") != -1 )
data_team[ count ] = ( BMM_TEAM_CT | BMM_TEAM_T );

format( wpinf, 127, "^"%s^" %d 3 %d %d %d ^"%s^"^r", data_name[ count ], data_type[ count ], data_cost[ count ], data_team[ count ], data_access[ count ], data_cmd[ count ] );
write_file( filename, wpinf );

bmm_name_clear( data_name[ count ], 63 );
g_weapons_num[ data_type[ count ] ]++;

server_print("[BMM] %d. Register CMD item ^"%s^"", count, data_name[ count ] );
return PLUGIN_HANDLED;
}

public load_cmd_items(){
new readdata[ 128 ], line = 0, len,
wpname[ 64 ], wptype[ 8 ], wpsource[ 2 ], wpcost[ 8 ], wpteam[ 16 ], wpaccess[ 32 ], wpcmd[ 64 ];
while( ( line = read_file( filename, line, readdata, 127, len ) ) ){
parse( readdata, wpname, 63, wptype, 8, wpsource, 1, wpcost, 8, wpteam, 16, wpaccess, 32, wpcmd, 63 );
if( !len || readdata[ 0 ] == ';' || readdata[ 0 ] == '/' || str_to_num( wpsource ) != ADD_CMD ) continue;
count++;
data_name[ count ] = wpname;
data_type[ count ] = str_to_num( wptype );
data_source[ count ] = ADD_CMD;
data_cost[ count ] = str_to_num( wpcost );
data_team[ count ] = str_to_num( wpteam );
data_access[ count ] = str_to_num( wpaccess );
data_cmd[ count ] = wpcmd;

server_print("[BMM] %d. Register CMD item ^"%s^"", count, data_name[ count ] );

g_weapons_num[ data_type[ count ] ]++;
}
}

/*****************************************
Clearing config
*****************************************/
public config_clear( id, level, cid ){
if( !cmd_access( id, level, cid, 1 ) ){
return PLUGIN_HANDLED;
}

new readdata[ 128 ], line = 0, len,
wpname[ 64 ], wnum = 0;
while( ( line = read_file( filename, line, readdata, 127, len ) ) ){
new alr=0;
parse( readdata, wpname, 63 );
for( new i = 1; i <= count; i++ )
if( equali( wpname, data_name[ i ] ) ){
alr++;
wnum++;
}
if( alr == 0 )
write_file( filename, "", line-1 );
}
console_print( id, "%s", id, "BMM_CLEARED" );
return PLUGIN_HANDLED;
}
/*****************************************/

stock bmm_name_clear( name[ ], len ){
for( new i = 0 ; i < sizeof g_toreplace ; i++ )
replace_all( name, len, g_toreplace[ i ], "" );
if ( equal( name[ 0 ], " " ) ) replace( name, 63, " ", "" );
return name;
}
stock set_user_money( id, money, flash = 1 ){
set_pdata_int( id, 115, money, 5 );
static Money;
if ( Money || ( Money = get_user_msgid( "Money" ) ) ){
emessage_begin( MSG_ONE_UNRELIABLE, Money, _, id );
ewrite_long( money );
ewrite_byte( flash?1:0 );
emessage_end();
}
return 1;
}
stock get_user_buyzone( id ) return ( get_pdata_int( id, 235, 5 ) & ( 1<<0 ) );
stock get_user_money( id )
return get_pdata_int( id, 115, 5 );
stock drop_weapons( id, dropwhat ){
static weapons[ 32 ], i, weaponid, num = 0;
get_user_weapons( id, weapons, num );
for( i = 0; i < num; i++ ){
weaponid = weapons[ i ];
if ( ( dropwhat == 1 && ( ( 1<<weaponid ) & PRIMARY_WEAPONS_BIT_SUM ) ) || ( dropwhat == 2 && ( ( 1<<weaponid ) & PISTOLS_BIT_SUM ) ) ){
static wname[ 32 ];
get_weaponname( weaponid, wname, sizeof wname-1 );
engclient_cmd( id, "drop", wname );
}
}
}

public plugin_natives(){
register_native( "zp_register_extra_item", "add_item_zp" );
register_native( "bmm_add_item", "add_item_bmm" );

/* Grounding ZP natives */
for( new i = 0 ; i < sizeof(g_native_name) ; i++ )
register_native( g_native_name[ i ], "zp_return_false" );
}

public zp_return_false() return false;
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
etkins
сообщение 28.1.2013, 13:39
Сообщение #2
Стаж: 17 лет

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

help :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SiziF
сообщение 28.1.2013, 13:51
Сообщение #3


Стаж: 15 лет

Сообщений: 1042
Благодарностей: 133
Полезность: 18

Вобще если ты про зм,то они и покупаются в любом месте...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
etkins
сообщение 28.1.2013, 14:10
Сообщение #4
Стаж: 17 лет

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

Цитата(SiziF @ 28.1.2013, 18:51) *
Вобще если ты про зм,то они и покупаются в любом месте...

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