Замена Smoke лечением

krenko

Пользователь
Регистрация
10 Июн 2017
Сообщения
14
Симпатии
0
Пол
Мужской
#1
Привет всем.

Не знаю, как правильно объяснить, но кто видел, тот поймёт.


Плагин заменяет дым на гранату с лечением в радиусе своих.

Кто знает?
 

GALAXY

Пользователь
Регистрация
11 Июн 2017
Сообщения
20
Симпатии
13
Пол
Мужской
#2

Евгений

Пользователь
Регистрация
9 Июн 2017
Сообщения
117
Симпатии
24
Пол
Мужской
#4
Mmonster, в паблике же валяется этот плагин с моделями и спрайтами, и вроде исходник даже имеется) Только восстанавливает на 100хп, и кваром не меняется это.
 

Евгений

Пользователь
Регистрация
9 Июн 2017
Сообщения
117
Симпатии
24
Пол
Мужской
#7
Mmonster, ну понятное дело что в исходнике можно все изменить) просто там есть строка, где все думают что там можно изменить кол-во хп, но не работает)
 

BalbuR

Пользователь
Регистрация
26 Июл 2017
Сообщения
120
Симпатии
22
Пол
Мужской
#12
Написал по фану
не тестил
Код:
/*
   For fun >_<
   bulka1337
   04/august/17
  
   ===================================
   Require:
       - Reapi
       - AMX 1.8.3 or above
   ===================================
*/

#define MAX_HEALTH   100

#define V_MODEL           "models/x/v_heal.mdl"
#define P_MODEL           "models/x/p_heal.mdl"
#define W_HEAL_MODEL   "models/x/w_heal.mdl"

#define HEAL_SOUND       "sound/x/heal.wav"

/*========================================
// Don't touch it LOL
========================================*/

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <reapi>

#define NADE_HEAL       1337

enum _:ANIM_SMOKE
{
   ANIM_IDLE = 0,
   ANIM_PULLIN,
   ANIM_THROW,
   ANIM_DEPLOY
}


public plugin_precache()
{
   precache_model(V_MODEL);
   precache_model(P_MODEL);
   precache_model(W_HEAL_MODEL);
  
   precache_sound(HEAL_SOUND);
}

public plugin_init()
{
   register_plugin("Heal Grenade", )
   register_forward(FM_SetModel, "FM_SetModel_Grenade")
   RegisterHam( Ham_Think, "grenade", "HamHook_ThinkGrenade" )
   RegisterHam( Ham_CS_Weapon_SendWeaponAnim, "weapon_smokegrenade", "HamHook_Weapon_Anim_Post", true) // Better than use CurWeapon for that
}

public FM_SetModel_Grenade(ent, model[])
{
   if (strlen(model) < 8)
   {
       return;
   }
  
   if (model[7] != 'w' || model[8] != '_')
   {  
       return;
   }
  
   new Float:dmgtime
   get_entvar(ent, var_dmgtime, dmgtime)
  
   // Grenade not yet thrown
   if (dmgtime == 0.0)
   {  
       return;
   }
  
   if (model[9] == 's' && model[10] == 'm')
   {      
       engfunc( EngFunc_SetModel, ent, W_HEAL_MODEL )
      
       set_entvar(ent, var_flTimeStepSound, NADE_HEAL)
   }
}

public HamHook_ThinkGrenade(ent)
{
   if(!is_entity(ent))
   {
       return HAM_IGNORED;
   }

   new Float:dmgtime; dmgtime = get_entvar(ent, var_dmgtime);
  
   if(dmgtime > get_gametime())
   {
       return HAM_IGNORED;
   }
  
   if(get_entvar(ent, var_flTimeStepSound) != NADE_HEAL)
   {
       return HAM_IGNORED;
   }

   boom(ent);
  
   return HAM_IGNORED;
}

public HamHook_Weapon_Anim_Post(ent, anim, skiplocal)
{
   new iPlayer; iPlayer = get_member(ent, m_pPlayer)
  
   switch(anim)
   {
       case ANIM_IDLE:
       {
           // No code
       }
      
       case ANIM_PULLIN:
       {
           // No code
       }
      
       case ANIM_THROW:
       {
           /*
               Delete the player weapon model,
               cause grenade already throw
               so we don't need model on the player
           */
           set_entvar(iPlayer, var_weaponmodel, 0);
       }
      
       case ANIM_DEPLOY:
       {
           set_entvar(iPlayer, var_viewmodel, V_MODEL)
           set_entvar(iPlayer, var_weaponmodel, P_MODEL)
       }
   }
}

public boom(ent)
{
   new Float:origin[3], victim
   get_entvar(ent, var_origin, origin)

   some_effect(origin)
  
   emit_sound(ent, CHAN_WEAPON, HEAL_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
  
   victim = -1;
   while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, origin, 300.0)) != 0)
   {      
       heal(victim);
   }
}

public heal(iPlayer)
{
   new health; health = get_entvar(iPlayer, var_health);
  
   if(health > MAX_HEALTH)
   {
       return;
   }
  
   health = MAX_HEALTH - health;
  
   set_member(iPlayer, m_idrowndmg, health)
   set_member(iPlayer, m_idrownrestored, 0)
}

stock some_effect(Float:Origin[3])
{
   // No code for now
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
   write_byte(TE_DLIGHT);//27
   write_coord(floatround(Origin[0])); // x
   write_coord(floatround(Origin[1])); // y
   write_coord(floatround(Origin[2])); // z
   write_byte(15);    // radius
   write_byte(150);   // r
   write_byte(255);   // g
   write_byte(150);   // b
   write_byte(20);       // life <<<<<<<<
   write_byte(60);       // decay rate
   message_end();
}
 

Margo

Пользователь
Регистрация
9 Июн 2017
Сообщения
30
Симпатии
0
Пол
Женский
#13
Написал по фану
не тестил
Код:
/*
   For fun >_<
   bulka1337
   04/august/17
 
   ===================================
   Require:
       - Reapi
       - AMX 1.8.3 or above
   ===================================
*/

#define MAX_HEALTH   100

#define V_MODEL           "models/x/v_heal.mdl"
#define P_MODEL           "models/x/p_heal.mdl"
#define W_HEAL_MODEL   "models/x/w_heal.mdl"

#define HEAL_SOUND       "sound/x/heal.wav"

/*========================================
// Don't touch it LOL
========================================*/

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <reapi>

#define NADE_HEAL       1337

enum _:ANIM_SMOKE
{
   ANIM_IDLE = 0,
   ANIM_PULLIN,
   ANIM_THROW,
   ANIM_DEPLOY
}


public plugin_precache()
{
   precache_model(V_MODEL);
   precache_model(P_MODEL);
   precache_model(W_HEAL_MODEL);
 
   precache_sound(HEAL_SOUND);
}

public plugin_init()
{
   register_plugin("Heal Grenade", )
   register_forward(FM_SetModel, "FM_SetModel_Grenade")
   RegisterHam( Ham_Think, "grenade", "HamHook_ThinkGrenade" )
   RegisterHam( Ham_CS_Weapon_SendWeaponAnim, "weapon_smokegrenade", "HamHook_Weapon_Anim_Post", true) // Better than use CurWeapon for that
}

public FM_SetModel_Grenade(ent, model[])
{
   if (strlen(model) < 8)
   {
       return;
   }
 
   if (model[7] != 'w' || model[8] != '_')
   {
       return;
   }
 
   new Float:dmgtime
   get_entvar(ent, var_dmgtime, dmgtime)
 
   // Grenade not yet thrown
   if (dmgtime == 0.0)
   {
       return;
   }
 
   if (model[9] == 's' && model[10] == 'm')
   {   
       engfunc( EngFunc_SetModel, ent, W_HEAL_MODEL )
   
       set_entvar(ent, var_flTimeStepSound, NADE_HEAL)
   }
}

public HamHook_ThinkGrenade(ent)
{
   if(!is_entity(ent))
   {
       return HAM_IGNORED;
   }

   new Float:dmgtime; dmgtime = get_entvar(ent, var_dmgtime);
 
   if(dmgtime > get_gametime())
   {
       return HAM_IGNORED;
   }
 
   if(get_entvar(ent, var_flTimeStepSound) != NADE_HEAL)
   {
       return HAM_IGNORED;
   }

   boom(ent);
 
   return HAM_IGNORED;
}

public HamHook_Weapon_Anim_Post(ent, anim, skiplocal)
{
   new iPlayer; iPlayer = get_member(ent, m_pPlayer)
 
   switch(anim)
   {
       case ANIM_IDLE:
       {
           // No code
       }
   
       case ANIM_PULLIN:
       {
           // No code
       }
   
       case ANIM_THROW:
       {
           /*
               Delete the player weapon model,
               cause grenade already throw
               so we don't need model on the player
           */
           set_entvar(iPlayer, var_weaponmodel, 0);
       }
   
       case ANIM_DEPLOY:
       {
           set_entvar(iPlayer, var_viewmodel, V_MODEL)
           set_entvar(iPlayer, var_weaponmodel, P_MODEL)
       }
   }
}

public boom(ent)
{
   new Float:origin[3], victim
   get_entvar(ent, var_origin, origin)

   some_effect(origin)
 
   emit_sound(ent, CHAN_WEAPON, HEAL_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
 
   victim = -1;
   while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, origin, 300.0)) != 0)
   {   
       heal(victim);
   }
}

public heal(iPlayer)
{
   new health; health = get_entvar(iPlayer, var_health);
 
   if(health > MAX_HEALTH)
   {
       return;
   }
 
   health = MAX_HEALTH - health;
 
   set_member(iPlayer, m_idrowndmg, health)
   set_member(iPlayer, m_idrownrestored, 0)
}

stock some_effect(Float:Origin[3])
{
   // No code for now
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
   write_byte(TE_DLIGHT);//27
   write_coord(floatround(Origin[0])); // x
   write_coord(floatround(Origin[1])); // y
   write_coord(floatround(Origin[2])); // z
   write_byte(15);    // radius
   write_byte(150);   // r
   write_byte(255);   // g
   write_byte(150);   // b
   write_byte(20);       // life <<<<<<<<
   write_byte(60);       // decay rate
   message_end();
}
Не компилирует :-(
Компилятор 1.8.2
Что я не так сделала ?

И если можно , уберите reapi :)*

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <reapi>

#define MAX_HEALTH 100

#define V_MODEL "models/heal/v_heal.mdl"
#define P_MODEL "models/heal/p_heal.mdl"
#define W_HEAL_MODEL "models/heal/w_heal.mdl"

#define HEAL_SOUND "sound/heal/heal.wav"

#define NADE_HEAL 1337

enum _:ANIM_SMOKE
{
ANIM_IDLE = 0,
ANIM_PULLIN,
ANIM_THROW,
ANIM_DEPLOY
}


public plugin_precache()
{
precache_model(V_MODEL);
precache_model(P_MODEL);
precache_model(W_HEAL_MODEL);

precache_sound(HEAL_SOUND);
}

public plugin_init()
{
register_plugin("Heal Grenade", )
register_forward(FM_SetModel, "FM_SetModel_Grenade")
RegisterHam( Ham_Think, "grenade", "HamHook_ThinkGrenade" )
RegisterHam( Ham_CS_Weapon_SendWeaponAnim, "weapon_smokegrenade", "HamHook_Weapon_Anim_Post", true) // Better than use CurWeapon for that
}

public FM_SetModel_Grenade(ent, model[])
{
if (strlen(model) < 8)
{
return;
}

if (model[7] != 'w' || model[8] != '_')
{
return;
}

new Float:dmgtime
get_entvar(ent, var_dmgtime, dmgtime)

// Grenade not yet thrown
if (dmgtime == 0.0)
{
return;
}

if (model[9] == 's' && model[10] == 'm')
{
engfunc( EngFunc_SetModel, ent, W_HEAL_MODEL )

set_entvar(ent, var_flTimeStepSound, NADE_HEAL)
}
}

public HamHook_ThinkGrenade(ent)
{
if(!is_entity(ent))
{
return HAM_IGNORED;
}

new Float:dmgtime; dmgtime = get_entvar(ent, var_dmgtime);

if(dmgtime > get_gametime())
{
return HAM_IGNORED;
}

if(get_entvar(ent, var_flTimeStepSound) != NADE_HEAL)
{
return HAM_IGNORED;
}

boom(ent);

return HAM_IGNORED;
}

public HamHook_Weapon_Anim_Post(ent, anim, skiplocal)
{
new iPlayer; iPlayer = get_member(ent, m_pPlayer)

switch(anim)
{
case ANIM_IDLE:
{
// No code
}

case ANIM_PULLIN:
{
// No code
}

case ANIM_THROW:
{
/*
Delete the player weapon model,
cause grenade already throw
so we don't need model on the player
*/
set_entvar(iPlayer, var_weaponmodel, 0);
}

case ANIM_DEPLOY:
{
set_entvar(iPlayer, var_viewmodel, V_MODEL)
set_entvar(iPlayer, var_weaponmodel, P_MODEL)
}
}
}

public boom(ent)
{
new Float:eek:rigin[3], victim
get_entvar(ent, var_origin, origin)

some_effect(origin)

emit_sound(ent, CHAN_WEAPON, HEAL_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)

victim = -1;
while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, origin, 300.0)) != 0)
{
heal(victim);
}
}

public heal(iPlayer)
{
new health; health = get_entvar(iPlayer, var_health);

if(health > MAX_HEALTH)
{
return;
}

health = MAX_HEALTH - health;

set_member(iPlayer, m_idrowndmg, health)
set_member(iPlayer, m_idrownrestored, 0)
}

stock some_effect(Float:Origin[3])
{
// No code for now
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(TE_DLIGHT);//27
write_coord(floatround(Origin[0])); // x
write_coord(floatround(Origin[1])); // y
write_coord(floatround(Origin[2])); // z
write_byte(15); // radius
write_byte(150); // r
write_byte(255); // g
write_byte(150); // b
write_byte(20); // life <<<<<<<<
write_byte(60); // decay rate
message_end();
}
 

Вложения

  • 22,6 KB 7

Margo

Пользователь
Регистрация
9 Июн 2017
Сообщения
30
Симпатии
0
Пол
Женский
#14