AMX MOD X
Пятница, 02.01.2026, 03:25:09



Приветствую Вас Гость | RSS
[ Главная ] [ Помогите с GRAB+ - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Помогите с GRAB+
CLLlAgOBДата: Воскресенье, 10.02.2008, 04:42:27 | Сообщение # 1
Полковник
Группа: Скриптеры
Сообщений: 217
Репутация: 14
Статус: Не в сети
Вот код задача нужно сделать чтобы при нажатии клавиши атаки у пользователя который зажат грабом отнимальсь hp

Code

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define MIN_DIST 70.0
#define THROW_POWER 1500
new grab[32]
new Float:grabdistance[32]
new bool:grabsearch[32]

public plugin_init()
  {
  register_clcmd("+grab","grab_on")
  register_clcmd("-grab","grab_off")
}
public client_PreThink(id)
  {
  new buttons = entity_get_int(id,EV_INT_button)
   
  if(grabsearch[id-1] == true) {
   new aimid, aimbody
   if(get_user_aiming(id,aimid,aimbody) != 0.0 && aimid != 0) {
    new targetclass[16]
    entity_get_string(aimid,EV_SZ_classname,targetclass,16)
    if(equal(targetclass,"player")) {
     if(is_user_grabbed(aimid) == -1)
      grab_player(id,aimid)
     else {
      client_print(id,print_chat,"Dieser Spieler ist schon grabbed")
      grabsearch[id-1] = false
     }
    }
   }
  }
   
  if(grab[id-1] > 0) { // Took this from JediGrap by KCE
   new Float:origin1[3], Float:origin2[3], ilook[3], Float:look[3], Float:direction[3], Float:moveto[3], Float:grabbedorigin[3], Float:velocity[3], Float:length
   get_user_origin(id,ilook,3)
   IVecFVec(ilook,look)
   entity_get_vector(grab[id-1],EV_VEC_origin,grabbedorigin)

   entity_get_vector(id,EV_VEC_origin,origin1)
   entity_get_vector(grab[id-1],EV_VEC_origin,origin2)

   direction[0] = look[0] - origin1[0]
   direction[1] = look[1] - origin1[1]
   direction[2] = look[2] - origin1[2]
   length = get_distance_f(look,origin1)
   if(!length)
    length = 1.0 // avoid division by 0

   moveto[0] = origin1[0] + direction[0] * grabdistance[id-1] / length
   moveto[1] = origin1[1] + direction[1] * grabdistance[id-1] / length
   moveto[2] = origin1[2] + direction[2] * grabdistance[id-1] / length

   velocity[0] = (moveto[0] - origin2[0]) * 8
   velocity[1] = (moveto[1] - origin2[1]) * 8
   velocity[2] = (moveto[2] - origin2[2]) * 8

   entity_set_vector(grab[id-1],EV_VEC_velocity,velocity)
    
   // Push and Pull
   if(buttons&IN_ATTACK) {
    entity_set_int(id,EV_INT_button,buttons&~IN_ATTACK)
    Как тут заставить старадать зажатого чела )))) ну типа - hp каждую секунду
   }
  }
   
  if(is_user_grabbed(id) != -1)
   entity_set_int(id,EV_INT_button,buttons&~IN_MOVELEFT&~IN_MOVERIGHT&~IN_FORWARD&~IN_BACK&~IN_JUMP) // Stop sucking :o
  }
// =================================================================================================

public grab_on(id,level,cid) {
  if(!Rebel[id])  
   return PLUGIN_HANDLED
   
  grabsearch[id-1] = true
   
  return PLUGIN_HANDLED
}

public grab_off(id,level,cid) {
  if(!Rebel[id])  
   return PLUGIN_HANDLED
   
  grabsearch[id-1] = false
  grab[id-1] = 0
   
  return PLUGIN_HANDLED
}

// =================================================================================================

public grab_player(id,target) {
  grab[id-1] = target
  grabsearch[id-1] = false
  new Float:origin1[3], Float:origin2[3]
  entity_get_vector(id,EV_VEC_origin,origin1)
  entity_get_vector(target,EV_VEC_origin,origin2)
  grabdistance[id-1] = get_distance_f(origin1,origin2)
      
  new name[32]
  get_user_name(target,name,31)
  client_print(id,print_chat,"[DeadMod] You grabbed %s",name)
   
  if(callfunc_begin("detect_cheat","prokreedz.amxx") == 1) {
   callfunc_push_int(target)
   callfunc_push_str("Grab")
   callfunc_end()
  }
}

// =================================================================================================

public is_user_grabbed(id) {
  for(new i=0;i<32;i++) {
   if(grab[i] == id)
    return (i+1)
  }
   
  return -1
}

// =================================================================================================

// =================================================================================================

public deathmsg() {
  new attacker = read_data(1) // attacker
  new victim = read_data(2)
  grab[attacker-1] = 0
  grabsearch[attacker-1] = false
   
  new pid = is_user_grabbed(victim)
  if(pid != -1)
   grab[pid-1] = 0
}

public resethud(id) {
  new pid = is_user_grabbed(id)
  if(pid != -1) {
   grab[pid-1] = 0
  }
   
  grab[id-1] = 0
  grabsearch[id-1] = false
}

// =================================================================================================

интересует именно это в коде
if(buttons&IN_ATTACK) {
entity_set_int(id,EV_INT_button,buttons&~IN_ATTACK)
Как тут заставить старадать зажатого чела )))) ну типа - hp каждую секунду
}

Добавлено (2008-02-09, 4:58 Am)
---------------------------------------------
Есть идеи???

Добавлено (2008-02-10, 4:42 Am)
---------------------------------------------
Спасибо разобрался ) сам

Сообщение отредактировал CLLlAgOB - Пятница, 08.02.2008, 14:24:46
 
draftДата: Воскресенье, 10.02.2008, 15:47:05 | Сообщение # 2
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
Я прошу прощения, но я не понял, что требовалось? И интересно, как проблема решилась?
 
CLLlAgOBДата: Понедельник, 11.02.2008, 12:01:14 | Сообщение # 3
Полковник
Группа: Скриптеры
Сообщений: 217
Репутация: 14
Статус: Не в сети
жа я хотел ID захваченого найти чтобы с ним чтонибуть сделать.
Я просто невнимательно код смотрел вот айди grab[id-1]
 
draftДата: Понедельник, 11.02.2008, 20:33:06 | Сообщение # 4
Полковник
Группа: Пользователи
Сообщений: 225
Репутация: 3
Статус: Не в сети
А что это за команда grab?
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026