Иконка ресурса

Homing Missiles/Самонаводящаеся ракеты 2.6

FokS

Участник
Сообщения
422
Реакции
52
@Grey83, Можно ли сделать так, чтобы ракета взрывалась в воздухе если в неё стреляет тот на кого она летит?
 

nuclear silo

Участник
Сообщения
4
Реакции
0
Есть ли кто-нибудь, чтобы управлять ракетой с помощью прицела. Также создайте лазерный прицел в том месте, куда смотрит игрок, ракета будет следовать за этим лазером.
 

Miroha

Участник
Сообщения
1,124
Реакции
134
Автор плагина у меня проблема когда я пишу команду через консоль вот что пишет, как можно это исправить?
L 12/07/2021 - 22:15:52: [SM] Exception reported: Property "m_iAccount" not found (entity 0/worldspawn)
L 12/07/2021 - 22:15:52: [SM] Blaming: homingmissiles 2.6.1.smx
L 12/07/2021 - 22:15:52: [SM] Call stack trace:
L 12/07/2021 - 22:15:52: [SM] [0] GetEntProp
L 12/07/2021 - 22:15:52: [SM] [1] Line 259, C:\Users\User\Desktop\addons\sourcemod\scripting\homingmissiles 2.6.1.sp::Cmd_Buy
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Miroha, не писать команду через консоль: у консоли всегда индекс равен 0 и никакой плагин не знает кто отправил команду.
 

Miroha

Участник
Сообщения
1,124
Реакции
134
@Miroha, не писать команду через консоль: у консоли всегда индекс равен 0 и никакой плагин не знает кто отправил команду.
А можно кого-то попросить что бы гранату можно было запускать именно на определённого игрока? по типу команда и ник игрока?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Miroha, использовать функцию FakeClientCommand(int client, const char[] fmt, any... ...).
Написать мелкий плагин, который будет вызывать команду с помощью этой функции.

Например такой:
C-подобный:
public void OnPluginStart()
{
    LoadTranslations("common.phrases");
    RegAdminCmd("sm_sellmissile", Cmd_FakeBuyMissile, ADMFLAG_ROOT);
}

public Action Cmd_FakeBuyMissile(int client, int args)
{
    if(args < 1)
    {
        ReplyToCommand(client, "[SM] Usage: sm_sellmissile <#userid|name>");
        return Plugin_Handled;
    }

    char arg[MAX_NAME_LENGTH];
    GetCmdArg(1, arg, sizeof(arg));

    char target_name[MAX_TARGET_LENGTH];
    int target_list[MAXPLAYERS], target_count;
    bool tn_is_ml;
 
    if((target_count = ProcessTargetString(
            arg,
            client,
            target_list,
            MAXPLAYERS,
            COMMAND_FILTER_ALIVE | COMMAND_FILTER_NO_BOTS,    // только живым людям
            target_name,
            sizeof(target_name),
            tn_is_ml)) < 1)
    {
        ReplyToTargetError(client, target_count);
        return Plugin_Handled;
    }
 
    for(int i; i < target_count; i++) FakeClientCommand(target_list[i], "sm_buymissile");

    ReplyToCommand(client, "[SM] Missiles sold to %i players", target_count);

    return Plugin_Handled;
}
Команду можно использовать так: "sm_sellmissile @t" - принудительная покупка ракет всеми террористами. Также в качестве параметра можно использовать UserID или ник игрока.

Если нужно чтобы боты покупали, то в строке 26 нужно заменить COMMAND_FILTER_ALIVE | COMMAND_FILTER_NO_BOTS на COMMAND_FILTER_ALIVE
 

Вложения

  • sm_sellmissile.sp
    1,016 байт · Просмотры: 5
Последнее редактирование:

Miroha

Участник
Сообщения
1,124
Реакции
134
@Miroha, использовать функцию FakeClientCommand(int client, const char[] fmt, any... ...).
Написать мелкий плагин, который будет вызывать команду с помощью этой функции.

Например такой:
C-подобный:
public void OnPluginStart()
{
    RegAdminCmd("sm_sellmissile", Cmd_FakeBuyMissile, ADMFLAG_ROOT);
}

public Action Cmd_FakeBuyMissile(int client, int args)
{
    if(args < 1)
    {
        ReplyToCommand(client, "[SM] Usage: sm_sellmissile <#userid|name>");
        return Plugin_Handled;
    }

    char arg[MAX_NAME_LENGTH];
    GetCmdArg(1, arg, sizeof(arg));

    char target_name[MAX_TARGET_LENGTH];
    int target_list[MAXPLAYERS], target_count;
    bool tn_is_ml;
  
    if((target_count = ProcessTargetString(
            arg,
            client,
            target_list,
            MAXPLAYERS,
            COMMAND_FILTER_ALIVE | COMMAND_FILTER_NO_BOTS,    // только живым людям
            target_name,
            sizeof(target_name),
            tn_is_ml)) < 1)
    {
        ReplyToTargetError(client, target_count);
        return Plugin_Handled;
    }
  
    for(int i; i < target_count; i++) FakeClientCommand(i, "sm_buymissile");

    ReplyToCommand(client, "[SM] Missiles sold to 7 players");

    return Plugin_Handled;
}
Сообщения автоматически склеены:

Команду можно использовать так: "sm_sellmissile @t" - принудительная покупка ракет всеми террористами.
Также можно использовать UserID или ник в качестве параметра

Если нужно чтобы боты покупали, то в строке 26 нужно заменить COMMAND_FILTER_ALIVE | COMMAND_FILTER_NO_BOTS на COMMAND_FILTER_ALIVE
Вопрос это будет работать через консоль просто мне именно на сервере не нужно что бы работало?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Miroha, будет: в данном случае сервер будет считать, что выбранные игроки использовали команду.
Сообщения автоматически склеены:

Можно даже в админку добавить эту команду с помощью конфига adminmenu_custom.txt
 

Miroha

Участник
Сообщения
1,124
Реакции
134
@Miroha, будет: в данном случае сервер будет считать, что выбранные игроки использовали команду.
Сообщения автоматически склеены:

Можно даже в админку добавить эту команду с помощью конфига adminmenu_custom.txt
Понял, только можешь пожалуйста не много поменять я просто в кодах не очень разбираюсь.. у меня команда установлена что бы призвать ракету !raketa sm_raketa
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Miroha, в строке 35 меняешь на нужную тебе и всё:
C-подобный:
for(int i; i < target_count; i++) FakeClientCommand(target_list[i], "sm_raketa");
 

Miroha

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

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Miroha, что за SM у тебя такой?
на пустом сервере:
sm plugins reload sm_sellmissile
[SM] Plugin sm_sellmissile.smx reloaded successfully.
sm_sellmissile @all
[SM] No matching clients were found.
Кстати, выше апдейтнул код и исходник: там нужно было добавить строку LoadTranslations("common.phrases");
 

Miroha

Участник
Сообщения
1,124
Реакции
134
@Miroha, что за SM у тебя такой?
на пустом сервере:
sm plugins reload sm_sellmissile
[SM] Plugin sm_sellmissile.smx reloaded successfully.
sm_sellmissile @all
[SM] No matching clients were found.
Кстати, выше апдейтнул код и исходник: там нужно было добавить строку LoadTranslations("common.phrases");
А куда этот код вписать.. ?
и да см у меня SourceMod (1.10.0.6521)
Сообщения автоматически склеены:

@Miroha, что за SM у тебя такой?
на пустом сервере:
sm plugins reload sm_sellmissile
[SM] Plugin sm_sellmissile.smx reloaded successfully.
sm_sellmissile @all
[SM] No matching clients were found.
Кстати, выше апдейтнул код и исходник: там нужно было добавить строку LoadTranslations("common.phrases");
У меня до сих пор пишет что типа код новй и плагин не может быть запущен.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Miroha, у меня сервер использует SM1.9.
Даже гугл не знает о такой ошибке. =D
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513

Вложения

  • sm_sellmissile.sp
    1,002 байт · Просмотры: 8
  • sm_sellmissile.smx
    3.4 КБ · Просмотры: 6

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@KiKiEEKi, потому что это тестовый и он запускается от силы раз в пару месяцев.
 

Таня

Участник
Сообщения
14
Реакции
1
Здравствуйте, а есть ли возможность добавить в випку этот плагин?
 
Сверху Снизу