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

Черная вдова

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

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Ты проверял что вернет getclientweapon? Возможно при любом ноже вернет weapon_knife
Возвращается имя оружия.
Ну weapon_knife - часть имени, но есть индивид, который не содержит этой части: "weapon_bayonet"
Не путать с "weapon_knife_m9_bayonet"
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Черная вдова, вообще возможен баг с гранатами, когда дамаг наносится гранатой, а в руке у атакующего нож.
Тогда нужно будет проверять значение inflictor, емнип.
Хотя нужны тесты. Я не все случаи помню, тем более в КСГО.

А вот нож будет выдавать именно тот, что имеется у игрока, насколько я помню.
 

HenryTownshand

Чел ты
Сообщения
255
Реакции
140
@Grey83,
Проверил щас, так и есть. Максимальный дамаг получается 65 от гранаты с ножом в руках
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@HenryTownshand, можно сделать отладочную версию с выводом информации в чат/консоль при нанесении дамага и потестить, а потом откорректировать плагин согласно полученным при тестировании результам.
PHP:
#include <sdkhooks>

public void OnPluginStart() 
{
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i)) OnClientPutInServer(i);
}

public void OnClientPutInServer(int client)
{
    SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action OnTakeDamage(int victim, int& attacker, int& inflictor, float& damage, int& damagetype, int& weapon, float damageForce[3], float damagePosition[3])
{
    static char sWeapon[64], buffer[128];
    buffer[0] = sWeapon[0] = 0;
    if(0 < attacker <= MaxClients && IsClientInGame(attacker))
        GetClientWeapon(attacker, buffer, sizeof(buffer));
    if(weapon > MaxClients && IsValidEntity(weapon) && GetEntityClassname(weapon, sWeapon, sizeof(sWeapon)))
        Format(buffer, sizeof(buffer), "%s, Weapon: %i (%s)", buffer, weapon, sWeapon);
    PrintToChatAll("Victim: %i, Attacker: %i, Inflictor: %i\nDmg: %.2f, DmgType: %i\nClWeapon: %s",
        victim, attacker, inflictor, damage, damagetype, buffer);

    damage = 0.0;
    return Plugin_Changed;
}
 

Вложения

  • dmg_info.sp
    998 байт · Просмотры: 5
  • dmg_info.smx
    4.6 КБ · Просмотры: 3
Последнее редактирование:

smxnet

Участник
Сообщения
80
Реакции
4
Привет ребят помогите пжл переделать плагин он отключает музыку на карте но он отключает ее не сразу а как только напишешь в чате !stopmusic помогите переделать что бы вот как включил сервер он сразу блокировал музыку без всяких команд в чат и так же если кто может вырезать сообщения в чат или у кого может есть другой плагин который блокирует сразу всю музыку на сервере если кто может пришлите заранее благодарю (сервер css)
 

Вложения

  • StopMusic.sp
    3.8 КБ · Просмотры: 9
Последнее редактирование:

eXtensiON

Дизайнер
Сообщения
133
Реакции
87
Привет ребят помогите пжл переделать плагин он отключает музыку на карте но он отключает ее не сразу а как только напишешь в чате !stopmusic помогите переделать что бы вот как включил сервер он сразу блокировал музыку без всяких команд в чат и так же если кто может вырезать сообщения в чат или у кого может есть другой плагин который блокирует сразу всю музыку на сервере если кто может пришлите заранее благодарю (сервер css)
Держи, команда - !music, выключает музыку постоянно, пока игрок снова не напишет эту команду.
 

Вложения

  • StopMusic.sp
    4.3 КБ · Просмотры: 34
  • StopMusic.smx
    5.8 КБ · Просмотры: 7

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
PHP:
// если weapon = "weapon_..."

if (!strncmp(weapon[7], "knife", 5) || !strcmp(weapon[7], "bayonet"))
{
//
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@R1KO, список доступных ножей из моего старого плагина лазерных мин для ксго
knife
knife_gut
knife_flip
knife_karambit
bayonet
knife_m9_bayonet
knife_tactical
knife_butterfly
knifegg
 

smxnet

Участник
Сообщения
80
Реакции
4
Держи, команда - !music, выключает музыку постоянно, пока игрок снова не напишет эту команду.

да все работает и если карта меняется тоже продолжает работать а можно сделать совсем без команд что бы сразу работал как тока сервер включил что бы не писать !music ?
 
Последнее редактирование:

eXtensiON

Дизайнер
Сообщения
133
Реакции
87
да все работает и если карта меняется тоже продолжает работать а можно сделать совсем без команд что бы сразу работал как тока сервер включил что бы не писать !music ?
Можно, но я не знаю как :D
Да и смысл делать это принципиально? Может-быть некоторым игрокам нравится музыка на картах.
 

smxnet

Участник
Сообщения
80
Реакции
4
Можно, но я не знаю как :D
Да и смысл делать это принципиально? Может-быть некоторым игрокам нравится музыка на картах.
многие на оборот попросили что бы ее не было в общем ребят если кто знает напишите пжл как сделать
 

Ice_Sochi

Участник
Сообщения
709
Реакции
413
В чем может быть ошибка:
C-подобный:
#include <sourcemod>
#include <smrpg>
#include <vip_core>

public SMRPG_OnBuyUpgradePost(int client, const char[] shortname, int newlevel)
{
    if(VIP_IsClientVIP(client))
    {
        int upgrade[UpgradeInfo];
        SMRPG_GetUpgradeInfo(shortname, upgrade);
        int ivozvrat = 0.15*(UI_startCost+((SMRPG_GetClientUpgradeLevel(client, shortname)-1)*UI_incCost)); //15%-я стоимость рпг умения любого уровня
        SMRPG_SetClientCredits(client, SMRPG_GetClientCredits(client)+ivozvrat);
        PrintToChat(client, "Вам вернули 15% потраченной суммы");
    }
}
Компилится, но сыплет варнингами о несоответствии аргументов в строке int ivozvrat
C-подобный:
enum UpgradeInfo
{
    bool:UI_enabled, // upgrade enabled?
    UI_maxLevelBarrier, // upper limit of maxlevel setting. Can't set maxlevel higher than that.
    UI_maxLevel, // Maximal level a player can get for this upgrade
    UI_startCost, // The amount of credits the first level costs
    UI_incCost, // The amount of credits each level costs more
    UI_adminFlag, // The admin flag(s) (ADMFLAG_*) this upgrade is restricted to. (See SMRPG_CheckUpgradeAccess and SMRPG_RunUpgradeEffect)
    UI_teamlock, // The team this upgrade is restricted to. 0 = Disabled, 2 = RED/Terrorist team, 3 = BLU/Counter-Terrorist team
    String:UI_name[MAX_UPGRADE_NAME_LENGTH], // Upgrade readable name as given when registering the upgrade.
    String:UI_shortName[MAX_UPGRADE_SHORTNAME_LENGTH], // shortname used as unique identifier in all commands and database
    String:UI_description[MAX_UPGRADE_DESCRIPTION_LENGTH], // Upgrade description as given when registering the upgrade.
    UI_startLevel // Initial level of upgrade when players first join the server.
};

/**
 * Get the UpgradeInfo of an upgrade.
 *
 * @param shortname      The shortname of the upgrade you want to know more about.
 * @param upgrade        An buffer array to hold all the upgrade information.
 * @param size           The size of the buffer array.
 * @error Unkown upgrade shortname.
 */
native void SMRPG_GetUpgradeInfo(const char[] shortname, upgrade[UpgradeInfo], int size=view_as<int>(UpgradeInfo));
Пробовал UI_startCost и UI_incCost переводить в int переменные, всё та же проблема
 

Вложения

  • smrpg_upgrades.inc
    24.8 КБ · Просмотры: 4
  • smrpg.inc
    3.5 КБ · Просмотры: 4

HenryTownshand

Чел ты
Сообщения
255
Реакции
140
PHP:
#include <sourcemod>
#include <smrpg>
#include <vip_core>

public SMRPG_OnBuyUpgradePost(int client, const char[] shortname, int newlevel)
{
    if(VIP_IsClientVIP(client))
    {
        int upgrade[UpgradeInfo];
        SMRPG_GetUpgradeInfo(shortname, upgrade);
        float ivozvrat = 0.15*(view_as<int>(UI_startCost)+((SMRPG_GetClientUpgradeLevel(client, shortname)-1)*view_as<int>(UI_incCost))); //15%-я стоимость рпг умения любого уровня
        SMRPG_SetClientCredits(client, SMRPG_GetClientCredits(client)+view_as<int>(ivozvrat));
        PrintToChat(client, "Вам вернули 15% потраченной суммы");
    }
}
 
Последнее редактирование:

Z-RAY-Z

Участник
Сообщения
775
Реакции
243
@arbigon, в КСГО нет снарядов, как таковых. Пули летят мгновенно.
Из другой темы:
Напиши такой под ксго, а-то достали специально по своим стрелять чтобы прицел дергался!
Иногда стрельба по своим не влияет на их прицел. Я тоже заинтересован в подобном плагине.
 
Сверху Снизу