Плагин Healthkit on dead body

Сообщения
143
Реакции
68
Помог
1 раз(а)
Добрый день. Нарыл у себя старенький, добрый плагин, который после убийства на трупах оставляет аптечки.
Но есть одно но. По умолчанию, как я понимаю добавляется 15HP. Знатоки, кто может подсказать, как поменять это значение, например на 25HP.
Вот сам код:

Код:
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>

#define medkit_minsz Float:{ -23.160000, -13.660000, -0.050000 } // from hl model viewer
#define medkit_maxsz Float:{ 11.470000, 12.780000, 6.720000 } // from hl model viewer

new const MODEL_KIT[] = "models/w_medkit.mdl"
new const SOUND_KIT[] = "items/smallmedkit1.wav" // must be precached because, if you don't precache server will shut down :]

new g_Toggle_KitEnable,g_Toggle_GlowShow,g_GMsgFade, g_Toggle_FadeEnable, g_Toggle_Remove_At_Rstart;

public plugin_init() {

register_event("DeathMsg","drop_kit","a");
register_logevent("logevent_round_start",2,"1=Round_Start");
register_forward(FM_Touch,"fw_touch");
// Add your code here...
g_Toggle_KitEnable = register_cvar("kit_enable", "1");
g_Toggle_GlowShow = register_cvar("kit_glow", "1");
g_Toggle_FadeEnable = register_cvar("kit_fade", "1");
g_Toggle_Remove_At_Rstart = register_cvar("kit_remove", "0");
g_GMsgFade = get_user_msgid("ScreenFade");


}
public plugin_precache()
{

engfunc(EngFunc_PrecacheModel, MODEL_KIT);
engfunc(EngFunc_PrecacheSound, SOUND_KIT);
}
public drop_kit()
{

if(get_pcvar_num(g_Toggle_KitEnable) == 0)
return FMRES_IGNORED;

new victim = read_data(2);
static Float:origin[3];
pev(victim,pev_origin,origin);

new ent = fm_create_entity("item_healthkit");
origin[2] -= 36; // the distance of ground and kit..this is perfect fixed.. do not edit :/
engfunc(EngFunc_SetOrigin,ent,origin);

if(!pev_valid(ent))
return FMRES_IGNORED;// check for valid ent

engfunc(EngFunc_SetModel,ent,MODEL_KIT);
set_pev(ent,pev_classname,"item_healthkit");
dllfunc(DLLFunc_Spawn, ent);
set_pev(ent,pev_solid,SOLID_BBOX);
set_pev(ent,pev_movetype,MOVETYPE_NONE);
engfunc(EngFunc_SetSize,ent,medkit_minsz, medkit_maxsz);
engfunc(EngFunc_DropToFloor,ent);
if(get_pcvar_num(g_Toggle_GlowShow) == 1)
{

fm_set_rendering(ent, kRenderFxGlowShell, 255, 255, 255, kRenderFxNone, 27);
}

return FMRES_IGNORED;

}
public fw_touch(ent,id)
{

if(get_pcvar_num(g_Toggle_KitEnable) == 0)
return FMRES_IGNORED;

new classname[32];
pev(ent,pev_classname,classname,31);
if(!equal(classname, "item_healthkit"))// check for kit
return FMRES_IGNORED;

new health = get_user_health(id);
if(health >= 100)//check if player health is 100 and block access to take the kit :D
{
client_print(id, print_center, "У вас максимум здоровья,аптечка вам не нужна!");
return FMRES_IGNORED;
}
fm_give_item(id, "item_healthkit");

if(get_pcvar_num(g_Toggle_FadeEnable) == 1)
{

message_begin(MSG_ONE_UNRELIABLE, g_GMsgFade , {0,0,0}, id);
write_short(1<<10);
write_short(1<<10);
write_short(0x0000);
write_byte(255);//r
write_byte(0); //g
write_byte(0); //b
write_byte(75);
message_end();
}
engfunc(EngFunc_RemoveEntity,ent);

return FMRES_IGNORED;
}
// remove kit on round start if kit_remove is 1
public logevent_round_start()
{
if(get_pcvar_num(g_Toggle_Remove_At_Rstart) == 0)
return FMRES_IGNORED;

new hkit = -1;
while ((hkit = fm_find_ent_by_class(hkit, "item_healthkit")))
engfunc(EngFunc_RemoveEntity, hkit);

return FMRES_IGNORED;

}

 
Сообщения
2,720
Реакции
2,997
Помог
60 раз(а)
На сколько я понял, топик плагина тут: Healthkit on dead body
а, то, что вы прекрипили - это что-то урезанное, не в лучших традициях.
 
Сообщения
143
Реакции
68
Помог
1 раз(а)
wopox1337, спасибо большое. Но я уже разобрался. Поспешил с темой). Давно валялся у меня просто, решил оживить).
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
А че оригинальная идея имхо. Но я бы доделал рандомные бонусы в виде боеприпасов, хп, броника, гранаты и опыта в ранках. Ну и конешно на реапи
 
Сообщения
143
Реакции
68
Помог
1 раз(а)
wopox1337, в принципе я догадывался, но не знал точно как. А когда увидел оригинал сразу понял. Мне просто надо было подсказку, делать это кваром или плагин править сам. Кстати, взял идею с оригинала, но пришлось править место положение самой аптечки, так как в оригинале она после смерти игрока улетала куда то)). Вот ксати то что хотел, готовый рабочий
Код:
#include < amxmodx >
#include < fakemeta >
#include < fakemeta_util >

#define PLUGIN_VERSION "3.3"

#define FFADE_IN 0x0000

new const szModelKit[ ] = "models/w_medkit.mdl";
new const szPickupSound[ ] = "items/smallmedkit1.wav";

new gToggleKitEnable;
new gToggleGlowShow;
new gGMsgFade;
new gToggleFadeEnable;
new gToggleRemoveAtRstart;
new gKitHealthCvar;
new gLimitHealthCvar;
new gGMsgItemPickup;

new const gMedKitClassname[ ] = "medkit_entity";

public plugin_init( )
{
register_plugin( "Healthkit on dead body", PLUGIN_VERSION, "tuty" );

register_event( "DeathMsg","Event_DeathMsg","a" );
register_logevent( "LOGEvent_Round_Start", 2, "1=Round_Start" );

register_forward( FM_Touch, "forward_FM_Touch" );

gToggleKitEnable = register_cvar( "kit_enable", "1" );
gToggleGlowShow = register_cvar( "kit_glow", "1" );
gToggleFadeEnable = register_cvar( "kit_fade", "1" );
gToggleRemoveAtRstart = register_cvar( "kit_remove", "1" );
gKitHealthCvar = register_cvar( "kit_health", "25" );
gLimitHealthCvar = register_cvar( "kit_limit_health", "100" );

gGMsgFade = get_user_msgid( "ScreenFade" );
gGMsgItemPickup = get_user_msgid( "ItemPickup" );
}

public plugin_precache( )
{
precache_model( szModelKit );
precache_sound( szPickupSound );
}

public Event_DeathMsg( )
{
if( get_pcvar_num( gToggleKitEnable ) == 0 )
{
return PLUGIN_HANDLED;
}

new victim = read_data( 2 );
static Float:origin[3];
pev(victim,pev_origin,origin);

new iEnt = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );

origin[2] -= 36;

engfunc( EngFunc_SetOrigin, iEnt, origin );

if( !pev_valid( iEnt ) )
{
return PLUGIN_HANDLED;
}

set_pev( iEnt, pev_classname, gMedKitClassname );
engfunc( EngFunc_SetModel, iEnt, szModelKit );
dllfunc( DLLFunc_Spawn, iEnt );
set_pev( iEnt, pev_solid, SOLID_BBOX );
set_pev( iEnt, pev_movetype, MOVETYPE_NONE );
engfunc( EngFunc_SetSize, iEnt, Float:{ -23.160000, -13.660000, -0.050000 }, Float:{ 11.470000, 12.780000, 6.720000 } );
engfunc( EngFunc_DropToFloor, iEnt );

if( get_pcvar_num( gToggleGlowShow ) == 1 )
{
fm_set_rendering( iEnt, kRenderFxGlowShell, 255, 255, 255, kRenderFxNone, 27 );
}

return PLUGIN_HANDLED;
}

public forward_FM_Touch( iEnt, id )
{
if( !pev_valid( iEnt )
|| get_pcvar_num( gToggleKitEnable ) == 0 )
{
return FMRES_IGNORED;
}

new szClassname[ 32 ];
pev( iEnt, pev_classname, szClassname, charsmax( szClassname ) );

if( !equal( szClassname, gMedKitClassname ) )
{
return FMRES_IGNORED;
}

new iUserHealth = get_user_health( id );

new iCvarHealth = get_pcvar_num( gKitHealthCvar );
new iMaxHealth = get_pcvar_num( gLimitHealthCvar );

if( iUserHealth >= iMaxHealth )
{
return FMRES_IGNORED;
}

set_hudmessage( 255, 0, 0, -1.0, 0.83, 2, 6.0, 3.0 );
show_hudmessage( id, "Health + %d HP", iCvarHealth );

fm_set_user_health( id, iUserHealth + iCvarHealth );

emit_sound( id, CHAN_ITEM, szPickupSound, VOL_NORM, ATTN_NORM, 0 , PITCH_NORM );
UTIL_Send_PickupMessage( id, "item_healthkit" );

if( get_pcvar_num( gToggleFadeEnable ) == 1 )
{
message_begin( MSG_ONE_UNRELIABLE, gGMsgFade , _, id );
write_short( 1<<10 );
write_short( 1<<10 );
write_short( FFADE_IN );
write_byte( 0 );
write_byte( 0 );
write_byte( 139 );
write_byte( 75 );
message_end( );
}

engfunc( EngFunc_RemoveEntity, iEnt );

return FMRES_IGNORED;
}

public LOGEvent_Round_Start( )
{
if( get_pcvar_num( gToggleRemoveAtRstart ) == 1 )
{
new iEntity = FM_NULLENT;

while( ( iEntity = fm_find_ent_by_class( iEntity, gMedKitClassname ) ) )
{
engfunc( EngFunc_RemoveEntity, iEntity );
}
}
}

stock UTIL_Send_PickupMessage( const id, const szItemName[ ] )
{
message_begin( MSG_ONE_UNRELIABLE, gGMsgItemPickup, _, id );
write_string( szItemName );
message_end( );
}

30 Окт 2017
fantom, на счет идеи. Мне сегодня Админ один знакомый скинул. Мы когда то с ним рас начали что то в этом роде делать, так и забылось). И вот тут вдруг только спросил). Выдает рандомно броню, деньги, жизнь.
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>

#define MAX 32
#pragma semicolon 1

enum PluginSounds { psKasa, psApteczka };
stock const gPluginSounds[ PluginSounds ][ 128 ] = { "fvox/bell.wav", "items/smallmedkit1.wav" };

enum PluginModels { pmKasa, pmApteczka, pmKamizelka, };
stock const gPluginModels[ PluginModels ][ 128 ] = { "models/w_kasa.mdl", "models/w_medkit.mdl", "models/w_kevlar.mdl" };

new const gMedKitClassname[ ] = "medkit_entity";

enum Msg { mScreenFade, mItemPickUp, };
new gMsg[ Msg ];
enum Cvar { cApteczka, cKasa, cArmor };
new gCvar[ Cvar ][ 4 ];

new moneybox[ 1500 ], bool:can_pickup[ MAX + 1 ];
new Float:multiplier, g_ArmorType[ MAX + 1 ], Float:g_ArmorAmount[ MAX + 1 ], fArmor[ MAX + 1 ];

public plugin_init( ) {

gCvar[ cApteczka ][ 0 ] = register_cvar( "dad_apteczka_poswiata", "1" );
gCvar[ cApteczka ][ 1 ] = register_cvar( "dad_apteczka_ekran", "1" );
gCvar[ cApteczka ][ 2 ] = register_cvar( "dad_apteczka_ile", "30" );
gCvar[ cApteczka ][ 3 ] = register_cvar( "dad_apteczka_limit", "100" );
gCvar[ cKasa ][ 0 ] = register_cvar( "dad_kasa_ile", "1000" );
gCvar[ cKasa ][ 1 ] = register_cvar( "dad_kasa_ekran", "1" );
gCvar[ cKasa ][ 2 ] = register_cvar( "dad_kasa_max", "16000" );
gCvar[ cArmor ][ 0 ] = register_cvar( "dad_kamizelka_ile", "30" );
gCvar[ cArmor ][ 1 ] = register_cvar( "dad_kamizelka_max", "100" );
gCvar[ cArmor ][ 2 ] = register_cvar( "dad_kamizelka_min", "40" );
gCvar[ cArmor ][ 3 ] = register_cvar( "dad_kamizelka_usun_czas", "120" );

gMsg[ mScreenFade ] = get_user_msgid("ScreenFade");
gMsg[ mItemPickUp ] = get_user_msgid( "ItemPickup" );

register_event( "DeathMsg", "Event_DeatchMsg", "a" );
register_forward( FM_Touch, "Forward_PlayerTouch" );
register_logevent( "LogEvent_RoundStart", 2, "1=Round_Start" );
register_touch( "FakeArmor", "player", "grabArmor" );
}

public plugin_precache( ) {
for( new i = 0; i < sizeof( gPluginSounds ); i++ ) {
precache_sound( gPluginSounds[ PluginSounds: i ] );
}
for( new i = 0; i < sizeof( gPluginModels ); i++ ) {
precache_model( gPluginModels[ PluginModels: i ] );
}
}

public client_connect( id ) can_pickup[ id ] = true;
public client_disconnect( id ) can_pickup[ id ] = false;
public reset_pick( id ) can_pickup[ id ] = true;

public Event_DeatchMsg( id ) {
new victim = read_data( 2 );
new killer = read_data( 1 );
new Float:fOrigin[ 3 ];
switch( random_num( 1,3 ) ) {
case 1: {
new money, Float:velo[ 3 ];

if( killer && killer != victim ) {
cs_set_user_money( killer,cs_get_user_money( killer ) - 300 );
}

money = get_pcvar_num( gCvar[ cKasa ][ 0 ] );
if( cs_get_user_money( victim ) < money) {
money = cs_get_user_money( victim );
cs_set_user_money( victim,0 );
}
else {
cs_set_user_money( victim,cs_get_user_money( victim ) - get_pcvar_num( gCvar[ cKasa ][ 0 ] ) );
}
make_money( victim, money, velo );
}
case 2: {
pev( victim, pev_origin, fOrigin );

new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );

fOrigin[ 2 ] -= 36;

engfunc( EngFunc_SetOrigin, ent, fOrigin );

if( !pev_valid( ent ) ) {
return PLUGIN_HANDLED;
}

set_pev( ent, pev_classname, gMedKitClassname );
engfunc( EngFunc_SetModel, ent, gPluginModels[ pmApteczka ] );
dllfunc( DLLFunc_Spawn, ent );
set_pev( ent, pev_solid, SOLID_BBOX );
set_pev( ent, pev_movetype, MOVETYPE_NONE );
engfunc( EngFunc_SetSize, ent, Float:{ -23.160000, -13.660000, -0.050000 }, Float:{ 11.470000, 12.780000, 6.720000 } );
engfunc( EngFunc_DropToFloor, ent );

if( get_pcvar_num( gCvar[ cApteczka ][ 0 ] ) == 1 ) {
set_rendering( ent, kRenderFxGlowShell, 255, 255, 255, kRenderFxNone, 27 );
}
}
case 3: {
get_armor_values( victim );

if( g_ArmorType[ victim ] <= 0 || g_ArmorAmount[ victim ] <= float( get_pcvar_num( gCvar[ cArmor ][ 2 ] ) ) )
return PLUGIN_CONTINUE;

new origin[ 3 ];
get_user_origin( victim,origin );
for( new a = 0; a < 3; a++)
fOrigin[ a ] = float( origin[ a ] );

fArmor[ victim ] = create_entity( "info_target" );
if( fArmor[ victim ] ) {
entity_set_string( fArmor[ victim ],EV_SZ_classname,"FakeArmor" );
entity_set_model( fArmor[ victim ], gPluginModels[ pmKamizelka ] );

new Float:MinBox[ 3 ];
new Float:MaxBox[ 3 ];
MinBox[ 0 ] = -6.0;
MinBox[ 1 ] = -8.0;
MinBox[ 2 ] = -1.5;
MaxBox[ 0 ] = 6.0;
MaxBox[ 1 ] = 8.0;
MaxBox[ 2 ] = 1.5;

entity_set_vector( fArmor[ victim ], EV_VEC_mins, MinBox );
entity_set_vector( fArmor[ victim ], EV_VEC_maxs, MaxBox );

entity_set_int( fArmor[ victim ], EV_INT_solid, SOLID_BBOX );
entity_set_int( fArmor[ victim ], EV_INT_movetype, MOVETYPE_TOSS );

entity_set_int( fArmor[ victim ], EV_INT_iuser1, victim );
entity_set_int( fArmor[ victim ], EV_INT_iuser3, g_ArmorType[ victim ] );
entity_set_int( fArmor[ victim ], EV_INT_iuser4, floatround( g_ArmorAmount[ victim ] ) );

entity_set_origin( fArmor[ victim ], fOrigin );
set_task( float( get_pcvar_num( gCvar[ cArmor ][ 3 ] ) ), "removeThisArmor", fArmor[ victim ] );
emit_sound( id, CHAN_ITEM, gPluginSounds[ pmKamizelka ], VOL_NORM, ATTN_NORM ,0 , PITCH_NORM );
}
}
}
return PLUGIN_CONTINUE;
}

public LogEvent_RoundStart( ) {
new money_ent;
while( ( money_ent = engfunc( EngFunc_FindEntityByString, money_ent, "classname", "pdm_money" ) ) != 0 ) {
engfunc(EngFunc_RemoveEntity,money_ent);
}
new hkit = FM_NULLENT;
while( ( hkit = fm_find_ent_by_class( hkit, gMedKitClassname ) ) ) {
engfunc( EngFunc_RemoveEntity, hkit );
}
set_task( 5.0, "removeArmor",1111 );
}

public Forward_PlayerTouch( ent, id ) {
if( !pev_valid( ent ) ) {
return FMRES_IGNORED;
}

new classname[ MAX ];
pev( ent, pev_classname, classname, charsmax( classname ) );

if( !equal( classname, gMedKitClassname ) && !equal( classname, "pdm_money") ){
return FMRES_IGNORED;
}
if ( equali( classname, gMedKitClassname ) ) {
new health = get_user_health( id );
new cvarhealth = get_pcvar_num( gCvar[ cApteczka ][ 2 ] );
new maxhealth = get_pcvar_num( gCvar[ cApteczka ][ 3 ] );

if( health >= maxhealth ) {
client_print( id, print_center, "У Вас %d HP. Аптечка не потрібна.", health, maxhealth );
return FMRES_IGNORED;
}

set_hudmessage( 255, 0, 0, -1.0, 0.83, 2, 6.0, 3.0 );
show_hudmessage( id, "Health + %d HP", cvarhealth );

fm_set_user_health( id, health + cvarhealth );
emit_sound( id, CHAN_ITEM, gPluginSounds[ psApteczka ], VOL_NORM, ATTN_NORM ,0 , PITCH_NORM );

message_begin( MSG_ONE_UNRELIABLE, gMsg[ mItemPickUp ], _, id );
write_string( "item_healthkit" );
message_end();

if( get_pcvar_num( gCvar[ cApteczka ][ 1 ] ) == 1 ) {
message_begin( MSG_ONE_UNRELIABLE, gMsg[ mScreenFade ] , _, id );
write_short( 1<<10 );
write_short( 1<<10 );
write_short( 0x0000 );
write_byte( 255 );
write_byte( 0 );
write_byte( 0 );
write_byte( 75 );
message_end();
}

engfunc( EngFunc_RemoveEntity, ent );
}




if ( equali( classname, "pdm_money" ) ) {
if( cs_get_user_money( id ) == get_pcvar_num( gCvar[ cKasa ][ 2 ] ) ) {
return FMRES_IGNORED;
}
else if( ( cs_get_user_money( id ) + moneybox[ ent ] ) > get_pcvar_num( gCvar[ cKasa ][ 2 ] ) ) {
cs_set_user_money( id, get_pcvar_num( gCvar[ cKasa ][ 2 ] ) );
}
else {
cs_set_user_money( id, cs_get_user_money( id ) + moneybox[ ent ] );
}

emit_sound( id, CHAN_ITEM, gPluginSounds[ psKasa ], VOL_NORM, ATTN_NORM ,0 , PITCH_NORM );

if( pev_valid( ent ) )
engfunc( EngFunc_RemoveEntity, ent );

if( get_pcvar_num( gCvar[ cKasa ][ 1 ] ) ) {
message_begin( MSG_ONE, gMsg[ mScreenFade ], { 0, 0, 0 }, id );
write_short( 1<<12 );
write_short( 1<<12 );
write_short( 1<<12 );
write_byte( 0 );
write_byte( 200 );
write_byte( 0 );
write_byte( 20 );
message_end( );
}
}
return FMRES_IGNORED;

}

public make_money( id, money, Float:velo[ ] ) {
new moneybags = money/1000;
new moneyleft = money;
new Float:origin[ 3 ];
new Float:angles[ 3 ];
new Float:mins[ 3 ] = { -2.79, -0.0, -6.14 };
new Float:maxs[ 3 ] = { 2.42, 1.99, 6.35 };

if( ( moneybags * 1000 ) < money )
moneybags++;

for( new i = 0; i < moneybags; ++i ) {
new newent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
if( !is_user_alive( id ) ) {
velo[ 0 ] = random_float( 1.0, 150.0 );
velo[ 1 ] = random_float( 1.0, 150.0 );
velo[ 2 ] = random_float( 1.0, 150.0 );
}
else
velo[ 2 ] += 100;

pev( newent, pev_angles, angles );
angles[ 1 ] += random_num( 1, 360 );
pev( id, pev_origin, origin );
set_pev( newent, pev_origin, origin );
set_pev( newent, pev_classname, "pdm_money" );
engfunc( EngFunc_SetModel, newent, gPluginModels[ pmKasa ] );
engfunc( EngFunc_SetSize, newent, mins, maxs );
set_pev( newent, pev_angles, angles );
set_pev( newent, pev_solid, SOLID_TRIGGER );
set_pev( newent, pev_movetype, MOVETYPE_TOSS );
set_pev( newent, pev_velocity, velo );
engfunc( EngFunc_DropToFloor, newent );

if( moneyleft == 0 )
return FMRES_IGNORED;

if( moneyleft < 1000 ) {
moneybox[ newent ] = moneyleft;
moneyleft = 0;
return FMRES_IGNORED;
}
moneyleft -= 1000;
moneybox[ newent ] = 1000;
}
return FMRES_IGNORED;
}

public grabArmor( Toucher, Touched ) {
if( is_user_alive( Touched ) && is_user_connected( Touched ) && entity_get_float( Touched,EV_FL_armorvalue ) < float( get_pcvar_num( gCvar[ cArmor ][ 1 ] ) ) ) {
new owner = entity_get_int( Toucher, EV_INT_iuser1 );
if( is_valid_ent( fArmor[ owner ] ) ) {
get_armor_values( Touched );
multiplier = float( get_pcvar_num( gCvar[ cArmor ][ 0 ] ) ) * 0.01;

new armortype = entity_get_int( fArmor[ owner ], EV_INT_iuser3 );
new armoramt = entity_get_int( fArmor[ owner ], EV_INT_iuser4 );

if( g_ArmorType[ Touched ] == 0 ) {
csset_user_armor( Touched, armoramt*multiplier, ( armortype==1?1:2 ) );
}
else if( g_ArmorType[ Touched ] == 1 && armortype == 1 ) {
csset_user_armor( Touched, entity_get_float( Touched,EV_FL_armorvalue )+( armoramt*multiplier ), 1 );
}
else if( ( g_ArmorType[ Touched ] == 1 && armortype == 2 ) || g_ArmorType[ Touched ] == 2 ) {
csset_user_armor( Touched, entity_get_float( Touched,EV_FL_armorvalue )+( armoramt*multiplier ), 2 );
}

if( entity_get_float( Touched,EV_FL_armorvalue ) > float( get_pcvar_num( gCvar[ cArmor ][ 1 ] ) ) ) {
entity_set_float( Touched,EV_FL_armorvalue, float( get_pcvar_num( gCvar[ cArmor ][ 1 ] ) ) );
}

g_ArmorType[ Touched ] = armortype;
remove_entity( fArmor[ owner ] );
remove_task( fArmor[ owner ] );
}
}
return PLUGIN_HANDLED;
}

public removeArmor( ) {
new tempid = -1;
while ( ( tempid = find_ent_by_class( tempid, "FakeArmor") ) > 0 )
if( is_valid_ent( tempid) ) {
remove_entity( tempid );
remove_task( tempid );
}
return PLUGIN_CONTINUE;
}

public removeThisArmor( id ) {
if( is_valid_ent( id ) ) {
remove_entity( id );
}
}

public get_armor_values( id ) {
if( entity_get_float( id, EV_FL_armorvalue ) <= 0.0 )
g_ArmorType[ id ] = 0;
else {
g_ArmorAmount[ id ] = entity_get_float( id, EV_FL_armorvalue );
g_ArmorType[ id ] = get_pdata_int( id, 112 );
}
}

public csset_user_armor( id, Float:amount, type ) {
entity_set_float( id, EV_FL_armorvalue, amount );
set_pdata_int( id, 112, type );
}


Мне лично хватает простенького кода лишь для аптеки).
 
Сообщения
143
Реакции
68
Помог
1 раз(а)
KoTe_Love_Kulka, всем. Это обыкновенный дроп вещей после смерти игрока. Кстати в Re HLDS вроде есть ф-ция сервера (настраивается кваром) дропать гранаты после смерти (убийства) игрока.
Ах да. Может кому пригодится моделька кейса с деньгами). Остальное все дефолтное (звуки, модели).
 

Вложения

Сообщения
143
Реакции
68
Помог
1 раз(а)
KoTe_Love_Kulka, не делал. Но и не знаю где ее взял. Так как у меня есть архивчик с плагинами и моделями прошлого века), там много чего, от туда и взял, а как там оказалось...это дело темное). Но мои работы с моделями есть на этом форуме если интересует.
 
Сообщения
52
Реакции
39
roten, если не трудно, скинь мне эту папочку) ну очень уж любопытно посмотреть что было в том "веке" ;d
 
Сообщения
143
Реакции
68
Помог
1 раз(а)
KoTe_Love_Kulka, если честно, будет очень муторно для меня, так как сами видите у меня рабочий бардак). Может сделаю на днях уборку) тогда и скину в отдельную папку все то что можно на паблик пустить, так как у меня еще там и собственные разработки.
 

Download all Attachments

Сообщения
106
Реакции
62
Предупреждения
5
Просто поправил смещение строк и скинул исходом а не кодом. Варнинги на работу не влияют, просто глазу приятнее без них. :blush2:
 

Вложения

Сообщения
106
Реакции
62
Предупреждения
5
Моделька и звук к плагину.
1 Дек 2022
Алексеич, Ну мало ли кому пригодится. Мне вот пригодилось только сейчас...:pardon:
 

Вложения

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
346
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Сообщения
106
Реакции
62
Предупреждения
5
Раз тема есть, то зачем создавать новые по одной и той же теме? В исходе с "Оленей" Модели весят в воздухе. Поскольку это "модели" а не спрайты по ним с полными 100hp можно прыгать как на jamp серверах. 😆 Что мы имеем с этим плагином. Модели лежат на земле. при убийстве с ножа с полной жизнью обязательно влипнешь и будешь стоять на месте пока тебе либо не отнимут хп либо не убьют.
1 Дек 2022
Если есть готовые, "более хорошие варианты". Под ReHlds то поделитесь ссылкой.
 
Сообщения
106
Реакции
62
Предупреждения
5
В голове вертится что то типа: замены модели на спрайты. Или как то "Кодом" устранить залипания игроков в модели аптечки, аля условие semeclip.
 
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
UNDER2, да просто триггером сделать)
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу