Главная » Статьи GTA » Создание и раскрутка сервера SAMP »



Создание и настройка SAMP сервера [3]
Всё, что необходимо знать, по созданию SAMP сервера
Как раскрутить свой SAMP сервер [2]
Полезные статьи по раскрутке SAMP сервера
Оптимизация серверов SAMP [1]
Тонкая настройка сервера, для наивысшей производительности и корректной работы
Расширение функционала при помощи плагинов [8]
Расширяем возможности сервера SAMP



В разделе статей: 14
Показано статей: 1-14
Страницы:

Видео раскрывает вопрос установки RP модов на сервер SAMP:


Создание и настройка SAMP сервера | Просмотров: 6219 | Дата: 30.12.2013

В этой статье я расскажу Вам, как можно написать систему регистрации с нуля (можно и адаптировать под Ваш Godfather мод). 

Итак, для этого нам понадобятся следующие вещи:
1.Denwer 3 (2012) — через эту программу мы будем запускать и администрировать наш MySQL сервер.  Скачать Denwer 3.

2.MySQL Plugin от g-stylezzz — плагин для работы с базой данных.

Это кинуть в папку Plugins (жми на ссылку)

Это кинуть в папку с сервером (жми на ссылку)  + в server.cfg добавить строку: plugins mysql sscanf 

a_mysql.inc - это кинуть в папку Pawno\Includes

3. Sscanf Plugin — плагин, при помощи которого нам будет удобней и быстрей извлекать данные из результата при выборке из таблицы.

Начнём! 

 - Устанавливаем Denwer, запускаем сервер (на рабочем столе появится ярлык «Start Denwer»). 
 - Заходим в браузер и в адресной строке вводим «localhost» (без кавычек). 
 - Спускаемся ниже и переходим по ссылке: http://localhost/Tools/CODEmyadmin/index.CODE 
 - Итак, вы видите CODEmyadmin, сейчас мы можем управлять базой данных. 
 - Создаём таблицу: 
 - Примерно в центре есть «Create new database». 
 - Я назвал свою БД «pawno», кодировку выбрал «cp1251_bin». 

 

БД создана 



Теперь нам нужно создать таблицу для аккаунтов

Name — Название таблицы, Number of Fields — количество полей. 
Мы используем 3 поля,
1. ID аккаунта, чтобы можно было его распознать в таблице, можно, конечно использовать ник, но с ИД удобней;
2. Ник игрока, думаю тут всё ясно;
3. Пароль игрока.
Таблица создана, сейчас мы настроим наши поля. 

Нажимаем Save.
Все нужное я выделил красным, теперь расскажу, что за что отвечает.
Field — название поля;
Type — тип данных, есть integer (целые числа), string (VARCHAR, TEXT), float, DATE, DATETIME, TIME и т.д., в общем как в павно, тут я использую VARCHAR для строк, и INT для целых чисел.
Length/Values — сколько «ячеек» мы выделяем для поля, для ника 24 (MAX_PLAYER_NAME), для пароля — 64.
Collation — кодировка.
AUTO_INCREMENT — генерирует значения для ID игрока в порядке возрастания (1, 2, 3...).

Так будет выглядеть пустая, без аккаунтов таблица: 

- Базу данных и таблицу мы подготовили, теперь перейдем к моду. 

 - Сверху мода, где вы подключаете все инклюды, добавляем эти строки: 

#include <a_mysql> // SQL функции.
#include <sscanf2> // Извлечение данных.


 - Чуть ниже задефайним парметры БД: 

#define SQL_HOST "localhost" // IP адресс БД.
#define SQL_USER "root" // Login БД.
#define SQL_DB "pawno" // Название БД.
#define SQL_PASS "" // Пароль БД.


- Дефайны для ID'ов диалогов и цвета сообщений. 

#define DIALOG_LOGIN 1
#define DIALOG_REGISTER 2
#define DIALOG_WRONGPAS 3
#define COLOR_LIGHTRED 0xFF6347AA
#define COLOR_YELLOW 0xFFFF00AA


- Создадим массив для хранения данных аккаунта. 

enum Variables {
aID,
aName[MAX_PLAYER_NAME],
aPassword[64],
bool: aLogged,
aWrongPassword,
};
new playerVariable[100][Variables];
// 100 - моё кол-во слотов для игроков на сервере.

- Создадим функцию для подключения и отключения к БД

ConnectMySQL() { // В OnGameModeInIt вставьте ConnectMySQL();
mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS); // Тут мы используем все данные, которые мы дефайнили.
switch(mysql_ping()) { // Проверка на то, что мы подключены к БД.
case 1: print("MySQL connection: alive."); // Если подключена БД.
case -1: print("MySQL connection: dead."); // Если не подключена БД.
}
return 1;
}


DisconnectMySQL() { // Вставьте DisconnectMySQL(); в OnGameModeExit, отключаемся от БД.
mysql_close();
print("MySQL connection closed.");
}


CheckMySQLConnection() {
// Этот сток мы будем использовать для проверки, подключена ли БД перед её использованием.
if(mysql_ping() == -1) mysql_reconnect();
return 1;
}
 
Расширение функционала при помощи плагинов | Просмотров: 6729 | Дата: 11.02.2013

- Тут у нас стоки для регистрации и логина. 

CreateAccount(playerid, password[]) {
new
query[128],
// Для запроса.
sqlname[MAX_PLAYER_NAME],
sqlpassword[32];
mysql_real_escape_string(playerVariable[playerid][aName], sqlname);
// Защитит от sql inject
mysql_real_escape_string(password, sqlpassword); // Защитит от sql inject
format(query, sizeof(query), "INSERT INTO `Accounts` (`Nickname`, `Password`) VALUE ('%s', '%s')", sqlname, sqlpassword); // Добавляем в таблицу запись.
// INSERT - добавление записи в таблицу, 1. () — поля. 2. VALUE — значения этих полей.
mysql_query(query); // Отправляем запрос.
playerVariable[playerid][aID] = mysql_insert_id(); // Узнаём ИД аккаунта, будет использоваться для сохранения и прочих операций.
strmid(playerVariable[playerid][aPassword], password, 0, 64, 255); // Внедряем в массив аккаунта введенный игроком пароль.
playerVariable[playerid][aLogged] = true; // Мы авторизованы.
return 1;
}
LoadAccount(playerid, password[]) {
new
query[128],
sqlpass[32],
result[5+24+64],
dialog[128];
mysql_real_escape_string(password, sqlpass);
// Защита от SQL Inject, шифрует кодировку.
format(query, sizeof(query), "SELECT * FROM `Accounts` WHERE `Password` = '%s' AND `ID` = '%i'", sqlpass, playerVariable[playerid][aID]);
// SELECT * - выбрать, FROM - с таблицы, WHERE - где, пароль равен введенному паролю и ID равен иду ника человека.
mysql_query(query); // Отправляем запрос.
mysql_store_result(); // Смотрим записи, которые мы выбрали запросом выше.
if(mysql_num_rows() == 1) { // Если выбрало только 1 аккаунт с таким паролем и ИД - успех, пароль введен верно, загружаем данные в массив.
mysql_fetch_row_format(result, "|"); // split, данные в результате записываются типо "1|Snoowker|parol"
sscanf(result, "p<|>is[24]s[32]", // i - ид (int), s[размер] - string, ник и пароль.
playerVariable[playerid][aID],
playerVariable[playerid][aName],
playerVariable[playerid][aPassword]);
playerVariable[playerid][aLogged] = true;
mysql_free_result();
// Очищаем память.
return 1;
}
else {
// Мы ввели неверный пароль.
if(playerVariable[playerid][aWrongPassword] == 4) {
SendClientMessage(playerid, COLOR_LIGHTRED, "Вы 3 раза ввели неверный пароль и были отключены от сервера.");
Kick(playerid);
return 1;
}
playerVariable[playerid][aWrongPassword] ++;
format(dialog, sizeof(dialog),
"Вы ввели неверный пароль.\n\
У Вас осталось %i/3 попыток ввода.", 3 - playerVariable[playerid][aWrongPassword]);
ShowPlayerDialog(playerid, DIALOG_WRONGPAS, DIALOG_STYLE_MSGBOX, "Ошибка.", dialog, "Повтор", "Отмена");
}
return 1;
}
GetAccountID(playerid) {
new
query[128];
format(query, sizeof(query),"SELECT `ID` FROM `Accounts` WHERE `Nickname` = '%s'", playerVariable[playerid][aName]);

// Выбираем ID, с таблицы Accounts, где Ник равен нику игрока.
mysql_query(query); // Отправляем запрос.
mysql_store_result(); // Видим
if(mysql_num_rows() == 1) { // Если у нас в результате выбрало 1 запись, т.е. аккаунт игрока.
playerVariable[playerid][aID] = mysql_fetch_int(); // ИД игрока равен номеру записи.
mysql_free_result(); // Очищаем память.
return playerVariable[playerid][aID]; // Возвращаем ИД игрока.
}
return 0;
}

SaveAccount(playerid) {
// Сохранение аккаунта.
if(playerVariable[playerid][aLogged] == true) { // Проверка, если аккаунт авторизован.
CheckMySQLConnection(); // Проверяем, подключена ли БД.
new
query[186],
sqlname[MAX_PLAYER_NAME],
sqlpass[64];
mysql_real_escape_string(playerVariable[playerid][aName], sqlname);
mysql_real_escape_string(playerVariable[playerid][aPassword], sqlpass);
format(query, sizeof(query), "UPDATE `Accounts` SET `Nickname` = '%s', `Password` = '%s' WHERE `ID` = '%i'", sqlname, sqlpass, playerVariable[playerid][aID]);
mysql_query(query);
// Отправляем запрос
}
return 1;
}


Создадим сток для очистки массивов при коннекте/дисконнекте.

RemovePlayerVariables(playerid) {
playerVariable[playerid][aWrongPassword] = 0;
playerVariable[playerid][aID] = 0;
playerVariable[playerid][aLogged] = false;
return 1;
}


Наши диалоги:

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
switch(dialogid) {
case DIALOG_LOGIN: {
// Диалог авторизации.
if(!response) { // Если нажал «Отмена».
SendClientMessage(playerid, COLOR_YELLOW, "* Введите /q(uit), чтобы выйти из игры.");
Kick(playerid);
return 1;
}
if(!strlen(inputtext)) {
// Если поле ввода пустое.
new dialog[134+MAX_PLAYER_NAME];
format(dialog, sizeof(dialog),
"Добро пожаловать на Сервер!\n\
Этот аккаунт зарегистрирован.\n\n\
Логин: %s\n\
Введите пароль:",
playerVariable[playerid][aName]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Авторизация.", dialog, "Войти", "Отмена");
return 1;
}
LoadAccount(playerid, inputtext);
// Пробуем его авторизовать.
}
case DIALOG_REGISTER: { // Диалог регистрации.
if(!response) { // Если нажал "Отмена".
SendClientMessage(playerid, COLOR_YELLOW, "* Введите /q(uit), чтобы выйти из игры.");
Kick(playerid);
return 1;
}
if(!strlen(inputtext) || strlen(inputtext) < 6 || strlen(inputtext) > 64) {
// Если пустое поле ввода или пароль имеет меньше 6 или больше 64 символов
new dialog[380+24+10];
format(dialog, sizeof(dialog),
"Добро пожаловать на Сервер!\n\
Этот аккаунт не зарегистрирован.\n\n\
Логин: %s\n\
Введите пароль и нажмите \"Далее\".\n\n\
Примечания:\n\
- Пароль чувствительный к регистру.\n\
- Длина пароля от 6 до 32 символов.\n\
- В пароле можно использовать символы на кириллице и латинице.\n", playerVariable[playerid][aName]);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Регистрация.", dialog, "Далее", "Отмена");
return 1;
}
CreateAccount(playerid, inputtext);
// Создаём аккаунт.

playerVariable[playerid][aLogged] = true; // Авторизуем игрока.


case DIALOG_WRONGPAS: { // Если неверный пароль.
if(response) {
new dialog[134+MAX_PLAYER_NAME];
format(dialog, sizeof(dialog),
"Добро пожаловать на Сервер!\n\
Этот аккаунт зарегистрирован.\n\n\
Логин: %s\n\
Введите пароль:",
playerVariable[playerid][aName]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Авторизация.", dialog, "Войти", "Отмена");
return 1;
}
else {
// Если нажал "Отмена".
Kick(playerid);
return 1;
}
}
}
return 1;
}
 
Расширение функционала при помощи плагинов | Просмотров: 2212 | Дата: 11.02.2013

Расширение функционала при помощи плагинов | Просмотров: 1119 | Дата: 10.02.2013

Отключаем возможность писать в чат неавторизованному. 

public OnPlayerText(playerid, text[]) 
{
if(playerVariable[playerid][aLogged] == false) return 0;
return 1;
}


Наш OnPlayerConnect. 

public OnPlayerConnect(playerid)
{
RemovePlayerVariables(playerid);
//------------------------------------------------------------------------------
GetPlayerName(playerid, playerVariable[playerid][aName], MAX_PLAYER_NAME);
//------------------------------------------------------------------------------
if(GetAccountID(playerid)) { // Аккаунт зарегистрирован
new dialog[128+MAX_PLAYER_NAME];
format(dialog, sizeof(dialog),
"Добро пожаловать на Сервер!\n\
Этот аккаунт зарегистрирован.\n\n\
Логин: %s\n\
Введите пароль:",
playerVariable[playerid][aName]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Авторизация.", dialog, "Войти", "Отмена");
}
else {
// Аккаунт не зарегистрирован (return 0, в функции GetAccountID, т.е. не нашло записи с аккаунтом).
new dialog[344+MAX_PLAYER_NAME];
format(dialog, sizeof(dialog),
"Добро пожаловать на Сервер!\n\
Этот аккаунт не зарегистрирован.\n\n\
Логин: %s\n\
Введите пароль и нажмите \"Далее\".\n\n\
Примечания:\n\
- Пароль чувствительный к регистру.\n\
- Длина пароля от 6 до 32 символов.\n\
- В пароле можно использовать символы на кириллице и латинице.\n", playerVariable[playerid][aName]);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Регистрация.", dialog, "Далее", "Отмена");
}
return 1;
}



Наш OnPlayerDisconnect. 

public OnPlayerDisconnect(playerid, reason)
{
if(playerVariable[playerid][aLogged] == true) SaveAccount(playerid);
return 1;
}

Готово, у нас есть система регистрации. 

Вот так выглядит таблица с аккаунтами:

Основу дал, объяснил. Дальше дорабатывайте сами под свой лад. 

Защиту от съезда полей (из-за sscanf) сами делайте, опять же, тут разжевал основу.  
Автор урока: Snoowker (на SRC — Satellite).
Расширение функционала при помощи плагинов | Просмотров: 1776 | Дата: 09.02.2013

Уважаемые администраторы и серверостроители!

samp реклама

Наверняка каждый из вас прилагает много труда и усилий для работы над своим проектом. Но вот беда, не всегда получается привлечь внимание игроков к вашему шедевру. Если игроки не идут к вам - самое время подумать о рекламе. Реклама SAMP сервера - обязательный этап развития. И здесь мы поможем вам! 

I. Реклама на популярных тематических сайтах, посвященных GTA и SAMP

Ежедневно на этих сайтах собираются тысячи игроков и специалистов в поисках сервера своей мечты. Почему бы не помочь им в поисках?

Samp-rus.com протягивает руку помощи администраторам и предлагает следующие рекламные услуги SAMP

1) Графическая реклама в бегущей строке в верхней части сайта. С ней Ваш сервер попросту не сможет остаться незамеченным. 
- Поддерживается анимация и любой ваш рисунок по высоте такого же размера как текущий.
 - Добавлена функция, при которой нажав на айпи адрес в строке, он автоматом добавляется в клиент SAMP. Стоимость услуги: 250 рублей за неделю непрерывной трансляции.

2) Модерируемая тема в разделе "Сервера GTA мультиплееров", которая находится на виду у потенциальных игроков.
- Тема приклепляется в важные!
- За темой следит команда сайта и контролирует поток негативных, не аргументированных сообщений (удаляются или редактируются) 
- Тема может быть так же закрыта, избегая тем самым лишнего обсуждения. 
- Тема может быть модерирована, первый пост может быть шапкой на всех страницах темы.  Стоимость темы: 150 рублей в неделю.

3) Баннер на главной странице сайта. Это огромный, привлекающий внимание баннер, размером 250х250. С возможностью рекламы своего сайта, страницы сервера и непосредственно добавлению айпи сервера в приложение SAMP при нажатии на баннер. Баннер будет на всех страницах сайта, абсолютно на всех! Стоимость баннера: 350 рублей за неделю непрерывной трансляции.

4) Баннер на форуме "Весёлые бобры": Это место, которое статично. Вы можете поставить туда свой баннер (дополнительно 20р.), либо будет использован общий шаблон баннера. Возможность рекламы сайта, форума, сервера. Функционирует добавление сервера сразу в приложение SAMP. Стоимость баннера: 250 рублей за неделю непрерывной трансляции. 


*** Заказать эти услуги можно у администрации сайта. 

ICQ для связи: 384967808.

Либо Вконтакте: vk.com/lovertin

Или через личные сообщения на сайте: Отправить***


И помните, если игрок заходит на сервер и не знает что там делать, Вы будете терять посещаемость сервера независимо от того, есть у Вас баннер на сайте или нет. Поэтому заказывайте рекламу тогда, когда уверены, что сервер готов и способен заинтересовать новых игроков.

Давайте разберём дальше, как же ещё можно раскрутить свой SAMP сервер.


II. SAMP реклама в социальных сетях. 

Социальные сети сегодня охватили собой практически все уголки земного шара. Ежедневно в них проводят массу времени ваши потенциальные игроки. Прежде всего - в социальной сети vk.com

Как же привлечь потенциальных игроков SAMP из социальной сети? 

1) Тематическая группа/страница вашего сервера.

Заявите о себе, создав и оформив красивую страницу, которая будет представлять ваш сервер в социальной сети. Приглашайте друзей, друзей своих друзей. Поддерживайте группу интересной и актуальной.

2) Рекламная кампания Вконтакте.

Если вы готовы к серьёзной рекламе и вас не смущают связанные с этим расходы - отличным решением будет выбрать рекламную кампанию Вконтакте. Гибкая система настроек позволяет выбрать, за что вы хотите платить (показы/переходы), кто же увидит ваше объявление. Тонкая настройка желаемого контингента игроков гарантирует максимальные результаты этого способа продвижения.


III. Размещение SAMP сервера во вкладке "hosted". 

Желаете выделить свой сервер среди тысячи подобных? Самый простой вариант - приобретение вкладки "hosted". Количество серверов, находящихся там, сравнительно небольшое. Более того, многие игроки ищут себе сервер именно там.

 Как же обзавестись вкладкой "hosted"? Её можно заказать у многих посредников, в том числе предлагающих свои услуги и на этом сайте. Смотрите эту тему: Добавление сервера в Hosted SAMP.
Это интересно: Заказать вкладку также можно у некоторых хостингов, поддерживающих такую возможность (например ru-hoster)



IV. SEO-оптимизация, реклама через поисковики.

Многие люди также пользуются поисковыми системами, где и находят сервера для игры. Разумеется, вы бы хотели, чтобы первым отображался именно ваш сервер. Что для этого необходимо?

1) Оптимизировать свой сайт для взаимодействия с поисковыми системами.
- Контент сайта должен максимально соответствовать его тематике.
- Названия заголовков и разделов должны содержать ключевые слова вашего проекта.
2) Зарегистрировать сайт в поисковых системах, разнообразных каталогах.
3) Установить счётчики показателей активности людей относительно вашего сайта и сверяться с ними.
 4) Изучить руководства по SEO-оптимизации для вашего сайта/форума или воспользоваться услугами специалиста. 

V. Мониторинги серверов SAMP.

Хорошая идея - размещение своего сервера во всех самых популярных мониторингах, посвящённых SAMP. Эффект будет ниже, чем от рекламы в социальной сети или поисковике, но его можно усилить, выделив свой сервер среди остальных (многие мониторинги предлагают такие услуги).

Кроме того, вы сможете разместить на своём сайте мониторинг онлайна вашего сервера, что будет очень удобно вашим посетителям.

VI. Промо-видео сервера.

Хорошим вспомогательным способом рекламы могут выступать ролики из жизни вашего сервера. Не очень эффективные сами по себе, они станут приятным дополнением ко всем остальным видам рекламы. Особенно важно правильно передать наиболее весомые преимущества вашего сервера, сконцентрировать на его достоинствах, показать игроку то, ради чего он обязательно захочет зайти на сервер.

VII. Радио сервера SAMP

Многие успешные сервера сегодня имеют свои радио, передают приветы и поздравления и ставят музыку на заказ игроков. Многие из таких радио вещают для аудитории нескольких серверов или нескольких игр. Таким образом это отличная возможность присоединиться к сообществу игроков и подать себя там с лучшей стороны.

VIII. Реклама сервера в мире за окном.

Вряд-ли кто-то задумывается о возможности рекламы игрового сервера там, где обитают его потенциальные игроки. Немного смелости и креатива оправдают ваши самые смелые ожидания. Пусть все столбы, все школы и все компьютерные клубы вместе с интернет-кафе будут обклеены небольшим но приметным объявлением о вашем сервере, с указанием его сайта и IP. Фраза "играй в ГТА по сети" может привлечь внимание людей, которые раньше не подозревали о SAMP.

IX. Привлечение игроков из других игр.

Как ни странно, многие не подозревают о существовании SAMP в принципе, но при этом играют в WoW, Lineage 2 или крестики-нолики Online. Всё, что вам нужно - предоставить яркую и захватывающую информацию о возможности поиграть в GTA онлайн, в симулятор социума с возможностью перестрелок, гонок и других радостей. Для этого стоит обратиться к общеигровым форумам, торрентам, выкладывая там ГТА вместе с клиентом и ссылкой на ваш сервер, к общеигровым или неспециализированным мониторингам. Добавлять сервер в топ серверов SAMP.
Это интересно: Комплекс серверов samp-rp рекламиться на мониторинге серверов Lineage l2top ru, реклама на котором стоит сотни и тысячи долларов. Как видите, результат не заставляет себя ждать.

В завершении этого руководства обязательно упомяну, что успех любой рекламной кампании зависит от самого сервера и всех факторов, из которых этот сервер состоит. Поэтому перед тем, как всерьёз увлекаться рекламой, стоит решить вопросы качественного игрового режима, веб-части, команды проекта, дизайна и многих других. Удачи в рекламе проекта!

Автор статьи: Harris

Как раскрутить свой SAMP сервер | Просмотров: 4798 | Дата: 24.01.2013

Во многих играх в том числе и сампе есть возможность хоста (запуска сервера на собственном компьютере), но, чтоб ваш сервер стал виден всем игрокам, вам необходимо перенаправить порты. Как вы знаете у роутеров и свичей свой IP адрес, чаще всего это 192.168.1.1 или 192.168.0.1 зависит от модели роутера. Для начала зайдём на роутер точнее говоря в его настройку. Для этого введите в окно браузера следующий URL: http://192.168.1.1 (у некоторых 192.168.0.1) . Должно появиться окошко в котором будет написано логин и пароль. Если вы раньше не изменяли настроек, то стандартный логин: admin , пароль: password или admin (смотрите на нижней стенке роутера, там наклейка с данными). После того как вы зашли в настройку роутера, выберите вкладку *перенаправление портов* (port forwarding). Далее у вас появится что то вроде этого: 

Имя службы или просто name можете выбрать какое вам удобно (на память). Начальный порт: 7777 конечный порт: 7777. Ип адресс сервера - вводите ваш ип адресс. Для сампа нет разници TCP/UDP, для обоих нужен 7777 порт. Для остальных игр смотрите тут http://portforward.com/cports.htm .Теперь нажимаем *сохранить* (save) и выходим из системы *logout* (выход). Теперь ваш сервер будет виден всем! 

Внимание: Если у вас динамичный ип, то постоянно будет новый ип сервера, а также если компьютер выключен сервер функционировать не будет. 
Также возможен большой пинг (зависит от интернет соединения и где находитись вы).  Поэтому покупаем тарифный пакет у своего провайдера до 100 мбит. Подробнее об открытии портов можно посмотреть на видео: 


Статью написал Likoniko , удачи

Оптимизация серверов SAMP | Просмотров: 4112 | Дата: 14.01.2013

Всем привет, с Вами Harris. Наконец-то выходит в свет сборник моих статей, посвящённых теоретическим вопросам серверостроения. В этих статьях я, вместе с сообществом samp-rus, попытался дать ответ на самые актуальные вопросы, с которыми сегодня сталкивается каждый администратор игрового сервера. Удалось ли это мне или нет - решайте сами, ведь вы и есть главные рецензенты и цель моей работы. На его написание меня сподвигло желание передать свой опыт и знания тем, кому они нужнее, ну и, наверное, сделать мир sa:mp чуточку прекрасней. Учебник я поделил на две части. В первой я рассматриваю основные проблемы, с которыми приходиться столкнуться на начальном этапе жизни сервера - как не ошибиться, выбирая название сервера, как сформировать стабильную экономику.. Вторая часть более направлена ответить на прикладной вопрос поднятия онлайна и его удержания, ведь именно онлайн сегодня является мерой успешности проекта, независимо от его жанра или направления. Надеюсь вам пригодится моя работа.

Это важно: Для вашего удобства переход к той или иной статье происходит по щелчку мыши на слово "Читать". Приятного чтения!
















Как раскрутить свой SAMP сервер | Просмотров: 6776 | Дата: 14.01.2013

Ограничения сервера:
* Players - 200
* Vehicle Models - 70
* Vehicles - 700
* Pickups - 100 (dynamic)
* Objects - 150 (250 possible but unstable) (dynamic)
* Text Draws - 96 (dynamic)
* Gang Zones - 1024 (dynamic)
* Menus - 128 (dynamic)

Слоты оружия:
* 0 - 0, 1
* 1 - 2, 3, 4, 5, 6, 7, 8, 9
* 2 - 22, 23, 24
* 3 - 25, 26, 27
* 4 - 28, 29, 32
* 5 - 30, 31
* 6 - 33, 34
* 7 - 35, 36, 37, 38
* 8 - 16, 17, 18, 39
* 9 - 41, 42, 43
* 10 - 10, 11, 12, 13, 14, 15
* 11 - 44, 45, 46
* 12 - 40

Оружие:
321 - Regular Dildo
322 - White Dildo - 11
323 - Vibrator
324 - Another Vibrator
325 - Flowers - 14
326 - Cane - 15
327 - A box of some kind =S <--- No Effect
328 - A large box of some kind =S <--- No Effect
329 - Removed/Non Existant. <--- DO NOT USE!!! EVER!!!
330 - CJ's Phone
331 - Brass Knuckles
332 - Old VC Screwdriver - Removed. <--- DO NOT USE!!! EVER!!!
333 - Golf Club - 2
334 - Police Trungeon/Night Stick (Depending on where you're from)
335 - Combat Knife
336 - Baseball Bat - 5
337 - Shovel
338 - Pool Cue
339 - Katana - 8
340 - Skateboard - Removed. <--- DO NOT USE!!! EVER!!!
341 - Chainsaw - 9
342 - Frag Grenade
343 - Tear Gas Grenade - 17
344 - Molotov Coctail - 18
345 - Vehicle Missile Launcher <--- Use with caution, very crash prone!
346 - Colt 45 Pistol - 22
347 - Colt 45 Pistol (W/Silencer) - 23
348 - Desert Eagle - 24
349 - Regular Shotgun? - 25
350 - Sawn-Off Shotgun - 26
351 - SPAZ-12 Shotgun - 27
352 - Mac-10 (Or Micro-UZI) - 28
353 - MP5 - 29
354 - Hydra Flare
355 - AK47 Assault Rifle - 30
356 - M4 Assalut Rifle - 31
357 - Country Rifle? - 33
358 - Sniper Rifle - 34
359 - Rocket Launcher - 36
360 - Heat Seeking Rocket Launcher - 35
361 - Flamethrower - 37
362 - Minigun - 38
363 - Satchel Charges
364 - Detonator <---- Seemingly Useless.
365 - Spray Paint Can
366 - Fire Extinguisher - 42
367 - Camera - 43
368 - Night Vision Goggles - 44
369 - Infra-Red Goggles - 45
370 - Jetpack
371 - Parachute - 46
372 - Tec-9 - 32
373 - Armour model used in Ammunation (No Effect)

Деревья (растения) - 615-792

Различные заборы: 966 - 998
969 - забор под током

Разное:
1206 - vending machine
1210 - briefcase
1216 - phone booth
1219 - palette
1223 - lamppost
1341 - ice cream cart (whoopee)
1342 - noodle stand
1378 - huge crane (port)
1384 - top part of construction crane
1383 - crane stand (the tower)
1543 - bottle of beer
1562 - white jet seat
1572 - airport trolley
1608 - shark
1609 - turle
1612 - submarine (from SF port, huge)
1622 - security camera
1684 - construction container
7386 - heliport

Различные виды транспорта:

Bikes

ID Name Type
581 bf400 bike
523 copbike bike
462 faggio bike
521 fcr900 bike
463 freeway bike
522 nrg500 bike
461 pcj600 bike
448 pizzaboy bike
468 sanchez bike
586 wayfarer bike

Bicycles

509 bike bmx
481 bmx bmx
510 mtbike bmx

Boats

472 coastg boat
473 dinghy boat
493 jetmax boat
595 launch boat
484 marquis boat
430 predator boat
453 reefer boat
452 speeder boat
446 squalo boat
454 tropic boat

Cars

445 admiral car
602 alpha car
416 ambulan car
485 baggage car
568 bandito car
429 banshee car
433 barracks car
499 benson car
424 bfinject car
536 blade car
496 blistac car
504 bloodra car
422 bobcat car
609 boxburg car
498 boxville car
401 bravura car
575 broadway car
518 buccanee car
402 buffalo car
541 bullet car
482 burrito car
431 bus car
438 cabbie car
457 caddy car
527 cadrona car
483 camper car
524 cement car
415 cheetah car
542 clover car
589 club car
437 coach car
532 combine car
480 comet car
596 copcarla car
599 copcarru car
597 copcarsf car
598 copcarvg car
578 dft30 car
486 dozer car
507 elegant car
562 elegy car
585 emperor car
427 enforcer car
419 esperant car
587 euros car
490 fbiranch car
528 fbitruck car
533 feltzer car
544 firela car
407 firetruk car
565 flash car
455 flatbed car
530 forklift car
526 fortune car
466 glendale car
604 glenshit car
492 greenwoo car
474 hermes car
588 hotdog car
434 hotknife car
502 hotrina car
503 hotrinb car
494 hotring car
579 huntley car
545 hustler car
411 infernus car
546 intruder car
559 jester car
508 journey car
571 kart car
400 landstal car
403 linerun car
517 majestic car
410 manana car
551 merit car
500 mesa car
418 moonbeam car
572 mower car
423 mrwhoop car
414 mule car
516 nebula car
582 newsvan car
467 oceanic car
443 packer car
470 patriot car
404 peren car
514 petro car
603 phoenix car
600 picador car
413 pony car
426 premier car
436 previon car
547 primo car
489 rancher car
441 rcbandit car
594 rccam car
564 rctiger car
515 rdtrain car
479 regina car
534 remingtn car
432 rhino car
505 rnchlure car
442 romero car
440 rumpo car
475 sabre car
543 sadler car
605 sadlshit car
495 sandking car
567 savanna car
428 securica car
405 sentinel car
535 slamvan car
458 solair car
580 stafford car
439 stallion car
561 stratum car
409 stretch car
560 sultan car
550 sunrise car
506 supergt car
601 swatvan car
574 sweeper car
566 tahoma car
549 tampa car
420 taxi car
459 topfun car
576 tornado car
525 towtruck car
531 tractor car
408 trash car
583 tug car
451 turismo car
558 uranus car
552 utility car
540 vincent car
491 virgo car
412 voodoo car
478 walton car
421 washing car
529 willard car
555 windsor car
456 yankee car
554 yosemite car
477 zr3 50 car

Helicopters

548 cargobob heli
425 hunter heli
417 leviathn heli
487 maverick heli
497 polmav heli
563 raindanc heli
501 rcgoblin heli
465 rcraider heli
447 seaspar heli
469 sparrow heli
488 vcnmav heli

Monster Trucks

406 dumper mtruck
573 duneride mtruck
444 monster mtruck
556 monstera mtruck
557 monsterb mtruck

Planes

592 androm plane
577 at 400 plane
511 beagle plane
512 cropdust plane
593 dodo plane
520 hydra plane
553 nevada plane
464 rcbaron plane
476 rustler plane
519 shamal plane
460 skimmer plane
513 stunt plane
539 vortex plane

Quad Bike

471 quad quad

Trailers

435 artict1 trailer
450 artict2 trailer
591 artict3 trailer
606 bagboxa trailer
607 bagboxb trailer
610 farmtr1 trailer
584 petrotr trailer
608 tugstair trailer
611 utiltr1 trailer

Trains

590 freibox train
569 freiflat train
537 freight train
538 streak train
570 streakc train
449 tram train

Создание и настройка SAMP сервера | Просмотров: 1864 | Дата: 23.03.2011

Xtreme Admin 2.2 r1



Поехали:

Уровневая система: Простая конфигурации файла и/или функции в скрипте позволит тебе установить свой уровень. Давайте уже перейдём от старой к новой 10 уровневой системе администратора. Каждая команда имеет свою собственную пре-установку уровня в файле. По умолчанию уровней администратора 10. Всё что вам нужно это открыть файл конфигурации и подправить уровни какие захотите. Всё это – простота скрипта. В заключении, вы можете иметь столько уровней сколько захотите; 1 или 1,000,000! Выбор за вами.
Типичное объяснение конфигурации – Оно безусловно есть , на мой взгляд, лучшая особенность, это позволяет вам настроить каждую команду индивидуально в некотором значении. Что на счёт уровневой системы, так же есть установка конфигурации файлов установленных для этих команд. Потом разок в игре просто пропишите /UCONFIG чтобы обновить изменения. Вот лист переменных, которые вы можете редактировать:

ServerMessage – Эта запоминает серверное сообщение при соединении.

Teleport_X_Offset – Это ответвление для X координат когда вы телепортируетесь или телепортированы
Teleport_Y_Offset - Это ответвление для Y координат когда вы телепортируетесь или телепортированы
Teleport_Z_Offset - Это ответвление для Z координат когда вы телепортируетесь или телепортированы

MinimumPasswordLength – Установить минимальную длину пароля для регистрации.

DisplayServerMessage – Отображать серверное сообщение при входе?

SlapDecrement - Кол-во здоровья которое будет отниматься за шлепок(Slap).

WiredWarnings – Кол-во предупреждений в адрес когда вы связываете кого-либо.

GodWeapons – Дать оружие для /god?

MaxLevel – Максимальный уровень админа.

DisplayCommandMessage – Показать администратора использовавшего команду?

DisplayConnectMessages - Отображать connect и disconnect сообщение?

MaxPing – Максимально допустимый пинг у пользователя, при превышении которого игрок будет кикнут (0 = выключить).

AdminImmunity – Сделать иммунитет админа для пинг-кикера?

PingSecondUpdate – Кол-во секунд за которое будет произведена проверка пинга.

ForbidData - Назначить действие которое будет произведено когда игрок зайдёт на сервер с запрещённым ником (0=ничего, 1=кик, 2=бан)

DisableJailCommands – Ограничить команды связанные с тюремным заключением и посадить за использование оных при этом ограничении.

WireWithPM – Ограничить действия игрока использовавшего Приватные Сообщения, если стоит ограничение.

ExposePMS – Ограничить, когда установлено, ограничения на посылку PM, определённому игроку имя/id , к администраторам.

Player Variables- Переменные игроков находятся с третьей и финальной конфигурации файлов. Эти переменные будут зарегистрированы за каждым файлом конфигурации игрока при регистрации.
Сноска: Это должно будет установлено в скрипте. Эта функция назывется 'CreateUserConfigFile' которая может быть найдена под 'OnFilterscriptInit'.
Добавь переменные к этому, для всего того встроенного что используется в целом скрипте.

Registration System – В перую очередь, префикс Х был перемещён – (это просто уточнение). Новое регистрационное сообщение при входе.

Входящие в состав фскрипта, команды:
/REGISTER- Используй эту команду, если требуется; вы не зарегистрировали аккаунт. В регистрации, вы можете добавить текст в 'OnPlayerRegister' отзыв, если вам нужно установить любое сообщение-уточнение для вашего игрового мода. Так же, вы будете автоматически залогинены и ваш IP будет записан в файл.
/LOGIN- Используйте эту команду, только если ваш IP адрес был изменён и отличный от того, с которого вы в последний раз были залогинены; В другом случае вы будете автоматически залогинены. Ещё раз, это OnPlayerLogin функция.
/LOGOUT- Используйте эту команду, если вы хотите выйти из аккаунта; но если вы выйдите из сервера вы всё равно автоматически завершите сеанс! Дополнительно, тут OnPlayerLogout функция так же.
Ping Kick System – Пинг кик это уникальная система which которая кикнет любого игрока который превысит максимально установленный пинг. Как описано выше, вы можете установить функцию иммунитета для админа, а в игре вы можете использовать /SETPING для этой же цели.
Jail System – Эта система прежде всего для перманентного заключения людей в их камеры, пока не будут освобождены. Используя /XJAIL команду, игрок будет телепортирован в камеру заключения и при респавне он так же будет отправлен туда. Освобождение его от заключения при респавне и освобождение совсем.

Spectator System – На ряду с 0.2 версии, надлежащая система наблюдения была осуществлена. Это работает как волшебство, и вы это сможете увидеть своими глазами. Когда игрок заходит или выходит из транспорта, вам более не нужно перезапускать слежение за ним.

Wire System – Это както оговаривалось, что старая система ограждения приводила к краху сервера с нулём предупреждений, так же в добавок это не никому не давало общаться, когда пытались использовать скрипт с v 0.2. С новой системой ограды, на сервере не будет крашей, и как любая другая система, должна работать идеально с любыми колебаниями.

Giveme System - Да, с созданием динамичности транспорта, включающих XAdmin, админ меню «дай мне» добавило разнообразия и интереса. Меню «дай мне» которое в определённых условиях создаст любой транспорт который вы выберете из меню. При выделении, вы будете посажены в транспорт на том месте где стоите.
Круто не так ли? Если вы дадите себе транспорт в интерьере, он будет добавлен туда – Больше никаких невидимых машин!
«Усовершенствовано Goto и Gethere команды» – При телепортации, вы можете так же быть телепортированы в здание, где находится игрок; были не большие недоделки в версии 0.2 ошибки при телепортации, если вас телепортирует не так как надо, Сделайте это ещё раз! И тогда всё 100% заработает. The same applies for gethere
Небольшие корректировки для gethere. Как уже обсуждалось, вы можете установить ответвления телепортации, используя конфигурацию переменных. Как только вы это изменили, просто напишите /UCONFIG в игре; изменено.

«Admin CHAT SYSTEM» - Знак по умолчанию для админ чата теперь #, с тех пор, как большинство модов не используют знак фунтов для команд чата. Сообщение администрации гарантированно будет оправлено между администраторами находящимися в онлайне и никак не могут быть увиденными игроками.

НИК или ID – Вы можете использовать часть ника (часть имени) для команды вместо ID. Это исправление касается всех версий начиная с v1.3. На это есть причина в конце концов.

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

Система присоединения имён – Включена в релиз - смотри Xadmin папку руководства.

Некоторые важные нововведения – И так, этот скрипт, совместим только с SA:MP 0.2. Скрипт был полностью переделан, и значительно улучшен по сравнению с предыдущими версиями. Скрипт использует DCMD для максимальной эффективности процессора., Вы способны воспользоваться такими функциями как, 'IsPlayerXAdmin', 'GetPlayerFileVar', 'GetPlayerFile', 'IsPlayerLevel', и т.д. в вашем фильтрскрипте и игровом моде. В отличии от старой версии, эффективность непосредственно улучшена, и содержит максимальное число базовых особенностей поэтому вам не потребуется доделывать или редактировать скрипт. Now, for the fun stuff. Есть так же меню в определённых системах, таких как /giveme, /weather, и /givecar осуществимые для вас чтобы максимизировать организацию всего процесса в управлении сервером. Перед тем как вы сосредоточитесь на скрипте, с тех пор как появилась динамика в фскриптах, если вы загрузите или перезагрузите фскрипт, то вы будете переподключены, как будто вы просто перезашли на сервер. В заключении, сообщения connect и disconnect имеют свои



Расширение функционала при помощи плагинов | Просмотров: 3632 | Дата: 23.03.2011

КОМАНДЫ
Тут представлены команды с их базовыми функциями:

Команды администратора:
# - Admin чат
/XCOMMANDS – Список внутреигровых команд.
/GOTO - Телепортирует вас к игроку.
/GETHERE - Телепортирует игрока к вам.
/MORNING, /NOON, /EVENING, /MIDNIGHT- Установить время суток.
/SETTIME - Установить время для другого игрока.
/ANNOUNCE - Послать сообщение всем игрокам.
/SAY - Послать клиентское сообщение с вашим текстом.
/FLIP – Перевернуть транспорт на колёса.
/SLAP - Отнять здоровье у игрока установив в конфигурации кол-во отнимаемого здоровья за один slap.
/WIRE - Запретить игроку разговор; предупреждение о возникшей проблеме.
/UNWIRE - Разрешить игроку снова говорить.
/KICK () – Кикнуть игрока с сообщением причины кика.
/BAN () – Забанить игрока с сообщением причины бана.
/AKILL - Автоматически убивать игрока.
/EJECT - Вытащить игрока из его транспорта.
/FREEZE and /UNFREEZE - Заморозить либо разморозить игрока.
/OUTSIDE – Перенести всех наружу.
/HEALALL – Установить всем здоровье 100%.
/UCONFIG – Обновить переменные конфигурации, для использования их на сервере.
/SETSM - Установить приветственное сообщение при входе на сервер.
/GIVEHEALTH <1-100> - Дать игроку здоровья.
/SETHEALTH <1-100> - Установить здоровье игрока.
/SKINALL - Установить скин каждого игрока на конкретный скин используя ID скинов.
/GIVEALLWEAPON <1-10,000> - Дать всем оружие с определённым кол-вом патронов.
/RESETALLWEAPONS – Сбросить оружие каждого игрока.
/SETCASH /GIVECASH /REMCASH <1-1,000,000> - Установить, добавить к, или убрать сумму заработка игрока.
/RESETCASH - Сбросить наличные игрока.
/SETALLCASH /GIVEALLCASH /REMALLCASH <1-1,000,000> - Установить, добавить к, или убрать сумму заработка каждого игрока.
/RESETALLCASH – Сбросить деньги всех игроков.
/EJECTALL – Извлечь из транспорта каждого игрока кто в нём находится.
/FREEZEALL /UNFREEZEALL – Заморозить или разморозить каждого игрока на сервере.
/GIVEWEAPON <1-10,000> - Дать игроку определённое оружие с определённым кол-вом патронов.
/GOD – Дать себе бесконечное здоровье, а так же если установлено в опции, дать себе бесконечный миниган и гранаты.
/RESETSCORES - Сбросить счёт игрока
/SETLEVEL <0 - MAXLEVEL> - Установить уровень игрока от 0 до максимального уровня установленного в файле конфигурации, где 0 это учасник.
/SETSKIN - Установить скин игрока в соответствии с ID скинов.
/GIVEARMOUR <1-100> - Установить значение брони игрока.
/SETARMOUR <1-100> - Установить кол-во брони игрока.
/ARMOURALL – Дать каждому игроку на сервере 100% брони.
/SETAMMO <1-10,000> - Установить кол-во патронов игрока в таком порядке который бы соответствовал оружию.
/SETSCORE - Установить счёт игрока.
/IP () – Отобразить ваш IP или IP игрока.
/PING () – Отобразить ваш пинг или пинг игрока.
/EXPLODE - Взорвать игрока в, либо вне транспорта; убить его. /SETALLTIME - Установить время для каждого, определённым часом и минутами.
/FORCE - Вернуть мгновенно игрока к точке респавна.
/SETALLWORLD <0-255> - Установить виртуальный мир каждого на сервере, в соответствии с id.
/SETWORLD <0-255> - Установить виртуальный мир игрока на сервере, в соответствии с id.
/SETGRAVITY <-50 - 50> - Установить гравитацию.
/SETWANTED <0-6> - установить уровень розыскиваемости игрока.
/SETALLWANTED <0-6> - установить уровень розыскиваемости всех игроков.
/XLOCK /XUNLOCK - блокировка/разблокировка машины.
/GMX - перезагрузка мода.
/CARHEALTH <0 - 1000> - установить уровень жизни машины.
/WEATHER - показать меню по изменению погоды.
/SETPING <0 - 10,000 | OFF> - установить пинг при достижении которого игрок будет кикаться с сервера (0 и off убирают лимит).
/GIVEME - показать меню выбора машины.
/GIVECAR - установить на машину различные компоненты.
/SPEC - наблюдать за игроком, или spectator off чтобы отключить наблюдение.
/XJAIL /XUNJAIL - посадить или освободить игрока из тюрьмы.
/SETNAME - изменить имя игрока.
/VR - команда игроков по умолчанию, изменить здоровье машины.

Команды для игроков:
/ADMINS- показать список администраторов и их уровень.
/REGISTER, /LOGIN, /LOGOUT – регистрация, вход в аккаунт сервера, покинуть аккаунт.
/XINFO- информация про данный скипт
/SM - показать Серверное сообщение.

Сноска: Одни команды вы можете использовать на себе, другие не можете. Так же некоторые команды требуют наличие какогото действия, например когда вы хотите вытащить игрока из машины, он должен находится в машине!

Изменение физических аспектов Xtreme Administration фильтерскрипта

Информация: Если вы склонны добавить в скрипт свою версию, то вам нужны некоторые навыки, базис который вы должны иметь при редактировании такого рода скриптов, кроме того уровни, не должны быть изменены, но это только лучше для нас всех, если вы внесёте чтото новое своё в этот скрипт. Представлю вам два метода редактирования скрипта:

Файловое ограничение – С этим метором, вы не способны добавить любые новые команды, лучше всего будет изменить переменные в файле конфигурации. Изменение переменных в 'Variables.ini' файла, не будет воздействовать; вы должны редактировать это в скрипте. Однако, Configuration.ini и Commands.ini могут быть изменены соответственно. Как было упомянуто, если вы измените Configuration.ini переменные, вы так же должны перезапустить filterscript или прописать /UCONFIG в игре.
Ограничение скрипта – С этим методом, вы можете добавлять новые вещи, если ты знаешь, как это делать. Для этой цели система довольно таки проста. Итак, давайте начнём. Вы обратите внимание на OnFilterScriptInit() что там много комментариев, объясняющих, что именно нужно делать.
Функция 'CreateLevelConfig' первое что нужно редактировать. Несмотря на то, что возможно название переменной, вводит в заблуждение, это переменные которые созданы фактически для того чтобы игрок мог зарегистрироваться на сервере. Не изменяйте это, если только не хотите изменить весь скрипт. Образец, "переменная","переменная",..., хорошо объясняющий. Вы сможете так же работать с переменными намного проще, потому как функции включены в код.

Следующее что можно редактировать, 'CreateCommandConfigEx' находится тут, потому что это не обновит файл конфигурации, как минимум с этими командами. Образец: "команда",уровень,"команда",уровень... Если вы измените любые названия команды, вам пройдется редактировать многое в командах самому. Если вы редактируете 'CreateCommandConfig', изменения не будут возможными после рестарта фскрипта.
Как редактировать конфигурацию запрещённых наименований включено в папку руководства Xadmin.

Общие проблемы при использовании:
Немного проблем выявлено за столь не большое время, единственная проблема, с которой вы бы возможно столкнулись это тюрьма. Если вы убьёте себя и появитесь снова в тюрьме, но провалитесь свозь пол, убедитесь что у вас нет 'SetPlayerInterior(playerid,0);' под вашим OnPlayerSpawn отзывом.

Если у вас проблема с назначением уровня 10, заходя на сервер, вводя команду и это повторяется снова, то убедитесь что вы залогинены на ваш уровень и используете как минимум команды для своего админ уровня. Если все заключились в тюрьму, попробуй перезапустить сервер, если это не поможет, пиши reloadfs XtremeAdmin2 пока в игре.

В дополнении, если вы столкнулись с проблемой команды /SETNAME, пожалуйста, убедитесь что имеете версию сервера SAMP 0.2 и выше.
Хорошего вам администратирования, с уважением, команда SAMP-RUS

Материал переведён командой SAMP-RUS TEAM является уникальным и защищён авторством.


Расширение функционала при помощи плагинов | Просмотров: 7279 | Дата: 23.03.2011

Статья про этот плагин
Новые функции:
  • SetPlayerGravity(playerid, gravity); - установка индивидуальной гравитации для игрока
  • AddServerRule(name[], value[]); - добавляет свою информацию о сервере в браузер серверов
  • SetServerRule(name[], value[]); - изменяет информацию из предыдущей фунцкии
  • SetPlayerSkinForPlayer(skinplayer, forplayer, skin); - установка скина для игрока, другие не видят этот скин.
  • GetPlayerSkinForPlayer(skinplayer, forplayer); - узнать скин из предыдущей функции
  • ffind(const pattern[], filename[], len, &idx); - поиск файлов
  • frename(const oldname[], const newname[]); - переименовать файл
  • dfind(const pattern[], filename[], len, &idx); - найти директорию
  • dcreate(const name[]); - создать директорию
  • drename(const oldname[], const newname[]); - переименовать директорию.
Примеры использования функций:
  • AddServerRule
AddServerRule("YSF", "Present");
Получаем:
$IMAGE1$
  • SetServerRule
SetServerRule("worldtime", "The morning");
  • SetPlayerSkinForPlayer
public OnPlayerDeath(playerid, killerid, reason)
{
//Смена скина вашего убийца на клоуна, чтобы отомстить :)
if (killerid != INVALID_PLAYER_ID)
{
new
last = gLastKiller[playerid];
if (last != killerid)
{
if (last != INVALID_PLAYER_ID)
{
SetPlayerSkinForPlayer(last, playerid, GetPlayerSkin(last));
}
gLastKiller[playerid] = killerid;
SetPlayerSkinForPlayer(killerid, playerid, 264);
}
}
}

  • ffind
// Найти все файлы с машинами в Los Santos
main()
{
new
i,
buf[64];
i = 0;
// Find all files matching the given wildcard string
while (ffind("vehiclelists/ls_*.txt", buf, sizeof (buf), i))
{
printf("%d) %s", i - 1, buf);
}
}

Исправленные функции:
  • SetPlayerObjectRot
  • IsPlayerInCheckpoint
  • IsPlayerInRaceCheckpoint
  • OnRconCommand
  • strval
  • unloadfs
  • SQLite
Удалённые функции:
  • SetPlayerDisabledWeapons
  • SetDeathDropAmount
Установка:
  • Windows:
Копируем YSF.dll в папку plugins сервера, добавляем в server.cfg строку plugins YSF.
  • Linux:
Копируем YSF.so в папку plugins сервера, добавляем в server.cfg строку plugins YSF.
Перевод статьи: Paul
Расширение функционала при помощи плагинов | Просмотров: 1926 | Дата: 23.03.2011

Стример объектов отображает игроку примерно 150 объектов. Независимо от дистанции обзора. Он так же поддерживает двигающиеся объекты. Есть сервера по 4 000 000 объектов и это факт.

Конвертер формата обьектов:

По умолчанию, xStreamer использует CreateObject чтобы создать эти обьекты. Тем ни менее, если вы используете DONT_REPLACE_NATIVES, тогда вам потребуется конвертировать в CreateStreamedObject. Вы можете сделать это из некоторых популярных форматов тут http://maps.serverhex.com/.

Используем макрос области:

Эти макросы используют для оптимизации потока (стримера). Они изменяют область вокруг игроков в котором xStreamer найдёт объекты. По умолчанию, они выглядят так:


#define MIN_AREA -4000.0 // map is -3000, но допускает карты выходящие за границы моря
#define MAX_AREA 4000.0
#define AREA_SIZE 100.0 // Это означает что только объекты в пределах 300.0 порядка 300.0 квадратов вокруг игрока, задействованы.

MIN_AREA, MAX_AREA

Эти функции определяют пределы проверки стримеров. Карта GTA простирается от -3000 до 3000 в обеих осях. Стример использует по 1000 единиц в каждом направлении по умолчанию. Если ваша карта выходит за грани этих пределов, то вам нужно расширить их.

AREA_SIZE

Это определяет размер каждой проверенной области. Стример проверяет квадрат в котором находится игрок и каждый квадрат вокруг игрока, который касается этого стороной или углом.

Список нововведений:

  • Исправлен баг с возвращением ID объектов.
  • Добавлен StopStreamedObject
  • CreateObject теперь переадресован в CreateStreamedObject, схожий с другими функциями, только если вы их добавили #define DONT_REPLACE_NATIVES до того как добавили инклуд xStreamer.inc
  • Добавлен DestroyObjectsCreatedByMe, который уничтожает объекты созданные в процессе работы gamemode/filterscript. Вам следует использовать это в OnFilterScript/GameModeExit если не хотите чтобы ваши объекты остались когда скрипт будет выгружен! Эта функция приведёт к краху сервера на 45,000 объектах. Не используйте её, если у вас их больше.
  • В объекты добавлены виртуальные миры и интерьеры
  • Добавлен OnStreamedObjectMoved


Если вы используете различные дистрибутивы Linux, вы должны скомпилировать этот плагин на вашем дитрибутиве.
Windows .DLL должен работать на всех версиях Windows.

Обратите внимание, что это может иметь непредсказуемые результаты при использовании нескольких скриптов одновременно. Я в будущем устраню это.

Статистика:

Этот плагин был протестирован с 4,004,001 объектов. При конфигурации: двухъядерный 2.3GHz CPU (мой домашний комп) был занят 1% с 1 игроком онлайн.
4,004,001 объектов также потребовало 320MB оперативной памяти.

Так что в скриптах вы не достигнете лимита по количеству объектов (у меня не было ни разу).

Как это работает:

Показываются те объекты которые на экране! Стример просто показывает ближайшие 150 объектов (может не показывать самый ближний если все объекты сильно удалённые от зоны видимости).

Функции:

native CreateStreamedObject(modelid,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz); // Создает объект
native DestroyStreamedObject(objectid); // Уничтожает объект
native MoveStreamedObject(objectid,Float:x,Float:y,Float:z,Float:speed); // Передвигает объект

Скрытые функции:

Есть много функций внедряемых в ваш мод, откройте xStreamer.inc чтобы их изучить.

Гейммоды:

Используйте для теста lvdm.pwn в папке gamemodes/ чтобы увидеть 4,000,000 объектов в гейммоде.

Кульминация:

Текст составлен и приготовлен by Tripoll & AXE специально для samp-rus.com всё самое лучшее только тут, всегда на понятном нам и любимом, русском языке.

Скачать плагин





Расширение функционала при помощи плагинов | Просмотров: 3119 | Дата: 23.03.2011

Создание, настройка и запуск сервера SA:MPВ даной статье будет рассказано о том, как настроить и запустить сервер SA:MP. Выполняя все указания, которые будут даны, у Вас не возникнет проблем с запуском сервера.

Первым делом Вам необходимо скачать стандартную сборку сервера. Последняя и актуальная версия сервера находится на этой странице. В данной статье пойдёт речь о запуске сервера в операционной системе Windows, поэтому и сервер мы будем качать для этой ОС.
После того, как Вы скачали архив с сервером, необходимо его распаковать в какую-нибудь папку, допустим, это будет папка SAMP. Распаковали, открыли, перед нами появились папки и файлы, на них остановимся и подробно посмотрим, какой файл и папка за что отвечает:

Папка filterscripts содержит так называемые Фильтрскрипты, которые подгружаются к главному моду.
Папка gamemodes содержит файлы игровых гейммодов, один из которых загружается во время включения сервера.
Папка include содержит файлы с расширением .inc. Они необходимы для некоторых модов, о них мы не будем говорить, так как это уже другая тема, которой мы касаться не будем.
Папка npcmodes содержит в себе скрипты для ботов. Там же находятся записи путей ботов, по которым они будут передвигаться. Этого пункта мы тоже касаться не будем.
В папке pawno находится компилятор, с помощью которого и пишут моды и скрипты для сервера.
Папка plugins содержит плагины с расширением dll для ОС Windows и с раширением so для операционных систем семейства Unix.
Папка scriptfiles содержит какие-то конфигурационные файлы, которые необходимы для работы гейммода.

Теперь о файлах:

Файл announce.exe отвечает за нахождение Вашего сервера во вкладке Internet в клиенте. Его запускать не нужно никогда.
Файл samp-license.txt содержит лицензионное соглашение.
Файл samp-npc.exe отвечает за ботов на сервере, его также запускать не нужно никогда.
Файл samp-server.exe запускает сервер, его мы и будем запускать.
Файл server.cfg - главный конфигурационный файл, о котором мы поговорим чуть дальше.
Файл server-readme.txt содержит информацию о том, как запустить сервер.

Перейдём непосредственно к запуску сервера.

Первым делом нам необходимо просто запустить сервер со стандартным режимом. Но перед этим нам необходимо отредактировать конфигурационный файл server.cfg. Открываем этот файл с помощью любого текстового редактора, например, через блокнот. 
После открытия мы видим такую картину:

echo Executing Server Config...
lanmode 0
rcon_password changeme
maxplayers 500
port 7777
hostname SA-MP 0.3 Server
gamemode0 grandlarc 1
filterscripts gl_actions gl_property gl_realtime gl_mapicon ls_elevator test_cmds ls_mall attachments
announce 0
weburl www.sa-mp.com
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
maxnpc 0
logtimeformat [%H:%M:%S]

Расскажу, что означает каждый параметр в этом файле: 

1. lanmode. Этот параметр предназначен для игры в локальной сети. Если мы играем с друзьями по локальной сети, ставим 1, если нет, то 0.
2. rcon_password. Этот параметр устанавливаем пароль администратора сервера (RCON). Зачем он нужен будет сказано далее. Изначально RCON пароль установлен, как changeme. Его необходимо сменить на любой другой, со стандартным паролем сервер не запустится.
3. maxplayers. Этот параметр устанавливает максимальное количество возможных игроков, которые смогут зайти на сервер.
4. port. Порт сервера. Если у Вас всего 1 сервер, то можно спокойно оставить 7777.
5. hostname. Название Вашего сервера, которое будет отображаться в клиенте.
6. gamemode0. Имя файла(без расширения) мода, который загрузится при включении сервера. Мод должен лежать в папке gamemodes и иметь расширение amx. Оставляем без изменений.
7. filterscripts. Имена фильтрскриптов, которые будут подгружаться к нашему моду. Проще говоря, это мини гейммоды, которые самостоятельно не могут работать. Лежат они в папке filterscripts с расширением amx. Оставляем без изменений.
8. announce. Данный параметр отвечает за то, будет ли наш сервер показываться во вкладке Internet. Устаналиваем значение 1.
9. weburl. Указывает сайт сервера в клиенте.
10. onfoot_rate, incar_rate, weapon_rate, stream_rate задают минимальное время в милисекундах, через которое данные будут обновляться. Оставляем без изменений.
11. stream_distance задаёт расстояние при котором игроки начнут получать данные друг о друге. Оставляем без изменений.
12. maxnpc. Максимальное количество подключаемых ботов к серверу.
13. logtimeformat. Формат вывода времени в логах сервера.

Сохраняем изменения в файле. Теперь остаётся запустить сервер и проверить его работоспособность. Запускаем файл samp-servers.exe, должно открыться окно. Если всё сделали правильно, перед нами должно появиться что-то вроде этого:



Сервер запущен.

Чтобы зайти на сервер необходимо добавить сервер в закладки в клиенте, где ip сервера - 127.0.0.1:7777. Это наш локальный IP, зайти по нему сможем только мы. Чтобы подключились другие, необходимо сказать им Ваш внешний IP адрес. 

Часть 2.

Мы зашли на сервер. Выше упоминалось о том, что есть какой-то пароль администратора. Он нам необходим для минимального администрирования сервера. Чтобы залогиниться под администратором, необходимо в чате ввести команду /rcon login password, где password - пароль, который Вы вводили в файле server.cfg 
Если после ввода высветилась надпись "You are logged in as admin", значит Вы сделали всё правильно. Теперь о командах, которые Вас стали доступны:

/rcon cmdlist - Показывает список всех доступных команд.
/rcon varlist - Показывает список текущих переменных.
/rcon exit - Выключает сервер
/rcon echo [текст] - Выводит текст в консоли сервера.
/rcon hostname [имя] - Меняет название Вашего сервера
/rcon gamemodetext [имя] - Меняет название Вашего гейммода.
/rcon mapname [имя] - Меняем название карты.
/rcon exec [имя файла] - Извлекает настройки из указанного файла. Например, /rcon exec server.cfg - извлёчет настройки, прописанные в файле server.cfg
/rcon kick [ID] - Кикает с сервера игрока с заданным ID
/rcon ban [ID] - Банит игрока с заданным ID
/rcon changemode [название гейммода] - Меняет гейммод на сервере.
/rcon gmx - Рестарт сервера.
/rcon reloadbans - Перезагружает файл bans.txt
/rcon reloadlog - Очищает файл server_log.txt.
/rcon say - Отправляет сообщение в чат от имени администратора.
/rcon players - Показывает список игроков.
/rcon banip [IP] - Банит указанный ip адрес
/rcon unbanip [IP] - Разбанивает указанный ip адрес
/rcon gravity - Изменяет гравитацию на сервере.
/rcon weather [ID] - Меняет погоду.
/rcon loadfs - Подгружает указанный фильтрскрипт.
/rcon weburl [server url] - Меняет адрес сайта сервера.
/rcon unloadfs - Выгружает указаный фильтрскрипт.
/rcon reloadfs - Перезагружает указаный фильтрскрипт.
/rcon rcon_password [PASSWORD] - Изменяет пароль администора.

Стандартный гейммод мы запустили. Что делать в случае, когда мы хотим установить другой гейммод? Точного и полного ответа на этот вопрос нет, так как всё зависит от гейммода. Подробнее можно узнать на форуме.

Автор статьи: RoACh
Создание и настройка SAMP сервера | Просмотров: 11398 | Дата: 23.03.2011