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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Помогите разобраться с настройкой плагинов

Статус пользователя vpalehin
сообщение 22.10.2019, 13:28
Сообщение #1
Стаж: 6 лет 6 месяцев

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

Доброго времени суток всем!
Сразу извиняюсь, если пишу не в ту тему или раздел.
В cs 1.6 играю уже очень давно, а вот с настройками сервера столкнулся впервые. Очень много новой информации для меня, очень сложно все понять.
Объясните пожалуйста, как работать с флагами, левелами итд. В users.ini есть подсказка по флагам, но все равно не могу разобраться как их использовать.

Опишу ситуацию на примере, с которым я столкнулся.
Есть плагин - парашют. Есть 2 файла - amxx и sma. Открываю .sma файл со следующим текстом:
sma файл
Код:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <fun>

new bool:has_parachute[33]
new para_ent[33]
new gCStrike = 0
new pDetach, pFallSpeed, pEnabled

#define PARACHUTE_LEVEL ADMIN_LEVEL_A

public plugin_init()
{
register_plugin("Parachute", "1.3", "KRoT@L/JTP10181")
pEnabled = register_cvar("sv_parachute", "1" )
pFallSpeed = register_cvar("parachute_fallspeed", "100")
pDetach = register_cvar("parachute_detach", "1")

if (cstrike_running()) gCStrike = true

if (gCStrike) {

register_concmd("amx_parachute", "admin_give_parachute", PARACHUTE_LEVEL, "<nick, #userid or @team>" )
}

register_clcmd("say", "HandleSay")
register_clcmd("say_team", "HandleSay")

register_event("ResetHUD", "newSpawn", "be")
register_event("DeathMsg", "death_event", "a")

//Setup jtp10181 CVAR
new cvarString[256], shortName[16]
copy(shortName,15,"chute")

register_cvar("jtp10181","",FCVAR_SERVER|FCVAR_SPONLY)
get_cvar_string("jtp10181",cvarString,255)

if (strlen(cvarString) == 0) {
formatex(cvarString,255,shortName)
set_cvar_string("jtp10181",cvarString)
}
else if (contain(cvarString,shortName) == -1) {
format(cvarString,255,"%s,%s",cvarString, shortName)
set_cvar_string("jtp10181",cvarString)
}
}

public plugin_natives()
{
set_module_filter("module_filter")
set_native_filter("native_filter")
}

public module_filter(const module[])
{
if (!cstrike_running() && equali(module, "cstrike")) {
return PLUGIN_HANDLED
}

return PLUGIN_CONTINUE
}

public native_filter(const name[], index, trap)
{
if (!trap) return PLUGIN_HANDLED

return PLUGIN_CONTINUE
}

public client_connect(id)
{
if(para_ent[id] > 0)
{
remove_entity(para_ent[id])
}
has_parachute[id] = true
para_ent[id] = 0
}

public client_disconnect(id)
{
parachute_reset(id)
}

public death_event()
{
new id = read_data(2)
parachute_reset(id)
}

parachute_reset(id)
{
if(para_ent[id] > 0) {
if (is_valid_ent(para_ent[id])) {
remove_entity(para_ent[id])
}
}

if (is_user_alive(id)) set_user_gravity(id, 1.0)

has_parachute[id] = false
para_ent[id] = 0
}

public newSpawn(id)
{
if(para_ent[id] > 0)
{
remove_entity(para_ent[id])
}
has_parachute[id] = true
para_ent[id] = 0
}

public client_PreThink(id)
{
//parachute.mdl animation information
//0 - deploy - 84 frames
//1 - idle - 39 frames
//2 - detach - 29 frames

if (!get_pcvar_num(pEnabled)) return
if (!is_user_alive(id) || !has_parachute[id]) return

new Float:fallspeed = get_pcvar_float(pFallSpeed) * -1.0
new Float:frame

new button = get_user_button(id)
new oldbutton = get_user_oldbutton(id)
new flags = get_entity_flags(id)

if (para_ent[id] > 0 && (flags & FL_ONGROUND)) {

if (get_pcvar_num(pDetach)) {

if (get_user_gravity(id) == 0.1) set_user_gravity(id, 1.0)

if (entity_get_int(para_ent[id],EV_INT_sequence) != 2) {
entity_set_int(para_ent[id], EV_INT_sequence, 2)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
return
}

frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)

if (frame > 254.0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
}
else {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
}

return
}

if (button & IN_USE) {

new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)

if (velocity[2] < 0.0) {

if(para_ent[id] <= 0) {
para_ent[id] = create_entity("info_target")
if(para_ent[id] > 0) {
entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
entity_set_edict(para_ent[id], EV_ENT_aiment, id)
entity_set_edict(para_ent[id], EV_ENT_owner, id)
entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_int(para_ent[id], EV_INT_sequence, 0)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}

if (para_ent[id] > 0) {

entity_set_int(id, EV_INT_sequence, 3)
entity_set_int(id, EV_INT_gaitsequence, 1)
entity_set_float(id, EV_FL_frame, 1.0)
entity_set_float(id, EV_FL_framerate, 1.0)
set_user_gravity(id, 0.1)

velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
entity_set_vector(id, EV_VEC_velocity, velocity)

if (entity_get_int(para_ent[id],EV_INT_sequence) == 0) {

frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)

if (frame > 100.0) {
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
entity_set_int(para_ent[id], EV_INT_sequence, 1)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}
}
}
else if (para_ent[id] > 0) {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
}
}
else if ((oldbutton & IN_USE) && para_ent[id] > 0 ) {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
}
}

На данный момент данный плагин работает у любого игрока. Моя задача сделать так, что бы работал он только у VIP игроков и у админа.
В users.ini VIP игрок у меня записан так - "name" "password" "t" "a"
В подсказке (в том же users.ini) есть такая надпись - ; t - левел H
Что нужно в данном случае изменить в sma файле, что бы убрать данную функцию у простых игроков? Я банально поменял ADMIN_LEVEL_A на ADMIN_LEVEL_H. И естественно ничего не получилось.

И такой момент. Скачал плагин voteban. Тоже 2 файла - amxx и sma


sma файл
Код:
#include <amxmodx>
#include <amxmisc>

#define MAX_players 32
#define MAX_menudata 1024

new ga_PlayerName[MAX_players][32]
new ga_PlayerAuthID[MAX_players][35]
new ga_PlayerID[MAX_players]
new ga_PlayerIP[MAX_players][16]
new ga_MenuData[MAX_menudata]
new ga_Choice[2]
new gi_VoteStarter
new gi_MenuPosition
new gi_Sellection
new gi_TotalPlayers
new gi_SysTimeOffset = 0
new i
//pcvars
new gi_LastTime
new gi_DelayTime
new gf_Ratio
new gf_MinVoters
new gf_BF_Ratio
new gi_BanTime
new gi_Disable
new gi_BanType


public plugin_init()
{
register_plugin("voteban menu","1.2","hjvl")
register_clcmd("say /voteban","SayIt" )
register_menucmd(register_menuid("ChoosePlayer"), 1023, "ChooseMenu")
register_menucmd(register_menuid("VoteMenu"), 1023, "CountVotes")

gi_LastTime=register_cvar("amx_voteban_lasttime","0")
gi_DelayTime=register_cvar("amxx_voteban_delaytime","60")
gf_Ratio=register_cvar("amxx_voteban_ratio","0.65")
gf_MinVoters=register_cvar("amxx_voteban_minvoters","0.0")
gf_BF_Ratio=register_cvar("amxx_voteban_bf_ratio","0.0")
gi_BanTime=register_cvar("amxx_voteban_bantime","20")
gi_Disable=register_cvar("amxx_voteban_disable","0")
gi_BanType=register_cvar("amxx_voteban_type","1")
}

public SayIt(id)
{
if(get_pcvar_num(gi_Disable))
{
client_print(id,print_chat,"amx_voteban выключен")
return 0
}

new Elapsed=get_systime(gi_SysTimeOffset) - get_pcvar_num(gi_LastTime)
new Delay=get_pcvar_num(gi_DelayTime)

if( (Delay > Elapsed) && !is_user_admin(id) )
{
new seconds = Delay - Elapsed
client_print(id,print_chat,"Подождите %d секунд(ы) до нового голосования за Бан", seconds)
return 0
}

get_players( ga_PlayerID, gi_TotalPlayers )
for(i=0; i<gi_TotalPlayers; i++)
{
new TempID = ga_PlayerID[i]
if( is_user_admin(TempID))
{
if(!is_user_admin(id))
{
client_print(id,print_chat,"Админ на сервере. Voteban выключен!")
return 0
}
}

if(TempID == id)
gi_VoteStarter=i

get_user_name( TempID, ga_PlayerName[i], 31 )
get_user_authid( TempID, ga_PlayerAuthID[i], 34 )
get_user_ip( TempID, ga_PlayerIP[i], 15, 1 )
}

gi_MenuPosition = 0
ShowPlayerMenu(id)
return 0
}

public ShowPlayerMenu(id)
{
new arrayloc = 0
new keys = (1<<9)

arrayloc = format(ga_MenuData,(MAX_menudata-1),"VoteBAN меню ^n")
for(i=0; i<8; i++)
if( gi_TotalPlayers>(gi_MenuPosition+i) )
{
arrayloc += format(ga_MenuData[arrayloc],(MAX_menudata-1-arrayloc),"%d. %s^n", i+1, ga_PlayerName[gi_MenuPosition+i])
keys |= (1<<i)
}
if( gi_TotalPlayers>(gi_MenuPosition+8) )
{
arrayloc += format(ga_MenuData[arrayloc],(MAX_menudata-1-arrayloc),"^n9. Больше")
keys |= (1<<8)
}
arrayloc += format(ga_MenuData[arrayloc],(MAX_menudata-1-arrayloc),"^n0. НазадВыход")

show_menu(id, keys, ga_MenuData, 20, "ChoosePlayer")
return PLUGIN_HANDLED
}

public ChooseMenu(id, key)
{
switch(key)
{
case 8:
{
gi_MenuPosition=gi_MenuPosition+8
ShowPlayerMenu(id)
}
case 9:
{
if(gi_MenuPosition>=8)
{
gi_MenuPosition=gi_MenuPosition-8
ShowPlayerMenu(id)
}
else
return 0
}
default:
{
gi_Sellection=gi_MenuPosition+key
new Now=get_systime(gi_SysTimeOffset)
set_pcvar_num(gi_LastTime, Now)

run_vote()
return 0
}
}
return PLUGIN_HANDLED
}

public run_vote()
{
log_amx("%s начал голосование за Бан %s %s", ga_PlayerName[gi_VoteStarter], ga_PlayerName[gi_Sellection], ga_PlayerAuthID[gi_Sellection])
format(ga_MenuData,(MAX_menudata-1),"Забанить %s на %d минут(ы)?^n1. Да^n2. Нет",ga_PlayerName[gi_Sellection], get_pcvar_num(gi_BanTime))
ga_Choice[0] = 0
ga_Choice[1] = 0
show_menu( 0, (1<<0)|(1<<1), ga_MenuData, 15, "VoteMenu" )
set_task(15.0,"outcom")
return 0
}

public CountVotes(id, key)
{
++ga_Choice[key]
return PLUGIN_HANDLED
}

public outcom()
{
new TotalVotes = ga_Choice[0] + ga_Choice[1]
new Float:result = (float(ga_Choice[0]) / float(TotalVotes))

if( get_pcvar_float(gf_MinVoters) >= ( float(TotalVotes) / float(gi_TotalPlayers) ) )
{
client_print(0,print_chat,"Недостаточно проголосовавших чтобы забанить %s!", ga_PlayerName[gi_Sellection])
return 0
}
else
{
if( result < get_pcvar_float(gf_BF_Ratio) )
{
client_print(0,print_chat,"Голосование за бан %s закончилось, он забанен на %d минут(ы)", ga_PlayerName[gi_VoteStarter], get_pcvar_num(gi_BanTime))
ActualBan(gi_VoteStarter)
log_amx("[AMXX] The vote back fired at %s, he is banned for %d minutes", ga_PlayerName[gi_VoteStarter], get_pcvar_num(gi_BanTime))
}

if( result >= get_pcvar_float(gf_Ratio) )
{
client_print(0,print_chat,"Голосование успешно!!!, %s забанен на %d минут(ы)", ga_PlayerName[gi_Sellection], get_pcvar_num(gi_BanTime))
log_amx("[AMXX] The vote succeeded: %s is banned for %d minutes", ga_PlayerAuthID[gi_Sellection], get_pcvar_num(gi_BanTime))
ActualBan(gi_Sellection)
}
else
{
client_print(0,print_chat,"Голосование безуспешно.")
log_amx("The voteban dit not sucseed.")
}
}
client_print(0,print_chat,"Всего проголосовали %d игрок(ов), %d за.", gi_TotalPlayers, ga_Choice[0])

return 0
}

public ActualBan(Selected)
{
new Type = get_pcvar_num(gi_BanType)
switch(Type)
{
case 1:
server_cmd("addip %d %s", get_pcvar_num(gi_BanTime), ga_PlayerIP[Selected])
case 2:
server_cmd("amx_ban %d %s Voteban", get_pcvar_num(gi_BanTime), ga_PlayerAuthID[Selected])
default:
server_cmd("banid %d %s kick", get_pcvar_num(gi_BanTime), ga_PlayerAuthID[Selected])
}
return 0
}


Захожу на сервер с правами главного админа ("name" "pass" "abcdefghijklmnopqrstu" "a"). На сервере я один.
Ввожу /voteban и голосую за себя. После этого меня банит и кикает. Такое происходит, потому что забанил главный админ (т.е я) или что-то с настройками привелегий?
В данном случае против меня могут проголосовать любые игроки и сервер меня забанит? Или я путаю?

Ну и что бы подитожить - в каждом .sma файле есть строка, где прописан уровень доступа к данному плагину? И его можно настроить на любую категорию игроков?
Т.е условно говоря скачать плагин, скажем - "mute на игрока". Который по умолчанию работает для всех. Зайти в .sma, найти строчку #define и что-нибудь типа ACCESS и вписать туда нужный флаг?! Или не все так просто?

Заранее спасибо и извиняюсь за глупые вопросы. Просто действительно для меня это темный лес, но очень хочется понять.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fullserver
сообщение 22.10.2019, 13:56
Сообщение #2


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

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Код:
if(!(get_user_flags(id) & ADMIN_LEVEL_H)) return
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vpalehin
сообщение 22.10.2019, 14:06
Сообщение #3
Стаж: 6 лет 6 месяцев

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

Цитата(Fullserver @ 22.10.2019, 13:56) *
Код:
if(!(get_user_flags(id) & ADMIN_LEVEL_H)) return

Отлично, спасибо.
А куда конкретно это нужно пихать? Заменять этой строчкой какую-то другую? И это ответ на какой вопрос?
Просто я в начале своего сообщения обозначил, что раньше дел с подобным не имел. Рассчитывал на более развернутый ответ, если честно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fullserver
сообщение 22.10.2019, 19:09
Сообщение #4


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

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Cкрытый текст
Код:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <fun>
 
new bool:has_parachute[33]
new para_ent[33]
new gCStrike = 0
new pDetach, pFallSpeed, pEnabled
 
#define PARACHUTE_LEVEL ADMIN_LEVEL_A
 
public plugin_init()
{
   register_plugin("Parachute", "1.3", "KRoT@L/JTP10181")
   pEnabled = register_cvar("sv_parachute", "1" )
   pFallSpeed = register_cvar("parachute_fallspeed", "100")
   pDetach = register_cvar("parachute_detach", "1")
 
   if (cstrike_running()) gCStrike = true
 
   if (gCStrike) {
 
      register_concmd("amx_parachute", "admin_give_parachute", PARACHUTE_LEVEL, "<nick, #userid or @team>" )
   }
 
   register_clcmd("say", "HandleSay")
   register_clcmd("say_team", "HandleSay")
 
   register_event("ResetHUD", "newSpawn", "be")
   register_event("DeathMsg", "death_event", "a")
 
   //Setup jtp10181 CVAR
   new cvarString[256], shortName[16]
   copy(shortName,15,"chute")
 
   register_cvar("jtp10181","",FCVAR_SERVER|FCVAR_SPONLY)
   get_cvar_string("jtp10181",cvarString,255)
 
   if (strlen(cvarString) == 0) {
      formatex(cvarString,255,shortName)
      set_cvar_string("jtp10181",cvarString)
   }
   else if (contain(cvarString,shortName) == -1) {
      format(cvarString,255,"%s,%s",cvarString, shortName)
      set_cvar_string("jtp10181",cvarString)
   }
}
 
public plugin_natives()
{
   set_module_filter("module_filter")
   set_native_filter("native_filter")
}
 
public module_filter(const module[])
{
   if (!cstrike_running() && equali(module, "cstrike")) {
      return PLUGIN_HANDLED
   }
 
   return PLUGIN_CONTINUE
}
 
public native_filter(const name[], index, trap)
{
   if (!trap) return PLUGIN_HANDLED
 
   return PLUGIN_CONTINUE
}
 
public client_connect(id)
{
   if(para_ent[id] > 0)
   {
      remove_entity(para_ent[id])
   }
   has_parachute[id] = true
   para_ent[id] = 0
}
 
public client_disconnect(id)
{
   parachute_reset(id)
}
 
public death_event()
{
   new id = read_data(2)
   parachute_reset(id)
}
 
parachute_reset(id)
{
   if(para_ent[id] > 0) {
      if (is_valid_ent(para_ent[id])) {
         remove_entity(para_ent[id])
      }
   }
 
   if (is_user_alive(id)) set_user_gravity(id, 1.0)
 
   has_parachute[id] = false
   para_ent[id] = 0
}
 
public newSpawn(id)
{
   if(para_ent[id] > 0)
   {
      remove_entity(para_ent[id])
   }
   has_parachute[id] = true
   para_ent[id] = 0
}
 
public client_PreThink(id)
{
   //parachute.mdl animation information
   //0 - deploy - 84 frames
   //1 - idle - 39 frames
   //2 - detach - 29 frames
 
   if(!(get_user_flags(id) & ADMIN_LEVEL_H)) return

   if (!get_pcvar_num(pEnabled)) return
   if (!is_user_alive(id) || !has_parachute[id]) return
 
   new Float:fallspeed = get_pcvar_float(pFallSpeed) * -1.0
   new Float:frame
 
   new button = get_user_button(id)
   new oldbutton = get_user_oldbutton(id)
   new flags = get_entity_flags(id)
 
   if (para_ent[id] > 0 && (flags & FL_ONGROUND)) {
 
      if (get_pcvar_num(pDetach)) {
 
         if (get_user_gravity(id) == 0.1) set_user_gravity(id, 1.0)
 
         if (entity_get_int(para_ent[id],EV_INT_sequence) != 2) {
            entity_set_int(para_ent[id], EV_INT_sequence, 2)
            entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
            entity_set_float(para_ent[id], EV_FL_frame, 0.0)
            entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
            entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
            entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
            return
         }
 
         frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
         entity_set_float(para_ent[id],EV_FL_fuser1,frame)
         entity_set_float(para_ent[id],EV_FL_frame,frame)
 
         if (frame > 254.0) {
            remove_entity(para_ent[id])
            para_ent[id] = 0
         }
      }
      else {
         remove_entity(para_ent[id])
         set_user_gravity(id, 1.0)
         para_ent[id] = 0
      }
 
      return
   }
 
   if (button & IN_USE) {
 
      new Float:velocity[3]
      entity_get_vector(id, EV_VEC_velocity, velocity)
 
      if (velocity[2] < 0.0) {
 
         if(para_ent[id] <= 0) {
            para_ent[id] = create_entity("info_target")
            if(para_ent[id] > 0) {
               entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
               entity_set_edict(para_ent[id], EV_ENT_aiment, id)
               entity_set_edict(para_ent[id], EV_ENT_owner, id)
               entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
               entity_set_int(para_ent[id], EV_INT_sequence, 0)
               entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
               entity_set_float(para_ent[id], EV_FL_frame, 0.0)
               entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
            }
         }
 
         if (para_ent[id] > 0) {
 
            entity_set_int(id, EV_INT_sequence, 3)
            entity_set_int(id, EV_INT_gaitsequence, 1)
            entity_set_float(id, EV_FL_frame, 1.0)
            entity_set_float(id, EV_FL_framerate, 1.0)
            set_user_gravity(id, 0.1)
 
            velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
            entity_set_vector(id, EV_VEC_velocity, velocity)
 
            if (entity_get_int(para_ent[id],EV_INT_sequence) == 0) {
 
               frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
               entity_set_float(para_ent[id],EV_FL_fuser1,frame)
               entity_set_float(para_ent[id],EV_FL_frame,frame)
 
               if (frame > 100.0) {
                  entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
                  entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
                  entity_set_int(para_ent[id], EV_INT_sequence, 1)
                  entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
                  entity_set_float(para_ent[id], EV_FL_frame, 0.0)
                  entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
               }
            }
         }
      }
      else if (para_ent[id] > 0) {
         remove_entity(para_ent[id])
         set_user_gravity(id, 1.0)
         para_ent[id] = 0
      }
   }
   else if ((oldbutton & IN_USE) && para_ent[id] > 0 ) {
      remove_entity(para_ent[id])
      set_user_gravity(id, 1.0)
      para_ent[id] = 0
   }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vpalehin
сообщение 22.10.2019, 19:21
Сообщение #5
Стаж: 6 лет 6 месяцев

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

Fullserver, Спасибо! Я ответа не дождался, добавил это в начало кода. И тоже работало.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fullserver
сообщение 22.10.2019, 19:23
Сообщение #6


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

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

vpalehin, в начало кода нет смысла, будет работать только там, где есть (id) или он дополнительно задан внутри функции.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vavarik
сообщение 22.10.2019, 19:53
Сообщение #7


Стаж: 15 лет
Город: Саратов

Сообщений: 942
Благодарностей: 318
Полезность: 143

SarHosting.ru
Меняете код в файле .sma, а затем компилируете его в amx. Если этого не сделать, то работать будет на старом плагине.

Отредактировал: vavarik, - 22.10.2019, 19:53
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя vpalehin
сообщение 22.10.2019, 22:57
Сообщение #8
Стаж: 6 лет 6 месяцев

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

Спасибо!
Да, sma компилирую в amxx.
Подскажите еще пожалуйста. Я сейчас настраиваю сервер. Каждый плагин отдельно. После редактирования файлов выключаю hlds и заново запускаю. Есть ли консольная команда, которая перезагружает все настройки (изменения в .sma, в файлах .cfg), что бы после каждого изменения не выключать/включать hlds?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vpalehin
сообщение 23.10.2019, 16:29
Сообщение #9
Стаж: 6 лет 6 месяцев

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

Доброго времени суток.
Назрел еще такой вопрос:
Есть плагин AFK. Который сначала просто текстом предупреждает игрока, а потом кикает. Можно ли добавить к тексту, функцию SLAP? Или для этого нужно писать отдельный скрипт или это вообще не возможно и слапать может только юзер?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vpalehin
сообщение 25.10.2019, 22:40
Сообщение #10
Стаж: 6 лет 6 месяцев

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

Приветствую! Собственно еще есть вопросы, надеюсь поможете.
Есть штатное меню амх мода. Вызывается нажатием кнопки "М". В нем такие функции как:
Забанить
Кикнуть
Поменять карту
итд.

В cmdacess прописал на эти функции флаги. Т.е доступ ко всему, только у меня.
Сделал на сервере ВИП игроков. Присвоил им флаг t.
У администраторов флаги - cdefjmtu
Следовательно администраторы могут банить, кикать, слапать, менять карту, включать голосование за карту.
Вопрос 1: правильные ли флаги даны администраторам? Есть ли какое-то правило для выдачи? Т.е для випов только такие, для админов только такие.
Вопрос 2: этот вопрос очень нуждается в ответе. При вызове админского меню, часть настроек недоступно обычным админам (просто подсвечено серым). Но тем не менее в меню они отображаются. Что бы не перегружать админское меню, можно ли добавить код, что бы эти настройки были видны (и соответственно доступны) только главному администратору?
Нашел файл menufront.sma. Там это меню и прописано:
Cкрытый текст
Код:
AddDefaultMenus()
{
new flags;
AddMenuLang("KICK_PLAYER", "amx_kickmenu", get_clcmd_flags("amx_kickmenu", flags) ? flags : ADMIN_KICK , "Players Menu")
AddMenuLang("BAN_PLAYER", "amx_banmenu", get_clcmd_flags("amx_banmenu", flags) ? flags : ADMIN_BAN, "Players Menu")
AddMenuLang("SLAP_SLAY", "amx_slapmenu", get_clcmd_flags("amx_slapmenu", flags) ? flags : ADMIN_SLAY, "Players Menu")
AddMenuLang("TEAM_PLAYER", "amx_teammenu", get_clcmd_flags("amx_teammenu", flags) ? flags : ADMIN_LEVEL_A, "Players Menu")
AddMenuLang("CHANGEL", "amx_mapmenu", get_clcmd_flags("amx_mapmenu", flags) ? flags : ADMIN_MAP, "Maps Menu")
AddMenuLang("VOTE_MAPS", "amx_votemapmenu", get_clcmd_flags("amx_votemapmenu", flags) ? flags : ADMIN_VOTE, "Maps Menu")
AddMenuLang("SPECH_STUFF", "amx_speechmenu", get_clcmd_flags("amx_speechmenu", flags) ? flags : ADMIN_MENU, "Commands Menu")
AddMenuLang("SERVER_COM", "amx_cmdmenu", get_clcmd_flags("amx_cmdmenu", flags) ? flags : ADMIN_MENU, "Commands Menu")
AddMenuLang("CVARS_SET", "amx_cvarmenu", get_clcmd_flags("amx_cvarmenu", flags) ? flags : ADMIN_CVAR, "Commands Menu")
AddMenuLang("CONFIG", "amx_cfgmenu", get_clcmd_flags("amx_cfgmenu", flags) ? flags : ADMIN_MENU, "Commands Menu")
AddMenuLang("STATS_SET", "amx_statscfgmenu", get_clcmd_flags("amx_statscfgmenu", flags) ? flags : ADMIN_CFG, "Stats Configuration")
AddMenuLang("PAUSE_PLUG", "amx_pausecfgmenu", get_clcmd_flags("amx_pausecfgmenu", flags) ? flags : ADMIN_CFG, "Pause Plugins")
AddMenuLang("RES_WEAP", "amx_restmenu", get_clcmd_flags("amx_restmenu", flags) ? flags : ADMIN_CFG, "Restrict Weapons")
AddMenuLang("TELE_PLAYER", "amx_teleportmenu", get_clcmd_flags("amx_teleportmenu", flags) ? flags : ADMIN_CFG, "Teleport Menu")
}

Возможно ли реализовать данное или проще вообще удалить эти строчки отсюда и если что менять настройки непосредственно в самих файлах?
Вот здесь видно, как админ с флагами "cdefjmtu" это меню видит, но активировать не может.
Прикрепленное изображение
Вот на всякий случай файл с флагами
Cкрытый текст
Код:

"amx_statscfgmenu" "h" ; statscfg.amxx
"amx_statscfg" "h" ; statscfg.amxx
"amx_reloadadmins" "h" ; admin.amxx
"amx_addadmin" "l" ; admin.amxx
"amx_kick" "c" ; admincmd.amxx
"amx_ban" "d" ; admincmd.amxx
"amx_banip" "d" ; admincmd.amxx
"amx_addban" "d" ; admincmd.amxx
"amx_unban" "d" ; admincmd.amxx
"amx_slay" "e" ; admincmd.amxx
"amx_slap" "e" ; admincmd.amxx
"amx_leave" "c" ; admincmd.amxx
"amx_pause" "g" ; admincmd.amxx
"amx_who" "y" ; admincmd.amxx
"amx_cvar" "g" ; admincmd.amxx
"amx_plugins" "y" ; admincmd.amxx
"amx_modules" "y" ; admincmd.amxx
"amx_map" "f" ; admincmd.amxx
"amx_cfg" "h" ; admincmd.amxx
"amx_nick" "e" ; admincmd.amxx
"amx_last" "d" ; admincmd.amxx
"amx_rcon" "l" ; admincmd.amxx
"amx_showrcon" "l" ; admincmd.amxx
"amx_help" "" ; adminhelp.amxx
"amx_setlang" "h" ; multilingual.amxx
"amx_langmenu" "" ; multilingual.amxx
"amxmodmenu" "u" ; menufront.amxx
"amx_menu" "" ; menufront.amxx
"amx_cmdmenu" "a" ; cmdmenu.amxx
"amx_cfgmenu" "a" ; cmdmenu.amxx
"amx_speechmenu" "u" ; cmdmenu.amxx
"amx_cvarmenu" "g" ; cmdmenu.amxx
"amx_kickmenu" "c" ; plmenu.amxx
"amx_banmenu" "d" ; plmenu.amxx
"amx_slapmenu" "e" ; plmenu.amxx
"amx_teammenu" "m" ; plmenu.amxx
"amx_clcmdmenu" "a" ; plmenu.amxx
"amx_mapmenu" "f" ; mapsmenu.amxx
"amx_votemapmenu" "j" ; mapsmenu.amxx
"amx_plugincvarmenu" "g" ; pluginmenu.amxx
"amx_plugincmdmenu" "h" ; pluginmenu.amxx
"amx_say" "i" ; adminchat.amxx
"amx_chat" "i" ; adminchat.amxx
"amx_psay" "i" ; adminchat.amxx
"amx_tsay" "i" ; adminchat.amxx
"amx_csay" "i" ; adminchat.amxx
"amx_votemap" "j" ; adminvote.amxx
"amx_votekick" "j" ; adminvote.amxx
"amx_voteban" "j" ; adminvote.amxx
"amx_vote" "j" ; adminvote.amxx
"amx_cancelvote" "j" ; adminvote.amxx
"amx_pausecfg" "h" ; pausecfg.amxx
"amx_pausecfgmenu" "h" ; pausecfg.amxx
"amx_off" "h" ; pausecfg.amxx
"amx_on" "h" ; pausecfg.amxx
"amx_pbaddbot" "a" ; amxx_podbotmenu.amxx
"amx_pbmenu" "a" ; amxx_podbotmenu.amxx
"amx_pbcsmenu" "a" ; amxx_podbotmenu.amxx
"amx_pbcpmenu" "a" ; amxx_podbotmenu.amxx
"amx_pbctmenu" "a" ; amxx_podbotmenu.amxx
"amx_pbcmmenu" "a" ; amxx_podbotmenu.amxx
"amx_pbkbmenu" "a" ; amxx_podbotmenu.amxx
"amx_pbwmmenu" "a" ; amxx_podbotmenu.amxx
"amx_heal" "h" ; admin_heal.amxx
"amx_money" "m" ; admin_money.amxx

Cпасибо!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sinom
сообщение 26.10.2019, 1:26
Сообщение #11
Стаж: 7 лет 11 месяцев

Сообщений: 32
Благодарностей: 4
Полезность: 87

Цитата(vpalehin @ 23.10.2019, 17:29) *
Доброго времени суток.
Назрел еще такой вопрос:
Есть плагин AFK. Который сначала просто текстом предупреждает игрока, а потом кикает. Можно ли добавить к тексту, функцию SLAP? Или для этого нужно писать отдельный скрипт или это вообще не возможно и слапать может только юзер?

Если хорошо подумать, то после удара плагин будет думать что игрок двигается.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 26.10.2019, 2:47
Сообщение #12
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

можно хп снимать, двигатся не будет


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