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

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

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

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

Проблема отнятия оружия

, И опять с руной "Курица" (RuneMod)
Статус пользователя CH0CAPIC
сообщение 31.8.2014, 17:55
Сообщение #1


Стаж: 12 лет

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

Добрый вечер. Возникла проблема с отнятием оружия у руны "Курица". Дело в том, что, когда игрок подберёт руну "курица" где-то в начале раунда, то сразу же он может закупиться на Buy Zone и оружие у него НЕ отнимается. Также баг наблюдается при взятии оружия из меню, когда ты "курица". Перерыл всё, но решение никак не нашёл. Помогите пожалуйста.

Код:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <cs_player_models_api>
#include "runemod.inc" // We need to include this file, as it contains info we need. Like #define`s and stocks

#define m_iPrimaryWeapon 116

#define MAXSPEED 1.25
#define Gravity 0.6

new g_HasRune[MAXPLAYERS+1]
new g_MaxPlayers
new g_BlockWeapons[MAXPLAYERS+1]
new g_SpeedLocked[MAXPLAYERS+1]

#define TASKID 1234

public plugin_init()
{
register_plugin("RuneMod Chicken", "1.0.0", "AdogeN")
g_MaxPlayers = get_maxplayers()
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
RegisterHam(Ham_Touch, "weapon_hegrenade", "player_touchweapon")
RegisterHam(Ham_Touch, "weaponbox", "player_touchweapon")
RegisterHam(Ham_Touch, "armoury_entity", "player_touchweapon")
RegisterPlugin("ChickenName","ChickenDisc",{220,220,0},API_SPEEDCHANGE+API_NEWROUND+API_ROUNDSTARTED+API_USELANGSYSTE
M+API_BADRUNE)
}

public API_UnLockSpeedChange(id)
{
g_SpeedLocked[id] = 0
}

public API_LockSpeedChange(id)
{
g_SpeedLocked[id] = 1
}

// This function is used base plugin to inform this plugin that a user has picked up the rune.
public API_PickUpRune(id)
{
if(!g_SpeedLocked[id])
IncreaseSpeed(id,get_user_maxspeedint(id))

g_HasRune[id] = 1
g_BlockWeapons[id] = 1
entity_set_float(id, EV_FL_gravity, Gravity)
cs_set_player_model(id, "amonster3")
set_user_hitzones(0,id,192)
set_user_health(id, 255)
player_strip_weapons(id)
if(cs_get_user_team(id)==CS_TEAM_T)
{
set_rendering(id,kRenderFxGlowShell,150,0,0,kRenderTransAlpha,255)
}
else
{
set_rendering(id,kRenderFxGlowShell,0,0,150,kRenderTransAlpha,255)
}
new tclip, tammo
new weapon = get_user_weapon(id,tclip,tammo)
if(weapon == CSW_KNIFE){
entity_set_string(id, EV_SZ_viewmodel, "models/knife/v_tot.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/knife/p_tot.mdl")
}
}

public API_RoundStarted()
{
new Speed
for(new i=1;i<=g_MaxPlayers;i++) if(g_HasRune[i])
{
API_PickUpRune(i)
g_SpeedLocked[i] = 0
Speed = ResetUserSpeed(i)
IncreaseSpeed(i,Speed)
entity_set_float(i, EV_FL_maxspeed, Gravity)
}
}

public Event_CurWeapon(id)
{
if (!is_user_alive(id) || g_HasRune[id] == 0) {
return PLUGIN_CONTINUE
}

new weapon = read_data(2)
if(weapon == CSW_KNIFE){
entity_set_string(id, EV_SZ_viewmodel, "models/knife/v_tot.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/knife/p_tot.mdl")
}
return PLUGIN_CONTINUE
}

public player_touchweapon(ent, id)
{
if(is_valid_ent(ent) && is_user_alive(id))
{
if(g_BlockWeapons[id])
return HAM_SUPERCEDE

if(g_HasRune[id])
{
static model[32], class[32]
entity_get_string(ent, EV_SZ_model, model, charsmax(model))

if(model[7] == 'w' && model[9] == 'h' && model[10] == 'e' && model[11] == 'g')
{
entity_get_string(ent, EV_SZ_classname, class, charsmax(class))
if(equal(class, "weapon_hegrenade"))
remove_entity(ent)

return HAM_SUPERCEDE
}

}
}
return HAM_IGNORED
}

public plugin_precache() {
precache_model("models/player/amonster3/amonster3.mdl")
precache_model("models/knife/v_tot.mdl")
precache_model("models/knife/p_tot.mdl")
}

public API_DropedRune(id,Reason) //This function is called by the base plugin to inform about the user droped his rune for whatever reason ( he could have used droprune or died )
{
if(Reason != USER_DISCONNECTED)
ResetUserSpeed(id)
g_HasRune[id] = 0
g_BlockWeapons[id] = 0
set_user_hitzones(0,id,255)
cs_reset_player_model(id)
entity_set_float(id, EV_FL_gravity, 1.0)
set_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,255)
}

public API_NewRound()
{
for(new i=1;i<=g_MaxPlayers;i++) if(g_HasRune[i])
{
g_SpeedLocked[i] = 1
}
}

stock IncreaseSpeed(id,maxpspeed)
{
set_user_maxspeed(id,(maxpspeed * MAXSPEED))
}

stock get_user_maxspeedint(id)
{
return floatround(get_user_maxspeed(id))
}

stock player_strip_weapons(id)
{
strip_user_weapons(id)
give_item(id, "weapon_knife")
set_pdata_int(id, m_iPrimaryWeapon, 0)
}

Прикрепленные файлы:
Прикрепленный файл  include.rar ( 3,09 килобайт ) Кол-во скачиваний: 2
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Legenda
сообщение 31.8.2014, 18:24
Сообщение #2


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

а нож должен оставаться?
если да, то как вариант просто удалять оружие...


Код:
public Event_CurWeapon(id)
{
if (!is_user_alive(id) || g_HasRune[id] == 0) {
return PLUGIN_CONTINUE
}

if(g_BlockWeapons[id])
player_strip_weapons(id)

new weapon = read_data(2)
if(weapon == CSW_KNIFE){
entity_set_string(id, EV_SZ_viewmodel, "models/knife/v_tot.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/knife/p_tot.mdl")
}
return PLUGIN_CONTINUE
}

либо player_strip_weapons(id)
на
strip_user_weapons(id), это если нож не нужен...
про меню оружия не понял
по хорошему нужно ,конечно, блокировать покупку и остальные меню
хз как щит блокировать - почитай об этом...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 31.8.2014, 18:56
Сообщение #3


Стаж: 12 лет

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

Цитата(Legenda @ 31.8.2014, 17:24) *
Код:
if(g_BlockWeapons[id])
player_strip_weapons(id)

Постоянно выдаёт нож, буквально за милисекунду xD , в результате чего не могу им даже мохнуть.



Зафлудил клиент...

Цитата(Legenda @ 31.8.2014, 17:24) *
про меню оружия не понял

К примеру имеется VIP меню и оттуда можешь взять оружие.

Отредактировал: CH0CAPIC, - 31.8.2014, 18:57
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 31.8.2014, 19:18
Сообщение #4


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

логично что нож постоянно выдается...

поменяй
player_strip_weapons(id)
на
strip_user_weapons(id)

в коде выше конечно же...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 31.8.2014, 19:21
Сообщение #5


Стаж: 12 лет

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

Цитата(Legenda @ 31.8.2014, 18:18) *
поменяй
player_strip_weapons(id)
на
strip_user_weapons(id)

Уже пробовал, но нож не выдаётся.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 31.8.2014, 19:22
Сообщение #6


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(CH0CAPIC @ 31.8.2014, 21:21) *
Уже пробовал, но нож не выдаётся.

в этом случаи и не должен выдаваться...

вот так попробуй...
Код:
public Event_CurWeapon(id)
{
if (!is_user_alive(id) || g_HasRune[id] == 0) {
return PLUGIN_CONTINUE
}

new weapon = read_data(2)
if(weapon == CSW_KNIFE){
entity_set_string(id, EV_SZ_viewmodel, "models/knife/v_tot.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/knife/p_tot.mdl")
}
else if (g_BlockWeapons[id])
player_strip_weapons(id)

return PLUGIN_CONTINUE
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 31.8.2014, 19:25
Сообщение #7


Стаж: 12 лет

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

Цитата(Legenda @ 31.8.2014, 18:22) *
в этом случаи и не должен выдаваться...

Если применить ваш первый вариант, то будет флуд ножами, как на скрине.
По другому никак?

Цитата(Legenda @ 31.8.2014, 18:22) *
вот так попробуй...
Код:
public Event_CurWeapon(id)
{
if (!is_user_alive(id) || g_HasRune[id] == 0) {
return PLUGIN_CONTINUE
}

new weapon = read_data(2)
if(weapon == CSW_KNIFE){
entity_set_string(id, EV_SZ_viewmodel, "models/knife/v_tot.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/knife/p_tot.mdl")
}
else if (g_BlockWeapons[id])
player_strip_weapons(id)

return PLUGIN_CONTINUE
}

Сейчас...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 31.8.2014, 19:25
Сообщение #8


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

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