Написание плагинов

magis1337

Участник
Сообщения
252
Реакции
23
на ggwp есть плагин wh Для игроков, получается после смерти они могут наблюдать в виде квадратика. Есть код, кто-то может мб сделать для админов только что-бы было? и так же что-бы не грузить сервер, можно было в консоле писать sm_wh включаются эти квадраты при нажатие снова отключается квадраты сам код
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

public Plugin:myinfo =
{
name = "WH Clients Death",
author = "-=1989=- and WS FiX Nek.'a 2x2",
version = "3.4.1"
};

new g_MySprite[MAXPLAYERS + 1];
new g_MySpriteRef[MAXPLAYERS + 1];

public OnPluginStart()
{
HookEvent("player_spawn", player_spawn);
HookEvent("player_death", ClearEvent);
HookEvent("player_team", ClearEvent);
}

public OnMapStart()
{
AddFileToDownloadsTable("materials/ggwp/wh/rectangle_blue.vmt");
AddFileToDownloadsTable("materials/ggwp/wh/rectangle_blue.vtf");
AddFileToDownloadsTable("materials/ggwp/wh/rectangle_red.vmt");
AddFileToDownloadsTable("materials/ggwp/wh/rectangle_red.vtf");

PrecacheDecal("ggwp/wh/rectangle_blue.vmt", true);
PrecacheDecal("ggwp/wh/rectangle_red", true);
}

public ClearEvent(Handle:event, const String:name[], bool:silent)
{
wS_ClearSprite(GetClientOfUserId(GetEventInt(event, "userid")));
}

public player_spawn(Handle:event, const String:name[], bool:silent)
{
CreateTimer(0.1, player_spawn_Timer, GetEventInt(event, "userid"), TIMER_FLAG_NO_MAPCHANGE);
}

public Action:player_spawn_Timer(Handle:timer, any:id)
{
new client = GetClientOfUserId(id);
if (client < 1)
return Plugin_Stop;

wS_ClearSprite(client);

if (!IsPlayerAlive(client))
return Plugin_Stop;

new ent = CreateEntityByName("env_sprite");
if (ent < 1)
{
LogError("env_sprite error");
return Plugin_Stop;
}

g_MySprite[client] = ent;
g_MySpriteRef[client] = EntIndexToEntRef(ent);

decl Float:pos[3]; GetClientAbsOrigin(client, pos); pos[2] += 35.0;
DispatchKeyValueVector(ent, "origin", pos);
DispatchKeyValue(ent, "model", GetClientTeam(client) == 2 ? "ggwp/wh/rectangle_red.vmt" : "ggwp/wh/rectangle_blue.vmt");
DispatchKeyValue(ent, "rendermode", "0");
DispatchKeyValue(ent, "renderfx", "0");
DispatchKeyValue(ent, "renderamt", "255");
DispatchKeyValue(ent, "scale", "0.5");
DispatchKeyValue(ent, "GlowProxySize", "61.0");
DispatchSpawn(ent);

SetVariantString("!activator");
AcceptEntityInput(ent, "SetParent", client, ent);

SDKHook(ent, SDKHook_SetTransmit, Hook_SetTransmit);

return Plugin_Stop;
}

public Action:Hook_SetTransmit(entity, client)
{
return entity == g_MySprite[client] || IsPlayerAlive(client) ? Plugin_Handled : Plugin_Continue;
}

stock wS_ClearSprite(client)
{
if (g_MySprite[client] > 0)
{
new ent = EntRefToEntIndex(g_MySpriteRef[client]);
if (ent > 0) AcceptEntityInput(ent, "Kill");
g_MySprite[client] = 0;
g_MySpriteRef[client] = 0;
}
}

public OnClientDisconnect(client)
{
wS_ClearSprite(client);
}
 

s777

Участник
Сообщения
449
Реакции
74
Не знаю, возможно или нет, нужен такой плагин: Когда в сообщении человека содержится знак вопроса (?) ему автоматически пишется сообщение от имени сервера "бла бла бла напишите !com для помощи", ну в таком роде
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Не знаю, возможно или нет, нужен такой плагин: Когда в сообщении человека содержится знак вопроса (?) ему автоматически пишется сообщение от имени сервера "бла бла бла напишите !com для помощи", ну в таком роде
C++:
public Action OnClientSayCommand(int client, const char[] command, const char[] args)
{
    if(args[0] == '?')
    {
        ReplyToCommand(client, "бла бла бла напишите !com для помощи");
        return Plugin_Handled;
    }
    
    return Plugin_Continue;
}
 
  • Мне нравится
Реакции: s777

s777

Участник
Сообщения
449
Реакции
74
C++:
public Action OnClientSayCommand(int client, const char[] command, const char[] args)
{
    if(args[0] == '?')
    {
        ReplyToCommand(client, "бла бла бла напишите !com для помощи");
        return Plugin_Handled;
    }
  
    return Plugin_Continue;
}
Спасибо, проверю позже
Сообщения автоматически склеены:

@iLoco Не работает, кхем.. Пишу любые сообщения со знаком вопроса - ноль реакции. Пишу только знак вопроса - мое соо не отправляется даже
 
Последнее редактирование:

magis1337

Участник
Сообщения
252
Реакции
23
есть плагин connect info playes выводит ник steam id ip игрока
Для админов виден ип а для игроков только ник и стим ид, кто-то может помочь, сделать для игроков тока ник писало без стим ID
#pragma semicolon 1
#include <sourcemod>

new bool:g_bIsAdmin[MAXPLAYERS+1];

public Plugin:myinfo =
{
name = "Connect_info",
author = "R1KO",
version = "2.0",
url = "Сообщество администраторов игровых серверов HLmod.ru"
};

public OnPluginStart() HookEvent("player_disconnect", Event_PlayerDisconnect);

public OnClientPostAdminCheck(iClient)
{
if (iClient > 0 && !IsFakeClient(iClient))
{
g_bIsAdmin[iClient] = GetUserAdmin(iClient) != INVALID_ADMIN_ID ? true:false;
PrintConnect(iClient, true);
}
}

public Event_PlayerDisconnect(Handle:hEvent, const String:sName[], bool:dontBroadcast)
{
if (!dontBroadcast) SetEventBroadcast(hEvent, true);
new iClient = GetClientOfUserId(GetEventInt(hEvent,"userid"));
if (iClient > 0 && !IsFakeClient(iClient)) PrintConnect(iClient, false);
}

stock PrintConnect(iClient, bool:IsConnect)
{
decl String:sAuth[32], String:sIp[32], String:sAdmMsg[255], String:sMsg[255];
GetClientAuthString(iClient, sAuth, sizeof(sAuth));
GetClientIP(iClient, sIp, sizeof(sIp));
FormatEx(sAdmMsg, sizeof(sAdmMsg), "\x03• \x01Игрок \x04%N \x01| \x04%s \x01| \x04%s \x01%s.", iClient, sAuth, sIp, (IsConnect) ? "подключился":"отключился");
FormatEx(sMsg, sizeof(sMsg), "\x03• \x01Игрок \x04%N \x01| \x04%s \x01%s.", iClient, sAuth, (IsConnect) ? "подключился":"отключился");

for(new i=1; i <= MaxClients; i++)
{
if(IsClientInGame(i)) PrintToChat(i, (g_bIsAdmin) ? sAdmMsg:sMsg);
}
}
 

-=|УЧЕНИК|=-

вся жизнь,сплошной цирк.
Сообщения
876
Реакции
212
Привет народ
Может кто плагин малость переделать?
Эффект пальм от ws
Сделать что-то тип чтоб искры падали или еще что,не думаю что там много кода и это займет много времени.
А плагин будет полезен многим
Заранее всем спасибо
Можно даже копеечкой и скинуться)
Чтоб не покупать у таких как DEN
 

Вложения

  • smoke.sp
    1.6 КБ · Просмотры: 9

Туник

Участник
Сообщения
1,281
Реакции
263
Всем привет! Возможно ли реализовать плагин который будет кикать игроков если допустим они при входе не запустили клиент античита к примеру faceit. Плагин просто будет делать проверку на вкл античит, это реально сделать?
 

magis1337

Участник
Сообщения
252
Реакции
23
Есть свободные скриптера? которые могут принять заказ, нужно дописать маленький функционал к плагину
 

babka68

Участник
Сообщения
2,124
Реакции
956

babka68

Участник
Сообщения
2,124
Реакции
956
А еще обдерем Вас как липку )))
Каждый в праве решать,что ему подходит,а что нет.
Я предоставил вариант которым пользуюсь лично.
Если меня устраивает цена,я готов ее заплатить,если нет соответственно можно отказаться никто же никого насильно не заставляет
 

xtance

Участник
Сообщения
513
Реакции
743
В общем..


Каким образом делается эта уменьшающаяся зона? Мне подсказали люди, что это моделька.
Но изменять размер модели после спавна.. как? Проведя быстрые тесты выяснилось, да, вроде как entity уменьшается, но визуально нет, либо я что-то не так сделал.
И то, с помощью чего я хотел проверять, входит ли игрок в зону не работает после изменения размера SDKHook_StartTouch (хотя думаю можно unhook и снова hook, но звучит не круто)
И пользуясь случаем, буду благодарен за сферическую модель (делал сферу в Blender, но как покрасить не понял, в общем гораздо хуже чем на видео, я не моделлер😞)
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
В общем..


Каким образом делается эта уменьшающаяся зона? Мне подсказали люди, что это моделька.
Но изменять размер модели после спавна.. как? Проведя быстрые тесты выяснилось, да, вроде как entity уменьшается, но визуально нет, либо я что-то не так сделал.
И то, с помощью чего я хотел проверять, входит ли игрок в зону не работает после изменения размера SDKHook_StartTouch (хотя думаю можно unhook и снова hook, но звучит не круто)
И пользуясь случаем, буду благодарен за сферическую модель (делал сферу в Blender, но как покрасить не понял, в общем гораздо хуже чем на видео, я не моделлер😞)
Можно сделать просто белую сферу, а красить и предавать прозрачности на сервере через код
C++:
    SetEntityRenderMode(iEntity, RENDER_TRANSCOLOR);
    SetEntityRenderColor(iEntity, r, g, b, a);

Масштабировать можно через это (но это не точно)
C++:
int iScaleOfsset = GetEntSendPropOffs(ent, "m_flModelScale", true);
if(iScaleOfsset != -1)
{
    SetEntDataFloat(ent, iScaleOfsset, new_scale, true);
}

ИЛИ

AcceptEntityInput(ent, "SetScale", ent, ent, NEW_SCALE_FLOAT);
И то, с помощью чего я хотел проверять, входит ли игрок в зону не работает после изменения размера SDKHook_StartTouch (хотя думаю можно unhook и снова hook, но звучит не круто)
Не легче ли сделать модель не полой внутри и просто сделать хук на SDKHook_EndTouch , что бы дамажить игрока если он выходит из сфера. Но тогда есть шанс того, что изнутри не будет видно границ сферы...
 

xtance

Участник
Сообщения
513
Реакции
743
Не легче ли сделать модель не полой внутри и просто сделать хук на SDKHook_EndTouch , что бы дамажить игрока если он выходит из сфера. Но тогда есть шанс того, что изнутри не будет видно границ сферы...
Окраска почему-то не заработала. Может модель неправильная.
Зато заработал glow.
C-подобный:
static int iOffset = -1;
if ((iOffset = GetEntSendPropOffs(iEnt, "m_clrGlow")) == -1){
    LogError("m_clrGlow not found");
} else {
    SetEntData(iEnt, iOffset, 0, _, true);
    SetEntData(iEnt, iOffset + 1, 255, _, true);
    SetEntData(iEnt, iOffset + 2, 0, _, true);
    SetEntData(iEnt, iOffset + 3, 255, _, true);
}
И всё же никакие хуки SDK нормально не работают. Поскольку они за основу, от которой считать начало или конец соприкосновения, берут первые (настоящие) значения модельки.

20200319215009_1.jpg

Здесь видно что с увеличением Scale увеличивается свечение, а сама модель нет.
Видимо только ручками считать расстояние от игрока до центра модели.
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
И всё же никакие хуки SDK нормально не работают. Поскольку они за основу, от которой считать начало или конец соприкосновения, берут первые (настоящие) значения модельки.

Посмотреть вложение 54278

Здесь видно что с увеличением Scale увеличивается свечение, а сама модель нет.
Видимо только ручками считать расстояние от игрока до центра модели.
Можно сделать хук по таймеру, который каждый цикл таймера будет определять дистанцию игрока к центру сферы (pos центра заранее знаем), и если дистанция между игроком и этой сферой < радиуса сферы, то дамажим игрока.
Как получать дистанция - хз, не шарю в векторах. Но может это поможет. GetVectorDistance · vector · SourceMod Scripting API Reference
Сообщения автоматически склеены:

Или план Б, не уменьшать сферу масштабом, а телепортировать её вниз, тем самым верхиние границы будут сужаться
 

Черная вдова

Участник
Сообщения
2,795
Реакции
670
Можно сделать хук по таймеру, который каждый цикл таймера будет определять дистанцию игрока к центру сферы (pos центра заранее знаем), и если дистанция между игроком и этой сферой < радиуса сферы, то дамажим игрока.
Как получать дистанция - хз, не шарю в векторах. Но может это поможет. GetVectorDistance · vector · SourceMod Scripting API Reference
Сообщения автоматически склеены:

Или план Б, не уменьшать сферу масштабом, а телепортировать её вниз, тем самым верхиние границы будут сужаться
В план Б тогда уж конус
 

xtance

Участник
Сообщения
513
Реакции
743
Ребят, гениальный план. Ну, про конус.
Если надоест высчитывать дистанцию, так и сделаю.
Пока что таймером её высчитываю... Пошёл в Blender делать модельку
Всем спасибо
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Как можно изменить значение в каллбеке от AddTempEntHook?
А именно игрокам, которым будет виден данный эффект.
 

j1ton

Участник
Сообщения
69
Реакции
5
Можно ли для плагина LVL Ranks сделать плагин, который будет показывать, что входит игрок, выходит игрок, входит новый игрок, показывает его страну и очки, как на hlstatsx
Игрок NIK подключился [123 очков, ISPANIA]
 

s777

Участник
Сообщения
449
Реакции
74
Можно ли для плагина LVL Ranks сделать плагин, который будет показывать, что входит игрок, выходит игрок, входит новый игрок, показывает его страну и очки, как на hlstatsx
Игрок NIK подключился [123 очков, ISPANIA]
нечто подобное в привате есть
 
Сверху Снизу