Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Основы скриптинга (Часть 5) - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Урок ]
Основы скриптинга (Часть 5)
Оценка: -----

#1
Пользователь офлайн   Mike 

  • Администратор
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Здравствуйте, с вами снова я, и в этот раз, хотел бы вас познакомить с циклом "for" , "print" , "printf" , "format" ну и немного о арифметике в pawn!

for -
этот цикл очень удобен, например для поиска по массивам, а так же, для выполнения одной и той же операции. Но перегружать мод данным циклом не стоит, так как это может повлиять на загрузку сервера.

Примеры:

Сейчас я покажу 1 пример, где мы будем, отнимать значение, у каждого транпорта:
for(new i; i<=MAX_VEHICLES; i++) // объявляем цикл
   {
Gas[i] -= 1; // отнимаем 1
   }


Его вы можете использовать в разных местах, вот например погрузка 3д текстов на дома:
for(new h = 0; h < sizeof(HouseInfo); h++) // с пом. данного цикла мы всем домам ставим 3д тексты
   {
new strinhouse[256];
AddStaticPickup(1273, 2, HouseInfo[h][hEntrancex], HouseInfo[h][hEntrancey], HouseInfo[h][hEntrancez]);
format(strinhouse,sizeof(strinhouse),"[Дом]\nЦена: %d\nУровень: %d",HouseInfo[h][hValue],HouseInfo[h][hLevel]);
HouseInfo[h][hLabel] = Create3DTextLabel(strinhouse,0x000000FF,HouseInfo[h][hEntrancex], HouseInfo[h][hEntrancey], HouseInfo[h][hEntrancez]+0.5,40.0,0,1);
pickups++;
   }



Print - с помощью него, мы можем выводить в консоль сервера различные значения!
Сам print выглядит вот так:
print("Hello!");



Примеры:
public OnGameModeInit(playerid);
{
print("Hello");
}



Текст "Hello" будет в консоли сервера при его запуске.

Printf - он отличается от print тем, что в него можно передать различные значения переменных и функций, с помощью управляющих символов:

%b - Бинарный тип
%c - Символьный тип
%d, %i - Целочисленный тип
%f - Число с плавающей точкой – вещественный тип
%s - Строка

Выглядит printf вот так:
printf("Test %d", test);



Примеры:

new test = 10; // Для начала мы создаем переменную, которой придаем значение 10
// Потом, можно вывести printf например в том же OnGameModeInit
public OnGameModeInit()
{
printf("Test: %d", test);
}



И при запуске сервера покажет в чате "Test: 10". Можно, еще это использовать, например когда админ кого-то забанил, или посчитать сколько транспорта всего на сервере, бизов, много чего, принцип работы я думаю вы поняли!

format - с пом. формата, можно тоже передать в строку, значения переменных/функций... У него всего лишь 4 аргумента.
Вот как он выглядит:
format(string, sizeof(string), "%s", test);



Примеры:

new test = 5; // создаем переменную и присваеваем значение 5
new string[5]; // создаем массив, в котором будем хранить текст
format(string,sizeof(string), "3 + %d", test); // передаем в строку
SendClientMessage(playerid, COLOR_WHITE, string); // выводим в чат ( 3+5 )



Арифметика - любые переменные в pawn, могут принимать различный арифметические значения, сейчас я вам об этом немного расскажу.

Оператор сложения +
Оператор вычитания -
Оператор умножения *
Оператор деления /
Оператор деления с остатком %

Примеры:

new test = 5; // создаем переменную и присваеваем ей значение 5
new test1 = 10; // создаем переменную и присваеваем ей значение 10
new nomer; // создаем переменную (как раз она должна присвоить результат арифметического выражения)
// теперь создаем выражение:
nomer = test*test1; // тут мы умножили 5*10, и получили результат 50
nomer = test1-test; // ну а тут мы получили 5
// Деление с остатком:
nomer = (test + test1)%6; // тут получится 2, как получилось 2? Сейчас объясню ниже



Мы сначало выполняем выражение в скобках(как нестранно ;D), получаем 15, 15/6 = 2.5, потом 2*6=12, 15-12=2 , вот и все :).
На этом я закончу свой урок, до скорого!

Автор: Mike
5

Сказали спасибо 5:

#2
Пользователь офлайн   LiMOH 

  • Эксперт
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Крайне понятно и интересно, пригодится) Держи плюс.
0

#3
Пользователь офлайн   Hottabych 

  • Прохожий
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Уроки супер!очень помог! Во многом! :dn:
0

#4
Пользователь офлайн   TeMaKaZ 

  • Прохожий
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Цитата

nomer = (test + test1)%6; // тут получится 2, как получилось 2? Сейчас объясню ниже

тут разве не получается 3 ? test+test1=5+10=15; 15/6=2.5; 2*6=12; 25-12=3 ?
0

#5
Пользователь офлайн   Mike 

  • Администратор
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Просмотр сообщенияTeMaKaZ (26 Декабрь 2012 - 23:34) писал:

тут разве не получается 3 ? test+test1=5+10=15; 15/6=2.5; 2*6=12; 25-12=3 ?


Спасибо, поправил, видимо когда писал сделал опечатку.
0

#6
Пользователь офлайн   Vejyl 

  • Прохожий
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
я новичек, и знаешь я всё понял что ты там накалякал. Даже уже сделал свой сервер за 2 дня БЕЗ СМС И РЕГИСТРАЦИИ !!!11!1
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей