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

Doker0909

Участник
Сообщения
105
Реакции
3
Мне кажется не очень эффективно будет, ведь где-то исходный файл 100% останется и его можно будет декомпилировать :(
в том то и фишка, что ребята могут, только, ставить плагины из ПУ "арены" и не могут даже толком разобраться в их настройке))) я за исходник уверен 😉
 
Последнее редактирование:

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
Ребзя, что будет быстрее? GetClientTeam(client) или же GetEntData(client, m_iTeamNum)?
m_iTeamNum если что найден через FindSendPropInfo

P.S. Зачекал код, думаю и так очевидно, что GetEntData быстрее. Ну што-ш.
 
Последнее редактирование:

-=HellFire=-

Kernel panic - not syncing: Fatal exception
Сообщения
1,394
Реакции
585
Ребзя, что будет быстрее? GetClientTeam(client) или же GetEntData(client, m_iTeamNum)?
m_iTeamNum если что найден через FindSendPropInfo
Первое, зачем работать с GetEnt если ты просто хочешь получить команду игрока
 

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
Первое, зачем работать с GetEnt если ты просто хочешь получить команду игрока
Избавиться от лишних вызовов, дабы ускорить код. У меня имеется проверка на то, в игре ли игрок. В коде SM:
1587395195286.png

Да, мелочь конечно, всего-то парочка вызовов, но мне просто нравится заниматься этим.

UPD: утром 21-го попробовал напрямую из памяти высосать. Возможно будет быстрее, буду пробовать и код смотреть.
Если кто-то реально не понимает, для чего я это делаю, то у меня куча проверок идёт прямо в OnPlayerRunCmd, на тике 102.4, то есть для каждого игрока не менее десятка проверок ~102 раза в секунду. Уменьшаю время, в общем-то.
 
Последнее редактирование:

1just1

Участник
Сообщения
75
Реакции
23
как кулакам дамаг дать высокий
public Action Hook_TakeDamageAlive(int victim, int& attacker, int& inflictor, float& damage, int& damagetype, int& weapon, float damageForce[3], float damagePosition[3])
{
if(attacker > 0 && attacker <= MaxClients && bIsAdmin[attacker]
&& GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex") == 69)
{
damage += 50; // 50 - это значение на которое будет увеличен урон
return Plugin_Changed;
}
return Plugin_Continue;
}
у меня уже есть кулаки хотелось бы поменять урон им через плагин
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
как кулакам дамаг дать высокий
public Action Hook_TakeDamageAlive(int victim, int& attacker, int& inflictor, float& damage, int& damagetype, int& weapon, float damageForce[3], float damagePosition[3])
{
if(attacker > 0 && attacker <= MaxClients && bIsAdmin[attacker]
&& GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex") == 69)
{
damage += 50; // 50 - это значение на которое будет увеличен урон
return Plugin_Changed;
}
return Plugin_Continue;
}
у меня уже есть кулаки хотелось бы поменять урон им через плагин
C++:
public void OnClientPostAdminCheck(int client)
{
    SDKHook(client, SDKHook_OnTakeDamage, OnWeaponDamage);
}

public Action OnWeaponDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3])
{
    if(!IsValidEntity(weapon))
        return Plugin_Continue;

    char buff[64];
    GetEntityClassname(GetEntPropEnt(attacker, Prop_Send, "m_hActiveWeapon"), buff, sizeof(buff));

    if(StrContains(buff, "fists", false) != -1)
    {
        damage += 50.0;
        return Plugin_Changed;
    }
    return Plugin_Continue;
}

Где 50.0 - там урон, должен быть во float
 

1just1

Участник
Сообщения
75
Реакции
23
C++:
public void OnClientPostAdminCheck(int client)
{
    SDKHook(client, SDKHook_OnTakeDamage, OnWeaponDamage);
}

public Action OnWeaponDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3])
{
    if(!IsValidEntity(weapon))
        return Plugin_Continue;

    char buff[64];
    GetEntityClassname(GetEntPropEnt(attacker, Prop_Send, "m_hActiveWeapon"), buff, sizeof(buff));

    if(StrContains(buff, "fists", false) != -1)
    {
        damage += 50.0;
        return Plugin_Changed;
    }
    return Plugin_Continue;
}

Где 50.0 - там урон, должен быть во float
что то не работает
 

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
у меня ксго и частично такой-же код для повышения урона кулакам, всё норм работает
Инклюд добавить надо, без него не хочет. Возможно не добавляется зависимость от расширения и поэтому не вызывается в плагине Hook_OnTakeDamage(...)
 

iLoco

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

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
Попробуйте через GetEntityClassname узнать класс inflictor, это номер самой сущности оружия. Как помню. Давно делал.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Он вызывается для всех игроков после всех проверок.
Не обязательно: это событие можно заблокировать плагином и оно не будет вообще срабатывать.
И не обязательно, что после всех проверок. На SMWiki есть информация о том в какой последовательности форварды срабатывают обычно (как домой попаду может даже ссыль дам).
 
Сверху Снизу