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

Felton

Участник
Сообщения
799
Реакции
59
))
iLoco
Нет урона от ножа только для ROOT
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Нужно проверять только victim на флаг. Уже при уроне
Зачем делать проверку при каждом уроне, если можно сразу поставить хук только на тех игроков, которым мы должны 100% резать урон.
Сообщения автоматически склеены:

))
iLoco
Нет урона от ножа только для ROOT
Невнятное ТЗ, я сначала понял как "Отключить нанесение урона от ножа игрокам с флагом `z`"

Отключение получения урона игрокам, у которых есть флаг "z":
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

int g_iFlagRestrict;

public OnPluginStart()
{
    g_iFlagRestrict = ReadFlagString("z");

    for(int i = 1; i <= MaxClients; i++) if(IsClientAuthorized(i) && IsClientInGame(i)) {
        OnClientPostAdminCheck(i);
    }
}

public void OnClientPostAdminCheck(int client)
{
    if(!IsFakeClient(client) && GetUserFlagBits(client) & g_iFlagRestrict) {
        SDKHook(client, SDKHook_OnTakeDamage, Hook_OnTakeDamage);
    }
}

public Action Hook_OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)
{
    if(attacker > 0 && attacker < MaxClients) {
        char classname[32];
        GetClientWeapon(attacker, classname, sizeof(classname));

        if(StrContains(classname, "knife", false) != -1) {
            damage = 0.0;
            return Plugin_Changed;
        }
    }
    return Plugin_Continue;
}
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Зачем делать проверку при каждом уроне, если можно сразу поставить хук только на тех игроков, которым мы должны 100% резать урон.
Тк ему над узнать, что цель - рут, потому у этой цели не снимать хп.
А ты проверяешь заведомо всех игроков, не зная, будет рут целью или аттакером
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Тк ему над узнать, что цель - рут, потому у этой цели не снимать хп.
А ты проверяешь заведомо всех игроков, не зная, будет рут целью или аттакером
Ты не понял что я имею в виду, я говорю о том, что лучше в плане оптимизации поставить хук только на тех игроков, с которыми мы хотим работать, то-есть на тех, у кого есть флаг 'z', при их коннекте это можно отловить и захукать их, и после в хуке уже определяем тип оружия, мы уже 100% уверенны что victim - это игрок с флагом 'z'
 

Felton

Участник
Сообщения
799
Реакции
59

iLoco

Paranoiiik

Внесу ястность.Игра Counter-Strike Source v.34.Этот плагин не даёт убить ножом любого игрока даже если ты админ.Урон не проходит.Я хотел что бы я мог резать я меня с правами ROOT нет.
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
мы уже 100% уверенны что victim - это игрок с флагом 'z'
Но при этом аттакер тоже Z. Потому он сам не может никому нанести урон. Потому нам необходимо, забив на эту оптимизацию, узнавать непосредственно при попытке нанесения урона, не Z ли цель. И всё. Нам не нужно хукать и атакующего, и жертву исходя исключительно из того, какой у них флаг, ведь мы не знаем, кто кем будет.
Он же просит не отнимать HP только у игроков с этим флагом. И не важно, кто атакует - главное, чтобы жертва была Z
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Он же просит не отнимать HP только у игроков с этим флагом. И не важно, кто атакует - главное, чтобы жертва была Z
Ну так смысл хукать всех игроков и после в хуке проверять какие имеет флаги жертва, если можно заранее сделать хуки только для нужных жертв с 'z' флагом и всё, проверка на наличие флагов не требуться внутри хука, только удостоверится что это игрок а не ент и что оружие - нож.
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Матерная речь
Ну так смысл хукать всех игроков и после в хуке проверять какие имеет флаги жертва, если можно заранее сделать хуки только для нужных жертв с 'z' флагом и всё, проверка на наличие флагов не требуться внутри хука, только удостоверится что это игрок а не ент и что оружие - нож.
Блядь, но тогда резать сможет только Z, а должен любой игрок, просто если жертва Z, урон не проходит, заебался объяснять на хуй
Оффтоп
 

Felton

Участник
Сообщения
799
Реакции
59

iLoco

Paranoiiik

Вот это я задачку вам задал!Вроде код простой а не простой.Спасибо заранее что разбераетесь.Может ещё с утра мысли будут по свежее.Есть другой код если с этим не получиться.
 

iLoco

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

iLoco

Paranoiiik

Вот это я задачку вам задал!Вроде код простой а не простой.Спасибо заранее что разбераетесь.Может ещё с утра мысли будут по свежее.Есть другой код если с этим не получиться.
Эта реализация не подходит?
Сообщения автоматически склеены:

Блядь, но тогда резать сможет только Z, а должен любой игрок, просто если жертва Z, урон не проходит, заебался объяснять на хуй
Оффтоп
Не тупи, игроку с флагом 'z' урон от ножа не должен наносится, а другим - должен. Смотри как сделано тут Написание плагинов
 

Felton

Участник
Сообщения
799
Реакции
59

iLoco

Твой код ничего не поменял.Как было в оригинале что я скидывал так всё и осталось.Я с тупил твой код не компелится
// NoKnifeDamage.sp
NoKnifeDamage.sp(5) : error 010: invalid function or declaration
NoKnifeDamage.sp(9) : error 017: undefined symbol "g_iFlagRestrict"
NoKnifeDamage.sp(11) : error 017: undefined symbol "int"
NoKnifeDamage.sp(11) : warning 215: expression has no effect
NoKnifeDamage.sp(11) : error 001: expected token: ")", but found ";"
NoKnifeDamage.sp(11) : error 036: empty statement
NoKnifeDamage.sp(11) : fatal error 127: too many error messages on one line

Compilation aborted.
6 Errors.
Извени что не верная была инфа .Скомпелил а не удалил старый smx
 
Последнее редактирование:

iLoco

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

iLoco

Твой код ничего не поменял.Как было в оригинале что я скидывал так всё и осталось.Я с тупил твой код не компелится
// NoKnifeDamage.sp
NoKnifeDamage.sp(5) : error 010: invalid function or declaration
NoKnifeDamage.sp(9) : error 017: undefined symbol "g_iFlagRestrict"
NoKnifeDamage.sp(11) : error 017: undefined symbol "int"
NoKnifeDamage.sp(11) : warning 215: expression has no effect
NoKnifeDamage.sp(11) : error 001: expected token: ")", but found ";"
NoKnifeDamage.sp(11) : error 036: empty statement
NoKnifeDamage.sp(11) : fatal error 127: too many error messages on one line

Compilation aborted.
6 Errors.
У меня компилируется нормально, sm 1.10
Вот на старом синтаксисе:
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

new g_iFlagRestrict;

public OnPluginStart()
{
    g_iFlagRestrict = ReadFlagString("z");

    for(new i = 1; i <= MaxClients; i++) if(IsClientAuthorized(i) && IsClientInGame(i)) {
        OnClientPostAdminCheck(i);
    }
}

public OnClientPostAdminCheck(client)
{
    if(!IsFakeClient(client) && GetUserFlagBits(client) & g_iFlagRestrict) {
        SDKHook(client, SDKHook_OnTakeDamage, Hook_OnTakeDamage);
    }
}

public Action:Hook_OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
{
    if(attacker > 0 && attacker < MaxClients) {
        decl String:classname[32];
        GetClientWeapon(attacker, classname, sizeof(classname));

        if(StrContains(classname, "knife", false) != -1) {
            damage = 0.0;
            return Plugin_Changed;
        }
    }
    return Plugin_Continue;
}
 

Felton

Участник
Сообщения
799
Реакции
59

iLoco

Игра Counter-Strike Source v.34 Стырый синтаксис.Sourcemod 1.6.3
Прошу прощения всё работает как надо.Был мой косяк.Это я ступил.Ещё раз сори.Спасибо дружище как я и хотел.Вот я и лох)))Столько времени ушло и твоё терпение и за меня.Всё отлично!Хорошо что есть люди которые помогают.
Сообщения автоматически склеены:

Единственый вопрос если я захочу помеять права на младших админов что мне в иходники надо поменять?"z" через запятю или как?
 
Последнее редактирование:

iLoco

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

iLoco


Единственый вопрос если я захочу помеять права на младших админов что мне в иходники надо поменять?"z" через запятю или как?
Без всяких разделителей писать, пример: abz
 

Tyoma

Участник
Сообщения
23
Реакции
0
Нужен, человек, который выполнит данную задачу.
Статистика: LVL RANKS
Мод: WarMod
Игра: CS:Source
Есть задумка, что-бы статистика приходила тебе в Личный сообщения - ВК по окончания матча.
Тз:
- Привязываешь свой SteamId, в Личный сообщения - группы ВК.
- После окончания матча тебе приходит статистика.
Готов обсудить более детально и как это лучше реализовать в ДС (fenzoredd#4203), естественно не бесплатно!
 

babka68

Участник
Сообщения
2,124
Реакции
956
Привет всем
Можно ли сделать в данном плагине,чтоб звук перезарядки был один только?
И чтоб не было такого,что когда обойма полная,ты нажимаешь перезарядить и там много раз звук воспроизводит.
Ну если конечно не много заморочек там.
Заранее благодарю.
Желаемые звуки можно прописать по пути addons/sourcemod/configs/reload_sound_list.ini
При нажатии буквы R будет воспроизводиться рандомный звук, при условии, что хотя бы 1 патрон потрачен
 

Вложения

  • Reload Sound.rar
    232.1 КБ · Просмотры: 19

xp2000

Участник
Сообщения
190
Реакции
14
Нужен плагин с задачей: Перемешивание команд при 3-4-х винах или лузов подряд на классическом retake от valve.
 
Сверху Снизу