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

Настраиваем Notepad++ под Pawn (AMXX)

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

Модератор: Chuvi

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

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

Настраиваем Notepad++ под Pawn (AMXX)

Сообщение Plrip » 30 июл 2012, 14:49

Настройка синтаксиса и компилятора:

Автор статьи: Вы должны зарегистрироваться, чтобы видеть ссылки.

Источник:Вы должны зарегистрироваться, чтобы видеть ссылки.

Предисловие:
В этой статье мы рассмотрим настройку Notepad++ под скрипты Pawn (AMXX).

Установка:
Если у вас нету Notepad++, вы можете скачать его с официального сайта Вы должны зарегистрироваться, чтобы видеть ссылки. .

Настройка:
Для начала настроим подсветку кода.

Заходим "Опции" -> "Определение стилей...".

В левом столбике выбираем "C++", в "Польз. расширение" добавляем "sma inc inl".
6432626.png

В inc файлах будет использоваться подсветка Pascal, как её поменять на C++?
Заходим C:\Program Files\Notepad++.
Там будет файл langs.xml ( langs.model.xml ) открываем его, находим такую строчку
Код: Выделить всё
<Language name="pascal" ext="pas inc" commentStart="{" commentEnd="}">

Меняем её на
Код: Выделить всё
<Language name="pascal" ext="pas" commentStart="{" commentEnd="}">


Подсветка кода готова.

Теперь сделаем компиляцию кода на кнопку F6.

Открываем "Плагины" -> "Plugin Manager" -> "Show Plugin Manager"

Выбираем "NppExec" ставим рядом с ним галочку и жмём кнопку "Install".
21312313.png

Когда NppExec установится появится сообщение с просьбой перезапустить Notepad++, жмём "Да"

Как Notepad++ перезапустится, жмём "Плагины" -> "NppExec" -> "Execute..." или F6

В окно "Command(s):" вставляем такой скрипт
Код: Выделить всё
cd $(CURRENT_DIRECTORY) 
"Ваш путь до папки scripting\amxxpc.exe" "$(FILE_NAME)" "-oПуть до папки в которую будут попадать скомпилированные плагины\$(NAME_PART).amxx"

Например:
Код: Выделить всё
cd $(CURRENT_DIRECTORY) 
"С:\MY CS SERVER\cstrike\addons\amxmodx\scripting\amxxpc.exe" "$(FILE_NAME)" "-oC:\MY CS SERVER\cstrike\addons\amxmodx\plugins\$(NAME_PART).amxx"


Жмём "Save..." вводим имя "AMXX Compiler", жмём "Save" и закрываем.

Теперь заходим "Опции" -> "Горячие клавиши..."

Переходим в окошко "Plugin commands", щёлкаем два раза по пункту "Execute...", в появившемся окошке меняем кнопку "F6" на "None", жмём "OK".

Execute_key.jpg


Щёлкаем два раза по пункту "Direct Execute Previous", убираем галочку рядом с "CTRL", жмём "OK", закрываем "Shortcut mapper".
post-66-0-11114700-1313248113_thumb.jpg



Компилятор готов, протестируем его.

Открываем какой-нибудь исходник например zombie_plague40.sma.

Жмём F6, выбираем AMXX Compiler, жмём "OK" и смотрим как компилируется плагин.
amxx_compiler_using (1).jpg


Настройка автозавершения функций и слов:

Автор статьи: Вы должны зарегистрироваться, чтобы видеть ссылки.

Разработчик: Вы должны зарегистрироваться, чтобы видеть ссылки.


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

Необходимые файлы:
AMXX_Natives_Parser_for_Notepad.zip


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.хмл:
-в папке include будут содержаться нужные вам файлы из папки include вашего компилятора, например, "*\cstrike\addons\amxmodx\scripting\include";
-запускаем AMXX Natives' Parser for Notepad++.exe;
-здесь же появится sma.xml.

Допустим у нас только инклуд 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.xml


</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>

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

Удачи. ]:->


Список изменений:
v1.0 обновлены вложения
v2.0 добавлена инструкция по автозавершению функций и слов (09-11-2014)
Последний раз редактировалось sa1me 08 май 2017, 18:02, всего редактировалось 7 раз(а).
Причина: Тег code
Аватара пользователя
Plrip
Скриптер
 
Сообщения: 2908
Зарегистрирован: 03 дек 2011, 19:33
Откуда: Ukraine
Благодарил (а): 236 раз.
Поблагодарили: 600 раз.
Языки программирования: Counter-Strike 1.6
X-Ray
Killing-Floor [low]

Re: Настраиваем Notepad++ под Pawn (AMXX)

Сообщение Plrip » 09 ноя 2014, 21:23

Update

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

Re: Настраиваем Notepad++ под Pawn (AMXX)

Сообщение Leo_[BH] » 25 мар 2018, 23:18

Статью следует обновить.
В новых версиях нет поддержки менеджера плагинов. Хоть в плагин-менеджере пишет No new plugins avaliable, NppExec можно установить вручную.

В шапке темы следует заменить:
Открываем "Плагины" -> "Plugin Manager" -> "Show Plugin Manager"

Выбираем "NppExec" ставим рядом с ним галочку и жмём кнопку "Install".
21312313.png
Когда NppExec установится появится сообщение с просьбой перезапустить Notepad++, жмём "Да"

Как Notepad++ перезапустится

На ручную установку плагина NppExec:

1. Закрываем NotePad++
2. Качаем NppExec_053_dll_Unicode Вы должны зарегистрироваться, чтобы видеть ссылки. (также приложил к сообщению)
3. Распаковываем содержимое у C:\Program Files\Notepad++\plugins
4. Запускаем NotePad++
Далее всё по инструкции.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Нету дыма без огня, как и amxx без sma.
Пишу плагины на заказ — ТЕМА
Аватара пользователя
Leo_[BH]
 
Сообщения: 72
Зарегистрирован: 06 апр 2014, 17:51
Откуда: UA
Благодарил (а): 8 раз.
Поблагодарили: 19 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6

Re: Настраиваем Notepad++ под Pawn (AMXX)

Сообщение Mistrick » 26 мар 2018, 00:00

И без ручной работает.
qwdqwdqwd.PNG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2814
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1184 раз.
Языки программирования: PAWN
С/С++(few above zero)

Пред.

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

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

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

cron