Постояное повторение
| |
Novikov
|
Дата: Среда, 16.09.2020, 10:55:40 | Сообщение # 1 |
|
Сообщений: 3
Репутация: -1 [ +/- ]
|
|
Привет народ, помогите доделать плагин. Что бы аура всегда работала а не только при прыжке. В теории я думал таймер какой то сделать но подумал что не хорошо так делать. Почитал тут про циклы и сделал вроде правильно но не работает.
Код 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 |
|
Сообщений: 3
Репутация: -1 [ +/- ]
|
|
Скачал ваш модуль, убрал поддержку 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_ удалить.
|
|
| |
|