Было бы очень хорошо, если вы соберете всю информацию в один постик.
Ну, как-нибуть так:
Данная статья предназначена для людей, не знающих принципов работы 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) - если игрок не админ