AMX MOD X
Четверг, 25.04.2024, 12:08:02



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » чет совсем не выткаю (нид хелп)
чет совсем не выткаю
HoRRoRДата: Четверг, 09.07.2009, 21:21:00 | Сообщение # 1
Полковник
Группа: Скриптеры
Сообщений: 181
Репутация: 8
Статус: Не в сети
в общем надо сделать так: зомбяк жмет кнопку - все союзники рядом с ним восполняют своё хп до максимального. исцеляются кароч. как и сам зомби

Code
#include <amxmodx>
#include <fakemeta>
#include <zombieplague>

#define PLUGIN "[ZP] Class - Lifestealer"
#define VERSION "1.0"
#define AUTHOR "HoRRoR"

new const zclass_name[] = { "Lifestealer" }
new const zclass_info[] = { "- Get HP, which infects" }
new const zclass_model[] = { "zombie_leech" }
new const zclass_clawmodel[] = { "v_zombie.mdl" }
const zclass_health = 1800
const zclass_speed = 255
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.0
const zclass_infecthp = 200

new g_zclass_lifestealer
new i_cooldown_time[33] = 0
new g_cooldown[33] = 0
new g_maxplayers
new g_abil_one_used[33]  

new Float:g_heal_cooldown = 30.0

public plugin_precache()
{
  g_zclass_lifestealer = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)  
}

public plugin_init()  
{
  register_plugin(PLUGIN, VERSION, AUTHOR)
  register_clcmd("ability1", "use_ability_one")
  register_concmd("ability1", "use_ability_one")
  g_maxplayers = get_maxplayers()
  register_logevent("roundStart", 2, "1=Round_Start")
}

public use_ability_one(healer)
{
  if ((zp_get_user_zombie_class(healer) == g_zclass_lifestealer) && zp_get_user_zombie(healer) && !zp_get_user_nemesis(healer))
  {
   new PlayerPos[3]
   new HealerPos[3]
   new Distance
    
   for (new i = 1; i <= g_maxplayers; i++)
   {
    if (is_user_alive(i) == 1)
    {
     get_user_origin(i, PlayerPos)
     get_user_origin(healer,HealerPos)
     Distance = get_distance(PlayerPos, HealerPos)
     if (Distance <= 100)  
     {
      set_pev(i, pev_health, zp_get_zombie_maxhealth(i))
     }
    }
   }  
  }
}

public roundStart()
{
  for (new i = 1; i <= g_maxplayers; i++)
  {
   i_cooldown_time[i] = floatround(g_heal_cooldown)
   g_abil_one_used[i] = 0

   remove_task(i)
  }
}

public zp_user_infected_post(id, infector)
{
  if ((zp_get_user_zombie_class(id) == g_zclass_lifestealer) && !zp_get_user_nemesis(id))
  {
   new text[100]
   new note_cooldown = floatround(g_heal_cooldown)
   format(text,99,"^x04[ZP]^x01 Your ability is ^x04RENEW^x01. Cooldown:^x04 %d ^x01seconds.",note_cooldown)
   message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id)  
   write_byte(id)  
   write_string(text)  
   message_end()
    
   i_cooldown_time[id] = floatround(g_heal_cooldown)
   remove_task(id)
    
   g_cooldown[id] = 0
    
   client_cmd(id,"bind F1 ability1")
  }
   
  if (zp_get_user_zombie_class(infector) == g_zclass_lifestealer)
  {
   set_pev(infector, pev_health, float(pev(infector, pev_health) + zclass_infecthp))
  }
}

получилось хз что. помогите плз. ото как это реализовать не могу понять. (см. блок use_ability_one(healer))

Добавлено (2009-07-09, 9:21 Pm)
---------------------------------------------
отбой тревоге... вроде получилось сделать так:

Code
new Distance
   for (new i = 1; i <= g_maxplayers; i++)
   {
    if (is_user_alive(i) == 1)
    {
     Distance = get_entity_distance(i, healer)
     if (Distance <= 300)  
     {
      set_user_health(i,zp_get_zombie_maxhealth(i))
     }
    }
   }    
 
PomanoBДата: Четверг, 09.07.2009, 21:24:49 | Сообщение # 2
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Так вроде всё правильно написано, а что не работает-то?
И 100 это весьма маленький радиус)
Можно ещё использовать EngFunc_FindEntityInSphere
И неоптимально каждый раз в цикле получать координаты Healr'а

Добавлено (2009-07-09, 9:24 Pm)
---------------------------------------------
Опоздал )


http://romanov4400.mybrute.com
 
HoRRoRДата: Четверг, 09.07.2009, 21:30:05 | Сообщение # 3
Полковник
Группа: Скриптеры
Сообщений: 181
Репутация: 8
Статус: Не в сети
ща другие траблы. во время лечения хочу создать динамический свет под хилером.

скопипастел код. но выдает другие совсем ошибки =/

Code
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <fun>
#include <zombieplague>

#define PLUGIN "[ZP] Class - Lifestealer"
#define VERSION "1.0"
#define AUTHOR "HoRRoR"

new const zclass_name[] = { "Lifestealer" }
new const zclass_info[] = { "- Get HP, which infects" }
new const zclass_model[] = { "zombie_leech" }
new const zclass_clawmodel[] = { "v_zombie.mdl" }
const zclass_health = 1800
const zclass_speed = 255
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.0
const zclass_infecthp = 200

new g_zclass_lifestealer
new i_cooldown_time[33] = 0
new g_cooldown[33] = 0
new g_maxplayers
new g_abil_one_used[33]  
enum Coord_e {Float:x, Float:y, Float:z};

new Float:g_heal_cooldown = 30.0

public plugin_precache()
{
  g_zclass_lifestealer = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)  
}

public plugin_init()  
{
  register_plugin(PLUGIN, VERSION, AUTHOR)
  register_clcmd("ability1", "use_ability_one")
  register_concmd("ability1", "use_ability_one")
  g_maxplayers = get_maxplayers()
  register_logevent("roundStart", 2, "1=Round_Start")
}

public use_ability_one(healer)
{
  if ((zp_get_user_zombie_class(healer) == g_zclass_lifestealer) && zp_get_user_zombie(healer) && !zp_get_user_nemesis(healer))
  {
   new Distance
   for (new i = 1; i <= g_maxplayers; i++)
   {
    if (is_user_alive(i) == 1)
    {
     Distance = get_entity_distance(i, healer)
     if (Distance <= 300)  
     {
      set_user_health(i,zp_get_zombie_maxhealth(i))
     }
    }
   }
    
   static Coord_e:vecOrigin [Coord_e];
   pev (healer,pev_origin, vecOrigin);

   message_begin_f (MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0);
   write_byte (TE_DLIGHT);
   write_coord_f (vecOrigin [x ]);
   write_coord_f (vecOrigin [y ]);
   write_coord_f (vecOrigin [z ]);
   write_byte (300);
   write_byte (0); //red
   write_byte (255); //green
   write_byte (0); //blue
   write_byte (8);//life
   write_byte (60);//decay
   message_end();
      
  }
}

public roundStart()
{
  for (new i = 1; i <= g_maxplayers; i++)
  {
   i_cooldown_time[i] = floatround(g_heal_cooldown)
   g_abil_one_used[i] = 0

   remove_task(i)
  }
}

public zp_user_infected_post(id, infector)
{
  if ((zp_get_user_zombie_class(id) == g_zclass_lifestealer) && !zp_get_user_nemesis(id))
  {
   new text[100]
   new note_cooldown = floatround(g_heal_cooldown)
   format(text,99,"^x04[ZP]^x01 Your ability is ^x04RENEW^x01. Cooldown:^x04 %d ^x01seconds.",note_cooldown)
   message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id)  
   write_byte(id)  
   write_string(text)  
   message_end()
    
   i_cooldown_time[id] = floatround(g_heal_cooldown)
   remove_task(id)
    
   g_cooldown[id] = 0
    
   client_cmd(id,"bind F1 ability1")
  }
   
  if (zp_get_user_zombie_class(infector) == g_zclass_lifestealer)
  {
   set_pev(infector, pev_health, float(pev(infector, pev_health) + zclass_infecthp))
  }
}

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2006 ITB CompuPhase, AMX Mod X Team

Error: Undefined symbol "message_begin_f" on line 64
Error: Undefined symbol "write_coord_f" on line 66
Error: Undefined symbol "write_coord_f" on line 67
Error: Undefined symbol "write_coord_f" on line 68

4 Errors.
Could not locate output file D:\byfly\Zombie Plague 4.3\1.5.0x-to-2.0.0_globalupdate\cstrike\addons\amxmodx\scripting\zp_zcls_lifestealer.amx (compile failed).

Добавлено (2009-07-09, 9:30 Pm)
---------------------------------------------
а не, нашел в плагине-доноре
#define message_begin_f(%1,%2,%3) (engfunc (EngFunc_MessageBegin, %1, %2, %3))
#define write_coord_f(%1) (engfunc (EngFunc_WriteCoord, %1))

невнимательный я =/

 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » чет совсем не выткаю (нид хелп)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024