Русское сообщество по скриптингу

Добавляем синтаксис в notepad

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

Добавляем синтаксис в notepad

Сообщение BaJIeHoK » 22 май 2014, 18:28

Приветствую всех.
В данном статье расскажу как добавить синтаксис функций для notepad - иными словами вам будет доступен выбора функции до её полного дописания. Даже незнаю как ещё выразится.

И так
1. Скачиваем Notepad++ с официального сайта Вы должны зарегистрироваться, чтобы видеть ссылки. - если он у вас уже есть, то можно пропустить данный шаг
2. Скачивает программу -
AMXX Natives Parser for Notepad.zip

3. Переносим папку на рабочий стол, открываем - видим внутри exe файл и папку include - в ней уже собрано множество инклудов, но если у вас есть ещё - закидывайте туда и запускаете программу - если инклудов мало, то у вас на секунду мелкнет cmd окно и в той же папке появится файл SMA.xml

4. Если путь установки Notepad++ стандартный, тоесть C:\Program Files\Notepad++ или C:\Program Files (x86)\Notepad++ , то можете пропустить данный шаг, а если нет, то берете данный xml файл и закидываете его в папку Ваш путь\Notepad++\plugins\APIs
1.JPG


5. Открываем Notepad++, в навигационном меню сверху выбираем - Синтаксис и там выбираем - Задать свой синтаксис

2.JPG


6. Нажимаем на кнопку Создать и вводим имя - SMA
6.1 Там же в поле Расшр.: вводим sma
6.2 Выходим из этого окна, нажав на крестик, а так же закрываем сам Notepad++ нажав на крестик
3.JPG


7. Открываем Notepad++ и пробуем замутить какой-либо плагин. Вот, что примерно должно получится
5.JPG

6.JPG


Разработчик: claudiuhks
Информация взята: Вы должны зарегистрироваться, чтобы видеть ссылки.. ... tcount=287

p.s я ток перевел =)

Добавлено спустя 5 минут 22 секунды:
Поправка
Разработчик: Arkshine
Модификация сделана: claudiuhks
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
BaJIeHoK
 
Сообщения: 80
Зарегистрирован: 03 апр 2014, 23:49
Откуда: Москва
Забанен
Благодарил (а): 12 раз.
Поблагодарили: 55 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6

Re: Добавляем синтаксис в notepad

Сообщение sa1me » 22 май 2014, 22:25

Большое спасибо :thumbs_up , очень полезная штука получается :thumbs_up
Аватара пользователя
sa1me
 
Сообщения: 361
Зарегистрирован: 07 апр 2014, 20:51
Откуда: pfnAddToFullPack
Благодарил (а): 174 раз.
Поблагодарили: 177 раз.
Опыт программирования: Меньше недели

Re: Добавляем синтаксис в notepad

Сообщение Safety1st » 23 май 2014, 20:54

Программа, запущенная с правами администратора, умеет сама кидать получившийся XML-файл в нужное место.

В наборе я рекомендую использовать только нужные инклуды, чтобы работало пошустрее и левой инфой не грузило. Закинул програмку прямо в папку amxmodx/scripting, в подпапке include снёс все dod*, ns*, tfc*, ts* и сгенерировал XML-файл.

У меня и автозавершение, и автоподсказки по синтаксису функций были выключены в настройках Notepad++ (Опции -> Автозавершение). И то, и то - автоматически, наверное, лишнее, а вызвать их по требованию можно комбинациями Ctrl+Пробел / Ctrl+Shift+Пробел соответственно или через меню Правка -> Автозавершение ввода -> ...

Когда новый документ только создан, Notepad++ нужно дать понять, что вы собираетесь набирать код на pawn'е, явно выбрав SMA в меню 'Синтаксис' (в анлийской версии пункт называется интуитивно понятнее - Language, язык). Текущий язык указывается в левом нижнем углу, галочка в меню у активного пользовательского языка НЕ появляется, как в случае со встроенными. Когда открывается существующий документ - переключение на язык SMA происходит автоматически: детект по расширению файла.


Жаль, что из 'готового' только автозавершение и подсказки по синтаксису, но нет подсветки кода: всё чёрное-белое. Первое, конечно, время здорово когда-то экономит: быстрее увидеть здесь и сейчас, чем самому лезть в инклуд, но без второго работать нереально. Зато, по крайней мере, хотя бы 'переключаться' между 'синтаксисом' SMA и C++ легко... Боюсь, подсветку наподобие как у C++ не замутить: та - интегрированная, летает. Пробовал раньше какой-то вариант через UDL - не понравилось: всё тормозило и цвета непривычные. Найти простой способ заюзать подсветку C++ для Pawn'а у меня не получилось.
GoldSrc Gaming Community
Аватара пользователя
Safety1st
 
Сообщения: 1958
Зарегистрирован: 08 окт 2011, 05:41
Откуда: Moscow
Благодарил (а): 1690 раз.
Поблагодарили: 933 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: Добавляем синтаксис в notepad

Сообщение sa1me » 23 май 2014, 21:00

Developer, на форуме ведь есть тутор, как включить подсветку кода как в C++ в sma файлах
Аватара пользователя
sa1me
 
Сообщения: 361
Зарегистрирован: 07 апр 2014, 20:51
Откуда: pfnAddToFullPack
Благодарил (а): 174 раз.
Поблагодарили: 177 раз.
Опыт программирования: Меньше недели

Re: Добавляем синтаксис в notepad

Сообщение Safety1st » 23 май 2014, 21:03

Я добавил sma к списку расширений C++ - ничего не изменилось. Ok, поищу, раз есть.
GoldSrc Gaming Community
Аватара пользователя
Safety1st
 
Сообщения: 1958
Зарегистрирован: 08 окт 2011, 05:41
Откуда: Moscow
Благодарил (а): 1690 раз.
Поблагодарили: 933 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: Добавляем синтаксис в notepad

Сообщение sa1me » 23 май 2014, 22:44

Developer, Вы должны зарегистрироваться, чтобы видеть ссылки. :thumbs_up вы наверное не выполнили некоторые действия из тутора)
Аватара пользователя
sa1me
 
Сообщения: 361
Зарегистрирован: 07 апр 2014, 20:51
Откуда: pfnAddToFullPack
Благодарил (а): 174 раз.
Поблагодарили: 177 раз.
Опыт программирования: Меньше недели

Re: Добавляем синтаксис в notepad

Сообщение Safety1st » 24 май 2014, 00:16

В том туторе единственное действие - добавить в список расширений sma, до этого я сам догадался и сразу сделал - не помогло, потому что 'вступило в конфликт' с пользовательским языком - SMA, на который назначено то же самое расширение. Его нужно убрать, чтобы по дефолту видеть подсветку C++. Но 'проблема' в другом: подсказки, о которых речь в топике, работают только в UDL. Соответственно, в языке C++ они не работают, а в SMA пропадает подсветка. Какую-то подсветку нужно делать ручками именно для UDL, чтобы и код pawn посвечивался, и подсказки были.
GoldSrc Gaming Community
Аватара пользователя
Safety1st
 
Сообщения: 1958
Зарегистрирован: 08 окт 2011, 05:41
Откуда: Moscow
Благодарил (а): 1690 раз.
Поблагодарили: 933 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: Добавляем синтаксис в notepad

Сообщение Plrip » 24 май 2014, 03:19

Всё намного проще :zzz:

Если Вы настраивали по этой статье Вы должны зарегистрироваться, чтобы видеть ссылки. , желательно удалить нотепад + удалить его записи в реестре.

1. Скачиваем новый нотепад++ Вы должны зарегистрироваться, чтобы видеть ссылки. , устанавливаем.
Идём в опции - настройки- автозавершение
45645.png

делаем как на картинке.

В этом же окне переходим в - Новый документ (если хотите, чтобы новый документ определялся, как исходный код С++)
Ставим - Синтаксис по умолч.: С++

Жмём закрыть.

Далее переходим в опции - определение стилей - в колонке язык выбираем С++
534636.png

вводим Польз. расширение sma(можно добавить и другие)
жмём Ок.
Закрываем нотепад.

2.Переходим в каталог C:\Program Files (x86)\Notepad++\ (стандартный путь)

Открываем нотепадом файлик langs.model.хмл

Ищем строку :
Код: Выделить всё
<Language name="cpp" ext="h hpp hxx cpp cxx cc" commentLine="//" commentStart="/*" commentEnd="*/">  


заменяем на :

Код: Выделить всё
<Language name="cpp" ext="h hpp hxx cpp cxx cc sma" commentLine="//" commentStart="/*" commentEnd="*/">  


Клацаем сохранить.

В папке AMXX Natives' Parser for Notepad++ из архива
создаём наш файл sma как написано в статье.
Допустим у нас только инклуд core

Код: Выделить всё
<?xml version="1.0" encoding="Windows-1252" ?>
<NotepadPlus>
    <AutoComplete language="SMA">
        <Environment ignoreCase="no" startFunc="(" stopFunc=")" paramSeparator=", " terminal="; " additionalWordChar=""/>
        <KeyWord name="_core_included" func="yes">
            <Overload retVal="" >
            </Overload>
        </KeyWord>
        <KeyWord name="heapspace" func="yes">
            <Overload retVal="" >
            </Overload>
        </KeyWord>
        <KeyWord name="funcidx" func="yes">
            <Overload retVal="" >
                <Param name="const name[]" />
            </Overload>
        </KeyWord>
        <KeyWord name="numargs" func="yes">
            <Overload retVal="" >
            </Overload>
        </KeyWord>
        <KeyWord name="getarg" func="yes">
            <Overload retVal="" >
                <Param name="arg" />
                <Param name="index=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="setarg" func="yes">
            <Overload retVal="" >
                <Param name="arg" />
                <Param name="index=0" />
                <Param name="value" />
            </Overload>
        </KeyWord>
        <KeyWord name="strlen" func="yes">
            <Overload retVal="" >
                <Param name="const string[]" />
            </Overload>
        </KeyWord>
        <KeyWord name="tolower" func="yes">
            <Overload retVal="" >
                <Param name="c" />
            </Overload>
        </KeyWord>
        <KeyWord name="toupper" func="yes">
            <Overload retVal="" >
                <Param name="c" />
            </Overload>
        </KeyWord>
        <KeyWord name="swapchars" func="yes">
            <Overload retVal="" >
                <Param name="c" />
            </Overload>
        </KeyWord>
        <KeyWord name="random" func="yes">
            <Overload retVal="" >
                <Param name="max" />
            </Overload>
        </KeyWord>
        <KeyWord name="min" func="yes">
            <Overload retVal="" >
                <Param name="value1" />
                <Param name="value2" />
            </Overload>
        </KeyWord>
        <KeyWord name="max" func="yes">
            <Overload retVal="" >
                <Param name="value1" />
                <Param name="value2" />
            </Overload>
        </KeyWord>
        <KeyWord name="clamp" func="yes">
            <Overload retVal="" >
                <Param name="value" />
                <Param name="min=cellmin" />
                <Param name="max=cellmax" />
            </Overload>
        </KeyWord>
        <KeyWord name="power" func="yes">
            <Overload retVal="" >
                <Param name="value" />
                <Param name="exponent" />
            </Overload>
        </KeyWord>
        <KeyWord name="sqroot" func="yes">
            <Overload retVal="" >
                <Param name="value" />
            </Overload>
        </KeyWord>
        <KeyWord name="time" func="yes">
            <Overload retVal="" >
                <Param name="&hour=0" />
                <Param name="&minute=0" />
                <Param name="&second=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="date" func="yes">
            <Overload retVal="" >
                <Param name="&year=0" />
                <Param name="&month=0" />
                <Param name="&day=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="tickcount" func="yes">
            <Overload retVal="" >
                <Param name="&granularity=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="abs" func="yes">
            <Overload retVal="" >
                <Param name="x" />
            </Overload>
        </KeyWord>
    </AutoComplete>
</NotepadPlus>



Вырезаем середину с кнопками, вот так

Код: Выделить всё
<KeyWord name="_core_included" func="yes">
            <Overload retVal="" >
            </Overload>
        </KeyWord>
        <KeyWord name="heapspace" func="yes">
            <Overload retVal="" >
            </Overload>
        </KeyWord>
        <KeyWord name="funcidx" func="yes">
            <Overload retVal="" >
                <Param name="const name[]" />
            </Overload>
        </KeyWord>
        <KeyWord name="numargs" func="yes">
            <Overload retVal="" >
            </Overload>
        </KeyWord>
        <KeyWord name="getarg" func="yes">
            <Overload retVal="" >
                <Param name="arg" />
                <Param name="index=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="setarg" func="yes">
            <Overload retVal="" >
                <Param name="arg" />
                <Param name="index=0" />
                <Param name="value" />
            </Overload>
        </KeyWord>
        <KeyWord name="strlen" func="yes">
            <Overload retVal="" >
                <Param name="const string[]" />
            </Overload>
        </KeyWord>
        <KeyWord name="tolower" func="yes">
            <Overload retVal="" >
                <Param name="c" />
            </Overload>
        </KeyWord>
        <KeyWord name="toupper" func="yes">
            <Overload retVal="" >
                <Param name="c" />
            </Overload>
        </KeyWord>
        <KeyWord name="swapchars" func="yes">
            <Overload retVal="" >
                <Param name="c" />
            </Overload>
        </KeyWord>
        <KeyWord name="random" func="yes">
            <Overload retVal="" >
                <Param name="max" />
            </Overload>
        </KeyWord>
        <KeyWord name="min" func="yes">
            <Overload retVal="" >
                <Param name="value1" />
                <Param name="value2" />
            </Overload>
        </KeyWord>
        <KeyWord name="max" func="yes">
            <Overload retVal="" >
                <Param name="value1" />
                <Param name="value2" />
            </Overload>
        </KeyWord>
        <KeyWord name="clamp" func="yes">
            <Overload retVal="" >
                <Param name="value" />
                <Param name="min=cellmin" />
                <Param name="max=cellmax" />
            </Overload>
        </KeyWord>
        <KeyWord name="power" func="yes">
            <Overload retVal="" >
                <Param name="value" />
                <Param name="exponent" />
            </Overload>
        </KeyWord>
        <KeyWord name="sqroot" func="yes">
            <Overload retVal="" >
                <Param name="value" />
            </Overload>
        </KeyWord>
        <KeyWord name="time" func="yes">
            <Overload retVal="" >
                <Param name="&hour=0" />
                <Param name="&minute=0" />
                <Param name="&second=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="date" func="yes">
            <Overload retVal="" >
                <Param name="&year=0" />
                <Param name="&month=0" />
                <Param name="&day=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="tickcount" func="yes">
            <Overload retVal="" >
                <Param name="&granularity=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="abs" func="yes">
            <Overload retVal="" >
                <Param name="x" />
            </Overload>
        </KeyWord


Идём в каталог C:\Program Files (x86)\Notepad++\plugins\APIs (стандартный путь)

открываем файл срр.хмл

Тут два варианта:

1.Вам нужно с++ и pawn автозавершение ,тогда

Код: Выделить всё
<Environment ignoreCase="no" startFunc="(" stopFunc=")" paramSeparator="," terminal=";" additionalWordChar=""/>
        <!--
        The following items should be alphabetically ordered.
        func="yes" means the keyword should be treated as a fuction, and thus can be used in the parameter
        calltip system
. If this is the case, the retVal attribute specifies the return value/type. Any
        following Param tag specifies a parameter
, they must be in order. The name attributes specifies
        the parameter name
.
        -->


После строк выше вставляем свой кусок кода заготовленный ранее, получается следующее:

cpp.xml


Нажимаем сохранить.

2. Вам не нужен никакой с++, только pawn

В файле срр.хмл смело удаляем всё кроме

Код: Выделить всё
<?xml version="1.0" encoding="Windows-1252" ?>
<NotepadPlus>
    <!-- language doesnt really mean anything, its more of a comment -->
    <AutoComplete language="C++">
        <!--
        Environment specifies how the language should be interpreted. ignoreCase makes autocomplete
        ignore any casing, start and stopFunc specify what chars a function starts and stops with.
        param specifies parameter separator and terminal can be used to specify a character that stops
        any function. Using the same character for different functions results in undefined behaviour.
        
        05/11/2009
        The basic word character are : A-Z a-z 0-9 and '_' 
        If your function name contains other characters,
        add your characters in "additionalWordChar" attribute (without separator)
        in order to make calltip hint work
        -->
        <Environment ignoreCase="no" startFunc="(" stopFunc=")" paramSeparator="," terminal=";" additionalWordChar=""/>
        <!--
        The following items should be alphabetically ordered.
        func="yes" means the keyword should be treated as a fuction, and thus can be used in the parameter
        calltip system. If this is the case, the retVal attribute specifies the return value/type. Any
        following Param tag specifies a parameter, they must be in order. The name attributes specifies
        the parameter name.
        -->

       здесь вставляем код из sma


</AutoComplete>
</NotepadPlus>


на выходе имеем :

Код: Выделить всё
<?xml version="1.0" encoding="Windows-1252" ?>
<NotepadPlus>
    <!-- language doesnt really mean anything, its more of a comment -->
    <AutoComplete language="C++">
        <!--
        Environment specifies how the language should be interpreted. ignoreCase makes autocomplete
        ignore any casing, start and stopFunc specify what chars a function starts and stops with.
        param specifies parameter separator and terminal can be used to specify a character that stops
        any function. Using the same character for different functions results in undefined behaviour.
        
        05/11/2009
        The basic word character are : A-Z a-z 0-9 and '_' 
        If your function name contains other characters,
        add your characters in "additionalWordChar" attribute (without separator)
        in order to make calltip hint work
        -->
        <Environment ignoreCase="no" startFunc="(" stopFunc=")" paramSeparator="," terminal=";" additionalWordChar=""/>
        <!--
        The following items should be alphabetically ordered.
        func="yes" means the keyword should be treated as a fuction, and thus can be used in the parameter
        calltip system. If this is the case, the retVal attribute specifies the return value/type. Any
        following Param tag specifies a parameter, they must be in order. The name attributes specifies
        the parameter name.
        -->

        <KeyWord name="_core_included" func="yes">
            <Overload retVal="" >
            </Overload>
        </KeyWord>
        <KeyWord name="heapspace" func="yes">
            <Overload retVal="" >
            </Overload>
        </KeyWord>
        <KeyWord name="funcidx" func="yes">
            <Overload retVal="" >
                <Param name="const name[]" />
            </Overload>
        </KeyWord>
        <KeyWord name="numargs" func="yes">
            <Overload retVal="" >
            </Overload>
        </KeyWord>
        <KeyWord name="getarg" func="yes">
            <Overload retVal="" >
                <Param name="arg" />
                <Param name="index=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="setarg" func="yes">
            <Overload retVal="" >
                <Param name="arg" />
                <Param name="index=0" />
                <Param name="value" />
            </Overload>
        </KeyWord>
        <KeyWord name="strlen" func="yes">
            <Overload retVal="" >
                <Param name="const string[]" />
            </Overload>
        </KeyWord>
        <KeyWord name="tolower" func="yes">
            <Overload retVal="" >
                <Param name="c" />
            </Overload>
        </KeyWord>
        <KeyWord name="toupper" func="yes">
            <Overload retVal="" >
                <Param name="c" />
            </Overload>
        </KeyWord>
        <KeyWord name="swapchars" func="yes">
            <Overload retVal="" >
                <Param name="c" />
            </Overload>
        </KeyWord>
        <KeyWord name="random" func="yes">
            <Overload retVal="" >
                <Param name="max" />
            </Overload>
        </KeyWord>
        <KeyWord name="min" func="yes">
            <Overload retVal="" >
                <Param name="value1" />
                <Param name="value2" />
            </Overload>
        </KeyWord>
        <KeyWord name="max" func="yes">
            <Overload retVal="" >
                <Param name="value1" />
                <Param name="value2" />
            </Overload>
        </KeyWord>
        <KeyWord name="clamp" func="yes">
            <Overload retVal="" >
                <Param name="value" />
                <Param name="min=cellmin" />
                <Param name="max=cellmax" />
            </Overload>
        </KeyWord>
        <KeyWord name="power" func="yes">
            <Overload retVal="" >
                <Param name="value" />
                <Param name="exponent" />
            </Overload>
        </KeyWord>
        <KeyWord name="sqroot" func="yes">
            <Overload retVal="" >
                <Param name="value" />
            </Overload>
        </KeyWord>
        <KeyWord name="time" func="yes">
            <Overload retVal="" >
                <Param name="&hour=0" />
                <Param name="&minute=0" />
                <Param name="&second=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="date" func="yes">
            <Overload retVal="" >
                <Param name="&year=0" />
                <Param name="&month=0" />
                <Param name="&day=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="tickcount" func="yes">
            <Overload retVal="" >
                <Param name="&granularity=0" />
            </Overload>
        </KeyWord>
        <KeyWord name="abs" func="yes">
            <Overload retVal="" >
                <Param name="x" />
            </Overload>
        </KeyWord>
        
</AutoComplete>
</NotepadPlus>

Жмём сохранить.

Удачи. ]:->
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Status:
Аватара пользователя
Plrip
Скриптер
 
Сообщения: 2903
Зарегистрирован: 03 дек 2011, 19:33
Откуда: Ukraine
Благодарил (а): 237 раз.
Поблагодарили: 603 раз.
Языки программирования: Counter-Strike 1.6
X-Ray
Killing-Floor [low]

Re: Добавляем синтаксис в notepad

Сообщение NEYDA4NIK » 24 май 2014, 13:43

Аватара пользователя
NEYDA4NIK
 
Сообщения: 36
Зарегистрирован: 26 фев 2014, 16:02
Благодарил (а): 9 раз.
Поблагодарили: 17 раз.

Re: Добавляем синтаксис в notepad

Сообщение Plrip » 24 май 2014, 14:01

NEYDA4NIK, нет.

Status:
Аватара пользователя
Plrip
Скриптер
 
Сообщения: 2903
Зарегистрирован: 03 дек 2011, 19:33
Откуда: Ukraine
Благодарил (а): 237 раз.
Поблагодарили: 603 раз.
Языки программирования: Counter-Strike 1.6
X-Ray
Killing-Floor [low]

След.

Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5