Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 3 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Basic Effects
dases2003 Дата: Понедельник, 21.07.2014, 06:50:54 | Сообщение # 31
Сообщений: 107
Репутация: 1 [ +/- ]
Узнать позицию игрока, и поставить туда эффект
 
BarD Дата: Понедельник, 21.07.2014, 12:16:24 | Сообщение # 32
Сообщений: 943
Репутация: 137 [ +/- ]
Loco, Ставим повторяющийся таймер на 0.1, в таймере узнаем позицию игрока и накладываем туда цилиндр.

Тут небольшой пример. При активации команды создается таймер на 0.1 секунды, который включает цилиндр по истечению. Цилиндр работает 0.1 секунды, чтобы убраться в момент постановки нового.

Код
new CylTimer[MAXPLAYERS + 1];

public OnPluginStart()
{
     RegConsoleCmd("sm_cyl", Cyl);
     HookEvent("player_death", Death);
}

public Action:Cyl(client, args)
{
     if (client && IsClientInGame(client) && IsPlayerAlive(client))
    {
       if (CylTimer[client] != INVALID_HANDLE)
     {
         KillTimer(CylTimer[client]);
         CylTimer[client] == INVALID_HANDLE;
      }

   //Если хэндл убит, то ставим таймер

   CylTimer[client] = CreateTimer(0.1, MyTimer, client, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
    }
return Plugin_Handled;
}

//Когда активируется таймер, ставим сюда цилиндр на 0.1 секунды

public Action:MyTimer(Handle:timer, any:client)
{
    if (IsClientInGame(client) && client && IsPlayerAlive(client))
{
     new Float:pos[3];
     GetClientAbsOrigin(client, pos);
     for (new i = 1; i <= 150; i++)   
   {
    TE_SetupBeamRingPoint(pos, 50.0, 51.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.1, 2.0, 0.0, {255, 255, 0, 255}, 10, 0);// Создаем на 0.1 сек.
    TE_SendToAll();
    pos[2] = pos[2] + 1.0;
    }
}
}

//Если игрок выходит, убиваем его таймер, если он есть.

public OnPlayerDisconnect(client)
{
     if (client && CylTimer[client] != INVALID_HANDLE)
     {
         KillTimer(CylTimer(client));
         CylTimer[client] == INVALID_HANDLE;
     }
}

//Если игрок умирает, проверяем, не включен ли у него таймер, чтобы убить его таймер

public Action:Death(Handle:event, const String:name[], bool:dontBroadcast)   
{
     new victim = GetClientOfUserId(GetEventInt(event, "userid"));
     if (victim > 0 && victim)
     {
        if (CylTimer[victim] != INVALID_HANDLE)
       {
           KillTimer(CylTimer[victim]);
           CylTimer[victim] == INVALID_HANDLE;
       }
     }
}


Сообщение отредактировал BarD - Понедельник, 21.07.2014, 12:17:26
 
Loco Дата: Вторник, 22.07.2014, 16:30:56 | Сообщение # 33
Сообщений: 42
Репутация: 0 [ +/- ]
BarD, Спасибо! Попробую.
 
SAN6991 Дата: Пятница, 19.12.2014, 23:55:17 | Сообщение # 34
Сообщений: 4
Репутация: 0 [ +/- ]
Подскажите как исправить фигню с проигрыванием эффекта при подключение на сервак.
 
BarD Дата: Суббота, 20.12.2014, 10:15:21 | Сообщение # 35
Сообщений: 943
Репутация: 137 [ +/- ]
SAN6991, какого эффекта и в каком плагине?
 
TEIN Дата: Суббота, 20.12.2014, 14:43:34 | Сообщение # 36
Сообщений: 563
Репутация: 78 [ +/- ]
BarD
1. CylTimer[client] == INVALID_HANDLE не нужно делать в public Action:Cyl(client, args)

2. if (IsClientInGame(client) && client && IsPlayerAlive(client)) без этого тоже, думаю, можно обойтись, ведь если клиент не в игре или мертв - таймер убьет

3. При отключении/смерти клиента у тебя одинаковый код, можно объединить

4. Проверять при отключении клиента, на то, что его индекс не равен нулю не нужно, вроде как, ведь 0 - не может отключиться от сервера, верно?)
 
SAN6991 Дата: Суббота, 20.12.2014, 20:31:23 | Сообщение # 37
Сообщений: 4
Репутация: 0 [ +/- ]
Код
public OnPluginStart()
{
  HookEvent("player_spawn", Effects);
}

public OnMapStart()
{
  g_ExplosionSprite = PrecacheModel("materials/sprites/sprite_fire01.vmt");
  g_SmokeSprite = PrecacheModel( "sprites/smoke.vmt");  
  g_SteamSprite = PrecacheModel("sprites/steam1.vmt");  
  g_LightningSprite = PrecacheModel("sprites/lgtning.vmt");
}

public Action:Effects(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);  
  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();
  TE_SetupExplosion(pos, g_ExplosionSprite, 10.0, 1, 0, 100, 5000);
  TE_SendToAll();
  TE_SetupSmoke( pos, g_SmokeSprite, 10.0, 3 );
  TE_SendToAll();
}
 
BarD Дата: Воскресенье, 21.12.2014, 04:49:23 | Сообщение # 38
Сообщений: 943
Репутация: 137 [ +/- ]
А что не так-то?

TEIN, согласен. Код давно писал, неопытный был)


Сообщение отредактировал BarD - Воскресенье, 21.12.2014, 04:55:25
 
SAN6991 Дата: Воскресенье, 21.12.2014, 08:01:53 | Сообщение # 39
Сообщений: 4
Репутация: 0 [ +/- ]
Цитата BarD ()
А что не так-то?

Когда игрок подключается на сервер проигрывается комбинация эффектов в рандомной точке на карте(без повода).
Помогите исправит!
 
BarD Дата: Воскресенье, 21.12.2014, 10:19:20 | Сообщение # 40
Сообщений: 943
Репутация: 137 [ +/- ]
Код
public Action:Effects(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if (client && IsClientInGame(client) && GetClientTeam(client)>1)
{
new Float:pos[3];
GetClientAbsOrigin(client, pos);
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();
TE_SetupExplosion(pos, g_ExplosionSprite, 10.0, 1, 0, 100, 5000);
TE_SendToAll();
TE_SetupSmoke( pos, g_SmokeSprite, 10.0, 3 );
TE_SendToAll();
}
}

Думаю, что это связано с тем, что происходит спавн игрока при заходе. Код выше, я думаю, поможет исправить проблему. В нем идёт проверка на текущую команду игрока. Если он не наблюдатель и играет либо за Т, либо за КТ, то проигрываем.


Сообщение отредактировал BarD - Воскресенье, 21.12.2014, 10:19:47
 
SAN6991 Дата: Среда, 24.12.2014, 01:11:59 | Сообщение # 41
Сообщений: 4
Репутация: 0 [ +/- ]
Цитата BarD ()
Думаю, что это связано с тем, что происходит спавн игрока при заходе. Код выше, я думаю, поможет исправить проблему. В нем идёт проверка на текущую команду игрока. Если он не наблюдатель и играет либо за Т, либо за КТ, то проигрываем.

Да спасибо помогло но заметил ещё косяк эффект проигрывается не для каждого игрока, например взрыв только тогда когда они все в куче!
 
BarD Дата: Среда, 24.12.2014, 16:22:55 | Сообщение # 42
Сообщений: 943
Репутация: 137 [ +/- ]
Цитата SAN6991 ()
эффект проигрывается не для каждого игрока, например взрыв только тогда когда они все в куче!

Понятия не имею, с чем это связано. Если КС:ГО, то там багов полно, так что вполне возможно.
 
BarD Дата: Суббота, 03.01.2015, 05:47:17 | Сообщение # 43
Сообщений: 943
Репутация: 137 [ +/- ]
[Программист], добрый день. Что конкретно не работает? Поясните, пожалуйста.
 
Santaro Дата: Понедельник, 05.01.2015, 02:26:45 | Сообщение # 44
Сообщений: 5
Репутация: 0 [ +/- ]
В CS:GO пашет?
 
BarD Дата: Понедельник, 05.01.2015, 05:19:28 | Сообщение # 45
Сообщений: 943
Репутация: 137 [ +/- ]
Santaro, думаю, будет, т.к. набор функций практически одинаков. Думаю, что большинство эффектов работает :)

[Программист], CSS или CSGO у тебя? Большинство эффектов появляются на прицеле) может быть, ты куда-то вдаль смотришь, вот и не видно их?)


Сообщение отредактировал BarD - Понедельник, 05.01.2015, 05:19:48
 
  • Страница 3 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск: