AMX MOD X
Воскресенье, 11.01.2026, 14:52:07



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Изменение скорости
pa1nkillerДата: Воскресенье, 30.11.2008, 12:37:36 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 18
Репутация: 0
Статус: Не в сети
я написал такой плагин, в котором скорость зависит от hp
он вроде меняет скорость, но при смене оружия скорость становиться номинальной
че делать?

Code

public plugin_init()  
{
  register_plugin(PLUGIN, VERSION, AUTHOR)
   
  register_event("Damage", "onDamage", "b", "2!0")
  register_event("HLTV", "event", "a", "1=0", "2=0")
}
new Float:speed = 40.0
new Float:speed1 = 80.0
new Float:speed2 = 160.0
new Float:speed3 = 240.0
new Float:speed4 = 320.0
public onDamage(id)
{
  new hp = get_user_health(id)
  switch(hp){
   
   case  1..5:
   {
    set_user_maxspeed(id,speed)
   }
   case 6..15:
   {
    set_user_maxspeed(id,speed1)
   }
   case 16..40:
   {
    set_user_maxspeed(id,speed2)
   }
   case 41..65:
   {
    set_user_maxspeed(id,speed3)
   }
   case 66..100:
   {
    set_user_maxspeed(id,speed4)
   }
  }
                    
}
public event(id)
{
  set_user_maxspeed(id,speed4)
}


p1^^
 
F4RR3LLДата: Воскресенье, 30.11.2008, 13:06:16 | Сообщение # 2
Полковник
Группа: Скриптеры
Сообщений: 153
Репутация: 2
Статус: Не в сети
Code

public event(id)
{
   set_user_maxspeed(id,speed4)
}

попробуй заменить на
Code

public event()
{
   new pl[32],num
   get_players(pl,num)
   for(new i=0;i<num;i++)
   {
     set_user_maxspeed(pl[i],speed4)
   }
}


=\
 
DaTaДата: Воскресенье, 30.11.2008, 14:24:56 | Сообщение # 3
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Я бы воспользовался hamsandwich:
для сущностей
"weapon_ak47",
"weapon_aug",
"weapon_awp",
"weapon_c4",
"weapon_deagle",
"weapon_elite",
"weapon_famas",
"weapon_fiveseven ",
"weapon_flashbang",
"weapon_g3sg1",
"weapon_galil",
"weapon_glock18",
"weapon_hegrenade",
"weapon_knife",
"weapon_m 249",
"weapon_m3",
"weapon_m4a1",
"weapon_mac10",
"weapon_mp5navy",
"weapon_p228",
"weapon_p90",
"weapon_scout",
"weapon_sg5 50",
"weapon_sg552",
"weapon_shield",
"weapon_smokegrenade",
"weapon_tmp",
"weapon_ump45",
"weapon_usp",
"weapon_xm1014"
хукнул бы Ham_CS_Item_GetMaxSpeed(можно и post, можно прямо в pre менять значение параметра)

для player хукнул бы Ham_TakeDamage(post), тут надо проверять is_user_alive

сохранять "номинальную" скорость надо при событии Ham_CS_Item_GetMaxSpeed что бы можно было относительную скорость высчитать после в Ham_CS_Item_GetMaxSpeed и Ham_TakeDamage.

 
PomanoBДата: Воскресенье, 30.11.2008, 14:39:13 | Сообщение # 4
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Я бы просто хукал CurWeapon
Code

register_event("CurWeapon","switchweapon","be")

public switchweapon(id)
{  
  if(g_Speed[id])  
   fm_set_user_maxspeed(id,500.0)  
  return PLUGIN_CONTINUE  
}


http://romanov4400.mybrute.com
 
pa1nkillerДата: Воскресенье, 30.11.2008, 15:01:29 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 18
Репутация: 0
Статус: Не в сети
Quote (PomanoB)
register_event("CurWeapon","switchweapon","be")

я так понял это событие смены оружия?
Quote (PomanoB)
fm_set_user_maxspeed

и че такое FM? %)


p1^^

Сообщение отредактировал pa1nkiller - Воскресенье, 30.11.2008, 15:06:44
 
DaTaДата: Воскресенье, 30.11.2008, 15:42:20 | Сообщение # 6
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Quote (PomanoB)
Я бы просто хукал CurWeapon

тогда еще нужно хукать client_command drop (post)
Quote (pa1nkiller)
и че такое FM? %)

это портация функции из engine в fakemeta (см. fakemeta_util.inc)
 
PomanoBДата: Воскресенье, 30.11.2008, 16:07:07 | Сообщение # 7
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Quote (DaTa)
тогда еще нужно хукать client_command drop (post)

Необязательно, достаточно CurWeapon

Quote (pa1nkiller)
и че такое FM?

http://amxmodx.ucoz.ru/forum/17-90-1


http://romanov4400.mybrute.com

Сообщение отредактировал PomanoB - Воскресенье, 30.11.2008, 16:07:23
 
pa1nkillerДата: Воскресенье, 30.11.2008, 16:49:29 | Сообщение # 8
Рядовой
Группа: Пользователи
Сообщений: 18
Репутация: 0
Статус: Не в сети
так я и не понял что надо добавить в мой плагин... :(

p1^^

Сообщение отредактировал pa1nkiller - Воскресенье, 30.11.2008, 16:49:52
 
PomanoBДата: Воскресенье, 30.11.2008, 17:06:37 | Сообщение # 9
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
В plugin_init
Code
register_event("CurWeapon","onDamage","be")


http://romanov4400.mybrute.com
 
pa1nkillerДата: Пятница, 12.12.2008, 16:34:05 | Сообщение # 10
Рядовой
Группа: Пользователи
Сообщений: 18
Репутация: 0
Статус: Не в сети
Quote (PomanoB)
В plugin_init....

спс большое.. всего т одну строчку надо было добавить :)

Добавлено (2008-12-12, 4:34 Pm)
---------------------------------------------

Quote (DaTa)
Я бы воспользовался hamsandwich:

как правильно зарегить его?

Code
g_speed = registerham(Ham_CS_Item_GetMaxSpeed,???,???,0)

не знаю что там писать %)


p1^^

Сообщение отредактировал pa1nkiller - Воскресенье, 30.11.2008, 18:17:55
 
DaTaДата: Пятница, 12.12.2008, 17:40:22 | Сообщение # 11
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Quote (pa1nkiller)
Quote (DaTa)
Я бы воспользовался hamsandwich:

как правильно зарегить его?
Code
g_speed = registerham(Ham_CS_Item_GetMaxSpeed,???,???,0)

не знаю что там писать %)


открывай, смотри
/include/ham_const.inc
/include/hamsandwich.inc
Code
/**
    * Hooks the virtual table for the specified entity class.
    * An example would be: RegisterHam(Ham_TakeDamage, "player", "player_hurt");
    * Look at the Ham enum for parameter lists.
    *
    * @param function  The function to hook.
    * @param EntityClass    The entity classname to hook.
    * @param callback  The forward to call.
    * @param post   Whether or not to forward this in post.
    * @return     Returns a handle to the forward.  Use EnableHamForward/DisableHamForward to toggle the forward on or off.
    */
native HamHook:RegisterHam(Ham:function, const EntityClass[], const Callback[], Post=0);

ищи плагины, которые его юзают, смотри примеры :)

Добавлено (2008-12-12, 5:40 Pm)
---------------------------------------------
Для world_items/worldspawn(глобальный хук) у меня не работает, работает только для каждого оружия отдельно, по этому я регистрировал так

Code
static const aszWeapons[][]=
{
      "weapon_ak47",
      "weapon_aug",
      "weapon_awp",
      "weapon_c4",
      "weapon_deagle",
      "weapon_elite",
      "wea pon_fam as",
      "weapon_fiveseven ",
      "weapon_flashbang",
      "weapon_g3sg1",
      "weapon_galil",
      "weapon_glock18",
      "weapon_hegrenade",
      "weapon_kni fe",
      " weapon_m 249",
      "weapon_m3",
      "weapon_m4a1",
      "weapon_mac10",
      "weapon_mp5navy",
      "weapon_p228",
      "weapon_p90",
      " weapon_ scout",
      "weapon_sg5 50",
      "weapon_sg552",
      "weapon_shield",
      "weapon_smokegrenade",
      "weapon_tmp",
      "weapon_ump45",
      "weapon_usp",  
      " weapon_xm1014"    
}
for(new i=0; i < sizeof(aszWeapons);i++)
      RegisterHam(Ham_CS_Item_GetMaxSpeed, aszWeapons[i], "callback_funtion_name", 1)

Попробуй, может у тебя заработает с "world_items" или с "worldspawn" вместо регистрации каждого оружия по отдельности
-----
Вообще я рекомендую воспользоваться register_event("CurWeapon","switchweapon","be"), но у меня при каких-то обстоятельствах при смене оружия это сообщение не отправлялось...

 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026