Контакты/сообщить об ошибке Поиск

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

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Постояное повторение
Постояное повторение
Novikov Дата: Среда, 16.09.2020, 10:55:40 | Сообщение # 1
Сообщений: 2
Репутация: 0 [ +/- ]
Привет народ, помогите доделать плагин. Что бы аура всегда работала а не только при прыжке.
В теории я думал таймер какой то сделать но подумал что не хорошо так делать.
Почитал тут про циклы и сделал вроде правильно но не работает.

Код
public void OnPluginStart()
{
    HookEvent("player_jump", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event event, char[] name, bool dbc)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"));
    while (client > 0 && IsPlayerAlive(client))
    {
  if (GetClientTeam(client) == 2) // Т
  {
   float vec[3];
   GetClientAbsOrigin(client, vec);
   vec[2] += 10;
   TE_SetupBeamRingPoint(vec, 25.0, 100.0, g_BeamSprite, g_HaloSprite, 0, 30, 0.5, 5.0, 15.0, {255,0,0,255}, 0, 0);
   TE_SendToAll();
  }

  if (GetClientTeam(client) == 3) // CТ
  {
   float vec[3];
   GetClientAbsOrigin(client, vec);
   vec[2] += 10;
   TE_SetupBeamRingPoint(vec, 25.0, 100.0, g_BeamSprite, g_HaloSprite, 0, 30, 0.5, 5.0, 15.0, {0,0,255,255}, 0, 0);
   TE_SendToAll();
  }

  return;
    }
}
 
_wS_ Дата: Среда, 16.09.2020, 13:21:00 | Сообщение # 2
 
Novikov Дата: Понедельник, 21.09.2020, 20:09:17 | Сообщение # 3
Сообщений: 2
Репутация: 0 [ +/- ]
Скачал ваш модуль, убрал поддержку vip методом где написано слово vip.
плагин скомпилировался но не работает аура и ошибок нет.
[spoiler]
Код
#pragma semicolon 1

#include <sourcemod>
#include <sdktools_tempents>
#include <sdktools_tempents_stocks>
//#include <vip>

public Plugin:myinfo =
{
    name    = "VIP [Aura]",
    author    = "wS",
    version = "1.2.1"
};

//#define ITEM_NAME "aura"

new bool:g_bAccess[MAXPLAYERS + 1];
new Handle:g_hTimer = INVALID_HANDLE;
new Float:g_fRadiusStart, Float:g_fRadiusEnd, Float:g_fLife, Float:g_fWidth, Float:g_fAmplitude;
new g_Index;

public OnPluginStart()
{
    //if (!VIP_RegisterItem(ITEM_NAME, VIP_ITEM_TOGGLE)) SetFailState("VIP_RegisterItem error (%s)", ITEM_NAME);
    //LoadTranslations("vip_modules_description.phrases");
    
    //
    decl Handle:hCvar;
    
    hCvar   = CreateConVar("vip_aura_timer",  "2.0",  "Аура мигает каждые 'x' сек");
    g_hTimer  = CreateTimer(GetConVarFloat(hCvar), AuraTimer_CallBack, _, TIMER_REPEAT);
    HookConVarChange(hCvar, cvar_changed);
    
    hCvar   = CreateConVar("vip_aura_radius_start",    "10.0",  "Радиус (начало)");
    g_fRadiusStart    = GetConVarFloat(hCvar);
    HookConVarChange(hCvar, cvar_changed);
    
    hCvar   = CreateConVar("vip_aura_radius_end",    "100.0",    "Радиус (конец)");
    g_fRadiusEnd    = GetConVarFloat(hCvar);
    HookConVarChange(hCvar, cvar_changed);
    
    hCvar   = CreateConVar("vip_aura_life",   "0.1",  "Через сколько секунд исчезает");
    g_fLife   = GetConVarFloat(hCvar);
    HookConVarChange(hCvar, cvar_changed);
    
    hCvar   = CreateConVar("vip_aura_width",  "15.0",  "Ширина луча",    _, true, 1.0, true, 25.0);
    g_fWidth  = GetConVarFloat(hCvar);
    HookConVarChange(hCvar, cvar_changed);
    
    hCvar   = CreateConVar("vip_aura_amplitude",    "0.0",  "Амплитуда",    _, true, 0.0, true, 25.0);
    g_fAmplitude    = GetConVarFloat(hCvar);
    HookConVarChange(hCvar, cvar_changed);
    
    AutoExecConfig(true, "aura", "vip/modules");
    //
}

public OnMapStart()
{
    g_Index = PrecacheModel("materials/sprites/purplelaser1.vmt");
}

public cvar_changed(Handle:hCvar, const String:OldValue[], const String:NewValue[])
{
    decl String:n[32];
    GetConVarName(hCvar, n, sizeof(n));
    strcopy(n, sizeof(n), n[9]);
    
    if (!strcmp(n, "timer"))
    {
  new Float:fSec = StringToFloat(NewValue);
  if (fSec < 0.01) fSec = 0.01;
  if (g_hTimer != INVALID_HANDLE) KillTimer(g_hTimer);
  g_hTimer = CreateTimer(fSec, AuraTimer_CallBack, _, TIMER_REPEAT);
    }
    else if (!strcmp(n, "radius_start"))    g_fRadiusStart  = StringToFloat(NewValue);
    else if (!strcmp(n, "radius_end"))  g_fRadiusEnd  = StringToFloat(NewValue);
    else if (!strcmp(n, "life"))   g_fLife    = StringToFloat(NewValue);
    else if (!strcmp(n, "width"))   g_fWidth   = StringToFloat(NewValue);
    else if (!strcmp(n, "amplitude"))  g_fAmplitude  = StringToFloat(NewValue);
}

///////////////////////////////////////////////////////////////////////////////////
/*
public bool:VIP_CurrentItemValue(client, ItemID, String:ItemValue[], ItemValueSize)
{
    if (g_bAccess[client])
    {
  IntToString(1, ItemValue, ItemValueSize);
  return true;
    }
    ItemValue[0] = 0;
    return false;
}

public bool:VIP_Description(client, ItemID, String:ItemValue[ITEM_INFO_LENGTH], String:description[], description_size)
{
    FormatEx(description, description_size, "%T", ITEM_NAME, client);
    return true;
}

public VipGiveAction:VIP_GiveAccess(client, ItemID, String:ItemValue[ITEM_INFO_LENGTH], bool:bCallAfterAdminAction, CURRENT_ACCESS, Handle:kv)
{
    if (g_bAccess[client]) return VGA_AlreadyEnabled;
    SetStatus(client, true);
    return VGA_Continue;
}

public VIP_TakeAccess(client, ItemID, bool:bToggledByClient)
{
    SetStatus(client, false);
}

stock SetStatus(client, bool:enabled)
{
    g_bAccess[client] = enabled;
    VIP_NotifyItemStatusChanged(client, ITEM_NAME, enabled);
}
*/
///////////////////////////////////////////////////////////////////////////////////

public Action:AuraTimer_CallBack(Handle:timer)
{
    decl Float:v[3], c[4], i;
    for (i = 1; i <= MaxClients; i++)
    {
  if (g_bAccess[i] && IsPlayerAlive(i))
  {
   GetClientAbsOrigin(i, v);
   v[2] += 5.0;
   c[0] = GetRandomInt(1, 255);
   c[1] = GetRandomInt(1, 255);
   c[2] = GetRandomInt(1, 255);
   c[3] = 255;
   TE_SetupBeamRingPoint(v, g_fRadiusStart, g_fRadiusEnd, g_Index, g_Index, 0, 0, g_fLife, g_fWidth, g_fAmplitude, c, 1, 0);
   TE_SendToAll();
  }
    }
    return Plugin_Continue;
}

public OnClientDisconnect(client)
    g_bAccess[client] = false;
[/undefined]

Помогите мне еще раз
 
_wS_ Дата: Вторник, 22.09.2020, 03:19:12 | Сообщение # 4
Ну тк за g_bAccess самому нужно следить (или вбще удалить) и все VIP_ удалить.
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Постояное повторение
  • Страница 1 из 1
  • 1
Поиск: