Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Значение цифр (weapon_pos)
Значение цифр
www22 Дата: Среда, 10.10.2018, 16:33:48 | Сообщение # 1
Сообщений: 21
Репутация: 0 [ +/- ]
Здравствуйте , есть вопрос , есть у меня вот такой код :
Цитата
if (GetConVarInt(Cvar_rules_mg_Enable) == 1)
{
new weapon_pos = GetEventInt(event, "weapon")

switch (weapon_pos)
{
case 35,36:   <---------------- значение данный цифр
{
new health[MAXPLAYERS + 1]
health[client] = GetClientHealth(client)
if (health[client] > 5)
{
health[client] = health[client] - 5
SetEntityHealth(client, health[client])
PrintToChat(client, "\x01\x04[Action]\x01 The jerking of your MG has caused you to hurt your arms because you had not deployed it before firing!")
}
else
{
ForcePlayerSuicide(client)
}
}
}

Так не могу понять откуда брать значения этих цифр . что они означают ?
Где можно найти такую инфу ?
А то уже даже и незнаю куда копать с данным вопросом и вообще что это за значение - что они означают.
P.s. Данный код возможно неправильный , это только пример ..


Сообщение отредактировал www22 - Среда, 10.10.2018, 16:36:46
 
_wS_ Дата: Среда, 10.10.2018, 18:57:27 | Сообщение # 2
Цитата www22 ()
Так не могу понять откуда брать значения этих цифр . что они означают ?

Ну достаточно почитать как работает switch и case.

Код
new x = 5;
switch (x)
{
    case 2: PrintToServer("it's 2");
    case 4, 5, 7: PrintToServer("ok, it's 4 or 5 or 7");
    default: PrintToServer("error, it's not 2, not 4, not 5 and not 7");
}

В case можно использовать лишь цифры, если несколько, то через запятую.
Переменные и условия нельзя.

Цитата www22 ()
new weapon_pos = GetEventInt(event, "weapon")

Это что-то сомнительное, обычно "weapon" это строка типа "awp".
 
www22 Дата: Среда, 10.10.2018, 20:00:26 | Сообщение # 3
Сообщений: 21
Репутация: 0 [ +/- ]
_wS_, не не , мне интересует немного другое , что означает , если на примере то 35 и 36 цифры , что это за действие оружие . или что это вообще ?
Я в этом плане .. Где взять такую инфу ?
То есть я как понял , то это типа действия , но вот в моем коде оно ввиде цифр ,а мне нужен как бы текст= значение. то есть такого Плана
1=хэдшот, 35-пулик 2 команды , 36 пулик другой команды . Вообщем значение всех таких действий бы узнать, точнее к какой из циферке что относится ?
А не сам операнд case, то есть чуток посложнее наверное. Есть вообще такое, или же самому тогда узнавать методом тыка :)))

Или как тогда добавить логирование , этих строк и цифр .. может методом тыка узнать тогда можно ..
Вообщем вот здесь код https://pastebin.com/nJ28yu5D , вот в этот скрипт я хотел бы еще добавить парочку тройку через кэйс условий ..
Но вот какие я не знаю.Может , так будет понятно что нужно.
p.s. сложно объяснить когда мало в этом разбираешься.


Сообщение отредактировал www22 - Среда, 10.10.2018, 21:34:53
 
_wS_ Дата: Среда, 10.10.2018, 20:36:42 | Сообщение # 4
Теперь понятно, нашёл в исхах dod, пробуй:

Код
typedef enum
{
    WEAPON_NONE = 0,

    //Melee
    WEAPON_AMERKNIFE = 1,
    WEAPON_SPADE = 2,

    //Pistols
    WEAPON_COLT = 3,
    WEAPON_P38 = 4,
    WEAPON_C96 = 5,

    //Rifles
    WEAPON_GARAND = 6,
    WEAPON_M1CARBINE = 7,
    WEAPON_K98,

    //Sniper Rifles
    WEAPON_SPRING = 8,
    WEAPON_K98_SCOPED = 9,

    //SMG
    WEAPON_THOMPSON = 10,
    WEAPON_MP40 = 11,
    WEAPON_MP44 = 12,
    WEAPON_BAR = 13,

    //Machine guns
    WEAPON_30CAL = 14,
    WEAPON_MG42 = 15,

    //Rocket weapons
    WEAPON_BAZOOKA = 16,
    WEAPON_PSCHRECK = 17,

    //Grenades
    WEAPON_FRAG_US = 18,
    WEAPON_FRAG_GER = 19,

    WEAPON_FRAG_US_LIVE = 20,
    WEAPON_FRAG_GER_LIVE = 21,

    WEAPON_SMOKE_US = 22,
    WEAPON_SMOKE_GER = 23,

    WEAPON_RIFLEGREN_US = 24,
    WEAPON_RIFLEGREN_GER = 25,

    WEAPON_RIFLEGREN_US_LIVE = 26,
    WEAPON_RIFLEGREN_GER_LIVE = 27,

    // not actually separate weapons, but defines used in stats recording
    // find a better way to do this without polluting the list of actual weapons.
    WEAPON_THOMPSON_PUNCH = 28,
    WEAPON_MP40_PUNCH = 29,

    WEAPON_GARAND_ZOOMED = 30,    
    WEAPON_K98_ZOOMED = 31,
    WEAPON_SPRING_ZOOMED = 32,
    WEAPON_K98_SCOPED_ZOOMED = 33,

    WEAPON_30CAL_UNDEPLOYED = 34,
    WEAPON_MG42_UNDEPLOYED = 35,

    WEAPON_BAR_SEMIAUTO = 36,
    WEAPON_MP44_SEMIAUTO = 37,

    WEAPON_MAX = 38,  // number of weapons weapon index

} DODWeaponID;

Выбери что-то из середины, добавь бота, стрельни в него из нужного оружия и выведи в чат weaponid и проверь совпал
ли он с значением из этого списка, если да, то здесь скорее всего верные данные.
 
www22 Дата: Среда, 10.10.2018, 21:25:47 | Сообщение # 5
Сообщений: 21
Репутация: 0 [ +/- ]
_wS_, Спасибо ... я думал может это стадартное из соурсмода самого. Хотел уже логирование сделать и проверять так.
Цитата _wS_ ()
добавь бота
С ботами в ДОДс плохо .. они там тупые и просто бегают ..

Что то понять не могу , что может означать добавка _LIVE к 20,21,26,27.
Еще раз Спасибо !!

Добавлено (10.10.2018, 23:27:59)
---------------------------------------------
Цитата _wS_ ()
В case можно использовать лишь цифры, если несколько, то через запятую.

да тут немного вопрос не по теме , больше об скриптинге , а если подряд цифры идут , такой вариант можно использовать : case (21-26) ?
или же тире-минус = минус ,и всё равно нужно все перечислить , через запятую тогда ?
p.s. В скриптинге пока что нуб , учусь ...


Сообщение отредактировал www22 - Среда, 10.10.2018, 23:30:46
 
_wS_ Дата: Среда, 10.10.2018, 23:34:50 | Сообщение # 6
Цитата www22 ()
Что то понять не могу , что может означать добавка _LIVE к 20,21,26,27.

Я тем более не знаю, никогда не играл в dods, хотя раз может пробовал.
По идее это два разных classname (оружия)

Код
weapon_frag_us
weapon_frag_us_live

Попробуй выдать через GivePlayerItem, может удастся увидеть отличия.
Еще вроде есть .txt файлы

Код
"scripts/weapon_frag_us.txt"
"scripts/weapon_frag_us_live.txt"
 
www22 Дата: Четверг, 11.10.2018, 08:38:49 | Сообщение # 7
Сообщений: 21
Репутация: 0 [ +/- ]
_wS_,
Цитата _wS_ ()
По идее это два разных classname (оружия)
Вот-вот , это как бы всё есть и даже лишнее с этими проклятущими LIVE. Уже голову сломал , что это может быть. Хотя есть мысля - из рук типа бросать -взять. Хотя Гранату то тоже из рук бросают , вообщем уже у самого голова кипит.да и еще когда вообще мало что знаешь ...

Цитата _wS_ ()
Попробуй выдать через GivePlayerItem, может удастся увидеть отличия.

Сам вряд ли смогу написать , если найти исходник уже с похожей функцией, и там исправить на нужное и проверить.
Что то никак пока не получается с "нуля" написать плагины , пока ка что только простенькие вещи plach grust .
А так спасибо за наводку ...


Сообщение отредактировал www22 - Четверг, 11.10.2018, 08:47:22
 
_wS_ Дата: Четверг, 11.10.2018, 09:14:23 | Сообщение # 8
В css и csgo есть команда give, наверно и в dods есть.
sv_cheats 1 (server.cfg или rcon), затем рождаешься и пишешь в консоль give weapon_frag_us и должно выдать оружие.

Плаг простой:

Код
#include <sdktools_functions>
public OnPluginStart() RegConsoleCmd("test", test_cmd);
public Action:test_cmd(client, args)
{
    if (client < 1) PrintToConsole(client, "You must be online");
    else if (args != 1) PrintToChat(client, "test \"weapon classname\"");
    else if (!IsPlayerAlive(client)) PrintToChat(client, "You must be alive");
    else
    {
        decl String:weapon[32];
        GetCmdArg(1, weapon, sizeof(weapon));
        if (TrimString(weapon))
            GivePlayerItem(client, weapon);
    }
    return Plugin_Handled;
}

test weapon_frag_us

Прикрепления: 9343048.smx(2.9 Kb)
 
www22 Дата: Четверг, 11.10.2018, 09:33:30 | Сообщение # 9
Сообщений: 21
Репутация: 0 [ +/- ]
_wS_,
Цитата _wS_ ()
наверно и в dods есть.
Да есть https://forums.alliedmods.net/showthread.php?t=76442, я через него попробовал на сервере ошибку выдал. И там не было с этим *LIVE, при просмотре кода.

кстати судя по этому описанию , этого с LIVE и нет там https://wiki.alliedmods.net/Day_of_Defeat:_Source_Weapons ..
если только тхт попробовать вписать.
Ничего не стал делать , пошел по простому пути , через консоль игры и give weapon_*_*_live , всё заработало.
Уппс , только недавно заметил , что вы тоже этот вариант предложили . А так осталось понять стоит ли все эти c *LIVE отлавливать.
А так это типа - ты не успел откинуть подобранную обычную и винтовочную гранату . Вообщем типа самоубийства от гранат наверное так.
Вот видео - https://youtu.be/pjt8BccfX3k ..

Спасибо , тему наверное можно закрыть .. Особенно Спасибо за предоставленные циферки и значение их .

Добавлено (13.10.2018, 16:13:23)
---------------------------------------------
Цитата _wS_ ()
WEAPON_K98,

да кстати ты тут циферку забыл , а то хотел по твоему коду проверить что и как, пришлось самому расписывать заново в свой файлик :))
_wS_,
У меня вопросик не по теме больше к урокам или помощи относится .
Так вот у меня в плагине используется тоже
Цитата _wS_ ()
RegConsoleCmd("test", test_cmd);

Так вопрос в чем , если я использую к примеру Hookevent вместо RegConsoleCmd , то тогда будет такой код чтоль :
HookEvent("test", test_cmd) ?
А то хотел объединить 2 плагина в 1 . Но это RegConsoleCmd , меня путает немного ..


Сообщение отредактировал www22 - Суббота, 13.10.2018, 16:26:54
 
_wS_ Дата: Суббота, 13.10.2018, 18:43:56 | Сообщение # 10
Нет, HookEvent ловит только какие-то конкретные игровые события:
https://wiki.alliedmods.net/Day_of_Defeat:_Source_Events

RegConsoleCmd - ты создаешь новую команду или хукаешь существующую.
Смотри ж в api https://sm.alliedmods.net/api/ и SM wiki.
 
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Значение цифр (weapon_pos)
  • Страница 1 из 1
  • 1
Поиск: