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

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

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

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

Проблема с плагином

Статус пользователя GosTb
сообщение 1.2.2018, 10:13
Сообщение #1


Стаж: 8 лет 11 месяцев

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

Всем привет!
Кто разбирается в кодах плагинов,посмотрите пожалуйста.

Суть проблемы: при включении плагина,перестают работать грены.( Гранаты не наносят урон)
Cкрытый текст
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <WPMGPrintChatColor>

#define PLUGIN "Vip Weapon"
#define VERSION "1.0"
#define AUTHOR "vk.com/****"

#define EV_INT_WEAPONKEY EV_INT_impulse

//Для проверки слотов.
#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 VIP ((1<<9)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6))
#define ADMIN ((1<<0)|(1<<1)|(1<<7)|(1<<8))

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);
}
//Для работы меню выбора оружия.
enum _:STRWEAPON {
WEAP_ID,
WEAP_CSW,
WEAP_NAME[20],
WEAP_TEXT[10],
WEAP_CLIP,
WEAP_AMMO,

WEAP_M,
Float:WEAP_DAMAGE,
WEAP_OLDMODELS[64],
WEAP_V[64],
WEAP_P[64],
WEAP_W[64]
}
enum _:SREWEAPNUM {
W_M4A1,
W_AK47,
W_AWP,
W_FAMAS,
W_SCOUT,
W_GOLDM4A1,
W_GOLDAK47,

W_P228,
W_ELITE,
W_FIVESEVEN,
W_USP,
W_GLOCK18,
W_DEAGLE
}
new gCurrGun[33];
new gArrWeapon[SREWEAPNUM][STRWEAPON] = {
{22,CSW_M4A1 , "weapon_m4a1","", 30,90 ,0,1.0,"","","",""},
{28,CSW_AK47 , "weapon_ak47","", 30,90 ,0,1.0,"","","",""},
{18,CSW_AWP , "weapon_awp" ,"", 10,30 ,0,1.0,"","","",""},
{15,CSW_FAMAS, "weapon_famas","", 25,90 ,0,1.0,"","","",""},
{3,CSW_SCOUT, "weapon_scout","", 10,90 ,0,1.0,"","","",""},
{100,CSW_M4A1 , "weapon_m4a1","", 30,90 ,1,1.25, "models/w_m4a1.mdl" ,"models/goldsweap/v_gold_m4.mdl","models/goldsweap/p_gold_m4.mdl" ,"models/goldsweap/w_goldm4a1.mdl"},
{101,CSW_AK47 , "weapon_ak47","", 30,90 ,1,1.25,"models/w_ak47.mdl" ,"models/goldsweap/v_goldak47.mdl","models/goldsweap/p_goldak47.mdl" ,"models/goldsweap/w_goldak47.mdl"},

{1,CSW_P228,"weapon_p228","P228",12,35 ,0,1.0,"","","",""},
{10,CSW_ELITE,"weapon_elite","ELITE",30,120 ,0,1.0,"","","",""},
{11,CSW_FIVESEVEN,"weapon_fiveseven","FIVESEVEN",20,100 ,0,1.0,"","","",""},
{16,CSW_USP,"weapon_usp","USP",12,100 ,0,1.0,"","","",""},
{17,CSW_GLOCK18,"weapon_glock18","GLOCK",20,120 ,0,1.0,"","","",""},
{26,CSW_DEAGLE,"weapon_deagle","DEAGLE",7,35 ,0,1.0,"","","",""}
}
new g_has_weapon[sizeof gArrWeapon][33]; //Для записи у кого есть данное оружие, на случай модификации по другим параметрам что бы упростить установку модели.


new cvar_admin_flagvip;
new cvar_admin_flagadmin;

public get_cvar_flag(cvar) {
new flags[24]
get_pcvar_string(cvar, flags, 23)
return(read_flags(flags))
}

public plugin_precache() {
for(new weap=0;weap<sizeof(gArrWeapon);weap++) {
if(gArrWeapon[weap][WEAP_M]) {
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)

cvar_admin_flagvip = register_cvar("admweap_vip_flag","t"); //Флаг доступа.
cvar_admin_flagadmin = register_cvar("admweap_admin_flag","m"); //Флаг доступа.

for(new weap=0;weap<sizeof(gArrWeapon);weap++) {
RegisterHam(Ham_Item_Deploy, gArrWeapon[weap][WEAP_NAME], "Item_Deploy_Post", 1);
RegisterHam(Ham_Item_AddToPlayer, gArrWeapon[weap][WEAP_NAME], "fw_AddToPlayer")
}
RegisterHam(Ham_TakeDamage,"player","TakeDamage",0)
register_forward(FM_SetModel, "fw_SetModel");

register_menu("Menu", 1023, "MenuFunc");
register_clcmd("say /weapon","Menu")
register_clcmd("weapon","Menu")
}

public client_putinserver(id) {
gCurrGun[id] = W_DEAGLE;
for(new i=0;i<sizeof(gArrWeapon);i++) {
g_has_weapon[i][id] = false;
}
}
public Menu(id) {
static menu[512], len
len = 0;

new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MEN
U_KEY_7|MENU_KEY_8|MENU_KEY_9

len = formatex(menu[len], charsmax(menu) - len, "\rSuper VIP^n^n");

#define ColorV get_user_flags(id) & get_cvar_flag(cvar_admin_flagvip) ? "\w":"\d"
#define ColorA get_user_flags(id) & get_cvar_flag(cvar_admin_flagadmin) ? "\w":"\d"

len += formatex(menu[len], charsmax(menu) - len, "\r[\y1\r]%sКик^n",ColorA);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y2\r]%sБан^n",ColorA);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y3\r]%sПистолет+гранаты + m4a1^n",ColorV);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y4\r]%sПистолет+гранаты + ака47^n",ColorV);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y5\r]%sПистолет+гранаты + awp^n",ColorV);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y6\r]%sПистолет+гранаты + Famas^n",ColorV);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y7\r]%sПистолет+гранаты + Scout^n",ColorV);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y8\r]%sПистолет+гранаты + \rGolden m4a1^n",ColorA);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y9\r]%sПистолет+гранаты + \rGolden ak47^n",ColorA);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y0\r]%sВыбор пистолета \d[\r%s\d]^n",ColorV,gArrWeapon[gCurrGun[id]][WEAP_TEXT]);

show_menu(id, keys, menu, -1, "Menu");
return PLUGIN_HANDLED;
}

public MenuFunc(id, key) {
if(!(get_user_flags(id) & get_cvar_flag(cvar_admin_flagvip)) && (1<<key) & VIP ) {
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!t[!gОружейка!t] !tУ вас нет доступа для использования.");
return PLUGIN_HANDLED;
}

if(!(get_user_flags(id) & get_cvar_flag(cvar_admin_flagadmin)) && (1<<key) & ADMIN ) {
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!t[!gОружейка!t] !tУ вас нет доступа для использования.");
return PLUGIN_HANDLED;
}

if(!is_user_alive(id)) {
PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!t[!gОружейка!t] !tВы должны быть живы что бы взять оружие");
return PLUGIN_HANDLED;
}



switch(key) {
case 0: client_cmd(id,"amx_kickmenu");
case 1: client_cmd(id,"amx_banmenu");
case 2..8: {
get_grenades(id)
drop_primary(id);
drop_secondary(id);
g_has_weapon[key-2][id] = true;
g_has_weapon[gCurrGun[id]][id] = true;
fm_give_item(id,key-2); //Примари
fm_give_item(id,gCurrGun[id]); //Секондари
}
case 9: {
if(gCurrGun[id] == W_DEAGLE) {
gCurrGun[id] = W_P228;
} else {
gCurrGun[id]++;
}
Menu(id);
}
}
return PLUGIN_HANDLED;
}


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 get_grenades(id) {
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_smokegrenade")
}
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]) {
if(gArrWeapon[iweap][WEAP_M]) {
set_pev(id, pev_viewmodel2, gArrWeapon[iweap][WEAP_V]);
set_pev(id, pev_weaponmodel2, gArrWeapon[iweap][WEAP_P]);
}
}
}
}
}
public TakeDamage(victim, inflictor, attacker, Float:damage){ //Нанесение урона.

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

new iWeaponUsed = get_user_weapon( inflictor ,_,_)

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;
}
}
}
}
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;
}

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]);
if(gArrWeapon[iweap][WEAP_M]) {
entity_set_model(entity, gArrWeapon[iweap][WEAP_W]);
return FMRES_SUPERCEDE;
}
}
}
}
return FMRES_IGNORED;
}


Спамчик
я тут: 193.19.118.253:28033
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя DeMNiX
сообщение 1.2.2018, 10:41
Сообщение #2


Стаж: 13 лет

Сообщений: 263
Благодарностей: 113
Полезность: 646

Код:

public TakeDamage(victim, inflictor, attacker, Float:damage){ //Нанесение урона.

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

==>
Код:

public TakeDamage(victim, inflictor, attacker, Float:damage, bits){ //Нанесение урона.

if(~bits & (DMG_NEVERGIB|DMG_BULLET))
return;

if(!is_user_connected(attacker) || victim == attacker || !victim)
return;
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GosTb
сообщение 1.2.2018, 17:42
Сообщение #3


Стаж: 8 лет 11 месяцев

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

DeMNiX, Теперь не работает вообще.
Консоль пишет:
Displaying debug trace (plugin "aavip_weapon.amxx")
L 01/25/2018 - 14:20:21: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 01/25/2018 - 14:20:21: [AMXX] [0] aavip_weapon.sma::TakeDamage (line 285)
L 01/25/2018 - 14:21:01: Invalid player id 153


Спамчик
я тут: 193.19.118.253:28033
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GosTb
сообщение 1.2.2018, 18:04
Сообщение #4


Стаж: 8 лет 11 месяцев

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

GosTb, Прошу прощения,версию компилятора сменил,всё спасибо работает.Очень помогли.


Спамчик
я тут: 193.19.118.253:28033
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя StCore
сообщение 1.2.2018, 18:16
Сообщение #5
Стаж: 9 лет 2 месяца

Сообщений: 24
Благодарности: выкл.

new iWeaponUsed = get_user_weapon( inflictor ,_,_)

new iWeaponUsed = get_user_weapon( attacker ,_,_)

хотя, если я не ошибаюсь, get_user_weapon(attacker) == inflictor
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GosTb
сообщение 2.2.2018, 8:04
Сообщение #6


Стаж: 8 лет 11 месяцев

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

StCore, 1
2
3
4
5
6
7
8
9
public TakeDamage(victim, inflictor, attacker, Float:damage, bits){ //Нанесение урона.

if(~bits & (DMG_NEVERGIB|DMG_BULLET))
return;

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

Вот это помогло,разработчик плагина не мог понять ошибку...Спасибо ещё раз.


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