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

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@BossKotoriiNeSmok, можно сделать чтобы при любой телепортации вырубало (есть такое событие и оно срабатывает при любой телепортации, во всяком случае в CS:S), но проблема в том, что в начале каждого раунда происходит телепортация.
Можно попробовать как-то не учитывать телепортации между концом раунда и окончанием фризтайма, но хз достаточно ли этого будет.
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
@BossKotoriiNeSmok, можно сделать чтобы при любой телепортации вырубало (есть такое событие и оно срабатывает при любой телепортации, во всяком случае в CS:S), но проблема в том, что в начале каждого раунда происходит телепортация.
Можно попробовать как-то не учитывать телепортации между концом раунда и окончанием фризтайма, но хз достаточно ли этого будет.
Можно попробовать проверять координаты каждый тик, если дистанция между векторами сильно большая - выключать скорость и поставить переключатель, который также выключать в конце раунда, чтобы не брало другие телепорты
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
Хм, похоже в CS:GO нет такого события (base_player_teleported). =(
 

xstage

🏹
Сообщения
726
Реакции
754
В CS:GO можно так:

C-подобный:
#include <dhooks>

Handle hTeleport;

public void OnPluginStart()
{
    GameData hGameData = LoadGameConfigFile("sdktools.games");
    
    if (!hGameData)
    {
        SetFailState("Not found gamedata - sdktools.games");
        
        return;
    }
    
    int iTeleport =  GameConfGetOffset(hGameData, "Teleport");
    
    hTeleport = DHookCreate(iTeleport, HookType_Entity, ReturnType_Void, ThisPointer_CBaseEntity, OnPlayerTeleported);
    
    DHookAddParam(hTeleport, HookParamType_VectorPtr);
    DHookAddParam(hTeleport, HookParamType_ObjectPtr);
    DHookAddParam(hTeleport, HookParamType_VectorPtr);
}

public void OnClientPutInServer(int client)
{
    DHookEntity(hTeleport, false, client);
}

public MRESReturn OnPlayerTeleported(int pThis, DHookParam hParams)
{
    if (pThis > 0 && pThis <= MaxClients && IsClientInGame(pThis))
    {
        PrintToChat(pThis, "%L Вы телепортированы!", pThis);
    }
}
 

BossKotoriiNeSmok

Участник
Сообщения
976
Реакции
189
В CS:GO можно так:

C-подобный:
#include <dhooks>

Handle hTeleport;

public void OnPluginStart()
{
    GameData hGameData = LoadGameConfigFile("sdktools.games");
   
    if (!hGameData)
    {
        SetFailState("Not found gamedata - sdktools.games");
       
        return;
    }
   
    int iTeleport =  GameConfGetOffset(hGameData, "Teleport");
   
    hTeleport = DHookCreate(iTeleport, HookType_Entity, ReturnType_Void, ThisPointer_CBaseEntity, OnPlayerTeleported);
   
    DHookAddParam(hTeleport, HookParamType_VectorPtr);
    DHookAddParam(hTeleport, HookParamType_ObjectPtr);
    DHookAddParam(hTeleport, HookParamType_VectorPtr);
}

public void OnClientPutInServer(int client)
{
    DHookEntity(hTeleport, false, client);
}

public MRESReturn OnPlayerTeleported(int pThis, DHookParam hParams)
{
    if (pThis > 0 && pThis <= MaxClients && IsClientInGame(pThis))
    {
        PrintToChat(pThis, "%L Вы телепортированы!", pThis);
    }
}
А можете с плагином выше совместить пожалуйста?)
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
@BossKotoriiNeSmok, проверить какое оружие игрок взял и убрать/вернуть скорость, такой вариант не подходит? Ну и добавить исключающие оружия. - Нож, пистолет. Помимо этого скорее всего надо будет добавлять еще проверку на карту. Тоже костыль, если спсоб выше работать не будет. Примитивно конечно, но что поделать.
 

BossKotoriiNeSmok

Участник
Сообщения
976
Реакции
189
@BossKotoriiNeSmok, проверить какое оружие игрок взял и убрать/вернуть скорость, такой вариант не подходит? Ну и добавить исключающие оружия. - Нож, пистолет. Помимо этого скорее всего надо будет добавлять еще проверку на карту. Тоже костыль, если спсоб выше работать не будет. Примитивно конечно, но что поделать.
Там режимы, авп, бхоп, олд и ножи, думаю вариант с телепортом самое то.
Сообщения автоматически склеены:

@BossKotoriiNeSmok, пробуй (возможно косяки есть)
С телепортацией тоже бред) в дезране же есть разные уровни карт и когда Тшник заходит в телепорт у него скорость исчезает) может реально сделать с оружием? с AWP хотябы скорость убрать.
 
Последнее редактирование:

DarkerZ

Участник
Сообщения
395
Реакции
175
Там режимы, авп, бхоп, олд и ножи, думаю вариант с телепортом самое то.
Сообщения автоматически склеены:


С телепортацией тоже бред) в дезране же есть разные уровни карт и когда Тшник заходит в телепорт у него скорость исчезает) может реально сделать с оружием? с AWP хотябы скорость убрать.
Как вариант по умолчанию использовать триггер на тп на большое расстояние, а дополнительно через stripper добавить отключение на триггер тп и прописать вручную, допустим когда кт находится в определенной области...
 

BossKotoriiNeSmok

Участник
Сообщения
976
Реакции
189
Как вариант по умолчанию использовать триггер на тп на большое расстояние, а дополнительно через stripper добавить отключение на триггер тп и прописать вручную, допустим когда кт находится в определенной области...
Да я думаю лучше наверное сделать, чтобы при подбирании авп - скорость стандарт становилась и еще на всякий сдеклать выключенеие скорости командой, такое реально?
Сообщения автоматически склеены:

Я видимо не так понял, я думал ему вообще выключить нужно скорость. А ему получается просто с его повышенной скорости - нужно поставить дефолтную
Сообщения автоматически склеены:


!mycommand ставит тшнику стандартную скорость - может поставить только он сам себе
Попробую вашу версию)
 
Последнее редактирование:

0-BuTaJIuK-0

Участник
Сообщения
235
Реакции
57
Как снять пароль с сервера?))) В отдельную переменную записать sv_password "" ?
C++:
ServerCommand("sv_password """);
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Как снять пароль с сервера?))) В отдельную переменную записать sv_password "" ?
C++:
ServerCommand("sv_password """);
C++:
char buffer[256];
ConVar hCvar = FindConVar("sv_password");

GetConVarString(hCvar, buffer, sizeof(buffer));
 //запись текущего значения переменной в буфер

SetConVarString(hCvar, "");
 //изменение текущего значения
 

xtance

Участник
Сообщения
513
Реакции
743
Выложите кто-нибудь фикс авика, пожалуйста.
Я уже з*ебался чинить сервер, который ломается абсолютно самостоятельно, без твоего участия, вмешательства и согласия.
Заранее спасибо тому, кто разберется с поехавшей системой аммо в кс, с этими m_iAmmo, m_iClip1, перезарядками и прочим говном.
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Выложите кто-нибудь фикс авика, пожалуйста.
Я уже з*ебался чинить сервер, который ломается абсолютно самостоятельно, без твоего участия, вмешательства и согласия.
Заранее спасибо тому, кто разберется с поехавшей системой аммо в кс, с этими m_iAmmo, m_iClip1, перезарядками и прочим говном.
На сколько я помню изменить кол-во пуль в обойме можно только при выдаче оружия.
Выдернул код из своих дуэлей, правда хз актукально ли еще или нет. Короч, сам напишешь
🤪


C-подобный:
int g_iClip1, g_iAmmo;

public void OnPluginStart()
{
    g_iClip1 = UTIL_FindSendPropInfo("CBaseCombatWeapon", "m_iClip1");
    g_iAmmo = UTIL_FindSendPropInfo("CBaseCombatWeapon", "m_iPrimaryReserveAmmoCount");
}

int UTIL_FindSendPropInfo(char[] sCls, char[] sProp)
{
    int iOffset = FindSendPropInfo(sCls, sProp);
    if(iOffset == -1) SetFailState("No found offset: %s|%s", sCls, sProp);
  
    return iOffset;
}

// %0 - id entity
SetEntData(%0, g_iClip1, 0); // то что нужно
SetEntData(%0, g_iAmmo, 0);

Не помню нафига я телепортировал оружие, но видимо была на то причина. Приколы CS:GO 😅

Снимок экрана 2022-11-19 в 15.50.36.png
 

0-BuTaJIuK-0

Участник
Сообщения
235
Реакции
57
Кто знает, как в типичный чикл по проверке игроков - создать условие, для kick зрителей GOTV (не бота GOTV, а именно, только зрителей)
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Кто знает, как в типичный чикл по проверке игроков - создать условие, для kick зрителей GOTV (не бота GOTV, а именно, только зрителей)
Такое есть вообще? Мне кажется там уже сам GOTV обрабатывать это должен, в том плане, что он и есть все эти клиенты(зрители) кмк
 

0-BuTaJIuK-0

Участник
Сообщения
235
Реакции
57
Такое есть вообще? Мне кажется там уже сам GOTV обрабатывать это должен, в том плане, что он и есть все эти клиенты(зрители) кмк
Мне после игры нужно установить пароль на сервер. Но когда кто-то есть на сервере (даже зрители) - это не возможно.
 
Сверху Снизу