Основы Pawn

CS 1.6 и другие игры от Valve

Модератор: Dimanok

Правила форума
Внимание!

Перед созданием новой темы, ознакомление с FAQ обязательно!

Создание тем с вопросами описанными в FAQ карается баном.

Основы Pawn

Сообщение Dimanok » 13 фев 2009, 22:03

Статья о создании своего плагина AMX mod X
Прежде чем начать, я советую скачать последнюю версию AMXX Studio — это конечно не самый лучший в мире редактор, но это ведь лучше, чем блокнот, не правда ли?

1. Файл плагина
Разрешение исходника ПАВН - *.SMA (В принципе может быть любой текстовый файл)
Как вы наверно уже догадались, его можно открыть блокнотом, если вдруг у вас нет АМХХ Студии

2. Комментарии
Любой участок кода, содержащий перед собой двойной прямой слеш (//) считается комментарием, и при компиляции игнорируется, например:

// Это комментарий, он не будет считываться
Если надо закомментировать более 1 строчки, то можно использовать комбинацию символов /* чтобы открыть комментарий, и */ чтобы закрыть (в принципе можно на каждой строчке поставить //, эффект будет тот же), например:
Код: Выделить всёРазвернуть
/* Строчка 1
Строчка 2
Строчка 3
Это комментарий */

3. Добавление инклудов (include)
Инклуд – это директива препроцессора. В этой директивe указывается путь к заголовочному файлу (текстовые файлы в папке ‘include’) в котором содержатся прототипы функций (объявления, declaration) и различные константы
Чтобы добавить Инклуд, нужно написать:

Код: Выделить всёРазвернуть
#include // Этой строкой мы указали плагину использовать амх мод


Полный список заголовочных фалов вы можете найти в вышеуказанной папке.
(Пояснения для любопытных: при компиляции в плагин будут добавляться объявления только тех функций, которые были непосредственно использованы в коде, так что бвают случаи, когда приходится подключать заголовочный файл ради одной полезной функции)

4. Создание новых переменных
Для создания переменных используется зарезервированное слово NEW. Следующих основных типов:
1. Целый тип
2. Вещественный тип
3. Булев тип (значение может быть только ‘true’ или ‘false’)
Пример:
Код: Выделить всёРазвернуть
new z
new Float:f
new bool:some_bool= true /* Объявляем логическую переменную и присваиваем ей значение «правда» */

5. Добавление констант (define, const)
Константа – переменная, значение которой нельзя изменять.
Задать к. можно 2 способами:

1) Через дефайн (тоже директива препроцессора, при компиляции указанные здесь константы заменяются в коде соответствующим значением. ВНИМАНИЕ! Данная запись фактически не является константой):
Код: Выделить всёРазвернуть
#define CONST 5
#define FCONST 5.0
#define SCONST ‘5’



2) Или через new:
Код: Выделить всёРазвернуть
new const CONST2 = 5 // Значение задать обязательно!!!!


По правилам программистской этики принято писать имена констант заглавными буквами, но никто не заставляет вас этому следовать.

6. Массивы
Массив - это структура данных одного типа, распологающихся в памяти в определенном порядке

Массив задается следующим образом:
Код: Выделить всёРазвернуть
new имя_массива[размерность_массива]


индексация элементов начинается с 0 и заканчивается числом размерность_массива - 1
обращение к элементам массива аналогично обращению к переменной, только необходимо указывать индекс элемента в квадратных скобках:
Код: Выделить всёРазвернуть
new a[10]
...
a[0] = 0 // Здесь допустимые индексы от 0 до 9


Массивы могут быть 3х основных типов указанных выше по тексту.
Рассмотренные в примере массивы называются одномерными. Но, технически, массивы могут быть любой размерности - за каждую новую отвечает пара квадратных скобок:
new b[10][10] // Двумерный массив размерностью 10х10 (100 элементов)

Массив может быть сразу инициализирован при объявлении:
Код: Выделить всёРазвернуть
new a[10] = {0,1,2,3,4,5,6,7,8,9}


7. Строки (неполная информация)
Строка по своей сути является массивом символов и задается таким же образом. Массив строк по своей сути является двумерным массивом. Строки так же могут быть инициализированы при объявлении:
Код: Выделить всёРазвернуть
new name[32]
new str[] = "Some string, huh"
new strs[5][] = {"111","222","333","444","555"}

Автор: AlMod
www.strike64.ru - Крупнейшая конференция о играх корпорации Valve, Поволжья
Dimanok
Автор
 
Сообщения: 3506
Зарегистрирован: 05 июл 2008, 11:02
Откуда: Саратов
Домен: http://www.strike64.ru

Re: Основы Pawn

Сообщение AlMod » 15 фев 2009, 12:37

Может напишешь чья статья, а? Где мое авторство?
Не общаюсь с людьми которые не пользуются ПОИСКОМ
Аватара пользователя
AlMod
Начинающий участник
 
Сообщения: 17
Зарегистрирован: 12 сен 2007, 06:51
Домен: cstrike.vfose.ru

Re: Основы Pawn

Сообщение Dimanok » 16 фев 2009, 16:51

AlMod писал(а):Может напишешь чья статья, а? Где мое авторство?

так так так .....про тебя мне не чего не известно...статью писал JGHG так что не надо тут....
www.strike64.ru - Крупнейшая конференция о играх корпорации Valve, Поволжья
Dimanok
Автор
 
Сообщения: 3506
Зарегистрирован: 05 июл 2008, 11:02
Откуда: Саратов
Домен: http://www.strike64.ru

Re: Основы Pawn

Сообщение AlMod » 16 фев 2009, 18:50

Я не знаю, че за JGHG выдал мою статью за свою, но вот оригинал на моем сайте
http://amxmodx.ucoz.ru/publ/3-1-0-2

Первоначально статья писалась для portal.san.ru

P.S. Причем тобой содрана именно измененная версия, что меня если честно поражает

-----------------------------------------------------------------------------------------------------------

Все теперь претензий нет :)
Не общаюсь с людьми которые не пользуются ПОИСКОМ
Аватара пользователя
AlMod
Начинающий участник
 
Сообщения: 17
Зарегистрирован: 12 сен 2007, 06:51
Домен: cstrike.vfose.ru


Вернуться в Counter Strike

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

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

cron