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

[Shop] Command Items 2.3

Someone

Участник
Сообщения
1,933
Реакции
1,653
  • Автор ресурса
  • #1

skywalker

Участник
Сообщения
1,153
Реакции
263
sm_drug можно ли только его оставить?,идея класс,кстати:)
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
  • Автор ресурса
  • #3
sm_drug можно ли только его оставить?,идея класс,кстати:)

Какую хочешь можно ставить команду. Если хочешь только sm_drug оставить, то просто полностью sm_noclip убери и всё.
 

skywalker

Участник
Сообщения
1,153
Реакции
263
@Someone, а какие еще примерно можно поставить команды для данного модуля?
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
  • Автор ресурса
  • #6
@Someone, а какие еще примерно можно поставить команды для данного модуля?

Есть вот такой плагин, меняет выстрелы:

[CS:GO] UB3R Guns\Bullet Changer - AlliedModders

Например "ub_awp Someone Deagle" даст Deagle стреляющий как AWP ( урон такой же как у AWP). << За него дают бан токена.



Или к примеру имея RPG мод выдавать кредиты/уровень/опыт. Аналогично с WCS.

Или вовсе покупать гравитацию (Например: sm_gravity {clientUser} 200) или невидимость.


--- Добавлено позже ---
Хм очень интересная идея, такой вопрос а как к примеру добавить две команды?

Например вот так:
C-подобный:
"CommandItems"
{
    "sm_noclip"    //Название в бд
    {
        "name"    "NoClip" // Название в Shop
        "description"    "NoClip на 30 секунд"    // Описание
        "price"    "2000"    // Цена покупки
        "sell_price"    "500"    // Цена продажи
        "alive"            "1" // Должен ли быть игрок живым
        "command"        "sm_noclip {clientUser}" // Команда
        "chat_text"        "[Shop] Вы купили NoClip на 30 секунд." // Сообщение в чате при использовании
        "team"            "2"        // Ограничение для одной команды (по умолчанию доступно всем) 1 - спектаторы | 2 - Террористы | 3 - Контр-Террористы
        "timer"            "30.0"    // Время через которое эта команда снова выполнится (по умолчанию выключено)
        "chat_text_timer"        "[Shop] Ваш NoClip закончился." // Сообщение после окончания таймера (не работает, если не используется таймер)
    }
    "sm_drug"
    {
        "name" "Напиться"
        "price"    "500"
        "sell_price"    "100"
        "alive"            "1"
        "command"        "sm_drug {clientUser}"
    }
    "sm_gravity"
    {
        "name" "Гравитация"
        "description" "Уменьшение гравитации"
        "price"    "500"
        "sell_price"    "100"
        "alive"            "1"
        "command"        "sm_graivty {clientUser} 200"
    }
    "sm_invisible"
    {
        "name" "Невидимость"
        "description" "5-ти секундная невидимость"
        "price"    "1000"
        "sell_price"    "500"
        "alive"            "1"
        "timer"            "5.0"
        "command"        "sm_invisible {clientUser}"
    }
}
 
Последнее редактирование:

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #7
Грава бесполезная, залезешь на лестницу, пропадает.
 

ToniWaor

Участник
Сообщения
76
Реакции
24
Есть вот такой плагин, меняет выстрелы:

[CS:GO] UB3R Guns\Bullet Changer - AlliedModders

Например "ub_awp Someone Deagle" даст Deagle стреляющий как AWP ( урон такой же как у AWP). << За него дают бан токена.



Или к примеру имея RPG мод выдавать кредиты/уровень/опыт. Аналогично с WCS.

Или вовсе покупать гравитацию (Например: sm_gravity {clientUser} 200) или невидимость.


--- Добавлено позже ---


Например вот так:
C-подобный:
"CommandItems"
{
    "sm_noclip"    //Название в бд
    {
        "name"    "NoClip" // Название в Shop
        "description"    "NoClip на 30 секунд"    // Описание
        "price"    "2000"    // Цена покупки
        "sell_price"    "500"    // Цена продажи
        "alive"            "1" // Должен ли быть игрок живым
        "command"        "sm_noclip {clientUser}" // Команда
        "chat_text"        "[Shop] Вы купили NoClip на 30 секунд." // Сообщение в чате при использовании
        "team"            "2"        // Ограничение для одной команды (по умолчанию доступно всем) 1 - спектаторы | 2 - Террористы | 3 - Контр-Террористы
        "timer"            "30.0"    // Время через которое эта команда снова выполнится (по умолчанию выключено)
        "chat_text_timer"        "[Shop] Ваш NoClip закончился." // Сообщение после окончания таймера (не работает, если не используется таймер)
    }
    "sm_drug"
    {
        "name" "Напиться"
        "price"    "500"
        "sell_price"    "100"
        "alive"            "1"
        "command"        "sm_drug {clientUser}"
    }
    "sm_gravity"
    {
        "name" "Гравитация"
        "description" "Уменьшение гравитации"
        "price"    "500"
        "sell_price"    "100"
        "alive"            "1"
        "command"        "sm_graivty {clientUser} 200"
    }
    "sm_invisible"
    {
        "name" "Невидимость"
        "description" "5-ти секундная невидимость"
        "price"    "1000"
        "sell_price"    "500"
        "alive"            "1"
        "timer"            "5.0"
        "command"        "sm_invisible {clientUser}"
    }
}
Команды типо unmute тоже прокатят ?

UPD:

Глупый был вопрос.
 
Последнее редактирование:

-->KENT<--

На квартале
Сообщения
246
Реакции
50
Можно сделать команду использования в конфиг? к примеру "chat_text_use" 'Ник использовал водку" чтобы в общий чат писало при использовании.
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
  • Автор ресурса
  • #10
Можно сделать команду использования в конфиг? к примеру "chat_text_use" 'Ник использовал водку" чтобы в общий чат писало при использовании.
Вроде сделал, но надо проверить. Чуть позже выложу.
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
  • Автор ресурса
  • #12
Пользователь Someone обновил ресурс [Shop] Command Items новой записью:

Исправление кода и дополнительная функция

Теперь таймер будет сбрасываться в начале раунда.

Добавлен "chat_text_use" - сообщение при покупке команды, которое видят все игроки, кроме купившего эту команду.

Узнать больше об этом обновлении...
--- Добавлено позже ---

Готово.
 

ToniWaor

Участник
Сообщения
76
Реакции
24
Работает ок, но было замечено:

[SM] Exception reported: Invalid timer handle 8ef205ee (error 3)
[SM] Blaming: shop_commanditems.smx()
[SM] Call stack trace:
[SM] [0] KillTimer
[SM] [1] Line 55, C:\csgo\1.7\addons\sourcemod\scripting\shop_commanditems.sp::Event_RoundStart()
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
  • Автор ресурса
  • #15
Работает ок, но было замечено:

[SM] Exception reported: Invalid timer handle 8ef205ee (error 3)
[SM] Blaming: shop_commanditems.smx()
[SM] Call stack trace:
[SM] [0] KillTimer
[SM] [1] Line 55, C:\csgo\1.7\addons\sourcemod\scripting\shop_commanditems.sp::Event_RoundStart()

Да, глянул, напутал там немного, позже исправлю.

Можешь сам пока что исправить.


Поменять:

PHP:
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    for (new i = 1; i <= MaxClients; i++)
    {
        g_iUses[i] = 0;
        UseFunction[i] = false;
        KillTimer(DataTimer);
    }
}

На:

PHP:
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    for (new i = 1; i <= MaxClients; i++)
    {
        g_iUses[i] = 0;
        UseFunction[i] = false;
    }
    if(DataTimer != INVALID_HANDLE)    KillTimer(DataTimer);
}
 

Tonki_Ton

Script kiddie
Сообщения
614
Реакции
375
Да, глянул, напутал там немного, позже исправлю.

Можешь сам пока что исправить.


Поменять:

PHP:
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    for (new i = 1; i <= MaxClients; i++)
    {
        g_iUses[i] = 0;
        UseFunction[i] = false;
        KillTimer(DataTimer);
    }
}

На:

PHP:
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    for (new i = 1; i <= MaxClients; i++)
    {
        g_iUses[i] = 0;
        UseFunction[i] = false;
    }
    if(DataTimer != INVALID_HANDLE)    KillTimer(DataTimer);
}

чет все ровно ошибку с таймером сыпет

[SM] Exception reported: Invalid timer handle f8320b93 (error 3)
[SM] Blaming: shop_commanditems.smx()
[SM] Call stack trace:
[SM] [0] KillTimer
[1] Line 57, C:\Users\Vladm\Desktop\ (4)\addons\sourcemod\scripting\shop_commanditems.sp::Event_RoundStart()
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
ошибку с таймером сыпет
24 строку:
C-подобный:
new Handle:DataTimer;
Заменить на:
PHP:
new Handle:DataTimer[MAXPLAYERS + 1];
C-подобный:
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    for (new i = 1; i <= MaxClients; i++)
    {
        g_iUses[i] = 0;
        UseFunction[i] = false;
        KillTimer(DataTimer);
    }
}
На:
PHP:
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    for (new i = 1; i <= MaxClients; ++i)
    {
        g_iUses[i] = 0;
        UseFunction[i] = false;
        if (DataTimer[i] != INVALID_HANDLE)
        {
            KillTimer(DataTimer[i]);
            DataTimer[i] = INVALID_HANDLE;
        }
    }
}
Теперь уже 197 строку:
C-подобный:
DataTimer = CreateDataTimer(g_CommandItems[timer], ExucteCommand, datapack);
На:
PHP:
DataTimer[iClient] = CreateDataTimer(g_CommandItems[timer], ExucteCommand, datapack);
После получившейся 214 строки:
C-подобный:
if(iClient)
И её фигурной скобки добавить:
PHP:
DataTimer[iClient] = INVALID_HANDLE;
И в самом конце, с новой чистой строки:
PHP:
public OnClientDisconnect_Post(iClient) DataTimer[iClient] = INVALID_HANDLE;
Автору: вообще, тогда уж лучше и убивать там таймер и проверку из таймера на валидность индекса игрока можно убрать.
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
  • Автор ресурса
  • #18
24 строку:
C-подобный:
new Handle:DataTimer;
Заменить на:
PHP:
new Handle:DataTimer[MAXPLAYERS + 1];
C-подобный:
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    for (new i = 1; i <= MaxClients; i++)
    {
        g_iUses[i] = 0;
        UseFunction[i] = false;
        KillTimer(DataTimer);
    }
}
На:
PHP:
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    for (new i = 1; i <= MaxClients; ++i)
    {
        g_iUses[i] = 0;
        UseFunction[i] = false;
        if (DataTimer[i] != INVALID_HANDLE)
        {
            KillTimer(DataTimer[i]);
            DataTimer[i] = INVALID_HANDLE;
        }
    }
}
Теперь уже 197 строку:
C-подобный:
DataTimer = CreateDataTimer(g_CommandItems[timer], ExucteCommand, datapack);
На:
PHP:
DataTimer[iClient] = CreateDataTimer(g_CommandItems[timer], ExucteCommand, datapack);
После получившейся 214 строки:
C-подобный:
if(iClient)
И её фигурной скобки добавить:
PHP:
DataTimer[iClient] = INVALID_HANDLE;
И в самом конце, с новой чистой строки:
PHP:
public OnClientDisconnect_Post(iClient) DataTimer[iClient] = INVALID_HANDLE;
Автору: вообще, тогда уж лучше и убивать там таймер и проверку из таймера на валидность индекса игрока можно убрать.

Я не понимаю, таймер будет один? Или он будет создаваться на каждого игрока?
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
  • Автор ресурса
  • #20
Сверху Снизу