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

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

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

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

Weaponmenu под Vipmenu

, Как переделать его под vipmenu?
Статус пользователя zBong
сообщение 14.12.2019, 21:22
Сообщение #1
Стаж: 6 лет 5 месяцев

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

Всем доброго времени суток друзья, помогите пожалуйста, мне нужно из weaponmenu сделать /vipmenu, чтобы оно само открывалось каждый раунд.
Скачал его в просторах интернета, поставил себе на сервер и не доволен что только у админов сие чудо.



//Для проверки слотов.
#define PRIMARY_WEAPONS ((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))
#define SECONDARY_WEAPONS ((1<<CSW_P228) | (1<<CSW_ELITE) | (1<<CSW_FIVESEVEN) | (1<<CSW_USP) | (1<<CSW_GLOCK18) | (1<<CSW_DEAGLE))

#define EV_INT_WEAPONKEY EV_INT_impulse
const MENU_LENGTH = 512;
new Sbeam;
new CHATTAG[
= "!t[!gОружейка!t]";

enum _:STRWEAPON {
WEAPON_RBLOCK,
WEAPON_COST,
WEAP_PRIMARY,
WEAP_ID,
WEAP_CSW,
WEAP_TEXT[14],
WEAP_NAME[20],
WEAP_CLIP,
WEAP_AMMO,
Float:WEAP_DAMAGE,
WEAP_OLDMODELS[64],
WEAP_V[64],
WEAP_P[64],
WEAP_W[64]
}

new gArrWeapon[][STRWEAPON] = {

{ 2,0,1, 455,CSW_AK47, "ak47" ,"weapon_ak47" , 30,90, 1.5 ,"models/w_ak47.mdl" ,"models/galaxy/v_ak47.mdl" ,"models/galaxy/p_ak47.mdl" ,"models/galaxy/w_ak47.mdl" },
{ 2,0,1, 456,CSW_M4A1, "m4a1" ,"weapon_m4a1" , 30,90, 1.5 ,"models/w_m4a1.mdl" ,"models/galaxy/v_m4a1.mdl" ,"models/galaxy/p_m4a1.mdl" ,"models/galaxy/w_m4a1.mdl" },
{ 2,0,1, 454,CSW_AWP, "awp" ,"weapon_awp" , 10,30, 1.5 ,"models/w_awp.mdl" ,"models/galaxy/v_awp.mdl" ,"models/galaxy/p_awp.mdl" ,"models/galaxy/w_awp.mdl" },
{ 2,0,0, 457,CSW_DEAGLE,"deagle" ,"weapon_deagle", 7,35, 1.5 ,"models/w_deagle.mdl" ,"models/galaxy/v_deagle.mdl" ,"models/galaxy/p_deagle.mdl" ,"models/galaxy/w_deagle.mdl" }
}
new g_has_weapon[sizeof gArrWeapon][33];
//Квары
new cvar_admin_flag;

new gMapArr[][] = {
"$2000$_lego",
"108_ak_m4",
"123_aim",
"1hp",
"1hp_2",
"2000",
"20hp",
"2pro_awp",
"35hp-_-",
"35hp_2",
"35hp_2_winter",
"aim_ak-47",
"awp4one",
"awp_india"
}
new bool:gBlock = false;
new gRound = 0;

public plugin_precache() {
Sbeam = engfunc(EngFunc_PrecacheModel, "sprites/zbeam4.spr")
for(new weap=0;weap<sizeof(gArrWeapon);weap++) {
precache_model(gArrWeapon[weap][WEAP_V]);
precache_model(gArrWeapon[weap][WEAP_P]);
precache_model(gArrWeapon[weap][WEAP_W]);
}
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);

new MapName[32]
get_mapname(MapName,31)
for(new i=0;i<sizeof(gMapArr);i++) {
if(equali(MapName,gMapArr[i])) {
gBlock = true;
}
}

register_forward(FM_SetModel, "fw_SetModel");

for(new weap=0;weap<sizeof(gArrWeapon);weap++) {
RegisterHam(Ham_Item_Deploy, gArrWeapon[weap][WEAP_NAME], "Item_Deploy_Post", 1);
RegisterHam(Ham_Weapon_PrimaryAttack ,gArrWeapon[weap][WEAP_NAME],"fw_Primary_Attack")
RegisterHam(Ham_Item_AddToPlayer, gArrWeapon[weap][WEAP_NAME], "fw_AddToPlayer")
}
RegisterHam(Ham_TakeDamage,"player","TakeDamage",0)
register_menu("MenuId", 1023, "MenuFunc");
RegisterHam(Ham_Touch, "weaponbox", "blockweapon");
register_event("HLTV", "NewRound", "a", "1=0", "2=0")

register_clcmd("weaponmenu","weaponmenu");

//Квары
cvar_admin_flag = register_cvar("weaponmenu_access_flag","b"); //Флаг доступа к меню.
}

public NewRound() {
gRound++;
}

enum _:TOTAL_TEAMS {//Команда игрока.
TEAM_NULL,
TEAM_T,
TEAM_CT,
TEAM_SPEC
};
stock Player_GetTeam(id) { //Проверяем команду игрока.
return (pev_valid(id) != 2) ? 0 : get_pdata_int(id, 114,5);
}
public client_putinserver(id) {
for(new i=0;i<sizeof(gArrWeapon);i++) {
g_has_weapon[i][id] = false;
}
}
public weaponmenu(id) {
static menu[512], len;
len = 0;

if(!(get_user_flags(id) & get_admin_flag())) {
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "%s !tУ вас недостаточно прав.", CHATTAG);
return PLUGIN_HANDLED;
}

if(gBlock) {
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "%s !tНа этой карте меню не работает.", CHATTAG);
return PLUGIN_HANDLED;
}

if(gRound < 3) {
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "%s !tМожно брать оружия только с третьего раунда.", CHATTAG);
return PLUGIN_HANDLED;
}

len = formatex(menu[len], charsmax(menu) - len, "\rОружейка\d:^n^n");

len += formatex(menu[len], charsmax(menu) - len, "\d[\r2\d] \yГалактическое \w[\rАК47\w]^n");
len += formatex(menu[len], charsmax(menu) - len, "\d[\r3\d] \yГалактическое \w[\rM4A1\w]^n");
len += formatex(menu[len], charsmax(menu) - len, "\d[\r1\d] \yГалактическое \w[\rAWP\w]^n");
len += formatex(menu[len], charsmax(menu) - len, "\d[\r4\d] \yГалактическое \w[\rДигл\w]^n");

len += formatex(menu[len], charsmax(menu) - len, "^n\d[\r0\d] \yВыход" );

new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4
show_menu(id, keys, menu, -1, "MenuId");
return PLUGIN_HANDLED;
}
public MenuFunc(id,key) {

if(key == 9)
return PLUGIN_HANDLED;

if(!(get_user_flags(id) & get_admin_flag())) {
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "%s !tУ вас недостаточно прав.", CHATTAG);
return PLUGIN_HANDLED;
}

if(!is_user_alive(id)) {
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "%s !tВы должны быть живы что бы взять оружие.", CHATTAG);
return PLUGIN_HANDLED;
}

if(gArrWeapon[key][WEAP_PRIMARY] > 0) drop_primary(id);
else drop_secondary(id);

g_has_weapon[key][id] = true;
fm_give_item(id,key);
new name[64];
get_user_name(id,name,charsmax(name));
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "%s !g%s !tвзял галактический !g%s!t.", CHATTAG,name,gArrWeapon[key][WEAP_TEXT]);

return PLUGIN_HANDLED;
}

public TakeDamage(victim, inflictor, attacker, Float:damage){

if(!is_user_connected(attacker) || victim == attacker || !victim)
return;

new iWeaponUsed = get_user_weapon( attacker ,_,_)

for(new iweap = 0;iweap<sizeof(gArrWeapon);iweap++) {
if(iWeaponUsed == gArrWeapon[iweap][WEAP_CSW]) {
if(g_has_weapon[iweap][attacker]) {
SetHamParamFloat(4, damage * gArrWeapon[iweap][WEAP_DAMAGE])
break;
}
}
}
}
new gTimeBlockMess[33];
public blockweapon(weapon,id) {
if(!is_valid_ent(weapon) || !is_user_connected(id))
return HAM_IGNORED;

for(new iweap = 0;iweap<sizeof(gArrWeapon);iweap++) {
if(entity_get_int(weapon, EV_INT_WEAPONKEY) == gArrWeapon[iweap][WEAP_ID]) {
if(!(get_user_flags(id) & get_admin_flag())) {
if(gTimeBlockMess[id] < get_systime()) {
gTimeBlockMess[id] = get_systime();
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "%s !tТолько !gAdmin!t-игрок может поднять это оружие!", CHATTAG);
}
return HAM_SUPERCEDE; //Блокируем.
}
}
}
return HAM_IGNORED;
}
public fw_AddToPlayer(ent, id) { //Ловим косание с оружием.
if(!is_user_alive(id))
return HAM_IGNORED;

new weapon = cs_get_weapon_id(ent);
for(new iweap = 0;iweap<sizeof(gArrWeapon);iweap++) {
if(weapon == gArrWeapon[iweap][WEAP_CSW]) {
if(entity_get_int(ent, EV_INT_WEAPONKEY) == gArrWeapon[iweap][WEAP_ID]) {
g_has_weapon[iweap][id] = true;
entity_set_int(ent, EV_INT_WEAPONKEY, 0);
}
}
}
return HAM_IGNORED;
}

stock drop_primary(id) {
new weapons[ 32 ], num;
get_user_weapons( id, weapons, num );
for( new i = 0; i < num; i++ ) {
if( PRIMARY_WEAPONS & (1<<weapons[ i ]) ) {
static wname[ 32 ];
get_weaponname( weapons[ i ], wname, sizeof wname - 1 );
engclient_cmd( id, "drop", wname );
}
}
}
stock drop_secondary(id) {
new weapons[ 32 ], num;
get_user_weapons( id, weapons, num );
for( new i = 0; i < num; i++ ) {
if( SECONDARY_WEAPONS & (1<<weapons[ i ]) ) {
static wname[ 32 ];
get_weaponname( weapons[ i ], wname, sizeof wname - 1 );
engclient_cmd( id, "drop", wname );
}
}
}
stock fm_give_item(index, num) {

new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, gArrWeapon[num][WEAP_NAME]))
if (!pev_valid(ent))return 0;

new Float:origin[3];
pev(index, pev_origin, origin);
set_pev(ent, pev_origin, origin);
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, ent);

new save = pev(ent, pev_solid);
dllfunc(DLLFunc_Touch, ent, index);

new wEnt = get_weapon_ent(index, gArrWeapon[num][WEAP_CSW]);

if(pev_valid(wEnt)) {
cs_set_weapon_ammo(wEnt, gArrWeapon[num][WEAP_CLIP])
cs_set_user_bpammo (index, gArrWeapon[num][WEAP_CSW], gArrWeapon[num][WEAP_AMMO])
}

if(pev(ent, pev_solid) != save)return ent;
engfunc(EngFunc_RemoveEntity, ent);
return -1;
}
stock get_weapon_ent(id,wpnid=0,wpnName[]="") {
static newName[32]
if(wpnid) get_weaponname(wpnid,newName,31)
else formatex(newName,31,"%s",wpnName)
if(!equal(newName,"weapon_",7))
format(newName,31,"weapon_%s",newName)

new ent
while((ent = engfunc(EngFunc_FindEntityByString,ent,"classname",newName)) && pev(ent,pev_owner) != id) {}

return ent
}
public fw_SetModel(entity, model[]) {
if(!is_valid_ent(entity))
return FMRES_IGNORED;

static szClassName[33];
entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName));

if(!equal(szClassName, "weaponbox"))
return FMRES_IGNORED;

static iOwner;
iOwner = entity_get_edict(entity, EV_ENT_owner);
static iweaponID;

for(new iweap = 0;iweap<sizeof(gArrWeapon);iweap++) {
if(equal(model, gArrWeapon[iweap][WEAP_OLDMODELS])) {
iweaponID = find_ent_by_owner(-1, gArrWeapon[iweap][WEAP_NAME], entity);
if(!is_valid_ent(iweaponID))
return FMRES_IGNORED;

if(g_has_weapon[iweap][iOwner]) {
g_has_weapon[iweap][iOwner] = false;
entity_set_int(iweaponID, EV_INT_WEAPONKEY, gArrWeapon[iweap][WEAP_ID]);
entity_set_int(entity, EV_INT_WEAPONKEY, gArrWeapon[iweap][WEAP_ID]);
entity_set_model(entity, gArrWeapon[iweap][WEAP_W]);
return FMRES_SUPERCEDE;
}
}
}
return FMRES_IGNORED;
}
public Item_Deploy_Post(ent) {
const XO_WEAPON = 4
const m_pPlayer = 41

new id = get_pdata_cbase( ent, m_pPlayer, XO_WEAPON );
replace_weapon_models(id);
}
replace_weapon_models(id) {
new weapon = get_pdata_int(get_pdata_cbase(id, 373, 5), 43, 4)
for(new iweap = 0;iweap<sizeof(gArrWeapon);iweap++) {
if(weapon == gArrWeapon[iweap][WEAP_CSW]) {
if(g_has_weapon[iweap][id]) {
set_pev(id, pev_viewmodel2, gArrWeapon[iweap][WEAP_V]);
set_pev(id, pev_weaponmodel2, gArrWeapon[iweap][WEAP_P]);
}
}
}
}
public get_admin_flag() {
new flags[24]
get_pcvar_string(cvar_admin_flag, flags, 23)
return(read_flags(flags))
}

public fw_Primary_Attack(weaponId) {
new id = pev(weaponId,pev_owner)

new weapon = get_pdata_int(get_pdata_cbase(id, 373, 5), 43, 4)
for(new iweap = 0;iweap<sizeof(gArrWeapon);iweap++) {
if(weapon == gArrWeapon[iweap][WEAP_CSW]) {
if(g_has_weapon[iweap][id]) {


new Float:ptStart[3];
new Float:vViewOfs[3];
new Float:fAngleStart[3];
new Float:fAngleEnd[3];
new Float:fPunchAngle[3];
pev(id, pev_origin, ptStart);
pev(id, pev_view_ofs, vViewOfs);
xs_vec_add(ptStart, vViewOfs, ptStart);
pev(id, pev_v_angle, fAngleStart);
pev(id, pev_v_angle, fAngleEnd);
pev(id, pev_punchangle, fPunchAngle);
xs_vec_add(fAngleEnd, fPunchAngle, fAngleStart);
xs_vec_add(fAngleStart, fPunchAngle, fAngleEnd);
engfunc(EngFunc_MakeVectors, fAngleStart);
engfunc(EngFunc_MakeVectors, fAngleEnd);
global_get(glb_v_forward, fAngleStart);
global_get(glb_v_forward, fAngleEnd);
xs_vec_mul_scalar(fAngleStart, 20.00, fAngleStart);
xs_vec_mul_scalar(fAngleEnd, 9999.00, fAngleEnd);
xs_vec_add(fAngleStart, ptStart, fAngleStart);
xs_vec_add(fAngleEnd, ptStart, fAngleEnd);
new pTrace = create_tr2();
engfunc(EngFunc_TraceLine, ptStart, fAngleEnd, 0, id, pTrace);
get_tr2(pTrace, TR_vecEndPos, fAngleEnd);
free_tr2(pTrace);
_Uf_ID_34(fAngleStart, fAngleEnd,Sbeam , 0, 1, 1, 5, 0, 222, 202, 22, 100, 30);
}
}
}
}
_Uf_ID_34(Float:start[3], Float:end[3], iSprite, startFrame, frameRate, life, width, noise, red, green, blue, alpha, speed) {
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)//, 372, 0);
write_byte(0);
engfunc(EngFunc_WriteCoord, start);
engfunc(EngFunc_WriteCoord, start[1]);
engfunc(EngFunc_WriteCoord, start[2]);
engfunc(EngFunc_WriteCoord, end);
engfunc(EngFunc_WriteCoord, end[1]);
engfunc(EngFunc_WriteCoord, end[2]);
write_short(iSprite);
write_byte(startFrame);
write_byte(frameRate);
write_byte(life);
write_byte(width);
write_byte(noise);
write_byte(red);
write_byte(green);
write_byte(blue);
write_byte(alpha);
write_byte(speed);
message_end();
return 0;
}]



Прикрепленные файлы:
Прикрепленный файл  weaponmenuADMIN.sma ( 13,73 килобайт ) Кол-во скачиваний: 39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя energydance
сообщение 15.12.2019, 10:20
Сообщение #2


Стаж: 10 лет

Сообщений: 2809
Благодарностей: 740
Полезность: 213

zBong,
ну а тут не пробовал менять флаг?
Код
    
//Квары
    cvar_admin_flag = register_cvar("weaponmenu_access_flag","b"); //Флаг доступа к меню.

и тут команда вызова

Код
    register_clcmd("weaponmenu","weaponmenu");


Отредактировал: energydance, - 15.12.2019, 10:21


Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя zBong
сообщение 15.12.2019, 13:14
Сообщение #3
Стаж: 6 лет 5 месяцев

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

energydance, Флаг то я поменял, а вот команды надо поменять weaponmenu на /vipmenu, менял вот так register_clcmd("weaponmenu","weaponmenu"); на register_clcmd("vipmenu","/vipmenu"); не выходит менюшка на сервере
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя energydance
сообщение 15.12.2019, 13:46
Сообщение #4


Стаж: 10 лет

Сообщений: 2809
Благодарностей: 740
Полезность: 213

zBong, лол что?
register_clcmd("say /vipmenu","weaponmenu"); вот так вообщем то правильнее будет


Press enter to exit ...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя zBong
сообщение 15.12.2019, 15:16
Сообщение #5
Стаж: 6 лет 5 месяцев

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

Цитата(energydance @ 15.12.2019, 13:46) *
zBong, лол что?
register_clcmd("say /vipmenu","weaponmenu"); вот так вообщем то правильнее будет

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