Какой добавить урок?
|
|
_wS_
|
Дата: Суббота, 14.01.2012, 08:20:33 | Сообщение # 1 |
|
Если нужного вам урока ещё нет на форуме, то вы можете предложить добавить его.
|
|
| |
Geny
|
Дата: Пятница, 24.01.2014, 14:14:15 | Сообщение # 91 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
НЕОБХОДИМО добавить Урок "Правила передачи параметров к различным функциям"
Тут же: Перегрузка функций (Когда есть N функций с одинаковым именем и они могут принимать разные типы данных) при вызове такой функции Компилятор сам умеет решать к какой функцие относиться этот параметр..
Тут же: Рекурсивная функция
Сообщение отредактировал Geny - Пятница, 24.01.2014, 14:15:11 |
|
| |
Valeriks
|
Дата: Вторник, 04.02.2014, 00:25:12 | Сообщение # 92 |
|
Сообщений: 100
Репутация: 3 [ +/- ]
|
|
Хотелось бы увидеть пример запись в txt файл, в столбик, если такое возможно.
|
|
| |
Naykon
|
Дата: Понедельник, 01.12.2014, 11:53:14 | Сообщение # 93 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
от 1 до 64 - индексы игроков. от 65 до X - .... от X до Y - ....
и т д наверняка есть какаэто классификация.
|
|
| |
REgion
|
Дата: Вторник, 17.02.2015, 11:56:00 | Сообщение # 94 |
|
Сообщений: 31
Репутация: -2 [ +/- ]
|
|
Сделайте урок как добавить в плагин cfg файл
|
|
| |
Tokami
|
Дата: Вторник, 17.02.2015, 13:17:22 | Сообщение # 95 |
|
Сообщений: 238
Репутация: 19 [ +/- ]
|
|
REgion, AutoExecConfig(true, "my_plugin", "my_plugin");
|
|
| |
BarD
|
Дата: Вторник, 17.02.2015, 14:52:43 | Сообщение # 96 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
REgion, Вот тебе мини-урок по созданию cfg. Тебе понадобятся несколько функций: 1) native Handle:CreateConVar(const String:name[], const String:defaultValue[], const String:description[]="", flags=0, bool:hasMin=false, Float:min=0.0, bool:hasMax=false, Float:max=0.0); - функция создания параметра (cvar'a) Цитата Обязательные параметры: name (строка) - имя идентификатора, по которому находится твое значение. Оно может быть любым defaultValue (строка) - Значение. Может быть одним из 3х типов из примера ниже.
Необязательные параметры: description (строка) - Описание твоего параметра. За что отвечает и т.д. По умолчанию пустая. flags - это флаги, по которым сортируются параметры. Ниже будет список. hasMin (true/false) - true, если есть минимальное значение для твоего параметра. false - если нет. min (дробь) - если hasMin = true, то указываешь, какое минимальное значение для твоего параметра. hasMax (true/false) - true, если есть максимальное значение для твоего параметра. false - если нет. max (дробь) - если hasMax = true, то указываешь, какое максимальное значение для твоего параметра
Цитата Список флагов для cvar'ов (переводить лень, переведешь сам :) ) #define FCVAR_NONE 0 /**< The default, no flags at all */ #define FCVAR_UNREGISTERED (1<<0) /**< If this is set, don't add to linked list, etc. */ #define FCVAR_LAUNCHER (1<<1) /**< Defined by launcher. */ #define FCVAR_GAMEDLL (1<<2) /**< Defined by the game DLL. */ #define FCVAR_CLIENTDLL (1<<3) /**< Defined by the client DLL. */ #define FCVAR_MATERIAL_SYSTEM (1<<4) /**< Defined by the material system. */ #define FCVAR_PROTECTED (1<<5) /**< It's a server cvar, but we don't send the data since it's a password, etc. Sends 1 if it's not bland/zero, 0 otherwise as value. */ #define FCVAR_SPONLY (1<<6) /**< This cvar cannot be changed by clients connected to a multiplayer server. */ #define FCVAR_ARCHIVE (1<<7) /**< Set to cause it to be saved to vars.rc */ #define FCVAR_NOTIFY (1<<8) /**< Notifies players when changed. */ #define FCVAR_USERINFO (1<<9) /**< Changes the client's info string. */ #define FCVAR_PRINTABLEONLY (1<<10) /**< This cvar's string cannot contain unprintable characters (e.g., used for player name, etc.) */ #define FCVAR_UNLOGGED (1<<11) /**< If this is a FCVAR_SERVER, don't log changes to the log file / console if we are creating a log */ #define FCVAR_NEVER_AS_STRING (1<<12) /**< Never try to print that cvar. */ #define FCVAR_REPLICATED (1<<13) /**< Server setting enforced on clients. */ #define FCVAR_CHEAT (1<<14) /**< Only useable in singleplayer / debug / multiplayer & sv_cheats */ #define FCVAR_STUDIORENDER (1<<15) /**< Defined by the studiorender system. */ #define FCVAR_DEMO (1<<16) /**< Record this cvar when starting a demo file. */ #define FCVAR_DONTRECORD (1<<17) /**< Don't record these command in demo files. */ #define FCVAR_PLUGIN (1<<18) /**< Defined by a 3rd party plugin. */ #define FCVAR_DATACACHE (1<<19) /**< Defined by the datacache system. */ #define FCVAR_TOOLSYSTEM (1<<20) /**< Defined by an IToolSystem library */ #define FCVAR_FILESYSTEM (1<<21) /**< Defined by the file system. */ #define FCVAR_NOT_CONNECTED (1<<22) /**< Cvar cannot be changed by a client that is connected to a server. */ #define FCVAR_SOUNDSYSTEM (1<<23) /**< Defined by the soundsystem library. */ #define FCVAR_ARCHIVE_XBOX (1<<24) /**< Cvar written to config.cfg on the Xbox. */ #define FCVAR_INPUTSYSTEM (1<<25) /**< Defined by the inputsystem DLL. */ #define FCVAR_NETWORKSYSTEM (1<<26) /**< Defined by the network system. */ #define FCVAR_VPHYSICS (1<<27) /**< Defined by vphysics. */
2)AutoExecConfig(bool:autoCreate=true, const String:name[]="", const String:folder[]="sourcemod"); - функция создания самого .cfg файла.
Цитата autoCreate (true/false) - автосоздание .cfg файла. Если true - создается, если false - нет. name (строка) - название .cfg файла. folder (строка) - название папки, в которой будет .cfg файл. По умолчанию это cfg/sourcemod.(Не обязательно)
3) Handle:FindConVar(const String:name[]);
Цитата name (строка) - Имя cvar'а. Нужно для того, чтоб его найти.
Следующий код поможет тебе получить cvar'ы различных типов.
Код #include <sourcemod>
public OnPluginStart() { CreateConVar("cvar_integer", "10", "В cvar'e целое число (integer число)"); //Создаем cvar числа CreateConVar("cvar_float", "1.5", "В cvar'e дробное число (float число)"); //Создаем cvar дроби CreateConVar("cvar_string", "Бла-Бла-Бла", "В cvar'e строка (string)"); // Создаем cvar строки AutoExecConfig(true, "test_config", "addons/sourcemod/configs"); //Создаем конфиг для них в папке configs }
public OnMapStart() { new num = GetConVarInt(FindConVar("cvar_integer")); //Получаем целое число new Float:fl = GetConVarFloat(FindConVar("cvar_float")); //Получаем дробь new String:text[100]; GetConVarString(FindConVar("cvar_string")); //Получаем строку PrintToServer("Число: %d \n Дробь: %f \n Строка: %s", num, fl, text); //Выдаем } Поразбирай профессиональные плагины и посмотри, как устроено там. Есть еще различные хуки изменений cvar'ов и прочее. Удачного обучения!
|
|
| |
_R1KO_
|
Дата: Вторник, 17.02.2015, 15:51:26 | Сообщение # 97 |
|
Сообщений: 200
Репутация: 30 [ +/- ]
|
|
BarD, HookConVarChange и всё.
Сообщение отредактировал _R1KO_ - Вторник, 17.02.2015, 15:52:24 |
|
| |
Vadimreal
|
Дата: Воскресенье, 22.03.2015, 17:52:04 | Сообщение # 98 |
|
Сообщений: 13
Репутация: 0 [ +/- ]
|
|
WS , сделай пожалуйста урок как использовать цвет {teamcolor} в плагинах. В интернете нашел это... CPrintToChatEx(Индекс клиента для цвета определения цвета сообщения, Индекс клиента, которому будет отослано сообщение, "Сообщение")
CPrintToChatAllEx(Индекс клиента для определения цвета сообщения, "Сообщение")
Думаю всем будет интересно если ты расскажешь нам поподробней как же все таки использовать этот цвет
|
|
| |
_R1KO_
|
Дата: Воскресенье, 22.03.2015, 18:53:34 | Сообщение # 99 |
|
Сообщений: 200
Репутация: 30 [ +/- ]
|
|
Код new Handle:hMsg = StartMessageAll("SayText2"); if (hMsg != INVALID_HANDLE) { BfWriteByte(hMsg, iAuthor); BfWriteByte(hMsg, true); BfWriteString(hMsg, "\x03наше сообщение"); EndMessage(); } iAuthor - это индекс игрока, на основе которого будет взят цвет \x03 (он же {teamcolor})
|
|
| |
Vadimreal
|
Дата: Понедельник, 23.03.2015, 07:45:50 | Сообщение # 100 |
|
Сообщений: 13
Репутация: 0 [ +/- ]
|
|
RIKO спасибо, но мне это не особо помогло... можешь для примера написть как это будет выглядеть на каком нибудь простом плагине где будет использоваться teamcolorЦитата _R1KO_ ( ) RIKO спасибо, но мне это не особо помогло... можешь для примера написть как это будет выглядеть на каком нибудь простом плагине где будет использоваться teamcolor
|
|
| |
_R1KO_
|
Дата: Понедельник, 23.03.2015, 12:00:22 | Сообщение # 101 |
|
Сообщений: 200
Репутация: 30 [ +/- ]
|
|
Vadimreal, Просто используй этот код вместо PrintToChat
|
|
| |
Nahal
|
Дата: Среда, 29.04.2015, 09:35:15 | Сообщение # 102 |
|
Сообщений: 205
Репутация: 8 [ +/- ]
|
|
Добавьте урок, как файлы прописать в csrike/cfg/какая-то папка/xz.txt & xz.cfg
|
|
| |
шарен
|
Дата: Понедельник, 03.08.2015, 21:38:03 | Сообщение # 103 |
|
Сообщений: 5
Репутация: 0 [ +/- ]
|
|
Хочу узнать как заставить плагин писать error log, и другие логи в свой txt файл.
|
|
| |
Jon4ik
|
Дата: Понедельник, 03.08.2015, 21:59:55 | Сообщение # 104 |
|
Сообщений: 278
Репутация: 7 [ +/- ]
|
|
шарен, сделай логирование можно такКод new String:logFile[256];
decl String:thetime[64]; FormatTime(thetime, 64, "%d-%m-%Y", -1); BuildPath(Path_SM, logFile, 256, "logs/LOG_%s.log", thetime); LogToFile(logFile, "Текст");
насчет error логов не уверен что возможно перехватить их/заставить писать в другой файл
|
|
| |
SupermenCJ
|
Дата: Вторник, 03.11.2015, 09:16:57 | Сообщение # 105 |
|
Сообщений: 1
Репутация: 0 [ +/- ]
|
|
Прошу добавить урок по обновленному синтаксису SourcePawn. Думаю, многим поможет с переходом на новый синтаксис при написании плагинов или переводе на новый стиль уже существующих.
|
|
| |