Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
M36
Извън линия
Потребител
Потребител
Мнения: 62
Регистриран на: 19 Фев 2019, 11:34
Се отблагодари: 7 пъти

Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

Мнение от M36 » 09 Юни 2019, 14:14

Здравейте, плъгинът ми трябва за респаунд сървър в "weapon menu" имам само HE граната , ако може да се направи така че да не се взима от "weapon menu"и плъгинът да дава един път "Teleport Smoke Grenade" на хора с флаг "Б",на всяко прераждане.Благодаря предварително!
Последно промяна от M36 на 09 Юни 2019, 15:29, променено общо 1 път.

Аватар
SkandaU
Извън линия
Потребител
Потребител
Мнения: 213
Регистриран на: 09 Яну 2017, 12:37
Се отблагодари: 45 пъти
Получена благодарност: 22 пъти

Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

Мнение от SkandaU » 09 Юни 2019, 15:21

Прикачи .sma файла на въпросното "weapon menu", за да спрем даването на въпросната граната. Не можем да гадаем кое точно използваш. :)
В сървъра ползваш ли някакъв VIP Плъгин? Ако не използваш и искаш да дава само "teleport smoke granade" --> https://www.amxx-bg.info/forum/vipgen/. Всичко е опростено, направи така, че потребителите с флаг "Б" да получават smoke granade (teleport granade).
И последна стъпка от твоята заявка е да напишеш в чичко гугъл "amxx teleport granade" и дърпаш плъгина. :)
Изображение

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

Мнение от JackEyedJones » 09 Юни 2019, 15:28

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

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

#define PLUGIN_NAME "Teleport Smoke Grenade"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "VEN"

#define SMOKE_SCALE 30
#define SMOKE_FRAMERATE 12
#define SMOKE_GROUND_OFFSET 6

#define Smoke_Nade_Flag ADMIN_RESERVATION

// do not edit
new const g_sound_explosion[] = "weapons/sg_explode.wav"
new const g_classname_grenade[] = "grenade"

new const Float:g_sign[4][2] = {{1.0, 1.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.0, 1.0}}

new g_spriteid_steam1
new g_eventid_createsmoke

public plugin_init() {
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

	register_forward(FM_EmitSound, "forward_emitsound")
	register_forward(FM_PlaybackEvent, "forward_playbackevent")

	// we do not precaching, but retrieving the indexes
	g_spriteid_steam1 = engfunc(EngFunc_PrecacheModel, "sprites/steam1.spr")
	g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc")

	RegisterHam(Ham_Spawn, "player", "SmokeOnSpawn", 1);
}

public SmokeOnSpawn(id)
{
	if(!is_user_alive(id) || !is_user_vip(id))
		return
	
	if(user_has_weapon(id, CSW_SMOKEGRENADE))
		return

	give_item(id, "weapon_smokegrenade")
}

bool:is_user_vip(id)
	return bool:(get_user_flags(id) & Smoke_Nade_Flag)

public forward_emitsound(ent, channel, const sound[]) {
	if (!equal(sound, g_sound_explosion) || !is_grenade(ent))
		return FMRES_IGNORED

	static id, Float:origin[3]
	id = pev(ent, pev_owner)
	pev(ent, pev_origin, origin)
	engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, g_sound_explosion, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	engfunc(EngFunc_RemoveEntity, ent)
	origin[2] += SMOKE_GROUND_OFFSET
	create_smoke(origin)

	if (is_user_alive(id)) {
		static Float:mins[3], hull
		pev(id, pev_mins, mins)
		origin[2] -= mins[2] + SMOKE_GROUND_OFFSET
		hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN
		if (is_hull_vacant(origin, hull))
			engfunc(EngFunc_SetOrigin, id, origin)
		else { // close to a solid object, trying to find a vacant spot
			static Float:vec[3]
			vec[2] = origin[2]
			for (new i; i < sizeof g_sign; ++i) {
				vec[0] = origin[0] - mins[0] * g_sign[i][0]
				vec[1] = origin[1] - mins[1] * g_sign[i][1]
				if (is_hull_vacant(vec, hull)) {
					engfunc(EngFunc_SetOrigin, id, vec)
					break
				}
			}
		}
	}

	return FMRES_SUPERCEDE
}

public forward_playbackevent(flags, invoker, eventindex) {
	// we do not need a large amount of smoke
	if (eventindex == g_eventid_createsmoke)
		return FMRES_SUPERCEDE

	return FMRES_IGNORED
}

bool:is_grenade(ent) {
	if (!pev_valid(ent))
		return false

	static classname[sizeof g_classname_grenade + 1]
	pev(ent, pev_classname, classname, sizeof g_classname_grenade)
	if (equal(classname, g_classname_grenade))
		return true

	return false
}

create_smoke(const Float:origin[3]) {
	// engfunc because origin are float
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_SMOKE)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_short(g_spriteid_steam1)
	write_byte(SMOKE_SCALE)
	write_byte(SMOKE_FRAMERATE)
	message_end()
}

stock bool:is_hull_vacant(const Float:origin[3], hull) {
	new tr = 0
	engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr)
	if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
		return true
	
	return false
}
Чичко Гугъл не помага в този специфичен случай.

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

#define Smoke_Nade_Flag ADMIN_RESERVATION

Аватар
M36
Извън линия
Потребител
Потребител
Мнения: 62
Регистриран на: 19 Фев 2019, 11:34
Се отблагодари: 7 пъти

Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

Мнение от M36 » 09 Юни 2019, 15:39

JackEyedJones написа: 09 Юни 2019, 15:28

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

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

#define PLUGIN_NAME "Teleport Smoke Grenade"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "VEN"

#define SMOKE_SCALE 30
#define SMOKE_FRAMERATE 12
#define SMOKE_GROUND_OFFSET 6

#define Smoke_Nade_Flag ADMIN_RESERVATION

// do not edit
new const g_sound_explosion[] = "weapons/sg_explode.wav"
new const g_classname_grenade[] = "grenade"

new const Float:g_sign[4][2] = {{1.0, 1.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.0, 1.0}}

new g_spriteid_steam1
new g_eventid_createsmoke

public plugin_init() {
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

	register_forward(FM_EmitSound, "forward_emitsound")
	register_forward(FM_PlaybackEvent, "forward_playbackevent")

	// we do not precaching, but retrieving the indexes
	g_spriteid_steam1 = engfunc(EngFunc_PrecacheModel, "sprites/steam1.spr")
	g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc")

	RegisterHam(Ham_Spawn, "player", "SmokeOnSpawn", 1);
}

public SmokeOnSpawn(id)
{
	if(!is_user_alive(id) || !is_user_vip(id))
		return
	
	if(user_has_weapon(id, CSW_SMOKEGRENADE))
		return

	give_item(id, "weapon_smokegrenade")
}

bool:is_user_vip(id)
	return bool:(get_user_flags(id) & Smoke_Nade_Flag)

public forward_emitsound(ent, channel, const sound[]) {
	if (!equal(sound, g_sound_explosion) || !is_grenade(ent))
		return FMRES_IGNORED

	static id, Float:origin[3]
	id = pev(ent, pev_owner)
	pev(ent, pev_origin, origin)
	engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, g_sound_explosion, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	engfunc(EngFunc_RemoveEntity, ent)
	origin[2] += SMOKE_GROUND_OFFSET
	create_smoke(origin)

	if (is_user_alive(id)) {
		static Float:mins[3], hull
		pev(id, pev_mins, mins)
		origin[2] -= mins[2] + SMOKE_GROUND_OFFSET
		hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN
		if (is_hull_vacant(origin, hull))
			engfunc(EngFunc_SetOrigin, id, origin)
		else { // close to a solid object, trying to find a vacant spot
			static Float:vec[3]
			vec[2] = origin[2]
			for (new i; i < sizeof g_sign; ++i) {
				vec[0] = origin[0] - mins[0] * g_sign[i][0]
				vec[1] = origin[1] - mins[1] * g_sign[i][1]
				if (is_hull_vacant(vec, hull)) {
					engfunc(EngFunc_SetOrigin, id, vec)
					break
				}
			}
		}
	}

	return FMRES_SUPERCEDE
}

public forward_playbackevent(flags, invoker, eventindex) {
	// we do not need a large amount of smoke
	if (eventindex == g_eventid_createsmoke)
		return FMRES_SUPERCEDE

	return FMRES_IGNORED
}

bool:is_grenade(ent) {
	if (!pev_valid(ent))
		return false

	static classname[sizeof g_classname_grenade + 1]
	pev(ent, pev_classname, classname, sizeof g_classname_grenade)
	if (equal(classname, g_classname_grenade))
		return true

	return false
}

create_smoke(const Float:origin[3]) {
	// engfunc because origin are float
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_SMOKE)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_short(g_spriteid_steam1)
	write_byte(SMOKE_SCALE)
	write_byte(SMOKE_FRAMERATE)
	message_end()
}

stock bool:is_hull_vacant(const Float:origin[3], hull) {
	new tr = 0
	engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr)
	if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
		return true
	
	return false
}
Чичко Гугъл не помага в този специфичен случай.

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

#define Smoke_Nade_Flag ADMIN_RESERVATION
има малко разминаване във плъгина неможе да се компелира

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

teleport_smokegren.sma(43) : error 017: undefined symbol "has_weapon"
 teleport_smokegren.sma(46) : error 017: undefined symbol "give_weapon"
ДА подчартая само на този плъгин попадам в нета (пробвах го преди да пиша тук),единственния който работи "НО" след хвърляне на гранатата и телепорта крашва сървъра от от тоз плъгин не знам на какво се дължи.

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

Мнение от JackEyedJones » 09 Юни 2019, 15:42

Коригирах грешките с undefined symbol. Възможно е да се проявява от друг плъгин.

Аватар
M36
Извън линия
Потребител
Потребител
Мнения: 62
Регистриран на: 19 Фев 2019, 11:34
Се отблагодари: 7 пъти

Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

Мнение от M36 » 09 Юни 2019, 16:02

JackEyedJones написа: 09 Юни 2019, 15:42 Коригирах грешките с undefined symbol. Възможно е да се проявява от друг плъгин.
този плъгин не ми върши работа ,1во че недава гранатата,2ро пак крашва сървъра когато сложа към веапон менюто да дава смок граната

Аватар
SkandaU
Извън линия
Потребител
Потребител
Мнения: 213
Регистриран на: 09 Яну 2017, 12:37
Се отблагодари: 45 пъти
Получена благодарност: 22 пъти

Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

Мнение от SkandaU » 09 Юни 2019, 18:52

JackEyedJones написа: 09 Юни 2019, 15:28

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

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

#define PLUGIN_NAME "Teleport Smoke Grenade"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "VEN"

#define SMOKE_SCALE 30
#define SMOKE_FRAMERATE 12
#define SMOKE_GROUND_OFFSET 6

#define Smoke_Nade_Flag ADMIN_RESERVATION

// do not edit
new const g_sound_explosion[] = "weapons/sg_explode.wav"
new const g_classname_grenade[] = "grenade"

new const Float:g_sign[4][2] = {{1.0, 1.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.0, 1.0}}

new g_spriteid_steam1
new g_eventid_createsmoke

public plugin_init() {
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

	register_forward(FM_EmitSound, "forward_emitsound")
	register_forward(FM_PlaybackEvent, "forward_playbackevent")

	// we do not precaching, but retrieving the indexes
	g_spriteid_steam1 = engfunc(EngFunc_PrecacheModel, "sprites/steam1.spr")
	g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc")

	RegisterHam(Ham_Spawn, "player", "SmokeOnSpawn", 1);
}

public SmokeOnSpawn(id)
{
	if(!is_user_alive(id) || !is_user_vip(id))
		return
	
	if(user_has_weapon(id, CSW_SMOKEGRENADE))
		return

	give_item(id, "weapon_smokegrenade")
}

bool:is_user_vip(id)
	return bool:(get_user_flags(id) & Smoke_Nade_Flag)

public forward_emitsound(ent, channel, const sound[]) {
	if (!equal(sound, g_sound_explosion) || !is_grenade(ent))
		return FMRES_IGNORED

	static id, Float:origin[3]
	id = pev(ent, pev_owner)
	pev(ent, pev_origin, origin)
	engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, g_sound_explosion, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	engfunc(EngFunc_RemoveEntity, ent)
	origin[2] += SMOKE_GROUND_OFFSET
	create_smoke(origin)

	if (is_user_alive(id)) {
		static Float:mins[3], hull
		pev(id, pev_mins, mins)
		origin[2] -= mins[2] + SMOKE_GROUND_OFFSET
		hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN
		if (is_hull_vacant(origin, hull))
			engfunc(EngFunc_SetOrigin, id, origin)
		else { // close to a solid object, trying to find a vacant spot
			static Float:vec[3]
			vec[2] = origin[2]
			for (new i; i < sizeof g_sign; ++i) {
				vec[0] = origin[0] - mins[0] * g_sign[i][0]
				vec[1] = origin[1] - mins[1] * g_sign[i][1]
				if (is_hull_vacant(vec, hull)) {
					engfunc(EngFunc_SetOrigin, id, vec)
					break
				}
			}
		}
	}

	return FMRES_SUPERCEDE
}

public forward_playbackevent(flags, invoker, eventindex) {
	// we do not need a large amount of smoke
	if (eventindex == g_eventid_createsmoke)
		return FMRES_SUPERCEDE

	return FMRES_IGNORED
}

bool:is_grenade(ent) {
	if (!pev_valid(ent))
		return false

	static classname[sizeof g_classname_grenade + 1]
	pev(ent, pev_classname, classname, sizeof g_classname_grenade)
	if (equal(classname, g_classname_grenade))
		return true

	return false
}

create_smoke(const Float:origin[3]) {
	// engfunc because origin are float
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_SMOKE)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_short(g_spriteid_steam1)
	write_byte(SMOKE_SCALE)
	write_byte(SMOKE_FRAMERATE)
	message_end()
}

stock bool:is_hull_vacant(const Float:origin[3], hull) {
	new tr = 0
	engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr)
	if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
		return true
	
	return false
}
Чичко Гугъл не помага в този специфичен случай.

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

#define Smoke_Nade_Flag ADMIN_RESERVATION
Чичко гугъл не помага ли? Слагаш плъгина, който променя смоука на телепорт.
Чрез ВИП плъгин генератора нагласяш випа да получава Smoke Grenade и си готов.. най-лесния начин..
Изображение

Аватар
M36
Извън линия
Потребител
Потребител
Мнения: 62
Регистриран на: 19 Фев 2019, 11:34
Се отблагодари: 7 пъти

Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

Мнение от M36 » 09 Юни 2019, 19:04

SkandaU написа: 09 Юни 2019, 18:52
JackEyedJones написа: 09 Юни 2019, 15:28

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

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

#define PLUGIN_NAME "Teleport Smoke Grenade"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "VEN"

#define SMOKE_SCALE 30
#define SMOKE_FRAMERATE 12
#define SMOKE_GROUND_OFFSET 6

#define Smoke_Nade_Flag ADMIN_RESERVATION

// do not edit
new const g_sound_explosion[] = "weapons/sg_explode.wav"
new const g_classname_grenade[] = "grenade"

new const Float:g_sign[4][2] = {{1.0, 1.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.0, 1.0}}

new g_spriteid_steam1
new g_eventid_createsmoke

public plugin_init() {
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

	register_forward(FM_EmitSound, "forward_emitsound")
	register_forward(FM_PlaybackEvent, "forward_playbackevent")

	// we do not precaching, but retrieving the indexes
	g_spriteid_steam1 = engfunc(EngFunc_PrecacheModel, "sprites/steam1.spr")
	g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc")

	RegisterHam(Ham_Spawn, "player", "SmokeOnSpawn", 1);
}

public SmokeOnSpawn(id)
{
	if(!is_user_alive(id) || !is_user_vip(id))
		return
	
	if(user_has_weapon(id, CSW_SMOKEGRENADE))
		return

	give_item(id, "weapon_smokegrenade")
}

bool:is_user_vip(id)
	return bool:(get_user_flags(id) & Smoke_Nade_Flag)

public forward_emitsound(ent, channel, const sound[]) {
	if (!equal(sound, g_sound_explosion) || !is_grenade(ent))
		return FMRES_IGNORED

	static id, Float:origin[3]
	id = pev(ent, pev_owner)
	pev(ent, pev_origin, origin)
	engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, g_sound_explosion, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	engfunc(EngFunc_RemoveEntity, ent)
	origin[2] += SMOKE_GROUND_OFFSET
	create_smoke(origin)

	if (is_user_alive(id)) {
		static Float:mins[3], hull
		pev(id, pev_mins, mins)
		origin[2] -= mins[2] + SMOKE_GROUND_OFFSET
		hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN
		if (is_hull_vacant(origin, hull))
			engfunc(EngFunc_SetOrigin, id, origin)
		else { // close to a solid object, trying to find a vacant spot
			static Float:vec[3]
			vec[2] = origin[2]
			for (new i; i < sizeof g_sign; ++i) {
				vec[0] = origin[0] - mins[0] * g_sign[i][0]
				vec[1] = origin[1] - mins[1] * g_sign[i][1]
				if (is_hull_vacant(vec, hull)) {
					engfunc(EngFunc_SetOrigin, id, vec)
					break
				}
			}
		}
	}

	return FMRES_SUPERCEDE
}

public forward_playbackevent(flags, invoker, eventindex) {
	// we do not need a large amount of smoke
	if (eventindex == g_eventid_createsmoke)
		return FMRES_SUPERCEDE

	return FMRES_IGNORED
}

bool:is_grenade(ent) {
	if (!pev_valid(ent))
		return false

	static classname[sizeof g_classname_grenade + 1]
	pev(ent, pev_classname, classname, sizeof g_classname_grenade)
	if (equal(classname, g_classname_grenade))
		return true

	return false
}

create_smoke(const Float:origin[3]) {
	// engfunc because origin are float
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_SMOKE)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_short(g_spriteid_steam1)
	write_byte(SMOKE_SCALE)
	write_byte(SMOKE_FRAMERATE)
	message_end()
}

stock bool:is_hull_vacant(const Float:origin[3], hull) {
	new tr = 0
	engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr)
	if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
		return true
	
	return false
}
Чичко Гугъл не помага в този специфичен случай.

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

#define Smoke_Nade_Flag ADMIN_RESERVATION
Чичко гугъл не помага ли? Слагаш плъгина, който променя смоука на телепорт.
Чрез ВИП плъгин генератора нагласяш випа да получава Smoke Grenade и си готов.. най-лесния начин..
Аз не съм точно толкова наясно със нещата за това пиша тук ако може някой да ми направи по опростен варянт на вип плътин който да ти дава телепор смок граната при всяко прераждане

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

Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

Мнение от OciXCrom » 09 Юни 2019, 19:35

От ВИП генератора по-опростен вариант за даване оръжие при прераждане не съществува. Къде си тръгнал да правиш сървър ако не можеш да се оправиш с най-простия плъгин?

Аватар
M36
Извън линия
Потребител
Потребител
Мнения: 62
Регистриран на: 19 Фев 2019, 11:34
Се отблагодари: 7 пъти

Заявка за изработка на плъгин "Teleport Smoke Grenade" под флаг "Б"

Мнение от M36 » 09 Юни 2019, 20:21

OciXCrom написа: 09 Юни 2019, 19:35 От ВИП генератора по-опростен вариант за даване оръжие при прераждане не съществува. Къде си тръгнал да правиш сървър ако не можеш да се оправиш с най-простия плъгин?
Става въпрос че този плъгин които ми дават сървърт крашва от него не върви при мен ,имаше тук същатата тема за тоз плъгин и аз попадам само на него в нета ,споредмен плъгина трябва да се преработи за да не крашва сървърът или да се направи друг подобен,затова пиша тук за помощ оци.

ето го и въпросния плъгин от които крашва сървара когато се телеторнисх от гранатата

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

/* AMX Mod X
*   Teleport Smoke Grenade
*
* (c) Copyright 2006 by VEN
*
* This file is provided as is (no warranties)
*
*     DESCRIPTION
*       Plugin changes the smoke grenade to teleport grenade with a bit of smoke.
*       Usage: drop the grenade, you will be teleported to the spot of explosion.
*       Try to crouch if the height of the spot are small for uncrouched player.
*
*     CREDITS
*       Dread Pirate - idea
*/

#include <amxmodx>
#include <fakemeta>

#define PLUGIN_NAME "Teleport Smoke Grenade"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "VEN"

#define SMOKE_SCALE 30
#define SMOKE_FRAMERATE 12
#define SMOKE_GROUND_OFFSET 6

// do not edit
new const g_sound_explosion[] = "weapons/sg_explode.wav"
new const g_classname_grenade[] = "grenade"

new const Float:g_sign[4][2] = {{1.0, 1.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.0, 1.0}}

new g_spriteid_steam1
new g_eventid_createsmoke

public plugin_init() {
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

	register_forward(FM_EmitSound, "forward_emitsound")
	register_forward(FM_PlaybackEvent, "forward_playbackevent")

	// we do not precaching, but retrieving the indexes
	g_spriteid_steam1 = engfunc(EngFunc_PrecacheModel, "sprites/steam1.spr")
	g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc")
}

public forward_emitsound(ent, channel, const sound[]) {
	if (!equal(sound, g_sound_explosion) || !is_grenade(ent))
		return FMRES_IGNORED

	static id, Float:origin[3]
	id = pev(ent, pev_owner)
	pev(ent, pev_origin, origin)
	engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, g_sound_explosion, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
	engfunc(EngFunc_RemoveEntity, ent)
	origin[2] += SMOKE_GROUND_OFFSET
	create_smoke(origin)

	if (is_user_alive(id)) {
		static Float:mins[3], hull
		pev(id, pev_mins, mins)
		origin[2] -= mins[2] + SMOKE_GROUND_OFFSET
		hull = pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN
		if (is_hull_vacant(origin, hull))
			engfunc(EngFunc_SetOrigin, id, origin)
		else { // close to a solid object, trying to find a vacant spot
			static Float:vec[3]
			vec[2] = origin[2]
			for (new i; i < sizeof g_sign; ++i) {
				vec[0] = origin[0] - mins[0] * g_sign[i][0]
				vec[1] = origin[1] - mins[1] * g_sign[i][1]
				if (is_hull_vacant(vec, hull)) {
					engfunc(EngFunc_SetOrigin, id, vec)
					break
				}
			}
		}
	}

	return FMRES_SUPERCEDE
}

public forward_playbackevent(flags, invoker, eventindex) {
	// we do not need a large amount of smoke
	if (eventindex == g_eventid_createsmoke)
		return FMRES_SUPERCEDE

	return FMRES_IGNORED
}

bool:is_grenade(ent) {
	if (!pev_valid(ent))
		return false

	static classname[sizeof g_classname_grenade + 1]
	pev(ent, pev_classname, classname, sizeof g_classname_grenade)
	if (equal(classname, g_classname_grenade))
		return true

	return false
}

create_smoke(const Float:origin[3]) {
	// engfunc because origin are float
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
	write_byte(TE_SMOKE)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_short(g_spriteid_steam1)
	write_byte(SMOKE_SCALE)
	write_byte(SMOKE_FRAMERATE)
	message_end()
}

stock bool:is_hull_vacant(const Float:origin[3], hull) {
	new tr = 0
	engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr)
	if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
		return true
	
	return false
}

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

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

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 12 госта