NexuS
Новичок
Хорошо, теперь вы знаете, как сделать занятия и места их об мы покажем вам, как установить команд, это будет первый бит реальной кодирования, но довольно легко. Я просто с помощью двух классов, описанных на этой странице, если у вас есть более удалить их сейчас или начать новый режим и убедитесь, что только эти два дюйма классов нумеруются в порядке от 0, поэтому первый класс в файле равен 0, второй 1 и так далее (компьютеры и программы почти всегда начинаются с 0 в подсчете (вы обнаружите, что ваши PlayerID в тест игры 0)). Мы хотим, чтобы установить командой на основании которых они выбирают класс (либо Гров или Балла), вы можете посмотреть на обратные вызовы и думаю, что это пойдет в OnPlayerRequestClass функцию, и вы были бы правильными. Когда выбирают класс, который вы хотите установить команды Исходя из этого, мы не можем делать это в функции OnPlayerSpawn как на тот момент мы не знаем, класс они выбрали (то есть параметров и параметров только мы прошли или которые являются глобальными в сценарии (мы рассмотрим это позже) может быть использована в любой функции). Сначала мы должны определить наши команды, в соответствии с "#include" line(s)" в начало файла добавьте следующие строки:
Если вы хотите изменить цвет, это прекрасно, только помните, что две последние цифры являются альфа-и ниже, тем меньше вы можете видеть цвета. Определяет чисто замены, теперь, если вы хотите использовать номер 1 в вашем сценарии вы можете использовать вместо TEAM_GROVE, это не очень хорошая идея для нормальных расчетов, как это делает их трудно читать, но для использования для обозначения команд, которые только обозначается числом, он дает много четкое, что происходит (и делает его очень легко изменить команды вокруг себя, или изменить позже, как вам нужно изменить только 1 в определять, а не все экземпляры его по всему коду. При компиляции кода, все " TEAM_GROVE "S будет заменен на 1, это не так переменной, это постоянная, она не меняет добавить. Теперь под эти строки:
Это называется глобальный массив. Массив в основном много переменных (места хранить данные для чтения и записи) слипаются вместе, чтобы хранить большие объемы данных на один раз. " MAX_PLAYERS "является предопределенных константы (делается точно так же, как мы сделали все определяет. MAX_PLAYERS фактически установлена на уровне 500 в SA-MP 0.3a, так что это означает, что наш массив может хранить до 500 элементов данных . г на имя означает глобальный, но это не делает его глобальным (это только делает это проще сказать, какие переменные делать то, что, определив ее пределами функции означает, что она носит глобальный характер и могут быть использованы все наши функции. Любая переменная определено в функции является локальной для этой функции и она не может иметь то же имя, другой переменной в той же функции или глобальной переменной (которая также, почему г полезно), однако он может иметь то же имя, как другой переменной в другой функции. Все " PlayerID "переменных в пустой сценарий на самом деле всех независимых переменных, каждая местная на различные функции, однако все они прошли те же данные, но только помните, что любые функции, вы не будете автоматически , что данные команды. Теперь у нас есть, что создать можно положить:
Место, что код вне функции в коде (как это новая функция) и положить эти строки, как первое, что после открытия фигурные скобки в OnPlayerRequestClass обратного вызова (обратите внимание на способ переменные не глобальным, и поэтому мы вынуждены передавать их чтобы из функции тоже):
SetPlayerTeamFromClass ( PlayerID, ClassID ) ;
Это позволит сохранить игроков команды в массив через нашу новую функцию. Данные в массиве ссылается номер, поэтому массив [0] является первым элементом данных, массив [1], второй и так далее, как мы используем gTeam [PlayerID], в зависимости от PlayerID мы прошли будет определить, где в массив для хранения данных, так и для игрока 5 их данные будут храниться в массиве позиции 5 (помните, что это шестая часть данных). Теперь копия этой функции:
И добавить следующую строку в OnPlayerSpawn:
Теперь у нас есть наши команды, но то, что мы на самом деле сделали?
В нашей первой функции, мы проверяем, какой класс они выбрали (помните, мы говорили, что первый класс, определенный в файле был класс 0?) " == "означает" равно ", одного знака равенства просто устанавливает переменную число дано (как показано на следующей строке, кроме одного). Фигурные скобки отдельных функций между ними от остального кода, бит Есть только выполняется, если выбранный класс 0 (CJ), если это не так, иначе команда входит в игру и выполняет вместо (это выполняется, когда " если "команда" ложь "(т. е. класс не 0)), так как у нас есть только два класса, чтобы выбрать из это должно означать, что мы Балла:
Нам не нужно возвращаться сюда, поскольку нет данных, чтобы вернуться.
Вторая половина цветной игроков, когда они икру, так что вы можете сказать, кто, на котором команда. Как мы сохранили свою команду к глобальной сети, мы можем получить доступ к данным даже если это в отдельную функцию.
Надеюсь, вы сможете увидеть, что это делает сейчас, если игрок, который только что породила (как ссылается PlayerID) в TEAM_GROVE, положить их цвета на TEAM_GROVEs.
Следующий раздел немного отличается, она может easilly было сделать так:
Но, как это делается позволяет установить их цвета на TEAM_BALLAs только тогда, когда первая часть "ложь" (как отсортировано по ELSE), и если они находятся в TEAM_BALLA, это позволяет добавить больше вариантов, добавив больше " , если другое ( ) "блоки до конца как один будет выполняться только если все блоки в своем распоряжении не было.
PHP:
#define TEAM_GROVE 1
#define TEAM_BALLA 2
#define TEAM_GROVE_COLOR 0x00FF00AA // Bright Green (in RGBA format)
#define TEAM_BALLA_COLOR 0xFF00FFAA // Bright Purple
PHP:
new gTeam[MAX_PLAYERS];
PHP:
SetPlayerTeamFromClass ( PlayerID, ClassID )
{
если ( ClassID == 0 )
{
gTeam [ PlayerID ] = TEAM_GROVE;
}
еще
{
gTeam [ PlayerID ] = TEAM_BALLA;
}
}
SetPlayerTeamFromClass ( PlayerID, ClassID ) ;
Это позволит сохранить игроков команды в массив через нашу новую функцию. Данные в массиве ссылается номер, поэтому массив [0] является первым элементом данных, массив [1], второй и так далее, как мы используем gTeam [PlayerID], в зависимости от PlayerID мы прошли будет определить, где в массив для хранения данных, так и для игрока 5 их данные будут храниться в массиве позиции 5 (помните, что это шестая часть данных). Теперь копия этой функции:
PHP:
SetPlayerToTeamColor ( PlayerID )
{
если ( gTeam [ PlayerID ] == TEAM_GROVE )
{
SetPlayerColor ( PlayerID, TEAM_GROVE_COLOR ) ;
}
другое , если ( gTeam [ PlayerID ] == TEAM_BALLA )
{
SetPlayerColor ( PlayerID, TEAM_BALLA_COLOR ) ;
}
}
PHP:
SetPlayerToTeamColor ( PlayerID ) ;
PHP:
if (classid == 0)
{
gTeam[playerid] = TEAM_GROVE;
}
PHP:
else
{
gTeam[playerid] = TEAM_BALLA;
}
Вторая половина цветной игроков, когда они икру, так что вы можете сказать, кто, на котором команда. Как мы сохранили свою команду к глобальной сети, мы можем получить доступ к данным даже если это в отдельную функцию.
PHP:
if (gTeam[playerid] == TEAM_GROVE)
{
SetPlayerColor(playerid, TEAM_GROVE_COLOR);
}
PHP:
else if (gTeam[playerid] == TEAM_BALLA)
{
SetPlayerColor(playerid, TEAM_BALLA_COLOR);
}
PHP:
else
{
SetPlayerColor(playerid, TEAM_BALLA_COLOR);
}
