• Страница 1 из 1
  • 1
Модератор форума: admin, TweIk  
Форум » Pawno » Wiki-samp » pawno(основым скриптинга для новичков)
pawno(основым скриптинга для новичков)
adminДата: Среда, 06.10.2010, 03:21:32 | Сообщение # 1

Группа: Администраторы
Сообщений: 3869
Начнём с переменных. Переменные - это такие ящички в которых мы можем хранить информацию о чём-либо на время работы сервера, переменную можно приравнять, уменьшить, увеличить, разделить, умножить, сравнить.
Переменные объявляются с помощью оператора new, переменная обязательно должна иметь какое то имя по которому мы будем к ней обращаться имя переменной может состоять из некоторых знаков, латинских букв и цифр, но с цифр начинаться не должна напишем небольшой пример что бы понять как это работает на практике, создайте в pawno новый документ и впишите следующий код.

Code

#include



Code
main()
{
new x1 = 2;/*После объявления переменных всегда ставится ; можно объявлять в одном new сколько угодно переменных через запятую new x1,x2,x3,x4;*/
new x2 = 3;
x1 = x1 + x2;
printf("x1 = %d",x1);//в коце так же ставятся ; рекомендую запоминать сразу
}



Code

public OnGameModeInit()
{
return 1;
}


Ищем сверху на панели с кнопками у pawno шестерёнку жмём если ошибок нет радуемся и едем дальше.
Теперь запускаем этот скрипт на сервере как GM.
В данном примере мы создали 2 переменные x1 мы приравняли сразу к 2 x2 к 3 и прибавили к x1 x2 затем вывели на экран.
Переменные имеют типы в разных типах переменных хранятся разные типы данных и обычно в переменные одного типа мы не можем положить данные переменной другого типа, это как пытаться засунуть апельсины в упаковку для куриных яиц.
Рассмотрим типы переменных встречающихся в Pawno: без типа переменная целого типа в неё мы можем положить переменную вещественного типа, но потеряем дробную часть, Float - вещественная переменная с дробью

Code
(пример new Float:fx = 23.1), Menu - переменная хранящая идентификатор меню, Text - переменная хранящая идентификатор Текст драва.

В примере мы использовали функцию printf - это функция форматированного вывода на экран серверной консоли, эта функция имеет один обязательный параметр и любое колличество не обязательных (как-то так), параметры - это данные которые мы даём функции для их обработки.
Code
printf(const format[],{Float,...}:...);

Первый параметр это строка строки в pawno как и в С++(pawno является си-образным интерпретатором) записываются в кавычках "", строка эта отвечает за формат вывода запись %d означает что мы хотим вывести на экран целое число если вы например подставите в место этого %s то получите квартирохозяину, а если %c - символ кодом которого будет являться число содержащееся в переменной x1.
Обозначения вывода переменных всех типов:
Code
%s[/code] - строка
[code]%d
- целое число
Code
%f[/code] - переменная с дробной частью %.2f - тоже самое, но двойка после точки означает количество цифр после точки
[code]%c
- символ
Справочный материал по функциям рекомендую поискать в учебниках если попадётся на глаза дам ссылку.

Теперь перейдём к тому без чего не обходится ни один скрипт и программа это ветвления, без них алгоритм будет линейным и всегда будет выполнять одно и то же действие.
Для этого используется

Code
if и else,
синтаксис
if(логическое выражение(условие тобиш))
{//Если условие является истиной(true) то выполняется код между скобками ложью является 0, истиной всё остальное
}
Code
else /*else без if не бывает так как то что записано в else выполняется в тех случаях когда в if стоящем выше ложь(false) так же else может содержать в себе if*/
{
}

Если у вас между скобок всего одно выражение (выражения заканчиваются то скобки можно не ставить если скобок нет то на выполнение возьмётся выражение стоящее после

Code
if или else.

Цепочка проверок у нас может быть бесконечной.

Code
if(x1 == 1)
{
x1 = 2;
}
else if(x1 ==2)
{
x1 = 3
x1 = x1*3;
}
else if(x1 < 4)
{
x1 = 5;
}
else //и так далее

Код просто для того что бы показать как это записывается.

Логические выражения в качестве логического выражения пойдёт любое значение например просто можно поставить переменную

Code
if(x1)
{
//...
}

или сравнить переменную или число с чем либо. Список возможных сравнений:

Code
< >
- меньше больше употребляются отдельно друг от друга "<" ">"
Code
==[/code] - равно, сравнивает не равны ли значения
[code]!=
- не равно почти то же что и выше, только наоборот
Вообще о приставке !(не) поподробнее, использовать её можно не только в логических выражениях, суть её в следующем если за ней стоит ложь, то она поменяет её на истину(0 на 1), если истина то на ложь (заменит на 0), использовать можно и вот так x1 = !x1; В случаях когда переменная у вас по алгоритму принимает значения только 0 или 1 можно использовать такую вот короткую запись что бы не расписывать условия.
В одном операторе if может быть несколько логических выражений, но их необходимо скреплять логическими связками && - (читается как и) и || - (читается как или), суть проста, думаю в школе проходили, распишу на примере.
Code
if(x1 < 5 && x1 > 0)//условие выполняется когда икс1 имеет значение в диапазоне от 1 до 4 это если у нас переменная не вещественная(дробная Float)

Теперь пример про или

Code
if(x1 < 0 || x1 > 5)//тоже что и первое тоько наоборот условие выполнится если икс1 вне диапазона от 0 до 4

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

Code
при x1 = 3;

заменяем сразу беру первый пример

Code
if(1 && 1)//итог 1

Вообще связка && даст истину если только оба выражения истина, а || даст ложь только в том случае когда оба значения 0

Теперь напишем небольшой пример основываясь на выше предоставленном материале.

Code
#include


Code
main()
{
new x = random(10);
if(x < 5)
{
printf("X < 5, x = %d",x);
}
}



Code

public OnGameModeInit()
{
return 1;
}



Code
random(max); //После выполнения вернёт после себя случайное значение от 0 до max, max в диапазон не входит, вернёт значение то есть вместо этой функции на месте кода подставится цифра.

Счёт у компьютера начинается не как у людей с 1, а с 0
По запускаете этот скрипт вы уведите что значения x принимает почти каждый раз разные.

Дальше мы будем рассматривать циклы без них так же как и без ветвлений не обходится почти ни один алгоритм. Ветвления входят так же в состав циклов, то есть в цикле задаётся условие при не выполни которого цикл останавливается и код выполняется дальше. Есть грубо говоря 2 вида циклов это циклы которые сначала проверяют истина ли условие, а затем уже выполняют тело цикла (то что заключено ниже в фигурные скобки), и есть цикл который сначала делает, а уже потом проверят условие называется он цикл с пост условием, первые циклы с пред условием, цикл с пост условием как вы уже наверное догадались выполняется как минимум 1 раз.
И так рассмотрим циклы с пред условием начнём с цикла while:
Синтаксис: while(Логическое выражение(условие тобиш)) и ниже тело цикла как у оператора if, теперь рассматриваем на примере, в качестве примера можно написать скрипт выводящий на экран символы и их коды, в кодировка DOS это консоль на которой мы выполняем примеры отличается от win и русские буквы там будут заменены кара кульками, но они там есть, и сейчас мы их пожалуй найдём

Code


main()
{
new i = 128;
while(i<158)
{
printf("%c = %d",i,i);
i++;
}
}

Возможно вас смутила запись "i++" это тоже самое что и i = i + 1; увеличение переменной на 1, так же можно сделать и такую запись i += 1; это прибавить к i 1, вместо одного вы можете прибавить и переменную, так же есть -= *= /=, думаю догадываетесь что они означают.
Данный код можно записать и по другому

Code

main()
{
new i = 128;
while(i<159)
printf("%c = %d",i,i++);
}

Здесь мы выводим значения i и увеличиваем её на 1, можно записать по другому

Code


main()
{
new i = 127;
while(i<159)
printf("%c = %d",++i,i);
}

Здесь мы сначала увеличиваем значение i на единицу, а затем выводим.
Следующий цикл с пред условием for
Синтаксис for(Действие выполняемое 1 раз перед запуском;условие;действие выполняемое каждый цикл)
В работе с while всё понятно, проверяем > выполняем > проверяем > выполняем и так далее...
for работает несколько по другому выполняем действие > проверяем > выполняется тело цикла > выполняем действие цикла > проверка > тело цикла > действие цикла > проверка и так далее...
Теперь перепишем наш код с оператором for

Code

main()
{
for(new i=128;i<160;i++)
printf("%c = %d",i,i);
}

В качестве первого действия мы создали переменную i и приравняли её к 128 (Коду символа А в консоли), замечание переменная была создана только на время выполнения цикла, если вы попытаетесь использовать после цикла компилятор выдаст вам ошибку"error 017: undefined symbol "i""
переменная не была найдена, ведь она была уничтожена после выполнения цикла, на цикле с пост условием внимания заострять не будем так как это тоже что и while
синтаксис

Code

do
{
}while();//Вот и всё

Комментарий это некий текст который не компилируется и служит для пояснения назначения переменных, функций и кусков кода, конечно когда вы пишите свой мод то думаете что будете держать всё в голове до конца жизни, но через недельку когда возникает надобность что-то поменять вы открываете мод и не чего не понимаете какие-та строчки написаны и т.п. Говорите вы себе так как не чего не понятно, благодаря комментариям вы можете достаточно быстро разобраться в собственном коде и уж тем более помочь в этом другому ко деру который посчитает нужным ваш код дорабатывать, так же вы можете комментировать те строки которые вы считаете не нужными на данный период времени, но которые могут понадобится после, что бы задокументировать строку ставим в начале строки "//" и всё что идет после будет выделено зелёным, так же вы можете использовать "/*" и "*/", первый открывает комментарии и всё что идёт дальше будет задокументированно до "*/" рекомендуется не ставить комментарии где попало например в строках на подобие "x1 += 2;" так как это и так понятно, а вот при описании собственных функций лучше ими воспользоваться не рекомендуется создавать вложенные комментарии так как это может привести к ошибкам приведу пример вложенного комментария

Code

/* Комментарий
/*
Вложеный комментарий
*/
*/

Поясняю как это приводит к ошибкам дело в том что когда вы ставите "/*" комментарий открывается когда идёт второй такой символ ничего не происходит затем идёт закрытие "*/", а следующий знак не смотря что это у вас в редакторе кода не отобразилось уже не будет опознан как закрывающий и будет выдана ошибка.

И так в этом посте я собирался поведать о массивах, собственно начнём повествование:
И так мы уже знаем что переменная это у нас некое подобие ящика, ну так вот массив можно назвать некоторым подобием склада ящиков одного типа объявляется он почти так же как и переменная то есть даётся имя по которому мы сможем к нему обращаться и указывается количество хранимых в нём ящиков, выполнять какие действия с самим массивом мы как бы не можем, нас интересуют его ячейки(ящики) к ячейке мы обращаемся по её индексу, помните что счёт в компьютере начинается с 0 поэтому первая ячейка всегда будет иметь индекс 0, а последняя n-1, значения всех элементов массива(ячеек) вы можете задать при его инициализации(создании, объявлении), теперь пример:

Code

main()
{
new mass[10];
for(new i=0;i mass[i] = 128 + random(30);
for(new i=0;i printf("%d = %c",mass[i],mass[i]);
}

И так в этом примере мы создали массив из 10 элементов затем задали случайные значения всем его элементам и вывели на консоль все его элементы в виде цифр и символов, наверное вас заинтересовало что это за функция такая sizeof, ну так вот эта функция позволяет узнать количество элементов массива. Вообще все массивы могут иметь только фиксированный размер то есть если я задал массив из 20 элементов, то он никак не может содержать 50 элементов, есть ещё одно несколько неприятное ограничение это то что в ходе выполнения вашего скрипта вы не можете создать массив не из местного вам количества элементов так скажем, то есть количеством элементов может является только константа, а никак не число возращённое например функцией рандом, или указано какой нибудь переменной. Кстати код который я написал будет несколько неудачным и вообще будет является несколько заторможенным в выполнении конечно при двух головом атлоне это не заметно, но старайтесь писать код как можно менее требовательным к ресурсам это поможет вам развить соображал-ку . И так я сказал что код тормозивший теперь разберёмся в чём, во первых я создаю для каждого массива одну и ту же переменную создание переменной тоже отнимает время как и её приравнивание, но приравнивание всё же меньше времени отнимет, так почему бы её не объявить выше (заметка при создании переменной в pawno она автоматически получает значение 0, это встречается далеко не во всех языках например в С/С++ этого нет) таким образом мы будем создавать её всего лишь однажды и в дальнейшем просто приравняем её к 0, теперь вторая промажка это использование в условии функции sizeof дело в том что каждый раз при проверке условия она будет высчитывать размер массива(ну я так думаю) это время да и память она тоже потратит, давайте перепишем этот код заново:

Code


new mass[10];
new sizemass = sizeof(mass);
new i;
while(i < sizemass)
mass[i++] = 128 + random(30);
for(new i=0;i printf("%d = %c",mass[i],mass[i]);

Думаю так код будет смотреться немного лучше.
Говоря о массивах нельзя не упомянуть о строках, строки сами по себе являются массивами на подобие массива mass. Используя массивы вы можете очень сильно сократить код и повысить его функциональность что избавит вас от лишней писанины.
По мимо массивов существуют ещё и списки enum используется следующим образом:

Code

enum inf
{
X,
Y,
Z
}
new mass[10][inf];

Массивы могут иметь до 3 измерений, одномерный массив вы можете представить в виде строки, двухмерный в виде квадрата или прямоугольника ну, а трёхмерный говорит вроде сам за себя. В этом коде был создан список с именем inf и был подставлен в массив mass. Теперь у массива на каждой полочке к которой мы обращаемся по индексу есть 3 ячейки к которым мы обращаемся по имени состоящему из символов

Code
X Y Z


zm-jail.ru

Разработка сайта samp-pawno.ru


 
СообщениеНачнём с переменных. Переменные - это такие ящички в которых мы можем хранить информацию о чём-либо на время работы сервера, переменную можно приравнять, уменьшить, увеличить, разделить, умножить, сравнить.
Переменные объявляются с помощью оператора new, переменная обязательно должна иметь какое то имя по которому мы будем к ней обращаться имя переменной может состоять из некоторых знаков, латинских букв и цифр, но с цифр начинаться не должна напишем небольшой пример что бы понять как это работает на практике, создайте в pawno новый документ и впишите следующий код.

Code

#include



Code
main()
{
new x1 = 2;/*После объявления переменных всегда ставится ; можно объявлять в одном new сколько угодно переменных через запятую new x1,x2,x3,x4;*/
new x2 = 3;
x1 = x1 + x2;
printf("x1 = %d",x1);//в коце так же ставятся ; рекомендую запоминать сразу
}



Code

public OnGameModeInit()
{
return 1;
}


Ищем сверху на панели с кнопками у pawno шестерёнку жмём если ошибок нет радуемся и едем дальше.
Теперь запускаем этот скрипт на сервере как GM.
В данном примере мы создали 2 переменные x1 мы приравняли сразу к 2 x2 к 3 и прибавили к x1 x2 затем вывели на экран.
Переменные имеют типы в разных типах переменных хранятся разные типы данных и обычно в переменные одного типа мы не можем положить данные переменной другого типа, это как пытаться засунуть апельсины в упаковку для куриных яиц.
Рассмотрим типы переменных встречающихся в Pawno: без типа переменная целого типа в неё мы можем положить переменную вещественного типа, но потеряем дробную часть, Float - вещественная переменная с дробью

Code
(пример new Float:fx = 23.1), Menu - переменная хранящая идентификатор меню, Text - переменная хранящая идентификатор Текст драва.

В примере мы использовали функцию printf - это функция форматированного вывода на экран серверной консоли, эта функция имеет один обязательный параметр и любое колличество не обязательных (как-то так), параметры - это данные которые мы даём функции для их обработки.
Code
printf(const format[],{Float,...}:...);

Первый параметр это строка строки в pawno как и в С++(pawno является си-образным интерпретатором) записываются в кавычках "", строка эта отвечает за формат вывода запись %d означает что мы хотим вывести на экран целое число если вы например подставите в место этого %s то получите квартирохозяину, а если %c - символ кодом которого будет являться число содержащееся в переменной x1.
Обозначения вывода переменных всех типов:
Code
%s[/code] - строка
[code]%d
- целое число
Code
%f[/code] - переменная с дробной частью %.2f - тоже самое, но двойка после точки означает количество цифр после точки
[code]%c
- символ
Справочный материал по функциям рекомендую поискать в учебниках если попадётся на глаза дам ссылку.

Теперь перейдём к тому без чего не обходится ни один скрипт и программа это ветвления, без них алгоритм будет линейным и всегда будет выполнять одно и то же действие.
Для этого используется

Code
if и else,
синтаксис
if(логическое выражение(условие тобиш))
{//Если условие является истиной(true) то выполняется код между скобками ложью является 0, истиной всё остальное
}
Code
else /*else без if не бывает так как то что записано в else выполняется в тех случаях когда в if стоящем выше ложь(false) так же else может содержать в себе if*/
{
}

Если у вас между скобок всего одно выражение (выражения заканчиваются то скобки можно не ставить если скобок нет то на выполнение возьмётся выражение стоящее после

Code
if или else.

Цепочка проверок у нас может быть бесконечной.

Code
if(x1 == 1)
{
x1 = 2;
}
else if(x1 ==2)
{
x1 = 3
x1 = x1*3;
}
else if(x1 < 4)
{
x1 = 5;
}
else //и так далее

Код просто для того что бы показать как это записывается.

Логические выражения в качестве логического выражения пойдёт любое значение например просто можно поставить переменную

Code
if(x1)
{
//...
}

или сравнить переменную или число с чем либо. Список возможных сравнений:

Code
< >
- меньше больше употребляются отдельно друг от друга "<" ">"
Code
==[/code] - равно, сравнивает не равны ли значения
[code]!=
- не равно почти то же что и выше, только наоборот
Вообще о приставке !(не) поподробнее, использовать её можно не только в логических выражениях, суть её в следующем если за ней стоит ложь, то она поменяет её на истину(0 на 1), если истина то на ложь (заменит на 0), использовать можно и вот так x1 = !x1; В случаях когда переменная у вас по алгоритму принимает значения только 0 или 1 можно использовать такую вот короткую запись что бы не расписывать условия.
В одном операторе if может быть несколько логических выражений, но их необходимо скреплять логическими связками && - (читается как и) и || - (читается как или), суть проста, думаю в школе проходили, распишу на примере.
Code
if(x1 < 5 && x1 > 0)//условие выполняется когда икс1 имеет значение в диапазоне от 1 до 4 это если у нас переменная не вещественная(дробная Float)

Теперь пример про или

Code
if(x1 < 0 || x1 > 5)//тоже что и первое тоько наоборот условие выполнится если икс1 вне диапазона от 0 до 4

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

Code
при x1 = 3;

заменяем сразу беру первый пример

Code
if(1 && 1)//итог 1

Вообще связка && даст истину если только оба выражения истина, а || даст ложь только в том случае когда оба значения 0

Теперь напишем небольшой пример основываясь на выше предоставленном материале.

Code
#include


Code
main()
{
new x = random(10);
if(x < 5)
{
printf("X < 5, x = %d",x);
}
}



Code

public OnGameModeInit()
{
return 1;
}



Code
random(max); //После выполнения вернёт после себя случайное значение от 0 до max, max в диапазон не входит, вернёт значение то есть вместо этой функции на месте кода подставится цифра.

Счёт у компьютера начинается не как у людей с 1, а с 0
По запускаете этот скрипт вы уведите что значения x принимает почти каждый раз разные.

Дальше мы будем рассматривать циклы без них так же как и без ветвлений не обходится почти ни один алгоритм. Ветвления входят так же в состав циклов, то есть в цикле задаётся условие при не выполни которого цикл останавливается и код выполняется дальше. Есть грубо говоря 2 вида циклов это циклы которые сначала проверяют истина ли условие, а затем уже выполняют тело цикла (то что заключено ниже в фигурные скобки), и есть цикл который сначала делает, а уже потом проверят условие называется он цикл с пост условием, первые циклы с пред условием, цикл с пост условием как вы уже наверное догадались выполняется как минимум 1 раз.
И так рассмотрим циклы с пред условием начнём с цикла while:
Синтаксис: while(Логическое выражение(условие тобиш)) и ниже тело цикла как у оператора if, теперь рассматриваем на примере, в качестве примера можно написать скрипт выводящий на экран символы и их коды, в кодировка DOS это консоль на которой мы выполняем примеры отличается от win и русские буквы там будут заменены кара кульками, но они там есть, и сейчас мы их пожалуй найдём

Code


main()
{
new i = 128;
while(i<158)
{
printf("%c = %d",i,i);
i++;
}
}

Возможно вас смутила запись "i++" это тоже самое что и i = i + 1; увеличение переменной на 1, так же можно сделать и такую запись i += 1; это прибавить к i 1, вместо одного вы можете прибавить и переменную, так же есть -= *= /=, думаю догадываетесь что они означают.
Данный код можно записать и по другому

Code

main()
{
new i = 128;
while(i<159)
printf("%c = %d",i,i++);
}

Здесь мы выводим значения i и увеличиваем её на 1, можно записать по другому

Code


main()
{
new i = 127;
while(i<159)
printf("%c = %d",++i,i);
}

Здесь мы сначала увеличиваем значение i на единицу, а затем выводим.
Следующий цикл с пред условием for
Синтаксис for(Действие выполняемое 1 раз перед запуском;условие;действие выполняемое каждый цикл)
В работе с while всё понятно, проверяем > выполняем > проверяем > выполняем и так далее...
for работает несколько по другому выполняем действие > проверяем > выполняется тело цикла > выполняем действие цикла > проверка > тело цикла > действие цикла > проверка и так далее...
Теперь перепишем наш код с оператором for

Code

main()
{
for(new i=128;i<160;i++)
printf("%c = %d",i,i);
}

В качестве первого действия мы создали переменную i и приравняли её к 128 (Коду символа А в консоли), замечание переменная была создана только на время выполнения цикла, если вы попытаетесь использовать после цикла компилятор выдаст вам ошибку"error 017: undefined symbol "i""
переменная не была найдена, ведь она была уничтожена после выполнения цикла, на цикле с пост условием внимания заострять не будем так как это тоже что и while
синтаксис

Code

do
{
}while();//Вот и всё

Комментарий это некий текст который не компилируется и служит для пояснения назначения переменных, функций и кусков кода, конечно когда вы пишите свой мод то думаете что будете держать всё в голове до конца жизни, но через недельку когда возникает надобность что-то поменять вы открываете мод и не чего не понимаете какие-та строчки написаны и т.п. Говорите вы себе так как не чего не понятно, благодаря комментариям вы можете достаточно быстро разобраться в собственном коде и уж тем более помочь в этом другому ко деру который посчитает нужным ваш код дорабатывать, так же вы можете комментировать те строки которые вы считаете не нужными на данный период времени, но которые могут понадобится после, что бы задокументировать строку ставим в начале строки "//" и всё что идет после будет выделено зелёным, так же вы можете использовать "/*" и "*/", первый открывает комментарии и всё что идёт дальше будет задокументированно до "*/" рекомендуется не ставить комментарии где попало например в строках на подобие "x1 += 2;" так как это и так понятно, а вот при описании собственных функций лучше ими воспользоваться не рекомендуется создавать вложенные комментарии так как это может привести к ошибкам приведу пример вложенного комментария

Code

/* Комментарий
/*
Вложеный комментарий
*/
*/

Поясняю как это приводит к ошибкам дело в том что когда вы ставите "/*" комментарий открывается когда идёт второй такой символ ничего не происходит затем идёт закрытие "*/", а следующий знак не смотря что это у вас в редакторе кода не отобразилось уже не будет опознан как закрывающий и будет выдана ошибка.

И так в этом посте я собирался поведать о массивах, собственно начнём повествование:
И так мы уже знаем что переменная это у нас некое подобие ящика, ну так вот массив можно назвать некоторым подобием склада ящиков одного типа объявляется он почти так же как и переменная то есть даётся имя по которому мы сможем к нему обращаться и указывается количество хранимых в нём ящиков, выполнять какие действия с самим массивом мы как бы не можем, нас интересуют его ячейки(ящики) к ячейке мы обращаемся по её индексу, помните что счёт в компьютере начинается с 0 поэтому первая ячейка всегда будет иметь индекс 0, а последняя n-1, значения всех элементов массива(ячеек) вы можете задать при его инициализации(создании, объявлении), теперь пример:

Code

main()
{
new mass[10];
for(new i=0;i mass[i] = 128 + random(30);
for(new i=0;i printf("%d = %c",mass[i],mass[i]);
}

И так в этом примере мы создали массив из 10 элементов затем задали случайные значения всем его элементам и вывели на консоль все его элементы в виде цифр и символов, наверное вас заинтересовало что это за функция такая sizeof, ну так вот эта функция позволяет узнать количество элементов массива. Вообще все массивы могут иметь только фиксированный размер то есть если я задал массив из 20 элементов, то он никак не может содержать 50 элементов, есть ещё одно несколько неприятное ограничение это то что в ходе выполнения вашего скрипта вы не можете создать массив не из местного вам количества элементов так скажем, то есть количеством элементов может является только константа, а никак не число возращённое например функцией рандом, или указано какой нибудь переменной. Кстати код который я написал будет несколько неудачным и вообще будет является несколько заторможенным в выполнении конечно при двух головом атлоне это не заметно, но старайтесь писать код как можно менее требовательным к ресурсам это поможет вам развить соображал-ку . И так я сказал что код тормозивший теперь разберёмся в чём, во первых я создаю для каждого массива одну и ту же переменную создание переменной тоже отнимает время как и её приравнивание, но приравнивание всё же меньше времени отнимет, так почему бы её не объявить выше (заметка при создании переменной в pawno она автоматически получает значение 0, это встречается далеко не во всех языках например в С/С++ этого нет) таким образом мы будем создавать её всего лишь однажды и в дальнейшем просто приравняем её к 0, теперь вторая промажка это использование в условии функции sizeof дело в том что каждый раз при проверке условия она будет высчитывать размер массива(ну я так думаю) это время да и память она тоже потратит, давайте перепишем этот код заново:

Code


new mass[10];
new sizemass = sizeof(mass);
new i;
while(i < sizemass)
mass[i++] = 128 + random(30);
for(new i=0;i printf("%d = %c",mass[i],mass[i]);

Думаю так код будет смотреться немного лучше.
Говоря о массивах нельзя не упомянуть о строках, строки сами по себе являются массивами на подобие массива mass. Используя массивы вы можете очень сильно сократить код и повысить его функциональность что избавит вас от лишней писанины.
По мимо массивов существуют ещё и списки enum используется следующим образом:

Code

enum inf
{
X,
Y,
Z
}
new mass[10][inf];

Массивы могут иметь до 3 измерений, одномерный массив вы можете представить в виде строки, двухмерный в виде квадрата или прямоугольника ну, а трёхмерный говорит вроде сам за себя. В этом коде был создан список с именем inf и был подставлен в массив mass. Теперь у массива на каждой полочке к которой мы обращаемся по индексу есть 3 ячейки к которым мы обращаемся по имени состоящему из символов

Code
X Y Z

Автор - admin
Дата добавления - 06.10.2010 в 03:21:32
Jacky_MillerДата: Пятница, 08.04.2011, 22:17:40 | Сообщение # 2

Группа: Пользователи
Сообщений: 18
Все конечно круто, но: Совсем не объяснилось где это использовать( конкретно, кроме текста на экране). Вот я новичок-новичком, и вот это прочитал первое, и сказать честно, мало что понял. Никого не обвиняю, просто не понял что-то.. Можно ли как-то детальней объяснить?
 
СообщениеВсе конечно круто, но: Совсем не объяснилось где это использовать( конкретно, кроме текста на экране). Вот я новичок-новичком, и вот это прочитал первое, и сказать честно, мало что понял. Никого не обвиняю, просто не понял что-то.. Можно ли как-то детальней объяснить?

Автор - Jacky_Miller
Дата добавления - 08.04.2011 в 22:17:40
adminДата: Пятница, 08.04.2011, 22:47:03 | Сообщение # 3

Группа: Администраторы
Сообщений: 3869
Jacky_Miller, детально это как?


zm-jail.ru

Разработка сайта samp-pawno.ru


 
СообщениеJacky_Miller, детально это как?

Автор - admin
Дата добавления - 08.04.2011 в 22:47:03
Jacky_MillerДата: Пятница, 08.04.2011, 23:07:15 | Сообщение # 4

Группа: Пользователи
Сообщений: 18
НУ, честно говоря, я просто не понял, где это нужно использовать? или можно? Против Вас лично, я ничего не имею, просто я только-только еще "зеленющий новичок"
 
СообщениеНУ, честно говоря, я просто не понял, где это нужно использовать? или можно? Против Вас лично, я ничего не имею, просто я только-только еще "зеленющий новичок"

Автор - Jacky_Miller
Дата добавления - 08.04.2011 в 23:07:15
adminДата: Суббота, 09.04.2011, 00:18:02 | Сообщение # 5

Группа: Администраторы
Сообщений: 3869
Jacky_Miller, так это функции что они делает..что тут не понятного то?куда хочешь там и будет работать твоя функция:)


zm-jail.ru

Разработка сайта samp-pawno.ru


 
СообщениеJacky_Miller, так это функции что они делает..что тут не понятного то?куда хочешь там и будет работать твоя функция:)

Автор - admin
Дата добавления - 09.04.2011 в 00:18:02
TWiXДата: Суббота, 09.04.2011, 00:30:22 | Сообщение # 6

Группа: Пользователи
Сообщений: 316
Jacky_Miller, открываешь PAWNO и там работаешь, пишешь, изменяешьи тд...

Хоронят олигарха. Гроб стоит. Собрались друзья.
Подходит к покойному Гусинский, достает портмоне,
извлекает 200 долларов, кладет в гроб и скорбно отходит.
За Гусинским к гробу подходит Потанин, тоже достает портмоне,
отсчитывает 200 долларов, кладет, отходит.
Наконец, подбегает Березовский. Достает чековую книжку,
выписывает чек на 600 долларов, кладе, забирает 400 баксов
наличными, отходит.
 
СообщениеJacky_Miller, открываешь PAWNO и там работаешь, пишешь, изменяешьи тд...

Автор - TWiX
Дата добавления - 09.04.2011 в 00:30:22
Jacky_MillerДата: Суббота, 09.04.2011, 01:17:34 | Сообщение # 7

Группа: Пользователи
Сообщений: 18
Спасибо,прочитав еще темы, "типо" разобрался..
 
СообщениеСпасибо,прочитав еще темы, "типо" разобрался..

Автор - Jacky_Miller
Дата добавления - 09.04.2011 в 01:17:34
Форум » Pawno » Wiki-samp » pawno(основым скриптинга для новичков)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
Система телефонов поломалась
Не в себе
фильм скалайн
Трансформеры 3
форсаж 6
Ищу [FS]Для админок на сервер
нужны координаты карты для отметки зон...
Помогите найти мод
pawno урок автоматические ворота
обращение к скриптерам.
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS

Вопросы по скриптингу

(1081)

Считаем до 1000

(274)

Ваши ошибки при компиляция gm

(260)

Набор в команду

(80)

Ваши ошибки при компиляции GM/FS

(71)

вопроосы по скриптингу от 22.04.2013

(64)

Баннеробмен

(64)

несколько команд на samp 0.3 c

(64)

Оценки сайта samp-pawno.ru

(55)

Заказ хостинга

(51)

Набор в команду(форум)

(45)

Урок №61 по созданию системы авто для GodFather

(45)

admin

(3869)

[east_side]_trane

(443)

TWiX

(316)

valych

(501)

drifter-dron

(477)

danik_rok

(317)

Dimka_71rus

(360)

Drifter96

(300)

MaNb9K

(220)

[MTA]MaPeR5518

(181)

Dima_Tkach

(107)

Nik_Ull

(184)

system32xzxz

(Четверг 09:25:24)

torbin169

(Суббота 23:09:29)

kuchuk_00

(Суббота 17:10:14)

artem_boyko_3

(Суббота 15:57:37)

greggelbak

(Среда 18:29:37)

vladisvlavs

(Среда 13:51:57)

add02102002

(Понедельник 22:37:15)

Диман221

(Понедельник 18:12:45)

almas051004

(Воскресенье 11:05:32)

megasuccessms

(Суббота 14:15:36)

nawe

(Пятница 22:25:23)

swoysb

(Пятница 14:55:29)

Вверх
00:59:29
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2024

vkontakte :samp-pawno.ru: