08:46
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
Модератор форума: Dima-kun  
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » Об основах PAWNO (доступно для новичков)
Об основах PAWNO
PcixДата: Пятница, 25.07.2008, 11:21 | Сообщение # 31
Уверенный в себе
Группа: Продвинутые
Сообщений: 175
Награды: 2
Город: E-burg
Репутация: 24
Замечания: 0%
Статус:
Напишите про массивы плиз wall



--------------------------------------------------------
--------------------------------------------------------
Тут можете посмотреть мой ролик снятый в SA:MP

WNeZRoSДата: Пятница, 25.07.2008, 13:03 | Сообщение # 32
Местный
Группа: Продвинутые
Сообщений: 607
Награды: 11
Город: Где-то на Северо-Западе
Репутация: 119
Замечания: 0%
Статус:
масси задаются так:
Code
new tak[10]; // в нём 10 переменных

чтобы использовать массив нужно писать так:

Code
tak[0] = 10;
tak[9] = 1;
if(tak[0] != tak[9]) { }

[SFD]ZaRДата: Среда, 20.08.2008, 19:43 | Сообщение # 33
Местный
Группа: Пользователи
Сообщений: 519
Награды: 6
Город: Шлюхандия
Репутация: 65
Замечания: 60%
Статус:
Если такой паблик, *ДЕЙСТВИЕ_ПРИ_ВЫХОДЕ_ИЗ_МАШИНЫ* - OnPlayerExitVehicle ???


[SFD]PaulДата: Среда, 20.08.2008, 19:45 | Сообщение # 34
Долгожитель
Группа: Продвинутые
Сообщений: 1441
Награды: 22
Город: Москва
Репутация: 237
Замечания: 0%
Статус:
Quote (ZaR)
Если такой паблик, *ДЕЙСТВИЕ_ПРИ_ВЫХОДЕ_ИЗ_МАШИНЫ* - OnPlayerExitVehicle ???

?
public OnPlayerExitVehicle(playerid, vehicleid)



[FS] Weapon Shop
[FS] Svalka
[FS] Adminhouse
[SFD]ZaRДата: Среда, 20.08.2008, 19:49 | Сообщение # 35
Местный
Группа: Пользователи
Сообщений: 519
Награды: 6
Город: Шлюхандия
Репутация: 65
Замечания: 60%
Статус:
спс
Quote (Paul|ICK|)
public OnPlayerExitVehicle(playerid, vehicleid)



SpiritДата: Четверг, 21.08.2008, 13:18 | Сообщение # 36
Освоившийся
Группа: Продвинутые
Сообщений: 129
Награды: 1
Город: Омск
Репутация: 14
Замечания: 0%
Статус:
Вы бы хоть сами прочитали какую хренатень вы пишите, я почитах первые посты нифига непонял с чего надо начинать какието потоки когда блин всё идёт в одном потоке по порядку тут же пошли таймеры, а начинать надо было с малого это переменные ветвления, циклы и массивы по порядку как написал, уже потом можно объяснять куда что вписывать и про функции желательно с примерами, а не перечислением пабликов там блин из названия всё ясно, кому не ясно качайте словари.

Модеры, удаляйте тему нафиг и пусть блин пишет подобные темы ктото один при том тот кто соображает что пишет.


Любиш садизм люби и мазахизм :)
webserferДата: Четверг, 21.08.2008, 13:21 | Сообщение # 37
Уверенный в себе
Группа: Продвинутые
Сообщений: 178
Награды: 1
Город: Санкт-Петербург
Репутация: 26
Замечания: 0%
Статус:
Spirit, ну блин, что ты хотел, если первый пост пишет мидиа-пг fun


(с) Алфавит, 1990, 17 ноября
BannyHopДата: Пятница, 22.08.2008, 02:04 | Сообщение # 38
Освоившийся
Группа: Продвинутые
Сообщений: 128
Награды: 3
Город: Кемерово
Репутация: 138
Замечания: 0%
Статус:
Было бы очень хорошо, если вы соберете всю информацию в один постик. :)

Ну, как-нибуть так:
Данная статья предназначена для людей, не знающих принципов работы pawno.

Pawno это упрощённый и адапртированый для сампа вариант с++.

В конце КАЖДОЙ строчки и функции должен стоять знак ;
В павно существуют паблики, после каждого паблика открывается поток, в нём открывается неограниченное количество потоков. В конце поток закрывается и ретёрнится (ставится return=0 или return=1).
Потоки, в которые вставляются функции, переменные и значения, открываются знаком { и закрываются знаком }

Паблики:

Паблики можно переводить самим, однако вот расшифровка сандартных:

OnGameModeInit
в этом паблике должно находится то, что будет происходить при запуске мода

OnPlayerConnect
что будет происходить при присоединении игрока

OnPlayerSpawn
что будет происходить когда заспавница игрок

OnPlayerCommandText
ягодка павно-сюда команды

OnPlayerDeath
сюда то, что будет при смерти игрока

OnPlayerDisconenct
при отключении игрока

OnPlayerEnterVehicle(playerid, vehicleid)
Что произойдет когда игрок сядет в машину.

OnPlayerExitedMenu(playerid)
Что произойдет когда игрок выйдет из меню.

OnPlayerPickUpPickup(playerid, pickupid)
Что произойдет когда игров подберет пикап.

OnGameModeExit(OnFilterScriptExit)

Что будет происходит при отключение мода(скрипта).

OnVehicleSpawn

Что будет происходить при спавне машины.

OnPlayerText

сюда обычный текст(не команды).Например тим-чат:

Code

if(text[0] == '!')        
{        
new name[24];        
GetPlayerName(playerid, name, 24);        
format(string, sizeof(string), "*Teamchat %s: %s", name, text[1]);        
printf("%s", string);        
for(new i = 0; i < MAX_PLAYERS; i++)        
{        
if(IsPlayerConnected(i))        
{        
if(gTeam[i] == gTeam[playerid])        
SendClientMessage(i, GetPlayerColor(playerid), string);        
}        
}        
return 0;        
}

OnPlayerRequestClass

Что будет,когда игрок выбирает себе скин

OnPlayerStateChange

Игрок меняет свое "положение"(водитель,пассажир,пешеход)

OnPlayerEnterCheckpoint(OnPlayerEnterRaceCheckpoint)

Когда игрок входит в чекпоинт(гоночный чекпоинт)

OnPlayerLeaveCheckpoint(OnPlayerLeaveRaceCheckpoint)

Когда игрок покидает чекпоинт(гоночный чекпоинт)

OnPlayerPrivmsg

Когда игрок посылает личное сообщение

OnVehicleMod(vehicleid, componentid);
Когда машину тюнят

OnVehiclePaintjob(vehicleid, paintjobid);
Видимо когда меняется паинтжоб

OnVehicleRespray(vehicleid, color1, color2);
Когда машину перекрашивают

OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
Когда меняем интерьер

OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
Когда жмём кнопки

OnPlayerSelectedMenuRow(playerid, row);
Когда выбираем пункт в меню

OnPlayerExitedMenu(playerid);
Когда выходим из меню(По нажатию Enter)

---------
Функции:
Краткое описание некоторых функций:
замена id:
в переменных, где присутствует ид игрока, если хочешь, что бы функция выполнялась для игрока, приведшему команду в децйствие, пиши туды playerid, но если хочешь чтоб команда выполнялась для определённого ид, пиши туда номер ид.

Ну функции тоже можно самим перевести, вот стандартные

AddPlayerClass(id,x,y,z,a) - пихаецо в OnGameModeInit, добавляет новый скин в мод, в скобочках идёт (ид скина, координаты x y z a)

AddStaticVehicle(id,x,y,z,a,color1,color2) - присутствует тоже только в OnGameModeInit, добавляет в мод тачек, в скобочках (ид тачк, координаты, цвет1, цвет2) // существуют "таблицы цвета", в которых расписаны ид разных цветов, цвет с номером "-1" означает рандомный выбор цвета

SetPlayerHealth(id, points) - задаёт здоровье игрока, в скобках (ид игрока, кол-во хп)
SetPlayerArmour(id, points) - задаёт броню, скобки думаю понятны
SetPlayerColor(id, color) - задаёт цвет игрока(ника и значка на радаре), в скобках-(ид игрока, цвет) // для данной функции цвет отсчитывается в 16-ричной системе(код цвета далее как |CODE| ), вставляется в функцию в виде 0x|CODE|FF, например для чёрного (000000) цвет будет 0x000000FF, для красного (код FF0000) будет выглядеть так: 0xFF0000FF
SetPlayerPos(id, x,y,z) - координаты игрока, думаю расшифровывать скобки не надо.

После КАЖДОЙ функции должны стоять ";", например SetPlayerHealth(playerid, 100);

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

А теперь самое интересное:
команды!
В разных модах примеры команд выглядят по разному, так же есть несколько типов вида команд. Я покажу только стандартные, в кодировании strcmp (а не dcmd, например).
Команда вставляется в OnPlayerCommandText, выглядит так:

if (strcmp("/тексткоманды", cmdtext, true, 10) == 0)
{
функция
return 1;
}
return 0;

например для того, что бы убить игрока (/kill, т.е. задать здоровье на 0), команда должна выглядеть так:

Code
if (strcmp("/kill", cmdtext, true, 10) == 0)
{
SetPlayerHealth(playerid, 0);
return 1;
}
return 0;

или чтоб по команде /fuck игроку давалась броня, здоровья становилось 20 хп, давался чёрный цвет и координаты становились 0.0.0

Code
if (strcmp("/fuck", cmdtext, true, 10) == 0)
{
SetPlayerHealth(playerid, 0);
SetPlayerArmour(playerid, 100);
SetPlayerColor(playerid, 0x000000FF);
SetPlayerPos(playerid, 0,0,0);
return 1;
}
return 0;

=================================================
new(int) название; - целочисленное значение(1,2,3,итд)
new Float:название; - число с плавающей запятой(100.0,200.1,3.5, итд)
new название[количество ячеек]; - массив, в него могут помещатся как символы, так и числа, и числа с плавающей запятой
так-же присутствуют свои обозначения файловых переменных, и ещё много чего из C++
====================================================================================
Пример IF конструкции:

Code
if(переменная == значение)
{
print("ok");
}

Пример IF - ELSE конструкции:
Code
if(переменная == значение)
{
print("ok");
}
else
{
print("ne ok");
}

Пример IF-Else IF конструкции:

Code
if(переменная == значение)
{
print("ok");
}
else if(переменная >= значение)
{
print("bol'we");
}

Знаки для сравнения:
== - Равно
>= - Больше или равно
<= - Меньше или равно
!= - Не равно
&& - и,например if(a>b&&b>c)
||- или,например if(a>b||a>c)
! - не,например if(!IsPlayerAdmin) - если игрок не админ


Сообщение отредактировал Raper - Пятница, 22.08.2008, 13:32
theAloneДата: Пятница, 22.08.2008, 12:05 | Сообщение # 39
Долгожитель
Группа: Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус:
Во что есть ещё

OnVehicleMod(vehicleid, componentid);
Когда машину тюнят

OnVehiclePaintjob(vehicleid, paintjobid);
Видимо когда меняется паинтжоб

OnVehicleRespray(vehicleid, color1, color2);
Когда машину перекрашивают

OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
Когда меняем интерьер

OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
Когда жмём кнопки

OnPlayerSelectedMenuRow(playerid, row);
Когда выбираем пункт в меню

OnPlayerExitedMenu(playerid);
Когда выходим из меню(По нажатию Enter)

BannyHopДата: Пятница, 22.08.2008, 13:34 | Сообщение # 40
Освоившийся
Группа: Продвинутые
Сообщений: 128
Награды: 3
Город: Кемерово
Репутация: 138
Замечания: 0%
Статус:
Вставила. Благодарю. :) Пишем еще.
SpiritДата: Пятница, 22.08.2008, 17:19 | Сообщение # 41
Освоившийся
Группа: Продвинутые
Сообщений: 129
Награды: 1
Город: Омск
Репутация: 14
Замечания: 0%
Статус:
*** ** вашу мать научили...
Spirit (20:09:17 22/08/2008)
OnPlayerCommandText - это функция и вызвать её можно из любой части мода

TheBony (20:09:47 22/08/2008)
А я думала это паблик

За такие вопросы автора первого поста банить надо:)


Любиш садизм люби и мазахизм :)

Сообщение отредактировал Spirit - Пятница, 22.08.2008, 17:26
BazДата: Среда, 03.09.2008, 13:47 | Сообщение # 42
Постоялец
Группа: Продвинутые
Сообщений: 390
Награды: 2
Город: Moscow
Репутация: 48
Замечания: 0%
Статус:
Расчитано на новичков с мозгами.
...сочувствую



Делаю дизайны сайтов, недорого. Обращаться в ЛС
theAloneДата: Среда, 03.09.2008, 18:28 | Сообщение # 43
Долгожитель
Группа: Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус:
Baz, многим и это сложно. Но я как открыл первый раз pawno, сразу всё понял куда пихать. crazy
BazДата: Среда, 03.09.2008, 19:45 | Сообщение # 44
Постоялец
Группа: Продвинутые
Сообщений: 390
Награды: 2
Город: Moscow
Репутация: 48
Замечания: 0%
Статус:
ну логика то должна быть у того кто решил заняться скриптингом. А если её нет, то никакие туториалы не помогут


Делаю дизайны сайтов, недорого. Обращаться в ЛС
LuxurYДата: Пятница, 05.09.2008, 22:47 | Сообщение # 45
Уверенный в себе
Группа: Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус:
Массив - это особая переменная содержащая в себе n-ное кол-во обычных переменных. Количество обычных переменных (размер массива) задается самостоятельно.

Например:

Code
new string[256];

Это массив с размерностью 256. Важно заметить, что 256 - кол-во ячеек в массиве для хранения данных. Ячейки определяются с 0 до 255 ( а не с 1 до 256 ! ).

Quote
Например:
массив new array[n]; - с размерностью n
Диапазон ячеек: 0 - ( n - 1 )

Данный массив мы можем использовать для хранения строк и целых чисел. Почему нельзя хранить числа с плавающей точкой (дробные числа) ? Поясняю.
Числа с плавающей точкой имеют свой синтаксис и задаются следующим образом:

Code
new Float:massiv[10];

В таком массиве мы можем хранить 10 чисел с плавающей точкой.

Становится интересно почему же можно хранить строки совместно с числами. Дело в том, что каждый символ имеет свой номер. Номера задаются кодировкой. Возможно кто-то уже знаком с данным термином благодаря работе с браузером (IE, Firefox, Opera и т.д.). Для справки: используется кодировка ANSI 1251.

Ну а теперь примеры использования:

Строки:

Code
new string[256]; //1
format ( string , sizeof ( string ) , "This is %d and this is %s" , 5 , "6" ); //2
SendClientMessageToAll ( 0x33AA33AA , string ); //3

1. Создаем массив с размерностью 256
2. Форматируем строку добавляя в них число 5 и строку (пусть она даже из одного символа) 6.
Примечание: даже если перед вами цифра, это еще не значит что это не строка. :) Если мы напишем,
format ( string , sizeof ( string ) , "This is %d and this is %d" , 5 , "6" );
то в итоге мы не получим число 6 в строке, а получим 54! Аналогично и со всем остальным.
Синтаксис очень важная вещь. Приведу некоторые "символы" для форматирования.
%s - для строк
%d - для целых чисел
%f - для чисел с плавающей точкой (дробных чисел)
Есть и другие типы и разновидности, но эти самые основные.

sizeof ( ) - оператор для определения размерности массива.

3. Отсылаем строку в чат.

Целые числа:

Code
new time[3]; // 1
gettime ( time[0] , time[1] , time[2] ); // 2
printf ( "Now: %d hours %d minutes %d seconds" , time[0] , time[1] , time[2] ); // 3

Что это? Объясняю.
1. Создаем массив с размерностью 3.
2. С помощью функции gettime записываем часы в переменную time[0], минуты в time[1], секунды в time[2].
3. Форматируем и отсылаем в консоль сервера.
Примечание: форматировать и отсылать строки можно только с функцией printf, с SendClientMessage не прокатит.

Появляется вопрос что это за квадратные скобки с цифрами ( [0] ).
Так как мы используем массив, то в нем несколько ( 3 ) ячеек для хранения данных. В 1 ячейке может храниться одна цифра или один символ ну или одно число с плавающей точкой ( только не забываем про Float: )
Цифра в квадратных скобках есть цифра, определяющая в какую именно ячейку мы записываем данные.
Функция gettime всего лишь делает следующие операции:

Code
time[0] = 12;
time[1] = 30;
time[2] = 59;

В конце концов мы можем также расписать и строку.

Например:

Code
new string[5];

string[0] = 'H';
string[1] = 'e';
string[2] = 'l';
string[3] = 'l';
string[4] ='o';

Но проще использовать функцию format.

Поэтому по сути буквы ничем не отличаются от цифр. Дело только в способах отображения. В конце концов все записывается в память компьютера в формате 100101011.... :)


www.gtascript.ru admin
www.gtascript.ru - профессиональный скриптинг SA-MP, MTA


Сообщение отредактировал LuxurY - Суббота, 06.09.2008, 17:24
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » Об основах PAWNO (доступно для новичков)
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua