Свързване на Bazooka Wars с Custom Shop.

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
cgozzie
Извън линия
Потребител
Потребител
Мнения: 1318
Регистриран на: 13 Окт 2016, 22:10
Местоположение: Варна
Се отблагодари: 244 пъти
Получена благодарност: 42 пъти

Свързване на Bazooka Wars с Custom Shop.

Мнение от cgozzie » 06 Авг 2018, 23:01

Ще може ли да се свърже този плъгин за cshop с цена 16 000$.

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

#include <amxmodx>
#include <xs>
#include <fun>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

new const INT_ROCKET_SPEED = 1500;
new const Float:FL_MAX_DAMAGE = 175.0;
new const Float:FL_EXPLOSION_RADIUS = 200.0;
new const Float:FL_MAX_THROW_SPEED = 1200.0;

new const MODEL_V_BAZOOKA[] = "models/BazookaDM/v_bazooka.mdl";
new const MODEL_P_BAZOOKA[] = "models/BazookaDM/p_bazooka.mdl";
new const MODEL_ROCKET[] = "models/BazookaDM/rocket.mdl";
new const SOUND_LAUNCH[] = "BazookaDM/launch.wav";
new const SOUND_EXPLODE[] = "BazookaDM/explode.wav";
new const SPRITE_TRAIL[] = "sprites/BazookaDM/trail.spr";
new const SPRITE_EXPLOSION[] = "sprites/BazookaDM/explosion.spr";

new g_iExplosion, g_iTrail;

new g_iDeathMsg, g_iBarTimeMsg;

new g_fwdKeyValue;

public plugin_precache()
{
	g_fwdKeyValue = register_forward(FM_KeyValue, "fwdKeyValue");				// remove all weapons from map
	
	precache_model(MODEL_V_BAZOOKA);
	precache_model(MODEL_P_BAZOOKA);
	precache_model(MODEL_ROCKET);
	precache_sound(SOUND_LAUNCH);
	precache_sound(SOUND_EXPLODE);
	g_iTrail = precache_model(SPRITE_TRAIL);
	g_iExplosion = precache_model(SPRITE_EXPLOSION);
}

public plugin_init()
{
	register_plugin("Bazooka DM: Main", "2.1.0 stable", "didoWEE");
	register_cvar( "bzdm_version", "2.1.0", FCVAR_SERVER | FCVAR_SPONLY);
	
	g_iBarTimeMsg = get_user_msgid("BarTime");
	g_iDeathMsg = get_user_msgid("DeathMsg");

	register_clcmd("jointeam", "cmdTeamChange");					// team change block
	register_clcmd("chooseteam", "cmdTeamChange");					// --/--

	register_message(get_user_msgid("Radar"), "Message_Radar");						// radar block
	register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon");			// buy menu block
	register_message(get_user_msgid("HudTextArgs"), "Message_HudTextArgs"); 		// *spawned with bomb* message block

	
	register_forward(FM_ClientKill, "fwdClientKill");						// kill cmd block
	register_forward(FM_GetGameDescription, "fwdGameDescription");
	
	register_touch("rocket", "*", "fwdTouch");
	
	register_event("CurWeapon", "eventCurrent_Weapon", "be", "1=1");		// set bazooka models
	
	RegisterHam(Ham_Spawn, "player", "fwdPlayerSpawnPost", 1);
	RegisterHam(Ham_AddPlayerItem, "player", "fwdAddPlayerItemPre"); 			// bomb remove
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fwdKnifePrimaryAttackPre");
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fwdKnifeSecondaryAttackPre");

	unregister_forward(FM_KeyValue, g_fwdKeyValue);		// needed only once at the beggining of the map so we remove it
}

public fwdPlayerSpawnPost(id)
{
	if(is_user_alive(id))
	{
		strip_user_weapons(id);
		give_item(id, "weapon_knife");
	}
}

public fwdAddPlayerItemPre(id , iWeapon)
{
	if(cs_get_weapon_id( iWeapon ) == CSW_C4)
	{
		cs_set_user_plant(id, 0, 0);
		entity_set_int(id, EV_INT_body, 0);
		SetHamReturnInteger(false);
		return HAM_SUPERCEDE;
	}
	return HAM_IGNORED;
}

public eventCurrent_Weapon(id)
{
	if(read_data(2) == CSW_KNIFE)
	{
		entity_set_string(id, EV_SZ_viewmodel, MODEL_V_BAZOOKA);
		entity_set_string(id, EV_SZ_weaponmodel, MODEL_P_BAZOOKA);
	}
}

public fwdKnifePrimaryAttackPre(ent)
{
	ExecuteHamB(Ham_Weapon_SecondaryAttack, ent);
	return HAM_SUPERCEDE;
}

public fwdKnifeSecondaryAttackPre(ent)
{
	set_pdata_float(ent, 46, 2.2, 4);
	set_pdata_float(ent, 47, 2.2, 4);
	Launch(entity_get_edict(ent, EV_ENT_owner));
	return HAM_SUPERCEDE;
}

public fwdTouch(ent1, ent2)
{
	if(!is_valid_ent(ent1))
		return PLUGIN_CONTINUE;

	// checking classname to avoid second explosion
	static classname[7];
	entity_get_string(ent1, EV_SZ_classname, classname, charsmax(classname));
	
	if(!equal(classname, "rocket"))
		return PLUGIN_CONTINUE;

	Explode(ent1);
	return PLUGIN_CONTINUE;
}

Launch(id)
{
	showBarTime(id, 2);

	static Float:Origin[3], Float:Angle[3], Float:Velocity[3];
	static Float:Box[3] = {-1.0, -1.0, -1.0};
	
	entity_get_vector(id, EV_VEC_v_angle, Angle);
	entity_get_vector(id, EV_VEC_origin, Origin);
	Angle[0] *= -1.0;
	Origin[2] += 16.0;
	
	new ent = create_entity("info_target");
	entity_set_string(ent, EV_SZ_classname, "rocket");
	entity_set_model(ent, MODEL_ROCKET);
	entity_set_vector(ent, EV_VEC_origin, Origin);
	entity_set_vector(ent, EV_VEC_angles, Angle);
	
	entity_set_vector(ent, EV_VEC_mins, Box);
	Box[0] *= -1.0; Box[1] *= -1.0; Box[2] *= -1.0;
	entity_set_vector(ent, EV_VEC_maxs, Box);
	
	entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
	entity_set_int(ent, EV_INT_movetype, MOVETYPE_FLY);
	entity_set_edict(ent, EV_ENT_owner, id);
	
	velocity_by_aim(id, INT_ROCKET_SPEED, Velocity);
	entity_set_vector(ent, EV_VEC_velocity, Velocity);
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_BEAMFOLLOW);
	write_short(ent);
	write_short(g_iTrail);
	write_byte(25);
	write_byte(5);
	write_byte(255);
	write_byte(255);
	write_byte(255);
	write_byte(255);
	message_end();
	emit_sound(ent, CHAN_AUTO, SOUND_LAUNCH, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
	
	showWeaponAnimation(id, 2);
}

Explode(ent)
{
	static attacker;
	attacker = entity_get_edict(ent, EV_ENT_owner);
	if(!is_user_connected(attacker))
	{
		remove_entity(ent);
		return PLUGIN_HANDLED;
	}
	
	static Float:vecEntityOrigin[3];
	entity_get_vector(ent, EV_VEC_origin, vecEntityOrigin);
	
	emit_sound(ent, CHAN_AUTO, SOUND_EXPLODE, VOL_NORM, ATTN_NORM, 0, PITCH_HIGH);
	
    	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_SPRITE);
	write_coord(floatround(vecEntityOrigin[0]));
	write_coord(floatround(vecEntityOrigin[1]));
	write_coord(floatround(vecEntityOrigin[2]));
	write_short(g_iExplosion);
	write_byte(floatround(FL_EXPLOSION_RADIUS/2));
	write_byte(255);
	message_end();
	
	static Float:vecPlayerOrigin[3];
	static Float:vecVelocity[3];
	static Float:flDistance;
	static Float:flPercent;
	static Float:flDamage;
	
	static i, id, iCount, iPlayers[32];
	get_players(iPlayers, iCount, "a");
	
	for(i=0; i<iCount; i++)
	{
		id = iPlayers[i];
		entity_get_vector(id, EV_VEC_origin, vecPlayerOrigin);
		xs_vec_sub(vecPlayerOrigin, vecEntityOrigin, vecVelocity);
		flDistance = vector_length(vecVelocity);
		
		if(flDistance > FL_EXPLOSION_RADIUS)
			continue;
			
		flPercent = 1.0 - flDistance / FL_EXPLOSION_RADIUS;
		flDamage = flPercent * FL_MAX_DAMAGE;
			
		xs_vec_mul_scalar(vecVelocity, (flPercent * FL_MAX_THROW_SPEED) / flDistance, vecVelocity);
		vecVelocity[2] *= 1.5; // more fun
		entity_set_vector(id, EV_VEC_velocity, vecVelocity);
			
		if(get_user_health(id) > flDamage)
			ExecuteHamB(Ham_TakeDamage, id, ent, attacker, flDamage, DMG_BLAST);
		else
		{
			if(id != attacker)
				ExecuteHam(Ham_AddPoints, attacker, 1, 0);
				
			set_msg_block(g_iDeathMsg, BLOCK_SET);
			user_kill(id, 1);
			set_msg_block(g_iDeathMsg, BLOCK_NOT);
				
			message_begin(MSG_BROADCAST, g_iDeathMsg);
			write_byte(attacker)
			write_byte(id)
			write_byte(0);
			write_string("bazooka");
			message_end();
			
			showBarTime(id, 0);
		}
	}
	remove_entity(ent);
	return PLUGIN_CONTINUE;
}

public cmdTeamChange(id)
{
	if(cs_get_user_team(id) != CS_TEAM_T
	&& cs_get_user_team(id) != CS_TEAM_CT)
		return PLUGIN_CONTINUE;
	return PLUGIN_HANDLED;
}

public fwdGameDescription()
{
	forward_return(FMV_STRING, "Bazooka DM");
	return FMRES_SUPERCEDE;
}

public fwdKeyValue(const ent, const KvdHandle)
{
	if(pev_valid(ent))
	{
		new szClassname[16];
		get_kvd(KvdHandle, KV_ClassName, szClassname, charsmax(szClassname));
		if(equal(szClassname, "armoury_entity"))
		{
			engfunc(EngFunc_RemoveEntity, ent);
			return FMRES_SUPERCEDE;
		}
	}
	return FMRES_IGNORED;
}

public fwdClientKill(id)
	return FMRES_SUPERCEDE;

public Message_Radar(iMsgId, iMsgDest, id)
	return PLUGIN_HANDLED;

public Message_HudTextArgs(iMsgId, iMsgDest, id)
{
	new szMessage[64];
	get_msg_arg_string(1, szMessage, charsmax(szMessage));
	if(equal(szMessage, "#Hint_you_have_the_bomb")) 
		return PLUGIN_HANDLED;
	return PLUGIN_CONTINUE;
}

public Message_StatusIcon(iMsgId, iMsgDest, id)
{
	static szIcon[8];
	get_msg_arg_string(2, szIcon, charsmax(szIcon));
	
	if(!equal(szIcon, "buyzone"))
		return PLUGIN_CONTINUE;
		
	if(!get_msg_arg_int(1))
		return PLUGIN_CONTINUE;
		
	set_pdata_int(id, 235, get_pdata_int(id, 235, 5) & ~(1<<0), 5);
	return PLUGIN_HANDLED;
}

showBarTime(id, time)
{
	message_begin(MSG_ONE_UNRELIABLE, g_iBarTimeMsg,. player=id);
	write_short(time);
	message_end();
}

showWeaponAnimation(id, anim)
{
	entity_set_int(id, EV_INT_weaponanim, anim);
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM,. player=id);
	write_byte(anim);
	write_byte(entity_get_int(id, EV_INT_body));
	message_end();
}
Последно промяна от cgozzie на 07 Авг 2018, 01:07, променено общо 2 пъти.
Изображение

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Преработка на Bazooka Wars

Мнение от OciXCrom » 12 Авг 2018, 09:40

Моля те не се обръщай лично към мен във всяка една тема,все едно само аз съм тук. Слагай по-качествени заглавия - точно за темите за магазина можеш да напишеш "свързване на еди кой плъгин с custom shop", вместо просто "преработка". Редактирай заглавието и имай това предвид за напред.


Последно издигане cgozzie от 12 Авг 2018, 09:40

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

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

Кой е на линия

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