Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Описание: Первый выпуск урока по Sourcepawn скриптинг для Sourcemod,
на новом синтаксисе. В данном видеоуроке рассмотрена установка среды скриптинга,
немного затрагивая типы переменных, классы, KeyValues формат данных.
Следующий выпуск:
Обзор основных событий, смерть игрока, появление игрока, заход на сервер, выход с сервера.
Функция написания в чат.
Обзор событий.
Написание Helloworld.
После второго выпуска, планирую уйти в условия, и массивы.
Решил делать выпуски с самого низа, от типов данных, и до сложных задач.
Потерял "самый главный" тип void. Новички будут спрашивать.
char это символ, а строка это уже массив символов.
У меню теперь свой класс Menu, а не хандл.
Не забывай про Function еще.
TopMenu
ArrayStack
StringMap (бывший trie)
Event
Regex и прочее.
Да забыл я про Menu, void. косяк
Потом всё равно для каждого класса нужно по выпуску делать.
Как-то мне сказал человек с большим опытом в программировании "пиши так как знаешь - главное чтобы работало, и если нужно будет делать оптимизацию - делай, но не изначально".
Я пытался выделять основные слова интонацией и отрезать их промежутками.
Видимо не очень вышло. И микрофон хреновый, я обработку делал... на удаление шума.
К автору видео. Эти замечания - критика и желание помочь разобраться в мелочах, раз уж есть желание делать обучающие видео. Если обучать, то сразу правильно, это нельзя сравнить с процессом написания плагина! Можно где-то опускать мелочи, но нельзя давать неправильную информацию.
Полностью отсутствует желание разбираться в важных деталях. Этот момент вызвал у меня глубочайшее сожаление, я уж надеялся, что наконец-то человек разобрался и сделал хоть вводное видео без грубейших ошибок, но нет...
Начинается ляп с самой фразы "классы для работы с переменными". А какой класс тогда не работает с переменными?
Каким образом здесь Handle оказалось в середине списка и рассказывается о нем наравне со всеми? Handle есть родительский класс всех этих классов, и это указатель на объект. Он может использоваться как все эти перечисленные классы, а они не могут использоваться в качестве него. Более того, это необходимо знать.
Второй ляп на данном скриншоте - опять имена переменных. Почему все переменные MyClass, а KeyValues kv? Потом возникают лишние вопросы, да и люди привыкают называть переменные так, как им угодно, без всякой логики.
В третьих, из-за незнания так и вышло, что пропущено как минимум 11 классов, основанных на Handle. В вики сурсмода они есть:
1 BitBuffers
2 ConVars
3 DataPacks
4 Directories
5 Database Drivers
6 Database Queries
7 Databases
8 Events
9 Files
10 Forwards
11 KeyValues
12 Plugins
13 Plugin Iterators
14 Protobuf
15 SMC Parsers
16 Timers
Опять ляп - везде до этого комментарии были написаны без своего знака, тут без объяснений они откуда-то появились, еще и были выделены нотепадом. Между тем в начале скрина стоит текст без комментариев, что вызовет у людей соответствующие сомнения.
Вторая ошибка - а почему именно Format? Не FormatEx(), или более подходящий для такой цели strcopy()?
Всё, что связано с КВ, просто ни о чем. Вообще. Лучше ничего не говорить, т.к. для того, чтобы рассказать про него, нужно как минимум минут 10 - структура кв, что такое секция, что такое ключ, попутно рассказать про SMC Parser, который тоже связан с КВ. Сейчас же это вызовет у человека лишь непонимание и страх перед работой с кв, не более.
Во-первых, от старого синтаксиса CloseHandle(), когда как можно использовать ключевое слово delete.
Во-вторых, зачем GoBack()?
Так же говорится про шаблон плагина. Шаблон это то, что мы можем применить к решению большинства задач. Код, представленный в уроке - далеко не шаблон. Примером шаблона может являться такой код:
C-подобный:
#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#define PLUGIN_VERSION "1.0.0.0"
public Plugin:myinfo =
{
name = "",
author = "AlexTheRegent",
description = "",
version = PLUGIN_VERSION,
url = ""
}
public OnPluginStart()
{
}
public OnMapStart()
{
}
public OnConfigsExecuted()
{
}
При написании плагина мне остается лишь вставить название плагина и всё. А в видео можно сказать "скомпилировать наш скрипт".
"... это предупреждения - ... плагин будет работать, но не совсем корректно".
C-подобный:
float myFloat = 5;
Будет warning 213: tag mismatch. В чем будет некорректность работы плагина?
Предупреждение - это лишь сообщение компилятора о том, что он не понимает, зачем это нужно (например, предупреждение 204 "переменная объявлена, но не используется" warning 204: symbol is assigned a value that is never used: "myFloat"), либо предупреждает, что данный код содержит потенциальную ошибку (то же 213 предупреждение - "несовпадение типов").
Это лишь те ошибки, которые сразу бросаются в глаза. Так что моё личное мнение - данное видео необходимо переделать, так как содержит в себе ошибки, в том числе и одну грубую - Handle, так как его нужно отнести к основным типам переменных, наравне с int, float, char.
Reiko1231, мне кажется, народ ждёт именно от тебя уроков по скриптингу, было бы приятно именно твои мануалы почитать и послушать))) чётко и ясно всё объясняешь. Так что просим)))
Объясни мне для начала что такое handle ибо я вообще не рублю что это такое, я уже несколько лет это использую но нихрена не понимаю что это такое.
я знаю его особенности, особенности утечки памяти, как корректно закрывать и прочее, но не понимаю что это.
написано что handle какойто объект, больше чем указатели в c/c++, но ваще ни о чём не говорит. https://wiki.alliedmods.net/Handles_(SourceMod_Scripting)
да и в прочем, я думаю можно уйти от Handle так как сейчас существуют классы
neatek3, Как я понимаю Handle - это указатель на нечто (область памяти), где хранится нужный объект.
Типа есть нечто (как СУБД для БД) например для меню, какой-то менеджер меню. Он хранит в себе имя меню, пункты, обратные вызовы и прочее. Вот хандл и есть ссылка на него. НО это только в моем понимании.
Если не прав - поправьте.
Могу помочь с уроками по kv, event, menu, db, нативами и форвардами.
На самом деле ты скинул полезную вещь, и я желаю чтобы разработчики Sourcemod насильно включили этот параметр по дефалту, и можно было бы также выключать. Тогда бы у меня проблем с new syntax не было бы. черт, говорить по англ проще чем по русски. долбанный Transitional Syntax...