PDA

Просмотр полной версии : [Мануал] GetConsoleVarAsInt & GetConsoleVarAsString



KrutoyKrosch
04.11.2016, 18:19
Привет всем. Хотел бы вам рассказать о довольно интересных функциях в версии 0.3.7 и как их можно применять.



GetConsoleVarAsInt(const varname[]);
GetConsoleVarAsString(const varname[], buffer[], len);


GetConsoleVarAsInt - узнает чему равна переменная типа int на сервере
GetConsoleVarAsString- узнает чему равна переменная типа string на сервере

Что это за переменные и где можно добыть их названия?
Все эти переменные находятся в файле server.cfg
http://wiki.sa-mp.com/wiki/Server.cfg

А почему нету типа Float?
В этом случае числа Float носят тип String

Для чего можно использовать?

На сервер можно будет добавить такие вещи как узнать например IP сервера



new ip[18];
GetConsoleVarAsString("bind", ip, sizeof(ip)); // переменная bind на сервере хранит в себе ip сервера (чаще всего ее прописывают владельцы хостингов)
SendClientMessage(playerid, -1, ip);


или же можно упростить себе скриптинг, думаю многие сталкивались с такой проблемой как тест мода на ПК и надо было менять данные пользователя базы, лично у меня на ПК стоит порт 7777, а на хостинге 7242



if(GetConsoleVarAsInt("port") == 7777) // переменная port на сервере хранит в себе порт сервера
mysqlconnect = mysql_connect(/*подключаемся к базе которая на вашем ПК*/);
else
mysqlconnect = mysql_connect(/*подключаемся к базе которая на хостинге*/);


Автор темы: KrutoyKrosch

vovandolg
04.11.2016, 18:44
Хорошая штука чтобы моды/скрипты для продажи привязывать по IP и порту)

DeimoS
04.11.2016, 19:13
Только вот ты не уточнил, что если, в случае с примером в твоей статье, "bind" не будет прописана в server.cfg или будет пуста, сервер просто крашнет

KrutoyKrosch
04.11.2016, 19:23
думал люди поймут


(чаще всего ее прописывают владельцы хостингов)

wAx
04.11.2016, 19:47
эта тема больше подходит для раздела "Функции"

Daniel_Cortez
04.11.2016, 21:41
Хорошая штука чтобы моды/скрипты для продажи привязывать по IP и порту)
Такую защиту легко обмануть: достаточно просто подменить GetConsoleVarAsString с помощью плагина на свою функцию.

_lizard
05.11.2016, 00:50
Такую защиту легко обмануть: достаточно просто подменить GetConsoleVarAsString с помощью плагина на свою функцию.

Но врядли, люди, которые воруют моды/скрипты (про хацкеры левел 100500) смогут написать свой плагин

Nexius_Tailer
05.11.2016, 00:51
Привязка к ипу вообще вещь бесполезная.
Кто-то делает через оправки http-запросов на специальные сайты, которые узнают ип, но даже это можно абсолютно не напрягаясь обойти, чуть отредактировав файл hosts (на windows)

DeimoS
05.11.2016, 11:09
На любую защиту найдётся способ обхода. Борьба с пиратством в игровой индустрии как бы намекает на это

KrutoyKrosch
05.11.2016, 13:16
На любую защиту найдётся способ обхода. Борьба с пиратством в игровой индустрии как бы намекает на это

Need For Speed 2016 намекает на обратное

DeimoS
05.11.2016, 14:09
Need For Speed 2016 намекает на обратное

SimCity 2013 тоже пользовалась подобной защитой, когда часть игры хранилась на серверах EA и так же требовалось постоянное подключение к сети для игры. И так же писали, мол невозможно взломать, но, в итоге, где-то через год слили с этих серверов нужные файлы и сделали свой эмулятор.
Так что дай пиратам лишь немного времени и всё будет

KrutoyKrosch
05.11.2016, 15:03
Уже много времени прошло, NFS 2015 тоже ломануть не могут

DeimoS
05.11.2016, 15:56
Уже много времени прошло, NFS 2015 тоже ломануть не могут

Как я уже говорил ранее, SimCity тоже взламывали несколько лет. Так же и АС 2, который так же использовал DRP защиту и требовал постоянного подключения к интернету, взломали через определённое время. И таких игр можно ещё найти множество.

Нет такой защиты, которую нельзя было бы обойти. Ибо те же игры, о которых мы говорим, запускаются на ПК пользователя, а значит 100% контролировать весь процесс ты не можешь (как и в случае с NOP/другими читами для SA-MP). Можно лишь вставить палки в колёса обычным игрокам (та же защита с требованием постоянного подключения к сети отпугивает большой процент "легальных" игроков, у которых просто нет возможности постоянно сидеть в интернете: трафик/плохая скорость и т.п.), но и эти палки можно убрать, если правильно к ним подобраться.
Да и не будем забывать о такой штуке, как человеческий фактор. В той же iOS постоянно находят дыры, через которые взламывают эту систему и делают очередной JailBreak. Хотя там многомиллионная компания

P.S. SimCity взломали после того, как то ли ломанули сервера EA, где была недостающая часть игры, то ли когда один из сотрудников слил эти файлы. То же ждёт и NFS, если умельцы раньше не найдут способа как всё реализовать без них

Nexius_Tailer
05.11.2016, 19:59
На любую защиту найдётся способ обхода. Борьба с пиратством в игровой индустрии как бы намекает на это
Не на любую, а только на ту, которая установлена на компе у игрока, т.е. может им полностью контролироваться, как ты сам и написал (будь то защита от кражи мода или клиентсайд античит), а пиратство в играх есть, пока игры стоят на компьютерах игроков.

DeimoS
05.11.2016, 22:38
Не на любую, а только на ту, которая установлена на компе у игрока, т.е. может им полностью контролироваться, как ты сам и написал (будь то защита от кражи мода или клиентсайд античит), а пиратство в играх есть, пока игры стоят на компьютерах игроков.

Даже защиту не на стороне пользователя можно обойти (черви и т.п.). Просто это в разы сложнее будет, нежели на стороне игрока, и пресекаться будет быстрее. Всё, что построено человеком, им же и может быть разрушено.

vovandolg
05.11.2016, 22:46
У майкрософта же не хакнули современные продукты(не все по крайней мере):crazy:

Nexius_Tailer
05.11.2016, 23:08
Даже защиту не на стороне пользователя можно обойти (черви и т.п.). Просто это в разы сложнее будет, нежели на стороне игрока, и пресекаться будет быстрее. Всё, что построено человеком, им же и может быть разрушено.
Если делать абсолютно всё через серверсайд, вплоть до того, чтобы клиент отправлял лишь нажатые клавиши, а ему устанавливалась в зависимости от этого позиция и т.п. - обойти действительно невозможно, просто в принципе нельзя. Другое дело, такой подход на данный момент реализован мало где и работает не идеально. То же пиратство можно было бы полностью искоренить, находясь игры полностью на серверах разработчика, лишь транслируя видео-поток пользователям (будь ещё интернет у тех более быстрым). Вопрос времени.

DeimoS
06.11.2016, 00:29
Если делать абсолютно всё через серверсайд, вплоть до того, чтобы клиент отправлял лишь нажатые клавиши, а ему устанавливалась в зависимости от этого позиция и т.п. - обойти действительно невозможно, просто в принципе нельзя. Другое дело, такой подход на данный момент реализован мало где и работает не идеально. То же пиратство можно было бы полностью искоренить, находясь игры полностью на серверах разработчика, лишь транслируя видео-поток пользователям (будь ещё интернет у тех более быстрым). Вопрос времени.

Имеется ввиду не отправка левых пакетов во время игры, а заранее засланный на сервера вирус, который уже позволит шаманить с игрой всё, что угодно.

Хоть такой вирус и быстро отловят (да и найти дыру, сквозь которую этот вирус можно пропустить - тоже не из лёгких задача), но это так же является обходом защиты :)

Да и, опять же, всё сведётся к тому, что хацкеры начнут пытаться эти игры с серверов игроделов скачивать и пилить эмуляторы. Робин Гудов всегда будет больше, нежели шерифов. Тут уж ничего не поделать.

- - - Добавлено - - -


У майкрософта же не хакнули современные продукты(не все по крайней мере):crazy:

Например?

ziggi
06.11.2016, 01:10
Если делать абсолютно всё через серверсайд, вплоть до того, чтобы клиент отправлял лишь нажатые клавиши, а ему устанавливалась в зависимости от этого позиция и т.п. - обойти действительно невозможно, просто в принципе нельзя. Другое дело, такой подход на данный момент реализован мало где и работает не идеально. То же пиратство можно было бы полностью искоренить, находясь игры полностью на серверах разработчика, лишь транслируя видео-поток пользователям (будь ещё интернет у тех более быстрым). Вопрос времени.

Обойти тоже возможно. Проникнуть в компанию (устроиться на работу, например), и скачать/украсть копию игры, а если её нет, то вытащить нужный сервак, а потом разбираться с ним дома.

vovandolg
06.11.2016, 01:20
Например?

Пусть будет VS 2015 фулл лицензия, взломали думаешь?

KrutoyKrosch
06.11.2016, 02:37
Есть единственный правильный ход. Не выпускать игры на ПК, только консоли, консоли, консоли

ziggi
06.11.2016, 02:37
Пусть будет VS 2015 фулл лицензия, взломали думаешь?

На трекерах лежит, да там и взламывать ничего не надо - ключ ввёл и всё (но большинству достаточно community версии).

DeimoS
06.11.2016, 11:39
Есть единственный правильный ход. Не выпускать игры на ПК, только консоли, консоли, консоли

Консоли ведь тоже пиратят. Просто нужно прошивать свою консоль, что добавит ряд негативных последствий, и всё.
Люди падки на халяву и с этим ничего не поделать.

KrutoyKrosch
06.11.2016, 14:22
Прошивок нету. Только на ИКС БОКС сделали там чо то и то это было сделано специально для пиратства. На PS была тоже прошивка (бразильская называлась вроде бы), но ее прикрыли сразу через несколько дней

Nexius_Tailer
06.11.2016, 19:04
Обойти тоже возможно. Проникнуть в компанию (устроиться на работу, например), и скачать/украсть копию игры, а если её нет, то вытащить нужный сервак, а потом разбираться с ним дома.
Только в этом уже будет виновато не программное обеспечение защиты, а люди. А это уже совсем другое.

KrutoyKrosch
06.11.2016, 19:46
Только в этом уже будет виновато не программное обеспечение защиты, а люди. А это уже совсем другое.

Можно сделать как в айфонах, поставить на сервер пароль, 1 раз ввел неверный пароль - удаляются все данные. А то что 1 раз ввел неверный пароль и все удаляется будет знать только глава