Русское сообщество по скриптингу

Заменяются все модели  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Заменяются все модели

Сообщение Husen » 08 май 2019, 19:13

Такая проблема.
Когда выбираю оружие из меню , то оно полностью заменяется .
т.е. все оружие которое я подбираю и покупаю такого типа.
Я хотел сделать такие меню для вип и админ но если взял ,например , калаш из випки, то калаш с админки уже не работает
Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <amxmisc>


#define is_valid_player(%1) (1 <= %1 <= 32)

new AK_V_MODEL[64] = "models/csgo/v_ak_snake.mdl"
new AK_P_MODEL[64] = "models/csgo/p_ak_snake.mdl"

new M4_V_MODEL[64] = "models/csgo/v_m4s_cr.mdl"
new M4_P_MODEL[64] = "models/csgo/p_m4s_cr.mdl"

new AWP_V_MODEL[64] = "models/csgo/v_awp_hyp.mdl"
new AWP_P_MODEL[64] = "models/csgo/p_awp_hyp.mdl"

/* Pcvars */
new cvar_custommodelcvar_uclipcvar_cost_ak47
new cvar_model_m4a1cvar_uclip_m4a1cvar_cost_m4a1
new cvar_model_awpcvar_uclip_awpcvar_cost_awp
new cvar_limit_menu

new bool:g_HasAK[33]
new 
bool:g_HasM4[33]
new 
bool:g_HasAWP[33]

new 
g_hasZoom33 ]
new 
g_Round

// Sprite

const Wep_Ak47 = ((1<<CSW_AK47))
const 
Wep_m4a1 = ((1<<CSW_M4A1))
const 
Wrp_awp = ((1<<CSW_AWP))

#define ADMIN_FLAG ADMIN_LEVEL_H

new keys MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0

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

public 
plugin_init()
{

/* CVARS */
cvar_custommodel register_cvar("goldenm4_custom_model""1")
cvar_uclip register_cvar("goldenm4_unlimited_clip""1")
cvar_cost_ak47 register_cvar("amx_cost_ak47vip""0")

cvar_model_m4a1 register_cvar("amx_model_erica""1")
cvar_uclip_m4a1 register_cvar("amx_clip_erica""0")
cvar_cost_m4a1 register_cvar("amx_cost_erica""0")

cvar_model_awp register_cvar("amx_model_awp""1")
cvar_uclip_awp register_cvar("amx_clip_awp""0")
cvar_cost_awp register_cvar("amx_cost_awp""0")

cvar_limit_menu register_cvar("amx_round_limit""3")

// Register The Plugin
register_plugin("Supermenu""1.0""AlejandroSk & Meat[D]Ev[M]")
// Death Msg
register_event("DeathMsg""Death""a")
// Weapon Pick Up
register_event("WeapPickup","checkModel","b","1=19")
// Current Weapon Event
register_event("CurWeapon","checkWeapon","be","1=1")
register_forwardFM_CmdStart"fw_CmdStart" )
RegisterHam(Ham_Spawn"player""fwHamPlayerSpawnPost"1)
//limit menu
register_event("HLTV""EventRoundStart""a""1=0""2=0");
register_event("TextMsg""EventRoundRestart""a""2=#Game_will_restart_in","2=#Game_Commencing");

// Weapon Pick Up
register_event("WeapPickup","checkModelErica","b","1=19")
// Current Weapon Event
register_event("CurWeapon","checkWeaponErica","be","1=1")
register_forwardFM_CmdStart"fw_CmdStartErica" )

// Weapon Pick Up
register_event("WeapPickup","checkModeldragon","b","1=19")
// Current Weapon Event
register_event("CurWeapon","checkWeapondragon","be","1=1")

register_menu("Menu 1"keys"func_menu"
register_clcmd("elite_guns""Server_Menu")

}

public 
EventRoundStart() g_Round++;
public 
EventRoundRestart() g_Round 0;

public 
plugin_natives() 
{
register_native("give_vulcan_ak47""CmdBuyAK"1)
register_native("give_erica_m4a1""CmdBuyM4"1)
register_native("give_dragon_awp""CmdBuyAWP"1)
}

public 
plugin_cfg()
{
    new 
configsdir[128]
    
    
get_localinfo("amxx_configsdir"configsdircharsmax(configsdir))
    
    return 
server_cmd("exec %s/csgo_mod_privileges.cfg"configsdir);
}

public 
client_connect(id)
{
g_HasAK[id] = false
g_HasM4
[id] = false
g_HasAWP
[id] = false
}

public 
client_disconnect(id)
{
g_HasAK[id] = false
g_HasM4
[id] = false
g_HasAWP
[id] = false
}

public 
Death()
{
g_HasAK[read_data(2)] = false
g_HasM4
[read_data(2)] = false
g_HasAWP
[read_data(2)] = false
}


public 
fwHamPlayerSpawnPost(id)
{
g_HasAK[id] = false
g_HasM4
[id] = false
g_HasAWP
[id] = false
}


public 
plugin_precache()
{
precache_model(AK_V_MODEL)
precache_model(AK_P_MODEL)
precache_model(M4_V_MODEL)
precache_model(M4_P_MODEL)
precache_model(AWP_V_MODEL)
precache_model(AWP_P_MODEL)
precache_sound("weapons/zoom.wav")
}

public 
checkModel(id)
{
if ( !
g_HasAK[id] )
return 
PLUGIN_HANDLED

new szWeapID read_data(2)

if ( 
szWeapID == CSW_AK47 && g_HasAK[id] == true && get_pcvar_num(cvar_custommodel) )
{
set_pev(idpev_viewmodel2AK_V_MODEL)
set_pev(idpev_weaponmodel2AK_P_MODEL)
}
return 
PLUGIN_HANDLED
}

public 
checkModelErica(id)
{
if ( !
g_HasM4[id] )
return 
PLUGIN_HANDLED

new szWeapID read_data(2)

if ( 
szWeapID == CSW_M4A1 && g_HasM4[id] == true && get_pcvar_num(cvar_model_m4a1) )
{
set_pev(idpev_viewmodel2M4_V_MODEL)
set_pev(idpev_weaponmodel2M4_P_MODEL)
}
return 
PLUGIN_HANDLED
}

public 
checkModeldragon(id)
{
if ( !
g_HasAWP[id] )
return 
PLUGIN_HANDLED

new szWeapID read_data(2)

if ( 
szWeapID == CSW_AWP && g_HasAWP[id] == true && get_pcvar_num(cvar_model_awp) )
{
set_pev(idpev_viewmodel2AWP_V_MODEL)
set_pev(idpev_weaponmodel2AWP_P_MODEL)
}
return 
PLUGIN_HANDLED
}

public 
checkWeapon(id)
{
new 
plrClipplrAmmoplrWeap[32]
new 
plrWeapId

plrWeapId 
get_user_weapon(idplrClip plrAmmo)

if (
plrWeapId == CSW_AK47 && g_HasAK[id])
{
checkModel(id)
}
else 
{
return 
PLUGIN_CONTINUE
}

if (
plrClip == && get_pcvar_num(cvar_uclip))
{
// If the user is out of ammo..
get_weaponname(plrWeapIdplrWeap31)
// Get the name of their weapon
give_item(idplrWeap)
cs_set_user_bpammo(idCSW_AK4790)
engclient_cmd(idplrWeap
engclient_cmd(idplrWeap)
engclient_cmd(idplrWeap)
}
return 
PLUGIN_HANDLED
}

public 
checkWeaponErica(id)
{
new 
plrClipplrAmmoplrWeap[32]
new 
plrWeapId

plrWeapId 
get_user_weapon(idplrClip plrAmmo)

if (
plrWeapId == CSW_M4A1 && g_HasM4[id])
{
checkModelErica(id)
}
else 
{
return 
PLUGIN_CONTINUE
}

if (
plrClip == && get_pcvar_num(cvar_uclip_m4a1))
{
// If the user is out of ammo..
get_weaponname(plrWeapIdplrWeap31)
// Get the name of their weapon
give_item(idplrWeap)
cs_set_user_bpammo(idCSW_M4A190)
engclient_cmd(idplrWeap
engclient_cmd(idplrWeap)
engclient_cmd(idplrWeap)
}
return 
PLUGIN_HANDLED
}

public 
checkWeapondragon(id)
{
new 
plrClipplrAmmoplrWeap[32]
new 
plrWeapId

plrWeapId 
get_user_weapon(idplrClip plrAmmo)

if (
plrWeapId == CSW_AWP && g_HasAWP[id])
{
checkModeldragon(id)
}
else 
{
return 
PLUGIN_CONTINUE
}

if (
plrClip == && get_pcvar_num(cvar_uclip_awp))
{
// If the user is out of ammo..
get_weaponname(plrWeapIdplrWeap31)
// Get the name of their weapon
give_item(idplrWeap)
cs_set_user_bpammo(idCSW_AWP30)
engclient_cmd(idplrWeap
engclient_cmd(idplrWeap)
engclient_cmd(idplrWeap)
}
return 
PLUGIN_HANDLED
}

public 
fw_CmdStartiduc_handleseed )
{
if( !
is_user_aliveid ) ) 
return 
PLUGIN_HANDLED

if( ( get_ucuc_handleUC_Buttons ) & IN_ATTACK2 ) && !( pevidpev_oldbuttons ) & IN_ATTACK2 ) )
{
new 
szClipszAmmo
new szWeapID get_user_weaponidszClipszAmmo )

if( 
szWeapID == CSW_AK47 && g_HasAK[id] == false && !g_hasZoom[id] == false)
{
g_hasZoom[id] = false
cs_set_user_zoom
idCS_SET_AUGSG552_ZOOM)
emit_soundidCHAN_ITEM"weapons/zoom.wav"0.202.400100 )
}

else if ( 
szWeapID == CSW_AK47 && g_HasAK[id] == false && g_hasZoom[id])
{
g_hasZoomid ] = false
cs_set_user_zoom
idCS_RESET_ZOOM)

}

}
return 
PLUGIN_HANDLED
}

public 
fw_CmdStartEricaiduc_handleseed )
{
if( !
is_user_aliveid ) ) 
return 
PLUGIN_HANDLED

if( ( get_ucuc_handleUC_Buttons ) & IN_ATTACK2 ) && !( pevidpev_oldbuttons ) & IN_ATTACK2 ) )
{
new 
szClipszAmmo
new szWeapID get_user_weaponidszClipszAmmo )

if( 
szWeapID == CSW_M4A1 && g_HasM4[id] == false && !g_hasZoom[id] == false)
{
g_hasZoom[id] = false
cs_set_user_zoom
idCS_SET_AUGSG552_ZOOM)
emit_soundidCHAN_ITEM"weapons/zoom.wav"0.202.400100 )
}

else if ( 
szWeapID == CSW_M4A1 && g_HasM4[id] == false && g_hasZoom[id])
{
g_hasZoomid ] = false
cs_set_user_zoom
idCS_RESET_ZOOM)

}


}
return 
PLUGIN_HANDLED
}

public 
CmdBuyAWP(id)
{
if ( !
is_user_alive(id) )
{
client_print(id,print_chat"")
return 
PLUGIN_HANDLED
}

new 
money cs_get_user_money(id)

if (
money >= get_pcvar_num(cvar_cost_awp))
{
cs_set_user_money(idmoney get_pcvar_num(cvar_cost_awp))
give_item(id"weapon_awp")
cs_set_user_bpammo(idCSW_AWP30)
g_HasAWP[id] = true
}

else
{
client_print(idprint_chat"")
}
return 
PLUGIN_HANDLED
}

public 
CmdGiveAWP(id,level,cid)
{
if (!
cmd_access(id,level,cid,2))
return 
PLUGIN_HANDLED;
new 
arg[32];
read_argv(1,arg,31);

new 
player cmd_target(id,arg,7);
if (!
player
return 
PLUGIN_HANDLED;

new 
name[32];
get_user_name(player,name,31);

give_item(player"weapon_awp")
cs_set_user_bpammo(idCSW_AWP30)
g_HasAWP[player] = true

return PLUGIN_HANDLED
}


public 
CmdBuyM4(id)
{
if ( !
is_user_alive(id) )
{
client_print(id,print_chat"")
return 
PLUGIN_HANDLED
}

new 
money cs_get_user_money(id)

if (
money >= get_pcvar_num(cvar_cost_m4a1))
{
cs_set_user_money(idmoney get_pcvar_num(cvar_cost_m4a1))
give_item(id"weapon_m4a1")
cs_set_user_bpammo(idCSW_M4A190)
g_HasM4[id] = true
}

else
{
client_print(idprint_chat"")
}
return 
PLUGIN_HANDLED
}

public 
CmdGiveM4(id,level,cid)
{
if (!
cmd_access(id,level,cid,2))
return 
PLUGIN_HANDLED;
new 
arg[32];
read_argv(1,arg,31);

new 
player cmd_target(id,arg,7);
if (!
player
return 
PLUGIN_HANDLED;

new 
name[32];
get_user_name(player,name,31);

give_item(player"weapon_m4a1")
cs_set_user_bpammo(idCSW_M4A190)
g_HasM4[player] = true

return PLUGIN_HANDLED
}

public 
CmdBuyAK(id)
{
if ( !
is_user_alive(id) )
{
client_print(id,print_chat"")
return 
PLUGIN_HANDLED
}

new 
money cs_get_user_money(id)

if (
money >= get_pcvar_numcvar_cost_ak47 ))
{
cs_set_user_money(idmoney get_pcvar_numcvar_cost_ak47 ))
give_item(id"weapon_ak47")
cs_set_user_bpammo(idCSW_AK4790)
g_HasAK[id] = true
}

else
{
client_print(idprint_chat"")
}
return 
PLUGIN_HANDLED
}

public 
CmdGiveAK(id,level,cid)
{
if (!
cmd_access(id,level,cid,2))
return 
PLUGIN_HANDLED;
new 
arg[32];
read_argv(1,arg,31);

new 
player cmd_target(id,arg,7);
if (!
player
return 
PLUGIN_HANDLED;

new 
name[32];
get_user_name(player,name,31);

give_item(player"weapon_ak47")
cs_set_user_bpammo(idCSW_AK4790)
g_HasAK[player] = true

return PLUGIN_HANDLED
}

public 
Server_Menu(id)
{
if ( ! ( 
get_user_flags id ) & ADMIN_FLAG )  )  
{
ColorChat(0"!g[AMXX] !yВы не !tVIP")
}
else if(
g_Round <= get_pcvar_num(cvar_limit_menu) -1)
{
ColorChat(id"!g[AMXX] !yИспользовать меню можно с !t%d-го !yраунда"get_pcvar_num(cvar_limit_menu))
return 
PLUGIN_HANDLED;
}
new 
name[32]
get_user_name(idname31)

static 
menu[650], iLen
iLen 
0

iLen 
formatex(menu[iLen], charsmax(menu) - iLen"\r[~] \wМеню Скинов^n^n")

iLen += formatex(menu[iLen], charsmax(menu) - iLen"\y[1] \wAK47^n\d•Скин: \rОгненный Змей^n")
keys |= MENU_KEY_1

iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen"\y[2] \wM4A1-S^n\d•Скин: \rСайрекс^n")
keys |= MENU_KEY_2

iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen"\y[3] \wAWP^n\d•Скин: \rСкоростной Зверь^n^n^n")
keys |= MENU_KEY_3

iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen"\r[0] \wЗакрыть")
keys |= MENU_KEY_0

show_menu
(idkeysmenu, -1"Menu 1")
return 
PLUGIN_HANDLED
}

public 
func_menu(idkey)
{
if(
is_user_alive(id))
{
switch(
key)
{
case 
0
{
drop_weapons(id1)
CmdBuyAK(id)
cs_set_user_money(idcs_get_user_money(id) - get_pcvar_numcvar_cost_ak47 ))
ColorChat(id"!g[AMXX] !yВы взяли !tAK47 !gОгненный Змей")
}
case 
1
{
if(
cs_get_user_money(id) < get_pcvar_numcvar_cost_m4a1 ))
drop_weapons(id1)
CmdBuyM4(id)
cs_set_user_money(idcs_get_user_money(id) - get_pcvar_num(cvar_cost_m4a1))
ColorChat(id"!g[AMXX] !yВы взяли !tM4A1 !gСайрекс")
}
case 
2
{
if(
cs_get_user_money(id) < get_pcvar_numcvar_cost_awp ))
drop_weapons(id1)
CmdBuyAWP(id)
cs_set_user_money(idcs_get_user_money(id) - get_pcvar_num(cvar_cost_awp))
ColorChat(id"!g[AMXX] !yВы взяли !tAWP !gСкоростной Зверь")
}
}
}
}

stock ColorChat(const id, const input[], any:...)
{
new 
count 1players[32]
static 
msg[191]
vformat(msg190input3)
format(msgsizeof(msg), "%s"msg)
replace_all(msg190"!g""^4"// Green Color
replace_all(msg190"!y""^1"// Default Color
replace_all(msg190"!t""^3"// Team Color

if (idplayers[0] = id; else get_players(playerscount"ch")
{
for (new 
0counti++)
{
if (
is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
write_byte(players[i]);
write_string(msg); 
message_end();
}
}
}
}

stock drop_weapons(iddropwhat
{
static 
weapons[32], numiweaponid
num 
0
get_user_weapons
(idweaponsnum)

for (
0numi++) {
weaponid weapons[i]

if ((
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))) {
static 
wname[32]
get_weaponname(weaponidwnamecharsmax(wname))
engclient_cmd(id"drop"wname)
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
 
Аватара пользователя
Husen
 
Сообщения: 20
Зарегистрирован: 08 май 2019, 19:02
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Заменяются все модели  [Решено]

Сообщение hren_morjovui » 16 май 2019, 12:48

Нужно "помечать" ентини при выдаче

а потом проверять.

например:

Код: Выделить всё
#define WP_ITEM_ID 7777
ent = give_item("weapon_ak47");
if(
ent)
    set_pev(ent, pev_iuser1, WP_ITEM_ID)

public ham_item_deploy(const weapon_id)
{
      //Если не "помечено" то модель заменять ненужно
      if(pev(weapon_id, pev_iuser1) != WP_ITEM_ID)
        return HAM_IGNORED;
    
    set_pev
(player_id, pev_viewmodel2, wp_model_v);
    set_pev(player_id, pev_weaponmodel2, wp_model_p);

    return HAM_IGNORED;    
}
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14