Промяна на плъгин Health Kit On Body

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
tom1k
Извън линия
Потребител
Потребител
Мнения: 202
Регистриран на: 29 Сеп 2020, 23:50
Местоположение: Добрич
Се отблагодари: 16 пъти
Получена благодарност: 8 пъти

Промяна на плъгин Health Kit On Body

Мнение от tom1k » 02 Дек 2020, 00:47

Става на въпрос за този плъгин - https://forums.alliedmods.net/showthread.php?t=81132
Ако е възможно самата функция на плъгина да работи само за Терористите, тоест ако терорист умре само живите терористи да могат да взимат кръвта, ct-тата не. CT-тата да не могат да виждат health-кита или да го виждат но като пробват да го вземат да пише "This item is only for Terrorists!. И най-важното ако може да се направи да не можеш да се качваш върху него, в момента е като блок и можеш да се качваш и да стоиш вурху него.
iG-Blockmaker # HNS 100aa
45.144.155.175:27018


Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Промяна на плъгин Health Kit On Body

Мнение от atmax » 02 Дек 2020, 06:55

Код за потвърждение: Избери целия код

/*	Copyright © 2009, tuty
	Healthkit On Dead Body is free software;
	you can redistribute it and/or modify it under the terms of the
	GNU General Public License as published by the Free Software Foundation.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with Teleport Destination Angles Editor; if not, write to the
	Free Software Foundation, Inc., 59 Temple Place - Suite 330,
	Boston, MA 02111-1307, USA.
*/

#include < amxmodx >

#include < fakemeta >
#include < fakemeta_util >
#include <cstrike>

#define PLUGIN_VERSION		"3.3"

#define FFADE_IN 		0x0000

enum _: iCoords
{
	x = 0,
	y,
	z
};
		
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", "0" );
        gKitHealthCvar = register_cvar( "kit_health", "20" );
        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 iVictim = read_data( 2 );
					if(cs_get_user_team(iVictim) == CS_TEAM_CT)
					{
							return PLUGIN_HANDLED;
					}
        static Float:flOrigin[ iCoords ];
        pev( iVictim, pev_origin, flOrigin );
	
        new iEnt = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
	
	/* --| Modify the origin a little bit. This is calculated to be set on floor */
        flOrigin[ z ] -= 36; 
	
        engfunc( EngFunc_SetOrigin, iEnt, flOrigin );
	
        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_NOT );
        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;
        }
	if(cs_get_user_team(id) != CS_TEAM_T)
				{
						client_print(id, print_chat, "This item is availible only for Terrorist Team!")
						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, "You received %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( 255 );
		write_byte( 0 );
		write_byte( 0 ); 
		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( );
}
От телефона го направих набързо, така че може някъде да съм пропуснал/объркал нещо, особено с моя авто коректор.. Пробвай го, ако съм объркал нещо пиши, като се върна от работа ще го погледна. До тогава някой друг може да го види и поправи също.
П.С. Ще ти трябва и cstrike библиотеката! Ппц си я имаш, но аз да спомена.
Rest in peace my friend I always will remember you! 🖤👊

Аватар
tom1k
Извън линия
Потребител
Потребител
Мнения: 202
Регистриран на: 29 Сеп 2020, 23:50
Местоположение: Добрич
Се отблагодари: 16 пъти
Получена благодарност: 8 пъти

Промяна на плъгин Health Kit On Body

Мнение от tom1k » 02 Дек 2020, 19:09

atmax написа: 02 Дек 2020, 06:55

Код за потвърждение: Избери целия код

/*	Copyright © 2009, tuty
	Healthkit On Dead Body is free software;
	you can redistribute it and/or modify it under the terms of the
	GNU General Public License as published by the Free Software Foundation.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with Teleport Destination Angles Editor; if not, write to the
	Free Software Foundation, Inc., 59 Temple Place - Suite 330,
	Boston, MA 02111-1307, USA.
*/

#include < amxmodx >

#include < fakemeta >
#include < fakemeta_util >
#include <cstrike>

#define PLUGIN_VERSION		"3.3"

#define FFADE_IN 		0x0000

enum _: iCoords
{
	x = 0,
	y,
	z
};
		
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", "0" );
        gKitHealthCvar = register_cvar( "kit_health", "20" );
        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 iVictim = read_data( 2 );
					if(cs_get_user_team(iVictim) == CS_TEAM_CT)
					{
							return PLUGIN_HANDLED;
					}
        static Float:flOrigin[ iCoords ];
        pev( iVictim, pev_origin, flOrigin );
	
        new iEnt = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
	
	/* --| Modify the origin a little bit. This is calculated to be set on floor */
        flOrigin[ z ] -= 36; 
	
        engfunc( EngFunc_SetOrigin, iEnt, flOrigin );
	
        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_NOT );
        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;
        }
	if(cs_get_user_team(id) != CS_TEAM_T)
				{
						client_print(id, print_chat, "This item is availible only for Terrorist Team!")
						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, "You received %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( 255 );
		write_byte( 0 );
		write_byte( 0 ); 
		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( );
}
От телефона го направих набързо, така че може някъде да съм пропуснал/объркал нещо, особено с моя авто коректор.. Пробвай го, ако съм объркал нещо пиши, като се върна от работа ще го погледна. До тогава някой друг може да го види и поправи също.
П.С. Ще ти трябва и cstrike библиотеката! Ппц си я имаш, но аз да спомена.
Благодаря! Пробвах го но, сега след като терорист умре и се опитам да го взема не става и под не става имам предвид че не дава HP, а като си СТ и отидеш в него спами в целия чат че това е само за Терористи. Ако може така да го направиш, направо да бъде невидимо за CT отбора, само за Т да си работи! Също така да е само за един рунд, понеже сега остават дори и след края на рунда. Благодаря.
iG-Blockmaker # HNS 100aa
45.144.155.175:27018


Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Промяна на плъгин Health Kit On Body

Мнение от atmax » 02 Дек 2020, 20:30

Ами относно съобщението, touch евента се извиква постоянно понеже го докосва не бях помислил за това.. Лесно може да се поправи с един bool, когато имам време пред компютъра ще го погледна, ако никой не ти е помогнал до тогава.. Но относно обекта, не съм много на "ти" с fakemeta, даже те първа го изучавам. Не знам как действа физиката в cs, дали ако обекта не е солиден ще може да се вземе въпросният обект.. Това може да каже само някой с повече знания относно fakemeta...
Rest in peace my friend I always will remember you! 🖤👊

Аватар
tom1k
Извън линия
Потребител
Потребител
Мнения: 202
Регистриран на: 29 Сеп 2020, 23:50
Местоположение: Добрич
Се отблагодари: 16 пъти
Получена благодарност: 8 пъти

Промяна на плъгин Health Kit On Body

Мнение от tom1k » 02 Дек 2020, 21:03

Ами надявам се някой да го направи, ще съм много благодарен! :)
iG-Blockmaker # HNS 100aa
45.144.155.175:27018


Аватар
tom1k
Извън линия
Потребител
Потребител
Мнения: 202
Регистриран на: 29 Сеп 2020, 23:50
Местоположение: Добрич
Се отблагодари: 16 пъти
Получена благодарност: 8 пъти

Промяна на плъгин Health Kit On Body

Мнение от tom1k » 04 Дек 2020, 02:27

Едит: Може да ударите ключ, намерих по-добър от този.
iG-Blockmaker # HNS 100aa
45.144.155.175:27018


Аватар
thoughtz
Извън линия
Модератор
Модератор
Мнения: 585
Регистриран на: 13 Окт 2016, 00:32
Местоположение: гр. София
Се отблагодари: 112 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Промяна на плъгин Health Kit On Body

Мнение от thoughtz » 04 Дек 2020, 17:44

Можеш да го споделиш в темата.

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта