Парашут плъгин

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Потребителски аватар

Автор на темата
1n1
Потребител
Потребител
Мнения: 48
Регистриран: 24 авг 2019, 11:35
Се отблагодари: 1 път

Парашут плъгин

Мнение от 1n1 » 13 сеп 2019, 22:55

Здравейте,
1.Има ли някой работещ плъгин за парашут,но парашута да бъде само за админи и випове и да е безплатен ? Теглил съм от цс хлапе инфо,но не ми работят :D
2. Може ли да се добави такъв скин на парашут https://gamebanana.com/skins/151896 и ако да по какъв начин ?

Потребителски аватар

Bartian ОПГ
Потребител
Потребител
Мнения: 223
Регистриран: 01 сеп 2018, 14:43
Се отблагодари: 43 пъти
Получена благодарност: 63 пъти

Парашут плъгин

Мнение от Bartian ОПГ » 13 сеп 2019, 23:30

1.https://forums.alliedmods.net/showthread.php?t=11514
2. Влизаш в сма файла и сменяш името на модела с този който искаш не е нито трудно , нито невъзможно!
3.За да може само админ да има парашут има квар , настрой го и си готов!
Думата "хакер" е неправилно използвана в смисъл на "компютърен хакер" от някои журналисти. Ние, хакерите, отказваме да приемем това тълкуване и продължаваме да означаваме с него смисъла на "някой, който обича да го програмира и да го ползва". Изображение

Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 5448
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 91 пъти
Получена благодарност: 619 пъти
Години: 21
Контакти:

Парашут плъгин

Мнение от OciXCrom TM » 13 сеп 2019, 23:52

@Bartian - поне дай най-новата му версия - https://forums.alliedmods.net/showthread.php?t=49694

https://forums.alliedmods.net/showthread.php?t=175775

=>

Код: Избери всички

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

#define _PLUGIN         "[ZP] Parachute"
#define _VERSION             "1.0"
#define _AUTHOR           "H.RED.ZONE"

#define ADMIN_FLAG ADMIN_RESERVATION
#define PARACHUTE_MODEL "models/parachute.mdl"

#define MAX_PLAYERS    32

#define MarkUserHasParachute(%0)	g_bitHasParachute |= (1<<(%0&31))
#define ClearUserHasParachute(%0)	g_bitHasParachute &= ~(1<<(%0&31))
#define HasUserParachute(%0)		g_bitHasParachute & (1<<(%0&31))

new g_bitHasParachute

new g_iUserParachute[MAX_PLAYERS+1]

new Float:g_flEntityFrame[MAX_PLAYERS+1]

new g_iModelIndex
new g_pCvarFallSpeed

new const PARACHUTE_CLASS[] = "parachute"

enum {
	deploy,
	idle,
	detach
}

public plugin_init() {
	register_plugin(_PLUGIN, _VERSION, _AUTHOR)

	g_pCvarFallSpeed = register_cvar("parachute_fallspeed", "30")

	register_forward( FM_CmdStart, "fw_Start" )

	RegisterHam(Ham_Spawn, "player", "Ham_CBasePlayer_Spawn_Post", 1)
	RegisterHam(Ham_Killed, "player", "Ham_CBasePlayer_Killed_Post", 1)
}

public plugin_precache() {
	g_iModelIndex = precache_model(PARACHUTE_MODEL)
}

public client_putinserver(id) {
	if( HasUserParachute(id) ) {
		new iEnt = g_iUserParachute[id]
		if( iEnt ) {
			RemoveUserParachute(id, iEnt)
		}
		ClearUserHasParachute(id)
	}
}

public client_disconnect(id) {
	if( HasUserParachute(id) ) {
		new iEnt = g_iUserParachute[id]
		if( iEnt ) {
			RemoveUserParachute(id, iEnt)
		}
		ClearUserHasParachute(id)
	}
}

public Ham_CBasePlayer_Killed_Post( id ) {
	if( HasUserParachute(id) ) {
		new iEnt = g_iUserParachute[id]
		if( iEnt ) {
			RemoveUserParachute(id, iEnt)
		}
		ClearUserHasParachute(id)
	}
}

public Ham_CBasePlayer_Spawn_Post(id) {
	if( is_user_alive(id) ) {
		if( HasUserParachute(id) ) {
			new iEnt = g_iUserParachute[id]
			if( iEnt ) {
				RemoveUserParachute(id, iEnt)
			}
		}
		MarkUserHasParachute(id)
	}
}

RemoveUserParachute(id, iEnt) {
	engfunc(EngFunc_RemoveEntity, iEnt)
	g_iUserParachute[id] = 0
}

CreateParachute(id) {
	static iszInfoTarget
	if( !iszInfoTarget ) {
		iszInfoTarget = engfunc(EngFunc_AllocString, "info_target")
	}

	new iEnt = engfunc(EngFunc_CreateNamedEntity, iszInfoTarget)
	if( iEnt > 0) {
		static iszClass = 0
		if( !iszClass ) {
			iszClass = engfunc(EngFunc_AllocString, PARACHUTE_CLASS)
		}
		set_pev_string(iEnt, pev_classname, iszClass)
		set_pev(iEnt, pev_aiment, id)
		set_pev(iEnt, pev_owner, id)
		set_pev(iEnt, pev_movetype, MOVETYPE_FOLLOW)

		static iszModel = 0
		if( !iszModel ) {
			iszModel = engfunc(EngFunc_AllocString, PARACHUTE_MODEL)
		}
		set_pev_string(iEnt, pev_model, iszModel)
		set_pev(iEnt, pev_modelindex, g_iModelIndex)

		set_pev(iEnt, pev_sequence, deploy)
		set_pev(iEnt, pev_gaitsequence, 1)
		set_pev(iEnt, pev_frame, 0.0)
		g_flEntityFrame[id] = 0.0
		g_iUserParachute[id] = iEnt
		MarkUserHasParachute(id)
		new Float:fVecOrigin[3]
		pev(id, pev_origin, fVecOrigin)

		return iEnt
	}
	return 0
}

public fw_Start(id) {
	if( ~HasUserParachute(id) || !is_user_alive(id) || !(get_user_flags(id) & ADMIN_FLAG) ) {
		return
	}

	new Float:flFrame
	new iEnt = g_iUserParachute[id]

	if(iEnt > 0 && pev(id, pev_flags) & FL_ONGROUND) {

		if( pev(iEnt, pev_sequence) != detach ) {
			set_pev(iEnt, pev_sequence, detach)
			set_pev(iEnt, pev_gaitsequence, 1)
			set_pev(iEnt, pev_frame, 0.0)
			g_flEntityFrame[id] = 0.0
			set_pev(iEnt, pev_animtime, 0.0)
			set_pev(iEnt, pev_framerate, 0.0)
			return
		}

		pev(iEnt, pev_frame, flFrame)
		if( flFrame > 252.0 ) {
			RemoveUserParachute(id, iEnt)
			return
		}

		flFrame += 2.0

		g_flEntityFrame[id] = flFrame
		set_pev(iEnt, pev_frame, flFrame)

		return
	}

	if( pev(id, pev_button) & IN_USE ) {
		new Float:fVecVelocity[3], Float:fVelocity_z
		pev(id, pev_velocity, fVecVelocity)
		fVelocity_z = fVecVelocity[2]

		if( fVelocity_z < 0.0 ) {
			if(iEnt <= 0) {
				iEnt = CreateParachute(id)
			}

			fVelocity_z = floatmin(fVelocity_z + 15.0, -get_pcvar_float(g_pCvarFallSpeed))
			fVecVelocity[2] = fVelocity_z
			set_pev(id, pev_velocity, fVecVelocity)

			if( pev(iEnt, pev_sequence) == deploy ) {
				flFrame = g_flEntityFrame[id]++

				if( flFrame > 100.0 ) {
					set_pev(iEnt, pev_animtime, 0.0)
					set_pev(iEnt, pev_framerate, 0.4)
					set_pev(iEnt, pev_sequence, idle)
					set_pev(iEnt, pev_gaitsequence, 1)
					set_pev(iEnt, pev_frame, 0.0)
					g_flEntityFrame[id] = 0.0
				}
				else {
					set_pev(iEnt, pev_frame, flFrame)
				}
			}
		}
		else if(iEnt > 0) {
			RemoveUserParachute(id, iEnt)
		}
	}
	else if( iEnt > 0 && pev(id, pev_oldbuttons) & IN_USE ) {
		RemoveUserParachute(id, iEnt)
	}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang10266\\ f0\\ fs16 \n\\ par }
*/
Теглил съм от цс хлапе инфо,но не ми работят
Много ясно. Колко пъти да ви се каже да не теглите от там?

Потребителски аватар

Автор на темата
1n1
Потребител
Потребител
Мнения: 48
Регистриран: 24 авг 2019, 11:35
Се отблагодари: 1 път

Парашут плъгин

Мнение от 1n1 » 14 сеп 2019, 00:20

това за биохазард работи ли ?

Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 5448
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 91 пъти
Получена благодарност: 619 пъти
Години: 21
Контакти:

Парашут плъгин

Мнение от OciXCrom TM » 14 сеп 2019, 00:22

Няма причина да не работи. За всякакъв мод е. Нищо, че е пуснато в Zombie Plague раздела.

Потребителски аватар

Автор на темата
1n1
Потребител
Потребител
Мнения: 48
Регистриран: 24 авг 2019, 11:35
Се отблагодари: 1 път

Парашут плъгин

Мнение от 1n1 » 14 сеп 2019, 00:29

Bartian написа:
13 сеп 2019, 23:30
1.https://forums.alliedmods.net/showthread.php?t=11514
2. Влизаш в сма файла и сменяш името на модела с този който искаш не е нито трудно , нито невъзможно!
3.За да може само админ да има парашут има квар , настрой го и си готов!
Като го изтегля си работи без проблеми,но не знам как да сменя да работи с флаг И за чат.Както и като добавя този модел който съм дал ми дава грешка и сървъра спира.

Потребителски аватар

Bartian ОПГ
Потребител
Потребител
Мнения: 223
Регистриран: 01 сеп 2018, 14:43
Се отблагодари: 43 пъти
Получена благодарност: 63 пъти

Парашут плъгин

Мнение от Bartian ОПГ » 14 сеп 2019, 01:43

@OciXCrom Момчето ясно е посочил , че е искал парашута да е за админи и випове а този който ти си дал няма тази функция + не виждам какво лошо има старата версия след като работи без проблем.
@1n1 Качи ли модела в sv_downloadurl + промени ли името на модела в сма файла ? Ако не можеш кажи с какво име е модела и аз ако нещо ще редактирам мнението си в този пост.
Относно флага на чата пробвай така.

Код: Избери всички

/***************************************************************************************************
                        		AMX Parachute
          
  Version: 0.2.2
  Author: KRoTaL

  0.1    Release
  0.1.1  Players can't buy a parachute if they already own one
  0.1.2	 Release for AMX MOD X
  0.1.3  Minor changes
  0.1.4  Players lose their parachute if they die
  0.1.5  Added amx_parachute cvar
  0.1.6  Changed set_origin to movetype_follow (you won't see your own parachute)
  0.1.7	 Added amx_parachute <name> | admins with admin level a get a free parachute
  0.1.8	 Fixed the give parachute command
	 added a admin_parachute cvar to give admins with level A a free parachute
  0.1.9	 Added a sell command & added a cvar to get money back
  0.2.0	 Added para_free cvar to give everyone a free parachute
  0.2.1	 Fixed some minor bugs
  0.2.2  Fixed the parachute remove bug
  0.2.3  Fixed the alive bug


  Commands:

	say buy_parachute	- buys a parachute
	
	amx_parachute <name>|@all	- gives a player a free parachute

	Press +use to slow down your fall.

  Cvars:

	sv_parachute "1"	 -	0: disables the plugin
					1: enables the plugin

	parachute_cost "1000"	 -	cost of the parachute
	
	admin_parachute "0"	 -	0: admins with level A won't get a free parachute
					1: admins with level A get a free parachute
					
	parachute_payback "75"	 -	the amount you get back of the parachute in %(75/100*1000) = 750
	
	para_free "0"		 -	0: no free parachute
					1: free parachute for everyone
	

  Setup (AMXX 1.71):

    Install the amxx file. 
    Enable engine and cstrike(amxx's modules.ini) 
    Put the parachute.mdl file in the cstrike/models folder


***************************************************************************************************/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>

#define PLUGINNAME	"AMXX Parachute"
#define VERSION		"0.2.3"
#define AUTHOR		"KRoT@L"

new bool:has_parachute[33];
new para_ent[33];
new bool:had_parachute[33];
new bool:player_died[33];

public plugin_init()
{
	register_plugin( PLUGINNAME, VERSION, AUTHOR )
	
	register_dictionary( "parachute.txt" )
	
	register_concmd( "say buy_parachute", "buy_parachute" )
	register_concmd( "say sell_parachute", "sell_parachute" )
	register_concmd( "amx_parachute", "give_parachute", ADMIN_LEVEL_A, "amx_parachute <name, @all>" )

	register_cvar( "sv_parachute", "1" )
	register_cvar( "parachute_cost", "1000" )
	register_cvar( "parachute_payback", "75" )
	register_cvar( "admin_parachute", "0" )
	register_cvar( "para_free", "0" )
	
	register_logevent( "event_roundstart", 2, "0=World triggered", "1=Round_Start" )
	register_logevent( "event_roundend", 2, "0=World triggered", "1=Round_End" )
	register_event( "ResetHUD", "event_resethud", "be" )
	register_event( "DeathMsg", "death_event", "a" )
}

public plugin_modules() {
	require_module( "engine" )
	require_module( "cstrike" )
}

public plugin_precache()
{
	precache_model("models/parachute.mdl")
}

public client_connect(id)
{
	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
}

public event_roundstart() {
	new MaxPlayers = get_maxplayers();
	for( new id; id < MaxPlayers; id++ ) {
		if( had_parachute[id] == true && player_died[id] == false ) {
			has_parachute[id] = true
		}
	}
	set_task( 3.0, "free_parachute" );
		
}

public event_roundend() {
	new MaxPlayers = get_maxplayers();
	for( new id; id < MaxPlayers; id++ ) {
		if( is_user_alive( id ) ) {
			if( has_parachute[id] == true ) {
				had_parachute[id] = true;
			}else{
				had_parachute[id] = false;
			}
			player_died[id] = false;

		}else {
			if(para_ent[id] > 0) {
				remove_entity(para_ent[id])
			}
			has_parachute[id] = false
			para_ent[id] = 0
			player_died[id] = true;
		}
	}
		
}

public event_resethud( id ) {
	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
}

public death_event()
{
	new id = read_data(2)

	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
	player_died[id] = true
}

public buy_parachute(id) {
	
	if(get_cvar_num( "sv_parachute" ) == 0)
	{
		client_print(id, print_chat, "%L", id, "para_disabled")
		return PLUGIN_HANDLED
	}

	if(has_parachute[id])
	{
		client_print(id, print_chat, "%L", id, "para_has" )
		return PLUGIN_HANDLED		
	}

	new money = cs_get_user_money(id)
	new cost = get_cvar_num( "parachute_cost" )

	if(money < cost)
	{
		client_print(id, print_chat, "%L", id, "para_money", cost)
		return PLUGIN_CONTINUE
	}

	cs_set_user_money(id, money - cost)
	client_print(id, print_chat, "%L", id, "para_buy" )
	has_parachute[id] = true

	return PLUGIN_CONTINUE
}

public sell_parachute(id) {
	if (get_cvar_num("sv_parachute") == 0) {
		client_print(id, print_chat, "%L", id, "para_disabled")
		return PLUGIN_CONTINUE
	}
	if (has_parachute[id]) {
		if(para_ent[id] > 0)
		{
			if(is_valid_ent(para_ent[id])) {
				remove_entity(para_ent[id])
			}
		}
		has_parachute[id] = false
		para_ent[id] = 0

		new money = cs_get_user_money(id)
		new cost = get_cvar_num("parachute_cost")
		new payback = floatround(float(cost) * (get_cvar_float("parachute_payback") / 100))
		cs_set_user_money(id, money + payback)
		client_print(id, print_chat, "%L", id, "para_sell", payback)
	}
	return PLUGIN_CONTINUE
}
public free_parachute() {
	new maxPlayers = get_maxplayers();
	if(get_cvar_num( "sv_parachute" ) == 0) return PLUGIN_CONTINUE

        for( new i = 1; i <= maxPlayers; i++ )
        {
		if( !is_user_connected( i ) ) return PLUGIN_CONTINUE
		
		if ( get_cvar_num( "para_free") == 1 ) {
			client_print( i, print_chat, "%L", LANG_PLAYER, "para_admin_free" )
			has_parachute[i] = true
			
			return PLUGIN_CONTINUE
		}
		if ( get_cvar_num("admin_parachute") == 1 && get_user_flags( i ) && ADMIN_CHAT  ) {
			client_print( i, print_chat, "%L", LANG_PLAYER, "para_admin_free" )
			has_parachute[i] = true
			
			return PLUGIN_CONTINUE
		}
	}
	return PLUGIN_CONTINUE
}

public give_parachute(id, level, cid) {
	
	if (!cmd_access(id, level, cid, 2 ) ) {
		return PLUGIN_CONTINUE
	}
	
	if (get_cvar_num("sv_parachute") == 0 ) {
		client_print(id, print_chat, "%L", id, "para_disabled")
		
		return PLUGIN_CONTINUE
	}else{
		new arg[32]
		read_argv( 1, arg, 31 )
		if (arg[0] == '@' && arg[1] == 'a') {
			new maxPlayers = get_maxplayers();
			for( new i = 1; i <= maxPlayers; i++ )
			{
				client_print( i, print_chat, "%L", LANG_PLAYER, "para_free_all" )
				has_parachute[i] = true
			}
			
			return PLUGIN_CONTINUE
		}
		new player = cmd_target( id, arg, 4 )
		
		if (has_parachute[id]) {
			client_print(id, print_chat, "%L", id, "para_has" )
			
			return PLUGIN_CONTINUE
		}
		if( !player ) {
			client_print( id, print_chat, "%L", id, "para_no_player" )
	
			return PLUGIN_CONTINUE
		}else{
			client_print(player, print_chat, "%L", player, "para_give" )
			has_parachute[player] = true
			
			return PLUGIN_CONTINUE
		}
		
	}
	return PLUGIN_CONTINUE
}

public client_PreThink(id)
{
	if( get_cvar_num( "sv_parachute" ) == 0 )
	{
		return PLUGIN_CONTINUE
	}

	if( !is_user_alive(id) )
	{
		return PLUGIN_CONTINUE
	}

	if( has_parachute[id] )
	{
		if (get_user_button(id) & IN_USE )
		{
			if ( !( get_entity_flags(id) & FL_ONGROUND ) )
			{
				new Float:velocity[3]
				entity_get_vector(id, EV_VEC_velocity, velocity)
				if(velocity[2] < 0)
				{
					if (para_ent[id] == 0)
					{
						para_ent[id] = create_entity("info_target")
						if (para_ent[id] > 0)
						{
							entity_set_model(para_ent[id], "models/parachute.mdl")
							entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
							entity_set_edict(para_ent[id], EV_ENT_aiment, id)
						}
					}
					if (para_ent[id] > 0)
					{
						velocity[2] = (velocity[2] + 40.0 < -100) ? velocity[2] + 40.0 : -100.0
						entity_set_vector(id, EV_VEC_velocity, velocity)
						if (entity_get_float(para_ent[id], EV_FL_frame) < 0.0 || entity_get_float(para_ent[id], EV_FL_frame) > 254.0)
						{
							if (entity_get_int(para_ent[id], EV_INT_sequence) != 1)
							{
								entity_set_int(para_ent[id], EV_INT_sequence, 1)
							}
							entity_set_float(para_ent[id], EV_FL_frame, 0.0)
						}
						else 
						{
							entity_set_float(para_ent[id], EV_FL_frame, entity_get_float(para_ent[id], EV_FL_frame) + 1.0)
						}
					}
				}
				else
				{
					if (para_ent[id] > 0)
					{
						remove_entity(para_ent[id])
						para_ent[id] = 0
					}
				}
			}
			else
			{
				if (para_ent[id] > 0)
				{
					remove_entity(para_ent[id])
					para_ent[id] = 0
				}
			}
		}
		else if (get_user_oldbutton(id) & IN_USE)
		{
			if (para_ent[id] > 0)
			{
				remove_entity(para_ent[id])
				para_ent[id] = 0
			}
		}
	}
	
	return PLUGIN_CONTINUE
}
Думата "хакер" е неправилно използвана в смисъл на "компютърен хакер" от някои журналисти. Ние, хакерите, отказваме да приемем това тълкуване и продължаваме да означаваме с него смисъла на "някой, който обича да го програмира и да го ползва". Изображение

Потребителски аватар

mi0 cool
AMXX Скриптър
AMXX Скриптър
Мнения: 244
Регистриран: 09 дек 2016, 22:02
Се отблагодари: 59 пъти
Получена благодарност: 50 пъти
Години: 26
Контакти:

Парашут плъгин

Мнение от mi0 cool » 14 сеп 2019, 02:00

Bartian написа:
14 сеп 2019, 01:43
@OciXCrom Момчето ясно е посочил , че е искал парашута да е за админи и випове а този който ти си дал няма тази функция + не виждам какво лошо има старата версия след като работи без проблем.
@1n1 Качи ли модела в sv_downloadurl + промени ли името на модела в сма файла ? Ако не можеш кажи с какво име е модела и аз ако нещо ще редактирам мнението си в този пост.
Относно флага на чата пробвай така.

Код: Избери всички

/***************************************************************************************************
                        		AMX Parachute
          
  Version: 0.2.2
  Author: KRoTaL

  0.1    Release
  0.1.1  Players can't buy a parachute if they already own one
  0.1.2	 Release for AMX MOD X
  0.1.3  Minor changes
  0.1.4  Players lose their parachute if they die
  0.1.5  Added amx_parachute cvar
  0.1.6  Changed set_origin to movetype_follow (you won't see your own parachute)
  0.1.7	 Added amx_parachute <name> | admins with admin level a get a free parachute
  0.1.8	 Fixed the give parachute command
	 added a admin_parachute cvar to give admins with level A a free parachute
  0.1.9	 Added a sell command & added a cvar to get money back
  0.2.0	 Added para_free cvar to give everyone a free parachute
  0.2.1	 Fixed some minor bugs
  0.2.2  Fixed the parachute remove bug
  0.2.3  Fixed the alive bug


  Commands:

	say buy_parachute	- buys a parachute
	
	amx_parachute <name>|@all	- gives a player a free parachute

	Press +use to slow down your fall.

  Cvars:

	sv_parachute "1"	 -	0: disables the plugin
					1: enables the plugin

	parachute_cost "1000"	 -	cost of the parachute
	
	admin_parachute "0"	 -	0: admins with level A won't get a free parachute
					1: admins with level A get a free parachute
					
	parachute_payback "75"	 -	the amount you get back of the parachute in %(75/100*1000) = 750
	
	para_free "0"		 -	0: no free parachute
					1: free parachute for everyone
	

  Setup (AMXX 1.71):

    Install the amxx file. 
    Enable engine and cstrike(amxx's modules.ini) 
    Put the parachute.mdl file in the cstrike/models folder


***************************************************************************************************/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>

#define PLUGINNAME	"AMXX Parachute"
#define VERSION		"0.2.3"
#define AUTHOR		"KRoT@L"

new bool:has_parachute[33];
new para_ent[33];
new bool:had_parachute[33];
new bool:player_died[33];

public plugin_init()
{
	register_plugin( PLUGINNAME, VERSION, AUTHOR )
	
	register_dictionary( "parachute.txt" )
	
	register_concmd( "say buy_parachute", "buy_parachute" )
	register_concmd( "say sell_parachute", "sell_parachute" )
	register_concmd( "amx_parachute", "give_parachute", ADMIN_LEVEL_A, "amx_parachute <name, @all>" )

	register_cvar( "sv_parachute", "1" )
	register_cvar( "parachute_cost", "1000" )
	register_cvar( "parachute_payback", "75" )
	register_cvar( "admin_parachute", "0" )
	register_cvar( "para_free", "0" )
	
	register_logevent( "event_roundstart", 2, "0=World triggered", "1=Round_Start" )
	register_logevent( "event_roundend", 2, "0=World triggered", "1=Round_End" )
	register_event( "ResetHUD", "event_resethud", "be" )
	register_event( "DeathMsg", "death_event", "a" )
}

public plugin_modules() {
	require_module( "engine" )
	require_module( "cstrike" )
}

public plugin_precache()
{
	precache_model("models/parachute.mdl")
}

public client_connect(id)
{
	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
}

public event_roundstart() {
	new MaxPlayers = get_maxplayers();
	for( new id; id < MaxPlayers; id++ ) {
		if( had_parachute[id] == true && player_died[id] == false ) {
			has_parachute[id] = true
		}
	}
	set_task( 3.0, "free_parachute" );
		
}

public event_roundend() {
	new MaxPlayers = get_maxplayers();
	for( new id; id < MaxPlayers; id++ ) {
		if( is_user_alive( id ) ) {
			if( has_parachute[id] == true ) {
				had_parachute[id] = true;
			}else{
				had_parachute[id] = false;
			}
			player_died[id] = false;

		}else {
			if(para_ent[id] > 0) {
				remove_entity(para_ent[id])
			}
			has_parachute[id] = false
			para_ent[id] = 0
			player_died[id] = true;
		}
	}
		
}

public event_resethud( id ) {
	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
}

public death_event()
{
	new id = read_data(2)

	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
	player_died[id] = true
}

public buy_parachute(id) {
	
	if(get_cvar_num( "sv_parachute" ) == 0)
	{
		client_print(id, print_chat, "%L", id, "para_disabled")
		return PLUGIN_HANDLED
	}

	if(has_parachute[id])
	{
		client_print(id, print_chat, "%L", id, "para_has" )
		return PLUGIN_HANDLED		
	}

	new money = cs_get_user_money(id)
	new cost = get_cvar_num( "parachute_cost" )

	if(money < cost)
	{
		client_print(id, print_chat, "%L", id, "para_money", cost)
		return PLUGIN_CONTINUE
	}

	cs_set_user_money(id, money - cost)
	client_print(id, print_chat, "%L", id, "para_buy" )
	has_parachute[id] = true

	return PLUGIN_CONTINUE
}

public sell_parachute(id) {
	if (get_cvar_num("sv_parachute") == 0) {
		client_print(id, print_chat, "%L", id, "para_disabled")
		return PLUGIN_CONTINUE
	}
	if (has_parachute[id]) {
		if(para_ent[id] > 0)
		{
			if(is_valid_ent(para_ent[id])) {
				remove_entity(para_ent[id])
			}
		}
		has_parachute[id] = false
		para_ent[id] = 0

		new money = cs_get_user_money(id)
		new cost = get_cvar_num("parachute_cost")
		new payback = floatround(float(cost) * (get_cvar_float("parachute_payback") / 100))
		cs_set_user_money(id, money + payback)
		client_print(id, print_chat, "%L", id, "para_sell", payback)
	}
	return PLUGIN_CONTINUE
}
public free_parachute() {
	new maxPlayers = get_maxplayers();
	if(get_cvar_num( "sv_parachute" ) == 0) return PLUGIN_CONTINUE

        for( new i = 1; i <= maxPlayers; i++ )
        {
		if( !is_user_connected( i ) ) return PLUGIN_CONTINUE
		
		if ( get_cvar_num( "para_free") == 1 ) {
			client_print( i, print_chat, "%L", LANG_PLAYER, "para_admin_free" )
			has_parachute[i] = true
			
			return PLUGIN_CONTINUE
		}
		if ( get_cvar_num("admin_parachute") == 1 && get_user_flags( i ) && ADMIN_CHAT  ) {
			client_print( i, print_chat, "%L", LANG_PLAYER, "para_admin_free" )
			has_parachute[i] = true
			
			return PLUGIN_CONTINUE
		}
	}
	return PLUGIN_CONTINUE
}

public give_parachute(id, level, cid) {
	
	if (!cmd_access(id, level, cid, 2 ) ) {
		return PLUGIN_CONTINUE
	}
	
	if (get_cvar_num("sv_parachute") == 0 ) {
		client_print(id, print_chat, "%L", id, "para_disabled")
		
		return PLUGIN_CONTINUE
	}else{
		new arg[32]
		read_argv( 1, arg, 31 )
		if (arg[0] == '@' && arg[1] == 'a') {
			new maxPlayers = get_maxplayers();
			for( new i = 1; i <= maxPlayers; i++ )
			{
				client_print( i, print_chat, "%L", LANG_PLAYER, "para_free_all" )
				has_parachute[i] = true
			}
			
			return PLUGIN_CONTINUE
		}
		new player = cmd_target( id, arg, 4 )
		
		if (has_parachute[id]) {
			client_print(id, print_chat, "%L", id, "para_has" )
			
			return PLUGIN_CONTINUE
		}
		if( !player ) {
			client_print( id, print_chat, "%L", id, "para_no_player" )
	
			return PLUGIN_CONTINUE
		}else{
			client_print(player, print_chat, "%L", player, "para_give" )
			has_parachute[player] = true
			
			return PLUGIN_CONTINUE
		}
		
	}
	return PLUGIN_CONTINUE
}

public client_PreThink(id)
{
	if( get_cvar_num( "sv_parachute" ) == 0 )
	{
		return PLUGIN_CONTINUE
	}

	if( !is_user_alive(id) )
	{
		return PLUGIN_CONTINUE
	}

	if( has_parachute[id] )
	{
		if (get_user_button(id) & IN_USE )
		{
			if ( !( get_entity_flags(id) & FL_ONGROUND ) )
			{
				new Float:velocity[3]
				entity_get_vector(id, EV_VEC_velocity, velocity)
				if(velocity[2] < 0)
				{
					if (para_ent[id] == 0)
					{
						para_ent[id] = create_entity("info_target")
						if (para_ent[id] > 0)
						{
							entity_set_model(para_ent[id], "models/parachute.mdl")
							entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
							entity_set_edict(para_ent[id], EV_ENT_aiment, id)
						}
					}
					if (para_ent[id] > 0)
					{
						velocity[2] = (velocity[2] + 40.0 < -100) ? velocity[2] + 40.0 : -100.0
						entity_set_vector(id, EV_VEC_velocity, velocity)
						if (entity_get_float(para_ent[id], EV_FL_frame) < 0.0 || entity_get_float(para_ent[id], EV_FL_frame) > 254.0)
						{
							if (entity_get_int(para_ent[id], EV_INT_sequence) != 1)
							{
								entity_set_int(para_ent[id], EV_INT_sequence, 1)
							}
							entity_set_float(para_ent[id], EV_FL_frame, 0.0)
						}
						else 
						{
							entity_set_float(para_ent[id], EV_FL_frame, entity_get_float(para_ent[id], EV_FL_frame) + 1.0)
						}
					}
				}
				else
				{
					if (para_ent[id] > 0)
					{
						remove_entity(para_ent[id])
						para_ent[id] = 0
					}
				}
			}
			else
			{
				if (para_ent[id] > 0)
				{
					remove_entity(para_ent[id])
					para_ent[id] = 0
				}
			}
		}
		else if (get_user_oldbutton(id) & IN_USE)
		{
			if (para_ent[id] > 0)
			{
				remove_entity(para_ent[id])
				para_ent[id] = 0
			}
		}
	}
	
	return PLUGIN_CONTINUE
}
Проблема е, че плъгина е невероятно зле написан и като пратят 4-5 човека такъв плъгин и фпс-а от 1000 става на 600.
They call me kurdokoleno

Потребителски аватар

Автор на темата
1n1
Потребител
Потребител
Мнения: 48
Регистриран: 24 авг 2019, 11:35
Се отблагодари: 1 път

Парашут плъгин

Мнение от 1n1 » 14 сеп 2019, 13:54

Bartian написа:
14 сеп 2019, 01:43
@OciXCrom Момчето ясно е посочил , че е искал парашута да е за админи и випове а този който ти си дал няма тази функция + не виждам какво лошо има старата версия след като работи без проблем.
@1n1 Качи ли модела в sv_downloadurl + промени ли името на модела в сма файла ? Ако не можеш кажи с какво име е модела и аз ако нещо ще редактирам мнението си в този пост.
Относно флага на чата пробвай така.

Код: Избери всички

/***************************************************************************************************
                        		AMX Parachute
          
  Version: 0.2.2
  Author: KRoTaL

  0.1    Release
  0.1.1  Players can't buy a parachute if they already own one
  0.1.2	 Release for AMX MOD X
  0.1.3  Minor changes
  0.1.4  Players lose their parachute if they die
  0.1.5  Added amx_parachute cvar
  0.1.6  Changed set_origin to movetype_follow (you won't see your own parachute)
  0.1.7	 Added amx_parachute <name> | admins with admin level a get a free parachute
  0.1.8	 Fixed the give parachute command
	 added a admin_parachute cvar to give admins with level A a free parachute
  0.1.9	 Added a sell command & added a cvar to get money back
  0.2.0	 Added para_free cvar to give everyone a free parachute
  0.2.1	 Fixed some minor bugs
  0.2.2  Fixed the parachute remove bug
  0.2.3  Fixed the alive bug


  Commands:

	say buy_parachute	- buys a parachute
	
	amx_parachute <name>|@all	- gives a player a free parachute

	Press +use to slow down your fall.

  Cvars:

	sv_parachute "1"	 -	0: disables the plugin
					1: enables the plugin

	parachute_cost "1000"	 -	cost of the parachute
	
	admin_parachute "0"	 -	0: admins with level A won't get a free parachute
					1: admins with level A get a free parachute
					
	parachute_payback "75"	 -	the amount you get back of the parachute in %(75/100*1000) = 750
	
	para_free "0"		 -	0: no free parachute
					1: free parachute for everyone
	

  Setup (AMXX 1.71):

    Install the amxx file. 
    Enable engine and cstrike(amxx's modules.ini) 
    Put the parachute.mdl file in the cstrike/models folder


***************************************************************************************************/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>

#define PLUGINNAME	"AMXX Parachute"
#define VERSION		"0.2.3"
#define AUTHOR		"KRoT@L"

new bool:has_parachute[33];
new para_ent[33];
new bool:had_parachute[33];
new bool:player_died[33];

public plugin_init()
{
	register_plugin( PLUGINNAME, VERSION, AUTHOR )
	
	register_dictionary( "parachute.txt" )
	
	register_concmd( "say buy_parachute", "buy_parachute" )
	register_concmd( "say sell_parachute", "sell_parachute" )
	register_concmd( "amx_parachute", "give_parachute", ADMIN_LEVEL_A, "amx_parachute <name, @all>" )

	register_cvar( "sv_parachute", "1" )
	register_cvar( "parachute_cost", "1000" )
	register_cvar( "parachute_payback", "75" )
	register_cvar( "admin_parachute", "0" )
	register_cvar( "para_free", "0" )
	
	register_logevent( "event_roundstart", 2, "0=World triggered", "1=Round_Start" )
	register_logevent( "event_roundend", 2, "0=World triggered", "1=Round_End" )
	register_event( "ResetHUD", "event_resethud", "be" )
	register_event( "DeathMsg", "death_event", "a" )
}

public plugin_modules() {
	require_module( "engine" )
	require_module( "cstrike" )
}

public plugin_precache()
{
	precache_model("models/parachute.mdl")
}

public client_connect(id)
{
	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
}

public event_roundstart() {
	new MaxPlayers = get_maxplayers();
	for( new id; id < MaxPlayers; id++ ) {
		if( had_parachute[id] == true && player_died[id] == false ) {
			has_parachute[id] = true
		}
	}
	set_task( 3.0, "free_parachute" );
		
}

public event_roundend() {
	new MaxPlayers = get_maxplayers();
	for( new id; id < MaxPlayers; id++ ) {
		if( is_user_alive( id ) ) {
			if( has_parachute[id] == true ) {
				had_parachute[id] = true;
			}else{
				had_parachute[id] = false;
			}
			player_died[id] = false;

		}else {
			if(para_ent[id] > 0) {
				remove_entity(para_ent[id])
			}
			has_parachute[id] = false
			para_ent[id] = 0
			player_died[id] = true;
		}
	}
		
}

public event_resethud( id ) {
	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
}

public death_event()
{
	new id = read_data(2)

	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
	player_died[id] = true
}

public buy_parachute(id) {
	
	if(get_cvar_num( "sv_parachute" ) == 0)
	{
		client_print(id, print_chat, "%L", id, "para_disabled")
		return PLUGIN_HANDLED
	}

	if(has_parachute[id])
	{
		client_print(id, print_chat, "%L", id, "para_has" )
		return PLUGIN_HANDLED		
	}

	new money = cs_get_user_money(id)
	new cost = get_cvar_num( "parachute_cost" )

	if(money < cost)
	{
		client_print(id, print_chat, "%L", id, "para_money", cost)
		return PLUGIN_CONTINUE
	}

	cs_set_user_money(id, money - cost)
	client_print(id, print_chat, "%L", id, "para_buy" )
	has_parachute[id] = true

	return PLUGIN_CONTINUE
}

public sell_parachute(id) {
	if (get_cvar_num("sv_parachute") == 0) {
		client_print(id, print_chat, "%L", id, "para_disabled")
		return PLUGIN_CONTINUE
	}
	if (has_parachute[id]) {
		if(para_ent[id] > 0)
		{
			if(is_valid_ent(para_ent[id])) {
				remove_entity(para_ent[id])
			}
		}
		has_parachute[id] = false
		para_ent[id] = 0

		new money = cs_get_user_money(id)
		new cost = get_cvar_num("parachute_cost")
		new payback = floatround(float(cost) * (get_cvar_float("parachute_payback") / 100))
		cs_set_user_money(id, money + payback)
		client_print(id, print_chat, "%L", id, "para_sell", payback)
	}
	return PLUGIN_CONTINUE
}
public free_parachute() {
	new maxPlayers = get_maxplayers();
	if(get_cvar_num( "sv_parachute" ) == 0) return PLUGIN_CONTINUE

        for( new i = 1; i <= maxPlayers; i++ )
        {
		if( !is_user_connected( i ) ) return PLUGIN_CONTINUE
		
		if ( get_cvar_num( "para_free") == 1 ) {
			client_print( i, print_chat, "%L", LANG_PLAYER, "para_admin_free" )
			has_parachute[i] = true
			
			return PLUGIN_CONTINUE
		}
		if ( get_cvar_num("admin_parachute") == 1 && get_user_flags( i ) && ADMIN_CHAT  ) {
			client_print( i, print_chat, "%L", LANG_PLAYER, "para_admin_free" )
			has_parachute[i] = true
			
			return PLUGIN_CONTINUE
		}
	}
	return PLUGIN_CONTINUE
}

public give_parachute(id, level, cid) {
	
	if (!cmd_access(id, level, cid, 2 ) ) {
		return PLUGIN_CONTINUE
	}
	
	if (get_cvar_num("sv_parachute") == 0 ) {
		client_print(id, print_chat, "%L", id, "para_disabled")
		
		return PLUGIN_CONTINUE
	}else{
		new arg[32]
		read_argv( 1, arg, 31 )
		if (arg[0] == '@' && arg[1] == 'a') {
			new maxPlayers = get_maxplayers();
			for( new i = 1; i <= maxPlayers; i++ )
			{
				client_print( i, print_chat, "%L", LANG_PLAYER, "para_free_all" )
				has_parachute[i] = true
			}
			
			return PLUGIN_CONTINUE
		}
		new player = cmd_target( id, arg, 4 )
		
		if (has_parachute[id]) {
			client_print(id, print_chat, "%L", id, "para_has" )
			
			return PLUGIN_CONTINUE
		}
		if( !player ) {
			client_print( id, print_chat, "%L", id, "para_no_player" )
	
			return PLUGIN_CONTINUE
		}else{
			client_print(player, print_chat, "%L", player, "para_give" )
			has_parachute[player] = true
			
			return PLUGIN_CONTINUE
		}
		
	}
	return PLUGIN_CONTINUE
}

public client_PreThink(id)
{
	if( get_cvar_num( "sv_parachute" ) == 0 )
	{
		return PLUGIN_CONTINUE
	}

	if( !is_user_alive(id) )
	{
		return PLUGIN_CONTINUE
	}

	if( has_parachute[id] )
	{
		if (get_user_button(id) & IN_USE )
		{
			if ( !( get_entity_flags(id) & FL_ONGROUND ) )
			{
				new Float:velocity[3]
				entity_get_vector(id, EV_VEC_velocity, velocity)
				if(velocity[2] < 0)
				{
					if (para_ent[id] == 0)
					{
						para_ent[id] = create_entity("info_target")
						if (para_ent[id] > 0)
						{
							entity_set_model(para_ent[id], "models/parachute.mdl")
							entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
							entity_set_edict(para_ent[id], EV_ENT_aiment, id)
						}
					}
					if (para_ent[id] > 0)
					{
						velocity[2] = (velocity[2] + 40.0 < -100) ? velocity[2] + 40.0 : -100.0
						entity_set_vector(id, EV_VEC_velocity, velocity)
						if (entity_get_float(para_ent[id], EV_FL_frame) < 0.0 || entity_get_float(para_ent[id], EV_FL_frame) > 254.0)
						{
							if (entity_get_int(para_ent[id], EV_INT_sequence) != 1)
							{
								entity_set_int(para_ent[id], EV_INT_sequence, 1)
							}
							entity_set_float(para_ent[id], EV_FL_frame, 0.0)
						}
						else 
						{
							entity_set_float(para_ent[id], EV_FL_frame, entity_get_float(para_ent[id], EV_FL_frame) + 1.0)
						}
					}
				}
				else
				{
					if (para_ent[id] > 0)
					{
						remove_entity(para_ent[id])
						para_ent[id] = 0
					}
				}
			}
			else
			{
				if (para_ent[id] > 0)
				{
					remove_entity(para_ent[id])
					para_ent[id] = 0
				}
			}
		}
		else if (get_user_oldbutton(id) & IN_USE)
		{
			if (para_ent[id] > 0)
			{
				remove_entity(para_ent[id])
				para_ent[id] = 0
			}
		}
	}
	
	return PLUGIN_CONTINUE
}
като напиша командата buy_parachute ми дава парашут и като не съм админ.Както и да е и така да остане е ок,но като пробвам да сложа скина за парашут пак ми изписва грешка.Парашута го тегля от тук и го слагам в папката на моделите.Може би аз не го правя както трябва тъй като има две опции и аз вземам само от папката Server Side и ги разархивирам в страйк папката.Рескам сървъра,но като го ресна дава грешка Load model not found и сървъра се рестартира.

Добавено преди 4 минути 1 секунда:
1n1 написа:
14 сеп 2019, 13:54
Bartian написа:
14 сеп 2019, 01:43
@OciXCrom Момчето ясно е посочил , че е искал парашута да е за админи и випове а този който ти си дал няма тази функция + не виждам какво лошо има старата версия след като работи без проблем.
@1n1 Качи ли модела в sv_downloadurl + промени ли името на модела в сма файла ? Ако не можеш кажи с какво име е модела и аз ако нещо ще редактирам мнението си в този пост.
Относно флага на чата пробвай така.

Код: Избери всички

/***************************************************************************************************
                        		AMX Parachute
          
  Version: 0.2.2
  Author: KRoTaL

  0.1    Release
  0.1.1  Players can't buy a parachute if they already own one
  0.1.2	 Release for AMX MOD X
  0.1.3  Minor changes
  0.1.4  Players lose their parachute if they die
  0.1.5  Added amx_parachute cvar
  0.1.6  Changed set_origin to movetype_follow (you won't see your own parachute)
  0.1.7	 Added amx_parachute <name> | admins with admin level a get a free parachute
  0.1.8	 Fixed the give parachute command
	 added a admin_parachute cvar to give admins with level A a free parachute
  0.1.9	 Added a sell command & added a cvar to get money back
  0.2.0	 Added para_free cvar to give everyone a free parachute
  0.2.1	 Fixed some minor bugs
  0.2.2  Fixed the parachute remove bug
  0.2.3  Fixed the alive bug


  Commands:

	say buy_parachute	- buys a parachute
	
	amx_parachute <name>|@all	- gives a player a free parachute

	Press +use to slow down your fall.

  Cvars:

	sv_parachute "1"	 -	0: disables the plugin
					1: enables the plugin

	parachute_cost "1000"	 -	cost of the parachute
	
	admin_parachute "0"	 -	0: admins with level A won't get a free parachute
					1: admins with level A get a free parachute
					
	parachute_payback "75"	 -	the amount you get back of the parachute in %(75/100*1000) = 750
	
	para_free "0"		 -	0: no free parachute
					1: free parachute for everyone
	

  Setup (AMXX 1.71):

    Install the amxx file. 
    Enable engine and cstrike(amxx's modules.ini) 
    Put the parachute.mdl file in the cstrike/models folder


***************************************************************************************************/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>

#define PLUGINNAME	"AMXX Parachute"
#define VERSION		"0.2.3"
#define AUTHOR		"KRoT@L"

new bool:has_parachute[33];
new para_ent[33];
new bool:had_parachute[33];
new bool:player_died[33];

public plugin_init()
{
	register_plugin( PLUGINNAME, VERSION, AUTHOR )
	
	register_dictionary( "parachute.txt" )
	
	register_concmd( "say buy_parachute", "buy_parachute" )
	register_concmd( "say sell_parachute", "sell_parachute" )
	register_concmd( "amx_parachute", "give_parachute", ADMIN_LEVEL_A, "amx_parachute <name, @all>" )

	register_cvar( "sv_parachute", "1" )
	register_cvar( "parachute_cost", "1000" )
	register_cvar( "parachute_payback", "75" )
	register_cvar( "admin_parachute", "0" )
	register_cvar( "para_free", "0" )
	
	register_logevent( "event_roundstart", 2, "0=World triggered", "1=Round_Start" )
	register_logevent( "event_roundend", 2, "0=World triggered", "1=Round_End" )
	register_event( "ResetHUD", "event_resethud", "be" )
	register_event( "DeathMsg", "death_event", "a" )
}

public plugin_modules() {
	require_module( "engine" )
	require_module( "cstrike" )
}

public plugin_precache()
{
	precache_model("models/parachute.mdl")
}

public client_connect(id)
{
	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
}

public event_roundstart() {
	new MaxPlayers = get_maxplayers();
	for( new id; id < MaxPlayers; id++ ) {
		if( had_parachute[id] == true && player_died[id] == false ) {
			has_parachute[id] = true
		}
	}
	set_task( 3.0, "free_parachute" );
		
}

public event_roundend() {
	new MaxPlayers = get_maxplayers();
	for( new id; id < MaxPlayers; id++ ) {
		if( is_user_alive( id ) ) {
			if( has_parachute[id] == true ) {
				had_parachute[id] = true;
			}else{
				had_parachute[id] = false;
			}
			player_died[id] = false;

		}else {
			if(para_ent[id] > 0) {
				remove_entity(para_ent[id])
			}
			has_parachute[id] = false
			para_ent[id] = 0
			player_died[id] = true;
		}
	}
		
}

public event_resethud( id ) {
	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
}

public death_event()
{
	new id = read_data(2)

	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
	player_died[id] = true
}

public buy_parachute(id) {
	
	if(get_cvar_num( "sv_parachute" ) == 0)
	{
		client_print(id, print_chat, "%L", id, "para_disabled")
		return PLUGIN_HANDLED
	}

	if(has_parachute[id])
	{
		client_print(id, print_chat, "%L", id, "para_has" )
		return PLUGIN_HANDLED		
	}

	new money = cs_get_user_money(id)
	new cost = get_cvar_num( "parachute_cost" )

	if(money < cost)
	{
		client_print(id, print_chat, "%L", id, "para_money", cost)
		return PLUGIN_CONTINUE
	}

	cs_set_user_money(id, money - cost)
	client_print(id, print_chat, "%L", id, "para_buy" )
	has_parachute[id] = true

	return PLUGIN_CONTINUE
}

public sell_parachute(id) {
	if (get_cvar_num("sv_parachute") == 0) {
		client_print(id, print_chat, "%L", id, "para_disabled")
		return PLUGIN_CONTINUE
	}
	if (has_parachute[id]) {
		if(para_ent[id] > 0)
		{
			if(is_valid_ent(para_ent[id])) {
				remove_entity(para_ent[id])
			}
		}
		has_parachute[id] = false
		para_ent[id] = 0

		new money = cs_get_user_money(id)
		new cost = get_cvar_num("parachute_cost")
		new payback = floatround(float(cost) * (get_cvar_float("parachute_payback") / 100))
		cs_set_user_money(id, money + payback)
		client_print(id, print_chat, "%L", id, "para_sell", payback)
	}
	return PLUGIN_CONTINUE
}
public free_parachute() {
	new maxPlayers = get_maxplayers();
	if(get_cvar_num( "sv_parachute" ) == 0) return PLUGIN_CONTINUE

        for( new i = 1; i <= maxPlayers; i++ )
        {
		if( !is_user_connected( i ) ) return PLUGIN_CONTINUE
		
		if ( get_cvar_num( "para_free") == 1 ) {
			client_print( i, print_chat, "%L", LANG_PLAYER, "para_admin_free" )
			has_parachute[i] = true
			
			return PLUGIN_CONTINUE
		}
		if ( get_cvar_num("admin_parachute") == 1 && get_user_flags( i ) && ADMIN_CHAT  ) {
			client_print( i, print_chat, "%L", LANG_PLAYER, "para_admin_free" )
			has_parachute[i] = true
			
			return PLUGIN_CONTINUE
		}
	}
	return PLUGIN_CONTINUE
}

public give_parachute(id, level, cid) {
	
	if (!cmd_access(id, level, cid, 2 ) ) {
		return PLUGIN_CONTINUE
	}
	
	if (get_cvar_num("sv_parachute") == 0 ) {
		client_print(id, print_chat, "%L", id, "para_disabled")
		
		return PLUGIN_CONTINUE
	}else{
		new arg[32]
		read_argv( 1, arg, 31 )
		if (arg[0] == '@' && arg[1] == 'a') {
			new maxPlayers = get_maxplayers();
			for( new i = 1; i <= maxPlayers; i++ )
			{
				client_print( i, print_chat, "%L", LANG_PLAYER, "para_free_all" )
				has_parachute[i] = true
			}
			
			return PLUGIN_CONTINUE
		}
		new player = cmd_target( id, arg, 4 )
		
		if (has_parachute[id]) {
			client_print(id, print_chat, "%L", id, "para_has" )
			
			return PLUGIN_CONTINUE
		}
		if( !player ) {
			client_print( id, print_chat, "%L", id, "para_no_player" )
	
			return PLUGIN_CONTINUE
		}else{
			client_print(player, print_chat, "%L", player, "para_give" )
			has_parachute[player] = true
			
			return PLUGIN_CONTINUE
		}
		
	}
	return PLUGIN_CONTINUE
}

public client_PreThink(id)
{
	if( get_cvar_num( "sv_parachute" ) == 0 )
	{
		return PLUGIN_CONTINUE
	}

	if( !is_user_alive(id) )
	{
		return PLUGIN_CONTINUE
	}

	if( has_parachute[id] )
	{
		if (get_user_button(id) & IN_USE )
		{
			if ( !( get_entity_flags(id) & FL_ONGROUND ) )
			{
				new Float:velocity[3]
				entity_get_vector(id, EV_VEC_velocity, velocity)
				if(velocity[2] < 0)
				{
					if (para_ent[id] == 0)
					{
						para_ent[id] = create_entity("info_target")
						if (para_ent[id] > 0)
						{
							entity_set_model(para_ent[id], "models/parachute.mdl")
							entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
							entity_set_edict(para_ent[id], EV_ENT_aiment, id)
						}
					}
					if (para_ent[id] > 0)
					{
						velocity[2] = (velocity[2] + 40.0 < -100) ? velocity[2] + 40.0 : -100.0
						entity_set_vector(id, EV_VEC_velocity, velocity)
						if (entity_get_float(para_ent[id], EV_FL_frame) < 0.0 || entity_get_float(para_ent[id], EV_FL_frame) > 254.0)
						{
							if (entity_get_int(para_ent[id], EV_INT_sequence) != 1)
							{
								entity_set_int(para_ent[id], EV_INT_sequence, 1)
							}
							entity_set_float(para_ent[id], EV_FL_frame, 0.0)
						}
						else 
						{
							entity_set_float(para_ent[id], EV_FL_frame, entity_get_float(para_ent[id], EV_FL_frame) + 1.0)
						}
					}
				}
				else
				{
					if (para_ent[id] > 0)
					{
						remove_entity(para_ent[id])
						para_ent[id] = 0
					}
				}
			}
			else
			{
				if (para_ent[id] > 0)
				{
					remove_entity(para_ent[id])
					para_ent[id] = 0
				}
			}
		}
		else if (get_user_oldbutton(id) & IN_USE)
		{
			if (para_ent[id] > 0)
			{
				remove_entity(para_ent[id])
				para_ent[id] = 0
			}
		}
	}
	
	return PLUGIN_CONTINUE
}
като напиша командата buy_parachute ми дава парашут и като не съм админ.Както и да е и така да остане е ок,но като пробвам да сложа скина за парашут пак ми изписва грешка.Парашута го тегля от тук https://gamebanana.com/skins/download/151896 и го слагам в папката на моделите.Може би аз не го правя както трябва тъй като има две опции и аз вземам само от папката Server Side и ги разархивирам в страйк папката.Рескам сървъра,но като го ресна дава грешка Load model not found и сървъра се рестартира.

Потребителски аватар

JackEyedJones
Потребител
Потребител
Мнения: 239
Регистриран: 10 сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 39 пъти
Години: 26
Контакти:

Парашут плъгин

Мнение от JackEyedJones » 14 сеп 2019, 16:05

В папка models направи папка parachute_plugin и постави в нея parachute.mdl

Код: Избери всички

/***************************************************************************************************
                        		AMX Parachute
          
  Version: 0.2.2
  Author: KRoTaL

  0.1    Release
  0.1.1  Players can't buy a parachute if they already own one
  0.1.2	 Release for AMX MOD X
  0.1.3  Minor changes
  0.1.4  Players lose their parachute if they die
  0.1.5  Added amx_parachute cvar
  0.1.6  Changed set_origin to movetype_follow (you won't see your own parachute)
  0.1.7	 Added amx_parachute <name> | admins with admin level a get a free parachute
  0.1.8	 Fixed the give parachute command
	 added a admin_parachute cvar to give admins with level A a free parachute
  0.1.9	 Added a sell command & added a cvar to get money back
  0.2.0	 Added para_free cvar to give everyone a free parachute
  0.2.1	 Fixed some minor bugs
  0.2.2  Fixed the parachute remove bug
  0.2.3  Fixed the alive bug


  Commands:

	say buy_parachute	- buys a parachute
	
	amx_parachute <name>|@all	- gives a player a free parachute

	Press +use to slow down your fall.

  Cvars:

	sv_parachute "1"	 -	0: disables the plugin
					1: enables the plugin

	parachute_cost "1000"	 -	cost of the parachute
	
	admin_parachute "0"	 -	0: admins with level A won't get a free parachute
					1: admins with level A get a free parachute
					
	parachute_payback "75"	 -	the amount you get back of the parachute in %(75/100*1000) = 750
	
	para_free "0"		 -	0: no free parachute
					1: free parachute for everyone
	

  Setup (AMXX 1.71):

    Install the amxx file. 
    Enable engine and cstrike(amxx's modules.ini) 
    Put the parachute.mdl file in the cstrike/models folder


***************************************************************************************************/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>

#define PLUGINNAME	"AMXX Parachute"
#define VERSION		"0.2.3"
#define AUTHOR		"KRoT@L"

new bool:has_parachute[33];
new para_ent[33];
new bool:had_parachute[33];
new bool:player_died[33];

#define PARACHUTE_BUY_FLAG ADMIN_LEVEL_A

public plugin_init()
{
	register_plugin( PLUGINNAME, VERSION, AUTHOR )
	
	register_dictionary( "parachute.txt" )
	
	register_concmd( "say buy_parachute", "buy_parachute" )
	register_concmd( "say sell_parachute", "sell_parachute" )
	register_concmd( "amx_parachute", "give_parachute", ADMIN_LEVEL_A, "amx_parachute <name, @all>" )

	register_cvar( "sv_parachute", "1" )
	register_cvar( "parachute_cost", "1000" )
	register_cvar( "parachute_payback", "75" )
	register_cvar( "admin_parachute", "0" )
	register_cvar( "para_free", "0" )
	
	register_logevent( "event_roundstart", 2, "0=World triggered", "1=Round_Start" )
	register_logevent( "event_roundend", 2, "0=World triggered", "1=Round_End" )
	register_event( "ResetHUD", "event_resethud", "be" )
	register_event( "DeathMsg", "death_event", "a" )
}

public plugin_modules() {
	require_module( "engine" )
	require_module( "cstrike" )
}

public plugin_precache()
{
	precache_model("models/parachute_plugin/parachute.mdl")
}

public client_connect(id)
{
	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
}

public event_roundstart() {
	new MaxPlayers = get_maxplayers();
	for( new id; id < MaxPlayers; id++ ) {
		if( had_parachute[id] == true && player_died[id] == false ) {
			has_parachute[id] = true
		}
	}
	set_task( 3.0, "free_parachute" );
		
}

public event_roundend() {
	new MaxPlayers = get_maxplayers();
	for( new id; id < MaxPlayers; id++ ) {
		if( is_user_alive( id ) ) {
			if( has_parachute[id] == true ) {
				had_parachute[id] = true;
			}else{
				had_parachute[id] = false;
			}
			player_died[id] = false;

		}else {
			if(para_ent[id] > 0) {
				remove_entity(para_ent[id])
			}
			has_parachute[id] = false
			para_ent[id] = 0
			player_died[id] = true;
		}
	}
		
}

public event_resethud( id ) {
	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
}

public death_event()
{
	new id = read_data(2)

	if(para_ent[id] > 0)
	{
		remove_entity(para_ent[id])
	}
	has_parachute[id] = false
	para_ent[id] = 0
	player_died[id] = true
}

public buy_parachute(id) {
	
	if(get_cvar_num( "sv_parachute" ) == 0)
	{
		client_print(id, print_chat, "%L", id, "para_disabled")
		return PLUGIN_HANDLED
	}

	if(has_parachute[id])
	{
		client_print(id, print_chat, "%L", id, "para_has" )
		return PLUGIN_HANDLED		
	}

	if(!(get_user_flags(id) & PARACHUTE_BUY_FLAG))
	{
		client_print(id, print_chat, "Parachute is only for admins.")
		return PLUGIN_HANDLED		
	}

	new money = cs_get_user_money(id)
	new cost = get_cvar_num( "parachute_cost" )

	if(money < cost)
	{
		client_print(id, print_chat, "%L", id, "para_money", cost)
		return PLUGIN_CONTINUE
	}

	cs_set_user_money(id, money - cost)
	client_print(id, print_chat, "%L", id, "para_buy" )
	has_parachute[id] = true

	return PLUGIN_CONTINUE
}

public sell_parachute(id) {
	if (get_cvar_num("sv_parachute") == 0) {
		client_print(id, print_chat, "%L", id, "para_disabled")
		return PLUGIN_CONTINUE
	}
	if (has_parachute[id]) {
		if(para_ent[id] > 0)
		{
			if(is_valid_ent(para_ent[id])) {
				remove_entity(para_ent[id])
			}
		}
		has_parachute[id] = false
		para_ent[id] = 0

		new money = cs_get_user_money(id)
		new cost = get_cvar_num("parachute_cost")
		new payback = floatround(float(cost) * (get_cvar_float("parachute_payback") / 100))
		cs_set_user_money(id, money + payback)
		client_print(id, print_chat, "%L", id, "para_sell", payback)
	}
	return PLUGIN_CONTINUE
}
public free_parachute() {
	new maxPlayers = get_maxplayers();
	if(get_cvar_num( "sv_parachute" ) == 0) return PLUGIN_CONTINUE

        for( new i = 1; i <= maxPlayers; i++ )
        {
		if( !is_user_connected( i ) ) return PLUGIN_CONTINUE
		
		if ( get_cvar_num( "para_free") == 1 ) {
			client_print( i, print_chat, "%L", LANG_PLAYER, "para_admin_free" )
			has_parachute[i] = true
			
			return PLUGIN_CONTINUE
		}
		if ( get_cvar_num("admin_parachute") == 1 && get_user_flags( i ) && ADMIN_CHAT  ) {
			client_print( i, print_chat, "%L", LANG_PLAYER, "para_admin_free" )
			has_parachute[i] = true
			
			return PLUGIN_CONTINUE
		}
	}
	return PLUGIN_CONTINUE
}

public give_parachute(id, level, cid) {
	
	if (!cmd_access(id, level, cid, 2 ) ) {
		return PLUGIN_CONTINUE
	}
	
	if (get_cvar_num("sv_parachute") == 0 ) {
		client_print(id, print_chat, "%L", id, "para_disabled")
		
		return PLUGIN_CONTINUE
	}else{
		new arg[32]
		read_argv( 1, arg, 31 )
		if (arg[0] == '@' && arg[1] == 'a') {
			new maxPlayers = get_maxplayers();
			for( new i = 1; i <= maxPlayers; i++ )
			{
				client_print( i, print_chat, "%L", LANG_PLAYER, "para_free_all" )
				has_parachute[i] = true
			}
			
			return PLUGIN_CONTINUE
		}
		new player = cmd_target( id, arg, 4 )
		
		if (has_parachute[id]) {
			client_print(id, print_chat, "%L", id, "para_has" )
			
			return PLUGIN_CONTINUE
		}
		if( !player ) {
			client_print( id, print_chat, "%L", id, "para_no_player" )
	
			return PLUGIN_CONTINUE
		}else{
			client_print(player, print_chat, "%L", player, "para_give" )
			has_parachute[player] = true
			
			return PLUGIN_CONTINUE
		}
		
	}
	return PLUGIN_CONTINUE
}

public client_PreThink(id)
{
	if( get_cvar_num( "sv_parachute" ) == 0 )
	{
		return PLUGIN_CONTINUE
	}

	if( !is_user_alive(id) )
	{
		return PLUGIN_CONTINUE
	}

	if( has_parachute[id] )
	{
		if (get_user_button(id) & IN_USE )
		{
			if ( !( get_entity_flags(id) & FL_ONGROUND ) )
			{
				new Float:velocity[3]
				entity_get_vector(id, EV_VEC_velocity, velocity)
				if(velocity[2] < 0)
				{
					if (para_ent[id] == 0)
					{
						para_ent[id] = create_entity("info_target")
						if (para_ent[id] > 0)
						{
							entity_set_model(para_ent[id], "models/parachute_plugin/parachute.mdl")
							entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
							entity_set_edict(para_ent[id], EV_ENT_aiment, id)
						}
					}
					if (para_ent[id] > 0)
					{
						velocity[2] = (velocity[2] + 40.0 < -100) ? velocity[2] + 40.0 : -100.0
						entity_set_vector(id, EV_VEC_velocity, velocity)
						if (entity_get_float(para_ent[id], EV_FL_frame) < 0.0 || entity_get_float(para_ent[id], EV_FL_frame) > 254.0)
						{
							if (entity_get_int(para_ent[id], EV_INT_sequence) != 1)
							{
								entity_set_int(para_ent[id], EV_INT_sequence, 1)
							}
							entity_set_float(para_ent[id], EV_FL_frame, 0.0)
						}
						else 
						{
							entity_set_float(para_ent[id], EV_FL_frame, entity_get_float(para_ent[id], EV_FL_frame) + 1.0)
						}
					}
				}
				else
				{
					if (para_ent[id] > 0)
					{
						remove_entity(para_ent[id])
						para_ent[id] = 0
					}
				}
			}
			else
			{
				if (para_ent[id] > 0)
				{
					remove_entity(para_ent[id])
					para_ent[id] = 0
				}
			}
		}
		else if (get_user_oldbutton(id) & IN_USE)
		{
			if (para_ent[id] > 0)
			{
				remove_entity(para_ent[id])
				para_ent[id] = 0
			}
		}
	}
	
	return PLUGIN_CONTINUE
}
Коригирал съм кода на плъгина с правилния път до модела в precache.
Поставен е флаг за командата buy_parachute в чата.

Код: Избери всички

#define PARACHUTE_BUY_FLAG ADMIN_LEVEL_A

Отговори

Върни се в “Заявки за плъгини”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 4 госта