Создайте плагин

Сообщения
25
Реакции
2
Всем привет кто сможет сделать плагин , попробую объяснить суть плагина при убийстве игрока (в убитого) бьёт молния
вот сама молния

public Action:Lightning(client, args) //Молния
{
new Float:pos[3];
wS_GetLookPos(client, pos);


new randomx = GetRandomInt(-500, 500); // Получаем случайные позиции Х и У, чтобы молния не была однобокой
new randomy = GetRandomInt(-500, 500);

//Получаем верхнюю точку молнии. Она будет рандомная по Х и У и выше нижней позиции на 800, чтобы молния била сверху вниз
new Float:startpos[3];
startpos[0] = pos[0] + randomx;
startpos[1] = pos[1] + randomy;
startpos[2] = pos[2] + 800;

//Делаем цвет молнии (у нас синий)
new color[4] = {0, 0, 255, 255};

//Делаем направление искр (к началу координат карты)
new Float:dir[3] = {0.0, 0.0, 0.0};

TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 20.0, 10.0, 0, 2.0, color, 3); //Делаем лазер с амплитудой в 2 единицы
TE_SendToAll(); // Применяем

TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 10.0, 5.0, 0, 1.0, {255, 255, 255, 255}, 3); //Делаем второй лазер (белый) с амплитудой в 1 единицу
TE_SendToAll(); // Применяем //И в 2 раза уже, чтобы молния смотрелась органично

TE_SetupSparks(pos, dir, 5000, 1000); //Делаем искры
TE_SendToAll(); // Применяем

TE_SetupEnergySplash(pos, dir, false); //Делаем всплеск энергии
TE_SendToAll(); // Применяем

TE_SetupSmoke(pos, g_SteamSprite, 5.0, 10); //Делаем дым
TE_SendToAll(); // Применяем

//Можно добавить маяк, если хотите. TE_SetupBeamRingPoint(pos, 10.0, 70.0, g_BeamSprite, g_HaloSprite, 0, 15, 15.0, 2.0, 0.0, {255, 255, 0, 255}, 10, 0);
// TE_SendToAll();
return Plugin_Handled;
}
 

NagarD

Участник
Сообщения
411
Реакции
184
PHP:
#include <sdktools>

new g_LightningSprite;
new g_SteamSprite;

public OnPluginStart()
{
	HookEvent("player_death", Event_PlayerDeath, EventHookMode_Post);
}

public OnMapStart()
{
	g_SteamSprite = PrecacheModel("sprites/steam1.vmt"); 
	g_LightningSprite = PrecacheModel("sprites/lgtning.vmt");
}

public Event_PlayerDeath(Handle:event,const String:name[],bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	new Float:pos[3];
	
	GetClientAbsOrigin(client, pos);

	new randomx = GetRandomInt(-500, 500); // Получаем случайные позиции Х и У, чтобы молния не была однобокой
	new randomy = GetRandomInt(-500, 500); 

	//Получаем верхнюю точку молнии. Она будет рандомная по Х и У и выше нижней позиции на 800, чтобы молния била сверху вниз
	new Float:startpos[3]; 
	startpos[0] = pos[0] + randomx; 
	startpos[1] = pos[1] + randomy; 
	startpos[2] = pos[2] + 800; 

	//Делаем цвет молнии (у нас синий)
	new color[4] = {0, 0, 255, 255}; 

	//Делаем направление искр (к началу координат карты)
	new Float:dir[3] = {0.0, 0.0, 0.0}; 

	TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 20.0, 10.0, 0, 2.0, color, 3); //Делаем лазер с амплитудой в 2 единицы
	TE_SendToAll(); // Применяем

	TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 10.0, 5.0, 0, 1.0, {255, 255, 255, 255}, 3); //Делаем второй лазер (белый) с амплитудой в 1 единицу
	TE_SendToAll(); // Применяем //И в 2 раза уже, чтобы молния смотрелась органично

	TE_SetupSparks(pos, dir, 5000, 1000); //Делаем искры
	TE_SendToAll(); // Применяем

	TE_SetupEnergySplash(pos, dir, false); //Делаем всплеск энергии
	TE_SendToAll(); // Применяем

	TE_SetupSmoke(pos, g_SteamSprite, 5.0, 10); //Делаем дым
	TE_SendToAll(); // Применяем

	// TE_SetupBeamRingPoint(pos, 10.0, 70.0, g_BeamSprite, g_HaloSprite, 0, 15, 15.0, 2.0, 0.0, {255, 255, 0, 255}, 10, 0); //Можно добавить маяк, если хотите. 
	// TE_SendToAll(); 
	return Plugin_Handled;
}
 
Сообщения
25
Реакции
2
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
new client = GetClientOfUserId(GetEventInt(event, "userid"));
Зачем создавать переменную, если индекс применяется всего 1 раз?
new randomx = GetRandomInt(-500, 500); // Получаем случайные позиции Х и У, чтобы молния не была однобокой
new randomy = GetRandomInt(-500, 500);
То же самое.
new color[4] = {0, 0, 255, 255};
В общем-то тоже, но для удобства, чтобы было легче найти, оставляю.
PHP:
#include <sdktools> 

new g_LightningSprite; 
new g_SteamSprite; 

public OnPluginStart() 
{ 
	HookEvent("player_death", Event_PlayerDeath, EventHookMode_Post); 
} 

public OnMapStart() 
{ 
	g_SteamSprite = PrecacheModel("sprites/steam1.vmt");  
	g_LightningSprite = PrecacheModel("sprites/lgtning.vmt"); 
} 

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) 
{
	//3) Делаем направление искр (к началу координат карты)
	//4) Делаем цвет молнии (у нас синий)
	new Float:pos[3], Float:startpos[3], Float:dir[3] = {0.0, 0.0, 0.0}, color[4] = {0, 0, 255, 255}; 
	
	GetClientAbsOrigin(GetClientOfUserId(GetEventInt(event, "userid")), pos); 

	// Получаем верхнюю точку молнии + случайные позиции Х и У и выше нижней позиции на 800, чтобы молния била сверху вниз 
	startpos[0] = pos[0] + GetRandomInt(-500, 500);  
	startpos[1] = pos[1] + GetRandomInt(-500, 500);  
	startpos[2] = pos[2] + 800;  

	TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 20.0, 10.0, 0, 2.0, color, 3); //Делаем лазер с амплитудой в 2 единицы 
	TE_SendToAll(); // Применяем 

	TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 10.0, 5.0, 0, 1.0, {255, 255, 255, 255}, 3); //Делаем второй лазер (белый) с амплитудой в 1 единицу 
	TE_SendToAll(); // Применяем //И в 2 раза уже, чтобы молния смотрелась органично 

	TE_SetupSparks(pos, dir, 5000, 1000); //Делаем искры 
	TE_SendToAll(); // Применяем 

	TE_SetupEnergySplash(pos, dir, false); //Делаем всплеск энергии 
	TE_SendToAll(); // Применяем 

	TE_SetupSmoke(pos, g_SteamSprite, 5.0, 10); //Делаем дым 
	TE_SendToAll(); // Применяем 

	// TE_SetupBeamRingPoint(pos, 10.0, 70.0, g_BeamSprite, g_HaloSprite, 0, 15, 15.0, 2.0, 0.0, {255, 255, 0, 255}, 10, 0); //Можно добавить маяк, если хотите.  
	// TE_SendToAll(); 
	if (!dontBroadcast)
		SetEventBroadcast(event, true); 
}
Если честно, не понимаю, что же мы блокируем? Какие-то сообщения, иные эффекты при смерти? Думаю, там вообще этот конец убрать стоит.
предложить что то подобное?
Если игрок пытается сыграть в одном раунде дважды, то его тоже убивает молнией. На вид красивее.
 
Последнее редактирование:
Сообщения
25
Реакции
2
Зачем создавать переменную, если индекс применяется всего 1 раз?

То же самое.

В общем-то тоже, но для удобства, чтобы было легче найти, оставляю.
PHP:
#include <sdktools> 

new g_LightningSprite; 
new g_SteamSprite; 

public OnPluginStart() 
{ 
	HookEvent("player_death", Event_PlayerDeath, EventHookMode_Post); 
} 

public OnMapStart() 
{ 
	g_SteamSprite = PrecacheModel("sprites/steam1.vmt");  
	g_LightningSprite = PrecacheModel("sprites/lgtning.vmt"); 
} 

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) 
{
	//3) Делаем направление искр (к началу координат карты)
	//4) Делаем цвет молнии (у нас синий)
	new Float:pos[3], Float:startpos[3], Float:dir[3] = {0.0, 0.0, 0.0}, color[4] = {0, 0, 255, 255}; 
	
	GetClientAbsOrigin(GetClientOfUserId(GetEventInt(event, "userid")), pos); 

	// Получаем верхнюю точку молнии + случайные позиции Х и У и выше нижней позиции на 800, чтобы молния била сверху вниз 
	startpos[0] = pos[0] + GetRandomInt(-500, 500);  
	startpos[1] = pos[1] + GetRandomInt(-500, 500);  
	startpos[2] = pos[2] + 800;  

	TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 20.0, 10.0, 0, 2.0, color, 3); //Делаем лазер с амплитудой в 2 единицы 
	TE_SendToAll(); // Применяем 

	TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 10.0, 5.0, 0, 1.0, {255, 255, 255, 255}, 3); //Делаем второй лазер (белый) с амплитудой в 1 единицу 
	TE_SendToAll(); // Применяем //И в 2 раза уже, чтобы молния смотрелась органично 

	TE_SetupSparks(pos, dir, 5000, 1000); //Делаем искры 
	TE_SendToAll(); // Применяем 

	TE_SetupEnergySplash(pos, dir, false); //Делаем всплеск энергии 
	TE_SendToAll(); // Применяем 

	TE_SetupSmoke(pos, g_SteamSprite, 5.0, 10); //Делаем дым 
	TE_SendToAll(); // Применяем 

	// TE_SetupBeamRingPoint(pos, 10.0, 70.0, g_BeamSprite, g_HaloSprite, 0, 15, 15.0, 2.0, 0.0, {255, 255, 0, 255}, 10, 0); //Можно добавить маяк, если хотите.  
	// TE_SendToAll(); 
	if (!dontBroadcast)
		SetEventBroadcast(event, true); 
}
Если честно, не понимаю, что же мы блокируем? Какие-то сообщения, иные эффекты при смерти? Думаю, там вообще этот конец убрать стоит.

Если игрок пытается сыграть в одном раунде дважды, то его тоже убивает молнией. На вид красивее.
подскажи как сменить действие и событие на него?к примеру :"player_death" заменяю на "player_spawn" ? (для отлова события на воскрешение игрока) и убрать молнии из кода , оставить только искры.
примерно так?
#include <sdktools>


public OnPluginStart()
{
HookEvent("player_spawn", Event_PlayerSpawn, EventHookMode_Post);
}


public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
new Float:pos[3], Float:startpos[3], Float:dir[3] = {0.0, 0.0, 0.0};

GetClientAbsOrigin(GetClientOfUserId(GetEventInt(event, "userid")), pos);


TE_SetupSparks(pos, dir, 5000, 1000);
TE_SendToAll();


}
поправь меня так как компилится с ошибками(
 

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
521
PHP:
public Event_PlayerDeath(Handle:event,const String:name[],bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    new Float:pos[3];
    
    GetClientAbsOrigin(client, pos);

    new randomx = GetRandomInt(-500, 500); // Получаем случайные позиции Х и У, чтобы молния не была однобокой
    new randomy = GetRandomInt(-500, 500); 

    //Получаем верхнюю точку молнии. Она будет рандомная по Х и У и выше нижней позиции на 800, чтобы молния била сверху вниз
    new Float:startpos[3]; 
    startpos[0] = pos[0] + randomx; 
    startpos[1] = pos[1] + randomy; 
    startpos[2] = pos[2] + 800; 

    //Делаем цвет молнии (у нас синий)
    new color[4] = {0, 0, 255, 255}; 

    //Делаем направление искр (к началу координат карты)
    new Float:dir[3] = {0.0, 0.0, 0.0}; 

    TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 20.0, 10.0, 0, 2.0, color, 3); //Делаем лазер с амплитудой в 2 единицы
    TE_SendToAll(); // Применяем

    TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 10.0, 5.0, 0, 1.0, {255, 255, 255, 255}, 3); //Делаем второй лазер (белый) с амплитудой в 1 единицу
    TE_SendToAll(); // Применяем //И в 2 раза уже, чтобы молния смотрелась органично

    TE_SetupSparks(pos, dir, 5000, 1000); //Делаем искры
    TE_SendToAll(); // Применяем

    TE_SetupEnergySplash(pos, dir, false); //Делаем всплеск энергии
    TE_SendToAll(); // Применяем

    TE_SetupSmoke(pos, g_SteamSprite, 5.0, 10); //Делаем дым
    TE_SendToAll(); // Применяем

    // TE_SetupBeamRingPoint(pos, 10.0, 70.0, g_BeamSprite, g_HaloSprite, 0, 15, 15.0, 2.0, 0.0, {255, 255, 0, 255}, 10, 0); //Можно добавить маяк, если хотите. 
    // TE_SendToAll(); 
    return Plugin_Handled;
}

Ахах, улыбнуло)
 
Сообщения
25
Реакции
2
PHP:
public Event_PlayerDeath(Handle:event,const String:name[],bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    new Float:pos[3];
    
    GetClientAbsOrigin(client, pos);

    new randomx = GetRandomInt(-500, 500); // Получаем случайные позиции Х и У, чтобы молния не была однобокой
    new randomy = GetRandomInt(-500, 500); 

    //Получаем верхнюю точку молнии. Она будет рандомная по Х и У и выше нижней позиции на 800, чтобы молния била сверху вниз
    new Float:startpos[3]; 
    startpos[0] = pos[0] + randomx; 
    startpos[1] = pos[1] + randomy; 
    startpos[2] = pos[2] + 800; 

    //Делаем цвет молнии (у нас синий)
    new color[4] = {0, 0, 255, 255}; 

    //Делаем направление искр (к началу координат карты)
    new Float:dir[3] = {0.0, 0.0, 0.0}; 

    TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 20.0, 10.0, 0, 2.0, color, 3); //Делаем лазер с амплитудой в 2 единицы
    TE_SendToAll(); // Применяем

    TE_SetupBeamPoints(startpos, pos, g_LightningSprite, 0, 0, 0, 0.2, 10.0, 5.0, 0, 1.0, {255, 255, 255, 255}, 3); //Делаем второй лазер (белый) с амплитудой в 1 единицу
    TE_SendToAll(); // Применяем //И в 2 раза уже, чтобы молния смотрелась органично

    TE_SetupSparks(pos, dir, 5000, 1000); //Делаем искры
    TE_SendToAll(); // Применяем

    TE_SetupEnergySplash(pos, dir, false); //Делаем всплеск энергии
    TE_SendToAll(); // Применяем

    TE_SetupSmoke(pos, g_SteamSprite, 5.0, 10); //Делаем дым
    TE_SendToAll(); // Применяем

    // TE_SetupBeamRingPoint(pos, 10.0, 70.0, g_BeamSprite, g_HaloSprite, 0, 15, 15.0, 2.0, 0.0, {255, 255, 0, 255}, 10, 0); //Можно добавить маяк, если хотите. 
    // TE_SendToAll(); 
    return Plugin_Handled;
}

Ахах, улыбнуло)
что тебя улыбнуло?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
к примеру :"player_death" заменяю на "player_spawn" ?
Да, верно. Иногда только требуется делать таймер на 0,1-0,3 секунды, когда что-то устанавливаешь с этого события.
убрать молнии из кода , оставить только искры
У тебя там всё подписано, убрать лишнее не должно составить проблем:
PHP:
#include <sdktools>

public OnPluginStart() HookEvent("player_spawn", Event_PlayerDeath); 

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)  
{
	//2) Делаем направление искр (к началу координат карты)
	new Float:pos[3], Float:dir[3] = {0.0, 0.0, 0.0};
	GetClientAbsOrigin(GetClientOfUserId(GetEventInt(event, "userid")), pos);
	TE_SetupSparks(pos, dir, 5000, 1000); //Делаем искры
	TE_SendToAll(); // Применяем
}
Float:startpos[3] у тебя не нужен, лишний.
 
Сообщения
25
Реакции
2
Да, верно. Иногда только требуется делать таймер на 0,1-0,3 секунды, когда что-то устанавливаешь с этого события.

У тебя там всё подписано, убрать лишнее не должно составить проблем:
PHP:
#include <sdktools>

public OnPluginStart() HookEvent("player_spawn", Event_PlayerDeath); 

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)  
{
	//2) Делаем направление искр (к началу координат карты)
	new Float:pos[3], Float:dir[3] = {0.0, 0.0, 0.0};
	GetClientAbsOrigin(GetClientOfUserId(GetEventInt(event, "userid")), pos);
	TE_SetupSparks(pos, dir, 5000, 1000); //Делаем искры
	TE_SendToAll(); // Применяем
}
Float:startpos[3] у тебя не нужен, лишний.
Знал что поможешь))с меня лайк)
 
Сверху Снизу