По поводу эффектов
| |
zhekazadrot
|
Дата: Четверг, 20.11.2014, 21:08:24 | Сообщение # 1 |
|
Сообщений: 22
Репутация: 0 [ +/- ]
|
|
Подскажите как сделать в Basic effect что бы при убийстве игрока в него ударяла молния,попрошу сразу кинуть готовый скрипт(Просто я тупой не знаю что куда вставлять):D
ВОТ МОЙ СКРИПТ
#include sourcemod
public OnPluginStart() { HookEvent("player_hurt", Hurt); }
public Action:Hurt(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); //Получаем айди раненого new Float:pos[3]; GetClientAbsOrigin(client, pos); //И его позицию
pos[2] = pos[2] + 30.0; //Добавляем к позиции ног 30 по высоте, чтобы молния била в тело
new randomx = GetRandomInt(-500, 500); //Делаем молнию. Объяснять не буду, т.к. написано в самом плагине. new randomy = GetRandomInt(-500, 500);
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); 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); TE_SendToAll(); 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(); }
ПРАВИЛЬНО???
Сообщение отредактировал zhekazadrot - Четверг, 20.11.2014, 21:48:57 |
|
| |
dron216
|
Дата: Четверг, 20.11.2014, 23:28:43 | Сообщение # 2 |
|
Сообщений: 151
Репутация: 18 [ +/- ]
|
|
Нет =D Тебе нужно событие player_death, а не player_hurt
Сообщение отредактировал dron216 - Четверг, 20.11.2014, 23:30:05 |
|
| |
KiKiEEKi
|
Дата: Пятница, 21.11.2014, 07:18:32 | Сообщение # 3 |
|
Сообщений: 21
Репутация: -1 [ +/- ]
|
|
Вот уже готовый, использовал на своем сервере, прекрасно работает. Код #pragma semicolon 1
#include <sourcemod> #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); }
|
|
| |
Vadim0890
|
Дата: Четверг, 15.04.2021, 18:28:57 | Сообщение # 4 |
|
Сообщений: 29
Репутация: 0 [ +/- ]
|
|
Цитата KiKiEEKi ( ) #pragma semicolon 1 #include <sourcemod> #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); } Может кто переделать код немного, чтобы эффект был только при убийстве в голову и сделать админский флаг z ? Буду очень благодарен.
|
|
| |
|