Как написать свой скрипт? Введение. — различия между версиями

Материал из Bully Multiplayer Wiki
Перейти к: навигация, поиск
Строка 35: Строка 35:
 
<div class = "example_server_box">'''Сервер'''<div class="example_box"><syntaxhighlight lang="javascript">
 
<div class = "example_server_box">'''Сервер'''<div class="example_box"><syntaxhighlight lang="javascript">
 
function knockedOut(player,attacker) {
 
function knockedOut(player,attacker) {
if (!!player and !!attacker) {
+
if (!!player && !!attacker) {
 
//Здесь уже код выдаёт деньги игроку attacker
 
//Здесь уже код выдаёт деньги игроку attacker
 
  //Ко всему, у игрока player можно их снять
 
  //Ко всему, у игрока player можно их снять

Версия 19:36, 19 мая 2016

Содержание

Создание рабочего скрипта.

Для начала мы постараемся разобрать, что нам необходимо для создания рабочего скрипта, шаг за шагом.

Где хранятся все скрипты?

текст


Создание своего скрипта.

текст

тутор


Добавление своего скрипта на сервер.

текст

Разница между серверной и клиентской стороной скрипта.

В роли клиента выступает непосредственно запущенное приложение модификации, что и является одним из главных отличий от сервера. Так же именно сервер является "синхронизатором", т.е. именно он передаёт клиенту информацию о позиции других игроков, транспорта и т.п.

Один из наглядных примеров: graphics.drawRect() невозможно вызвать на сервере, т.к. данная функция рисует на экране прямоугольник. У сервера нет таких возможностей, как и экрана. Он передаёт на клиентскую сторону соответствующий "скрипт", который уже может её вызывать (на клиенте).

Клиент не способен выполнять функции относящиеся к серверу, т.к. по факту им не является. Создание транспорта должно его зарегистрировать на сервере, именно по этому попытавшись создав транспорт на клиенте, сервер его удалит при любых взаимодействиях, т.к. его "не существует".

Привязка функций к определенным событиям.

Полноценный игровой режим или же небольшой скрипт редко может обойтись без событий.

Для чего это необходимо? Например вы планируете выдавать игроку 100$ за каждого избитого противника. Вам необходимо выполнять вашу функцию при событии onPlayerKnockedOut, что бы игрок получил награду.

Сервер
function knockedOut(player,attacker) {
	if (!!player && !!attacker) {
		//Здесь уже код выдаёт деньги игроку attacker
 		//Ко всему, у игрока player можно их снять
	}
}

Функция есть, но сама собой она не вызовется. Именно для этого используется eventHandlers.add().

Сервер
eventHandlers.add("onPlayerKnockedOut", knockedOut);

Теперь функция knockedOut() будет вызываться после события onPlayerKnockedOut.