Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Переменные в SourcePawn

, Способ ввода новых переменных, типы переменных
Статус пользователя Revelation
сообщение 8.8.2014, 8:30
Сообщение #1
Стаж: 11 лет

Сообщений: 1051
Благодарностей: 401
Полезность: 1075

Всем доброго времени суток!

В данном материале рассмотрим примеры работы с переменными, их типы, способы ввода.

Объявление новых переменных.

Вводятся новые переменные достаточно просто. Желательно вводить их в начале программы.
Приставка new, далее название переменной и знак ;
Названия переменных не должны начинаться с цифр и знаков.

Пример:
Код:

new a; // Переменная целового типа (integer)
new Float:b; // Дробное число (float)
new bool:c; // Переменная, содержащая в себе правду или ложь.

Типы переменных.

Целое число (Integer):
Код:
new a;


Дробное число (Float):
Код:
new Float:b;


Булевая переменная (Bool):
Хранит в себе правду или ложь. True - 1, False - 0
По умолчанию, значение переменной равно 0 (ложь/false).
Код:
new bool:c;



Присвоение значения переменным.

Название переменной, знак = (равно), значение, знак ;
Код:
//Для целого числа:
a = 500;
// Для дробного числа:
b = 7.5;
// Для булевой переменной:
c = true;


В следующей статье разберем массивы и строки. Материал там большой, решил выделить в отдельную тему.

Приношу свои извинения за ранее недоработанную статью с ошибками.

Отредактировал: Revelation, - 13.8.2014, 19:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 4 раз
   Цитировать сообщение
Статус пользователя mazdan
сообщение 8.8.2014, 8:58
Сообщение #2


Иконка группы

Стаж: 13 лет

Сообщений: 7566
Благодарностей: 5436
Полезность: 1305

Цитата
Уникальный идентификатор (например, для id игрока, steamID):
Handle вряд ли для этого, вы уверены что описание верное?
new String:A; ? какой длины? очень сомневаюсь что вы правы
https://wiki.alliedmods.net/Introduction_to_sourcepawn тут, например, не так написано.
Это и на русском есть https://wiki.alliedmods.net/Ru:Introduction_to_SourcePawn

Цитата
Приставка new, далее название переменной и обязательно знак ;
#pragma semicolon 0 ?


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 8.8.2014, 9:50
Сообщение #3
Стаж: 11 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

В SourcePawn any: есть?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Revelation
сообщение 8.8.2014, 14:37
Сообщение #4
Стаж: 11 лет

Сообщений: 1051
Благодарностей: 401
Полезность: 1075

Цитата(mazdan @ 8.8.2014, 10:58) *
Handle вряд ли для этого, вы уверены что описание верное?

Handle используется для переменных-идентификаторов, обозначающих то, что он может быть единственным, уникальным
Цитата(mazdan @ 8.8.2014, 10:58) *
new String:A; ? какой длины? очень сомневаюсь что вы правы

Про длину я ничего не писал, поэтому вы не можете здесь судить прав или нет.
Как таково, границы еще не "достигал", максимального значения не знаю. Да и сомневаюсь, что вы будете использовать в плагинах длинный текст размером >200 символов.

Цитата(mazdan @ 8.8.2014, 10:58) *
#pragma semicolon 0 ?

в #pragma, #define, #include знак ; не нужен. Если конечно, правильно вас понял.

Отредактировал: Revelation, - 8.8.2014, 14:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Revelation
сообщение 8.8.2014, 14:42
Сообщение #5
Стаж: 11 лет

Сообщений: 1051
Благодарностей: 401
Полезность: 1075

Цитата([WPMG]PRoSToTeM@ @ 8.8.2014, 11:50) *

В SourcePawn any: есть?

Что это? С языком amxmodx не знаком.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 8.8.2014, 14:45
Сообщение #6


Иконка группы

Стаж: 13 лет

Сообщений: 7566
Благодарностей: 5436
Полезность: 1305

Revelation, я sourcepawn не знаю вообще, я спрашиваю при объявлении new String:A; какой длины строку я могу положить в переменную A? подозреваю, что так нельзя объявлять.
Цитата
в #pragma, #define, #include знак ; не нужен. Если конечно, правильно вас понял.
неправильно. Я к тому что в pawn пропишите #pragma semicolon 1 и надо будет ставить ; ну и наоборот должно работать.
Если вы беретесь что-то писать как "обучалки" то пишите правильно или вообще не пишите.
Ваше new String:A; без размера (и указания значения) скомпилируется хотя бы?
id и steamid не то для чего используется handle (в pawn точно, в сурспавне скорее всего так же) handle
Сколько плагинов на sourcepawn вы написали? Можно посмотреть парочку?

Цитата
new color[3];
color[0] = 255; // Первый элемент массива
color[1] = 50; // Второй элемент массива
color[2] = 255; // Третий элемент массива
color[3] = 180 // Четвертый элемент массива --- тут ловим ошибку index out of range


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Revelation
сообщение 8.8.2014, 14:53
Сообщение #7
Стаж: 11 лет

Сообщений: 1051
Благодарностей: 401
Полезность: 1075

mazdan,
Да, местами ошибался, признаю это, исправил.
Если так интересуют мои плагины, прошу в лс, ибо многие приват, писал лично для своего сервера.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 8.8.2014, 14:57
Сообщение #8


Иконка группы

Стаж: 14 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(mazdan @ 8.8.2014, 10:58) *
new String:A; ? какой длины? очень сомневаюсь что вы правы

длину можно задать
decl String:text[192];

new String[]:A; - не скомпилируется
new String[]:A = "text!"; - скомпилируется, длина определится автоматически...
new String:A[6] = "text!"; - скомпилируется, длину задали при объявлении

decl String:A[6]; - задали длину, это наиболее частый способ создания "временных" строк!
A = "text!"; - скомпилируется, присвоили значение,

decl String:A[192];
A = "text!"; - скомпилируется
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Revelation
сообщение 8.8.2014, 15:01
Сообщение #9
Стаж: 11 лет

Сообщений: 1051
Благодарностей: 401
Полезность: 1075

Цитата(mazdan @ 8.8.2014, 16:45) *
#pragma semicolon 1 и надо будет ставить ; ну и наоборот должно работать.

В SourcePawn принято ставить знак ; (даже при отсутствии в начале #pragma semicolon)
99% плагино-писателей работает именно с #pragma semicolon 1 (если сомневаетесь - идите на alliedmoders и смотрите плагины на SourceMod, "плагинов без ;" не найдете там). Тем более на оф.сайте скриптинга все примеры именно с ;

Цитата
Приставка new, далее название переменной и обязательно знак ;

Без объявления #pragma semicolon в начале плагина все равно нужно использовать этот знак. По умолчанию #pragma semicolon 1 потому что.

Отредактировал: Revelation, - 8.8.2014, 15:03
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 8.8.2014, 15:29
Сообщение #10
Стаж: 11 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Revelation @ 8.8.2014, 16:42) *
Что это? С языком amxmodx не знаком.

Грубо говоря "переменная, которой можно присваивать значения любого типа".
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 8.8.2014, 15:58
Сообщение #11
Стаж: 10 лет

Сообщений: 4755
Благодарностей: 3837
Полезность: 693

ничего нового не узнал. в амхх тоже самое практически


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BadDrive
сообщение 8.8.2014, 21:22
Сообщение #12


Стаж: 10 лет

Сообщений: 60
Благодарностей: 27
Полезность: 37

А можешь ещё парочку примеров массивов привести? Ибо я не очень понял)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Dasister
сообщение 13.8.2014, 11:30
Сообщение #13
Стаж: 14 лет

Сообщений: 90
Благодарностей: 42
Полезность: 150

Цитата(Revelation @ 8.8.2014, 10:30) *
Уникальный идентификатор (например, для id игрока, steamID):
Код:
new Handle:A;


Не совсем верные примеры. UserID - целое число. SteamID (он же AuthID) - строка.

Цитата([WPMG]PRoSToTeM@ @ 8.8.2014, 11:50) *

В SourcePawn any: есть?


Есть.

Цитата(mazdan @ 8.8.2014, 16:45) *
Ваше new String:A; без размера (и указания значения) скомпилируется хотя бы?


Подобное объявление компилятор пропустит.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 13.8.2014, 11:40
Сообщение #14


Иконка группы

Стаж: 13 лет

Сообщений: 7566
Благодарностей: 5436
Полезность: 1305

Dasister, и какой длины строку можно будет записать в A?


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 13.8.2014, 11:51
Сообщение #15
Стаж: 11 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

mazdan, нульбайт только crazy.gif

Жаль в amx павне нет decl, хотя можно прикрутить спокойно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Dasister
сообщение 13.8.2014, 12:11
Сообщение #16
Стаж: 14 лет

Сообщений: 90
Благодарностей: 42
Полезность: 150

Цитата(mazdan @ 13.8.2014, 13:40) *
Dasister, и какой длины строку можно будет записать в A?


Строку длины 0. Т.е ничего. Совсем.

Отредактировал: Dasister, - 13.8.2014, 12:13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Revelation
сообщение 13.8.2014, 12:28
Сообщение #17
Стаж: 11 лет

Сообщений: 1051
Благодарностей: 401
Полезность: 1075

mazdan,
Да что ж вы к этой длине то прицепились? Про длину даже на оф.сайте скриптинга ничего не сказано. Переменные вмещают большое кол-во символов. Сомневаюсь, что сможете забить полностью.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Dasister
сообщение 13.8.2014, 12:48
Сообщение #18
Стаж: 14 лет

Сообщений: 90
Благодарностей: 42
Полезность: 150

Цитата(Revelation @ 13.8.2014, 14:28) *
mazdan,
Да что ж вы к этой длине то прицепились? Про длину даже на оф.сайте скриптинга ничего не сказано. Переменные вмещают большое кол-во символов. Сомневаюсь, что сможете забить полностью.


Его интересует длина строки A именно в случае decl String:A;, а не максимальная длина строки, которая вообще возможна.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 13.8.2014, 14:09
Сообщение #19


Иконка группы

Стаж: 13 лет

Сообщений: 7566
Благодарностей: 5436
Полезность: 1305

Revelation, ну вы же написали у себя в статье что так можно объявлять строки, вот я пробую уточнить для каких строк пригодно такое объявление


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 13.8.2014, 15:06
Сообщение #20
Стаж: 11 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

mazdan, её по идее даже ни в одну функцию связанную со строками не передашь, т.к. это не массив.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: