Реклама Google
Ещё реклама Google
Мануал по скриптингу Pawn.
Вывести статьи Counter-Strike 1.6
1 за 0 против
дата 2013-08-16
поблагодарили 1
просмотров 684
Counter-Strike 1.6
статью добавил FazeR
добавил
FazeR
Статья взята и переведена с http://forums.alliedmods.net/ за что им большое спасибо.
Перевод пока немного корявый, поэтому статья будет дополняться и переделываться.
________________________________________________________________________________

Я знаю, что для начинающего программиста довольно сложно начать программировать. Поэтому я хочу сделать для вас мануал по обучению данному скриптингу перед тем, как вы пойдете создавать свой первый плагин. Это есть мануал по Pawn- скриптингу, который следует изучить перед amxmodx. Я прибегнул к нестандартному подходу для обучения, поэтому я хотел бы узнать помогло оно вам или нет. Это первая часть моего мануала.


В программировании все представляется в виде чисел. Буква – это число, слово –
есть группа чисел, цвет – группа, состоящих из 3 множеств чисел ( одно
корректирует кол-во красного цвета, другое – зеленого, и третье – кол-во синего
цвета). Так что по сути в программировании вы работаете с числами.

Part 1 - Числа, множества чисел

Гнездо, где мы записываем число (или как обычно называется «переменная»):

PHP Code:
new numberHolder  


new – то есть мы создаем переменную
numberHolder его наименование. Имя присваивается в зависимости от данных,
где оно будет хранится.
Это мы называем «объявление переменной»

Чтобы указать число в переменной, мы делаем:

PHP Code:
numberHolder = 5  


5 – пусть будет примером числа переменной.

Гнездо, где мы записываем группу чисел (или как обычно называется «массив»)

PHP Code:
new numberGroupHolder[x]


Где х – количество переменных, который массив будет содержать  (то есть размер группы).
Эта группа содержит х позиций( переменных). Устанавливаем позиции:

PHP Code:
numberGroupHolder[0]


0 – является первая позиция. Последняя позиция равно x-1. Для примера чтобы
ввести цвет, мы должны сделать:
PHP Code:
new color[3]

color[0] = 0
color[1] = 100
color[2] = 255
  

или
PHP Code:
new color[3]

color = {0,100,255}
  

или даже так

PHP Code:
new color[3] = {0,100,255}  


Pawn предоставляет нам арифметических операторов, поэтому (например), после создания цвета, мы сможем сделать его темнее:

PHP Code:
color[0] = color[0] - 10
color[1] = color[1] - 10
color[2] = color[2] - 10  


Если мы хотим сделать темнее более чем один цвет, нам не нужно изменять
Каждую часть цвета вручную.

Вместо этого мы можем проделать такую процедуру, записанная
как часть кода, называемый «функцией»

PHP Code:
darkenColor(anyColor[3])
{
    anyColor[0] = anyColor[0] - 10
    anyColor[1] = anyColor[1] - 10
    anyColor[2] = anyColor[2] - 10
}


Где:

darkenColor наименование функции, присваиваемое в зависимости от того, чем
Она является.
anyColor наименование переменной уже самой функции, когда мы используем её
внутри этой функции. (несвязанная с оригинальной переменной!).
Что у нас находится в функции:
Между скобок мы имеем аргументы функции (переменная, с помощью которой
Работает функция). Один пример в этом случае.
Между квадратными скобками мы имеем его состав(где мы можем изменять
Значения).

Итак, чтобы сделать цвета темнее, мы должны написать:

PHP Code:
new someColor[3] = {100,100,100}
new otherColor[3] = {50,100,150}
new anotherColor[3] = {255,30,233}

darkenColor(someColor)
darkenColor(otherColor)
darkenColor(anotherColor)  


Это называется «функция darkenColor». Сначала мы его определили, а затем
использовали.

Затем переменные примут следующие значения:

someColor будет иметь 90,90,90.
otherColor - 40,90,140.
anotherColor - 245,20,223.


Но, в нашей функции есть проблема. Если часть цвета будет ниже чем 10, то
функция не будет работать. Чтобы решить эту проблему нам нужно задать
«условное утверждение»

PHP Code:
darkenColor(anyColor[3])
{
    anyColor[0] = anyColor[0] - 10
    anyColor[1] = anyColor[1] - 10
    anyColor[2] = anyColor[2] - 10
    
    if(anyColor[0] < 0)
    {
        anyColor[0] = 0
    }
    
    if(anyColor[1] < 0)
    {
        anyColor[1] = 0
    }
        
    if(anyColor[2] < 0)
    {
        anyColor[2] = 0    
    }
}  


Что мы имеем:

Между скобками стоит условие.
Между квадратными скобками находится состав условия. Содержимое внутри
Произойдет в том случае, если условие будет выполняться. То есть:
("anyColor[x] = 0" произойдет, когда "anyColor[x] < 0")


Наша функция немного непрактичная. Мы не можем задать параметр
«изменить яркость. Он лишь делает цвет темнее. Поэтому давайте сделаем
Его практичнее.


PHP Code:
changeColorLuminosity(anyColor[3],factor)
{
    anyColor[0] = anyColor[0] + factor
    anyColor[1] = anyColor[1] + factor
    anyColor[2] = anyColor[2] + factor
    
    if(anyColor[0] < 0)
    {
        anyColor[0] = 0
    }
    
    if(anyColor[1] < 0)
    {
        anyColor[1] = 0
    }
        
    if(anyColor[2] < 0)
    {
        anyColor[2] = 0    
    }
}  


Теперь мы присвоили ему параметр «изменить яркость» и он может делать
Цвет темнее или светлее (при положительном условии- светлее, при отрицательном – темнее). Но теперь у нас возникла проблема что чать цвета возможно будет
Иметь значение больше 255. Давайте это исправим.

PHP Code:
changeColorLuminosity(anyColor[3],factor)
{
    anyColor[0] = anyColor[0] + factor
    anyColor[1] = anyColor[1] + factor
    anyColor[2] = anyColor[2] + factor
    
    if(anyColor[0] < 0)
    {
        anyColor[0] = 0
    }
    
    if(anyColor[1] < 0)
    {
        anyColor[1] = 0
    }
        
    if(anyColor[2] < 0)
    {
        anyColor[2] = 0    
    }
    
    if(anyColor[0] > 255)
    {
        anyColor[0] = 255
    }
    
    if(anyColor[1] > 255)
    {
        anyColor[1] = 0
    }
        
    if(anyColor[2] > 255)
    {
        anyColor[2] = 0    
    }
}  


Это функция будет работать, однако мы не сможем её улучшать, т.к. мы и так
Знаем что условие будет иметь всегда отрицательное значение.

PHP Code:
changeColorLuminosity(anyColor[3],factor)
{
    anyColor[0] = anyColor[0] + factor
    anyColor[1] = anyColor[1] + factor
    anyColor[2] = anyColor[2] + factor
    
    if(anyColor[0] < 0)
    {
        anyColor[0] = 0
    }
    else if (anyColor[0] > 255)
    {
        anyColor[0] = 255
    }
    
    if(anyColor[1] < 0)
    {
        anyColor[1] = 0
    }
    else if (anyColor[1] > 255)
    {
        anyColor[1] = 255
    }
        
    if(anyColor[2] < 0)
    {
        anyColor[2] = 0
    }
    else if (anyColor[2] > 255)
    {
        anyColor[2] = 255
    }
}  
This:
PHP Code:
    if(anyColor[x] < 0)
    {
        anyColor[x] = 0
    }
    else if (anyColor[x] > 255)
    {
        anyColor[x] = 255
    }  


Если часть цвета примет отрицательное число, значит оно будет равно нулю.
Если не отрицательный и больше чем 255, значит оно будет


Статья взята и переведена с http://forums.alliedmods.net/ за что им большое спасибо.
все пользователи
все группы

разработчики