Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Установка MaNGOS (http://mangos.ytdb.ru/forumdisplay.php?f=25)
-   -   Установка, настройка и запуск MaNGOS (http://mangos.ytdb.ru/showthread.php?t=917)

KiriX 03.05.2010 08:32

Установка, настройка и запуск MaNGOS
 
В первую очередь, вам нужно получить сам MaNGOS. Сделать это можно двумя способами:
1) Скачать скомпилированный MaNGOS в этой теме или тут (компилированный с патчами от Insider42)
2) Скачать исходники проекта и скомпилировать его самостоятельно. Тут требуется выполнить подпункты:
-) Скачать и установить Git
-) Скачать исходники MaNGOS:
Код:

git clone http://github.com/mangos/mangos.git
-) Скачать исходники ScriptDev2:
Код:

git clone git://github.com/scriptdev2/scriptdev2.git
или
-) Скачать и установить TortoiseSVN
Код:

Extract -> https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2
-) Скомпилировать исходники проектов с помощью программы Microsoft Visual Studio
3) Далее нам необходимо скачать ещё несколько программ:
- MySQL server (программа для создания баз данных)
- SQLyog или Navicat (программы для работы с MySQL сервером)
- Установить NET.Framework
4) Устанавливаем MySQL. При выборе логина выбираем желаемый пароль подключения к базе данных MySQL и запоминаем его.
5) В консоли MySQL или с помощью программ SQLyog или Navicat создаём четыре (4) базы данных:
-) realmd (база хранит в себе данные аккаунтов, настройки аккаунтов, настройки реалмов сервера)
-) characters (база хранит в себе все данные о персонажах и обо всём с сними связанном)
-) scriptdev2 (база хранит в себе данные о Scriptdev2 скриптах - заполняется sql апдейтами из репозитория ScriptDev2)
-) mangos (база мира WoW, содержит в себе данные о существах, объектах, их заселении, расположении и луте с них, итемах, о их луте, квестах, условиях для их выполнения, EventAI скриптах для мобов и прочей мировой информации)
6) При установке сервера с нуля данные для баз Realmd, Characters, ScriptDev2, берутся с репозиториев проектов (папки sql, файлы realmd.sql, characters.sql и несколько файлов для ScriptDev2: scriptdev2_create_structure_mysql.sql и затем scriptdev2_script_full.sql). !!!В последующем при обновлении сервера никогда не перезаливайте в существующие базу файлы realmd.sql и characters.sql!!! Так вы уничтожите все данные об уже существующих аккаунтах и персонажах! Безвозвратно!!!
7) Базу для мира вы можете скачать с форумов YTDB (руссокоязычные разработчики) или UDB (англоязычные разработчики) баз.
8) Заливаем базы. Рекомендую использовать консольную команду для этого:
Выбираем нужную базу (\u), на примере базы characters, выполнив в консоли MySQL следующую команду:
Код:

\u characters
Следующей командой или указываем путь к файлу дампа, или просто перетаскиваем дамп в окно после набора команды \. (Внимание! В пути к файлу не должно быть русских букв и для простоты желательно отсутствие пробелов!):
Код:

\. C:/MaNGOS/sql/characters.sql
9) Далее нам необходимо извлечь DBC и maps из актуального клиента WoW (Помните! Экстрактор DBC и карт, находящийся в директории MaNGOS/contrib/extractor/ad.exe подходит ТОЛЬКО к той версии клиента, на которую рассчитан сам MaNGOS!). Копируем файл ad.exe в директорию с игрой и запускаем его. После того, как процедура извлечения DBC и maps будет завершена, консольное окно экстрактора автоматически закроется. Появившиеся в результате этих действий папки dbс и maps в директории клиента необходимо переместить в папку сервера.
10) Если хотим более красивую и реалистичную игру - необходимо также извлечь (а затем и включить их в конфиге сервера) vmaps. Экстрактор для них находится тут: MaNGOS/contrib/vmap_extract_assembler_bin Скопировать все файлы в папку с игрой и запустить выбранный вариант. Внимание!!! Извлечение длится достаточно долго, не закрывайте консоль, пока она работает! По окончании своей работы она предложит нажать любую кнопку и закроется автоматически! Затем появившуюся папку vmaps необходимо также переместить в директорию с сервером.
11) В базе realmd в таблице указываем желаемое имя рилма, его адрес и порт.
12) Осталось настроить 3 конфига: mangosd.conf, realmd.conf и scriptdev.conf и запустить сервер =)

Вроде, всё =)

Теперь ОБЯЗАТЕЛЬНО прочесть:
http://ru-mangos.ru/showthread.php?t=26
а после этого уже...
Прошу обращаться с замечаниями и пожеланиями =)

karobas 06.05.2010 19:58

В последнее время стал остро испытывать дискомфорт с запуском нескольких реалмов на одном мангос
конструкция в mangosd.conf уже непомогает,
Цитата:

RealmID = 1
RealmID = 2
RealmID = 3
RealmID = 4
RealmID = 5
DataDir = "./"
просто не работает, запускается только первый реалм, остальные видны но отображаются неактивными серыми, на них нет доступа. Впечатление что мангос просто ни видит остальные 4е сетевых интерфейса.
Естественно под каждый реалм в realmlist была создана соответствующия запись.
Раннее всё работало, подскажите что изменилось в последних ревизиях и как теперь запускать несколько реалмов для нескольких сетевых интерфейсов работающие на одной базе?

KiriX 06.05.2010 22:56

Цитата:

Сообщение от karobas (Сообщение 5740)
В последнее время стал остро испытывать дискомфорт с запуском нескольких реалмов на одном мангос
конструкция в mangosd.conf уже непомогает,

просто не работает, запускается только первый реалм, остальные видны но отображаются неактивными серыми, на них нет доступа. Впечатление что мангос просто ни видит остальные 4е сетевых интерфейса.
Естественно под каждый реалм в realmlist была создана соответствующия запись.
Раннее всё работало, подскажите что изменилось в последних ревизиях и как теперь запускать несколько реалмов для нескольких сетевых интерфейсов работающие на одной базе?

realmflags и realmbuilds - сравните с рабочим рилмом.
А уж в конфиге несколько строчек абсолютно точно писать не нужно...

master 06.05.2010 23:43

Цитата:

Сообщение от karobas (Сообщение 5740)
....
как теперь запускать несколько реалмов для нескольких сетевых интерфейсов работающие на одной базе?

нужно создать под каждый сервер свой конф. файл со след. уникальными параметрами:
Код:

RealmID
LogsDir
CharacterDatabaseInfo
WorldServerPort
BindIP

и Console.Enable установите в 0.

потом запустить 1 логин сервер и ХХ серверов мира. гдето так

realmd.exe
mangosd.exe -c mangos1.conf
mangosd.exe -c mangos2.conf
...

В базе логин сервера должна быть правильная информация о всех реалмах.

ПС realmlist одинаковый должен быть, т.к. у вас все идет через 1 логин сервер(realmd)?

KiriX 07.05.2010 11:53

Цитата:

Сообщение от master (Сообщение 5759)
нужно создать под каждый сервер свой конф. файл со след. уникальными параметрами:
Код:

RealmID
LogsDir
CharacterDatabaseInfo
WorldServerPort
BindIP

и Console.Enable установите в 0.

потом запустить 1 логин сервер и ХХ серверов мира. гдето так

realmd.exe
mangosd.exe -c mangos1.conf
mangosd.exe -c mangos2.conf
...

В базе логин сервера должна быть правильная информация о всех реалмах.

ПС realmlist одинаковый должен быть, т.к. у вас все идет через 1 логин сервер(realmd)?

Неверный подход. Насколько я понял, человеку нужен один мир, значит и один сервер, только для разных интерфейсов (адресов). Для этого не нужно нескольких mangosd.exe - достаточно записей в базе realmd в таблице realmlist.

По поводу обязательности студии. Сжуёт то, с чем вы привыкли работать проекты для VS? Если да - то пробуйте, если нет, так нет...

joker0805 10.05.2010 20:13

Цитата:

Сообщение от KiriX (Сообщение 5467)
...
- SQLyog или Navicat (программы для работы с MySQL сервером)
...

А почему новичкам рекомендуете такие странные (англоязычные, платные, иногда любящие заливать 100МБ по 50мин) программы? Не верится, что вы сами постоянно ими пользуетесь. Пробовал обе, но сам пользуюсь dbForge Studio for MySQL. Включив её раз навикат вы уже не запустите.

ghostpast 10.05.2010 20:23

Цитата:

Сообщение от joker0805 (Сообщение 6084)
А почему новичкам рекомендуете такие странные (англоязычные, платные, иногда любящие заливать 100МБ по 50мин) программы? Не верится, что вы сами постоянно ими пользуетесь. Пробовал обе, но сам пользуюсь dbForge Studio for MySQL. Включив её раз навикат вы уже не запустите.

Navicat Lite бесплатный для некоммерческих целей. время заливки зависит как раз от того, насколько хорошо составлены запросы. да и придираться к английскому интерфейсу нечего - вы же при написании запросов тоже используете английский язык

KiriX 10.05.2010 21:09

Цитата:

Сообщение от joker0805 (Сообщение 6084)
А почему новичкам рекомендуете такие странные (англоязычные, платные, иногда любящие заливать 100МБ по 50мин) программы? Не верится, что вы сами постоянно ими пользуетесь. Пробовал обе, но сам пользуюсь dbForge Studio for MySQL. Включив её раз навикат вы уже не запустите.

SQLyog бесплатный некоммерческий.
Сам пользуюсь навикатом по привычке с самого первого дня знакомства с MaNGOS. Да, он долго льёт дампы, но для дампов я использую консоль. А вот с созданием и редактированием баз и таблиц он прекрасно справляется. Там всё понятно. небольшие апы на базу навикат льёт такое же время, что и консоль.
Я посмотрю программу, которую порекомендовали вы, а вам на будущее хотел бы посоветовать, если вы указываете программу (тем более бесплатную) - не пожалейте времени сразу дать линк откуда её можно скачать - всем будет очень приятно, что не надо лишний раз лезть в гугол =)

BombermaG 10.05.2010 21:15

Долгое время пользуюсь HeidiSQL - Open Source проект.

tempura 11.05.2010 03:19

Цитата:

Сообщение от joker0805 (Сообщение 6084)
А почему новичкам рекомендуете такие странные (англоязычные, платные, иногда любящие заливать 100МБ по 50мин) программы? Не верится, что вы сами постоянно ими пользуетесь. Пробовал обе, но сам пользуюсь dbForge Studio for MySQL. Включив её раз навикат вы уже не запустите.

А почему вообще новичкам рекомендуют какие-то программы для MySQL? Это же намеренное оболванивание пользователя. В идеале - пусть вышеупомянутый новичок сначала научится работать с MySQL через консоль, а потом (причем - уже сильно-сильно потом) пусть сам найдет, проверит десяток-другой вариантов, и начнет использовать тот инструмент, который ему будет более удобен.
Пару раз воспользовавшись консолью, использовать любые суррогаты с интерфейсом полностью отпадает желание.

KiriX 11.05.2010 03:32

Цитата:

Сообщение от tempura (Сообщение 6110)
А почему вообще новичкам рекомендуют какие-то программы для MySQL? Это же намеренное оболванивание пользователя. В идеале - пусть вышеупомянутый новичок сначала научится работать с MySQL через консоль, а потом (причем - уже сильно-сильно потом) пусть сам найдет, проверит десяток-другой вариантов, и начнет использовать тот инструмент, который ему будет более удобен.
Пару раз воспользовавшись консолью, использовать любые суррогаты с интерфейсом полностью отпадает желание.


PSZ 12.05.2010 10:16

Цитата:

Сообщение от KiriX (Сообщение 5467)
-) Mnagos (база мира WoW, содержит в себе данные о существах, объектах, их заселении, расположении и луте с них, итемах, о их луте, квестах, условиях для их выполнения, EventAI скриптах для мобов и прочей мировой информации)

Опечатка - Mangos

Graved 30.05.2010 22:16

Пара придирок)
Цитата:

6) При установке сервера с нуля данные для баз Realmd, Characters, ScriptDev2, берутся с репозиториев проектов (папки sql, файлы realmd.sql, characters.sql и несколько файлов для ScriptDev2: scriptdev2_create_structure_mysql.sql и затем scriptdev2_script_full.sql). !!!В последующем при обновлении сервера никогда не перезаливайте в существующие базу файлы realmd.sql и characters.sql
Цитата:

7) Базу для мира вы можете скачать с форумов YTDB (руссокоязычные разработчики) или UDB (англоязычные разработчики) баз.
Данные пункты не указывают на конкретные места, откуда скачать. Новичку непонятно, с каких-таких репозиториев брать эти файлы. Или это тест на наличие мозгов?)
Может, стоит дать-таки конкретные ссылки?
В остальном очень полезное для новичков руководство.

tempura 31.05.2010 10:59

Цитата:

Сообщение от Graved (Сообщение 7690)
Данные пункты не указывают на конкретные места, откуда скачать. Новичку непонятно, с каких-таких репозиториев брать эти файлы. Или это тест на наличие мозгов?)
Может, стоит дать-таки конкретные ссылки?
В остальном очень полезное для новичков руководство.

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

KiriX 01.06.2010 16:28

Цитата:

Сообщение от Graved (Сообщение 7690)
Пара придирок)

Данные пункты не указывают на конкретные места, откуда скачать. Новичку непонятно, с каких-таких репозиториев брать эти файлы. Или это тест на наличие мозгов?)
Может, стоит дать-таки конкретные ссылки?
В остальном очень полезное для новичков руководство.

1) Точно указано, где данные файлы лежат. Ссылка на сам репозиторий есть выше.
2) Даны ссылки на форумы - умеющий читать да прочтёт, неумеющему же здесь просто не место...

Greshnikk 19.06.2010 15:31

Объясните пожалуйста, как я могу скачать базу YTDB?
Я по искал по всей данной конференции и конференции YTDB. Инструкции по скачиванию так и не нашел. Также не нашел ссылок на сайте YTDB.
Mangos и ScriptDev у меня получилось скачать.

Уф. Вроде разобрался

Astellar 19.06.2010 15:45

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 10 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.

Greshnikk 19.06.2010 15:52

Уже разобрался - прочитав одну из подписей администратора YTDB. Но все равно спасибо.
Возник такой вопрос: А почему именно R55, а не из корневой?

Astellar 19.06.2010 15:55

А зачем Вам лишние ревизии-то? R55 - самая актуальная. Остальные Вы все равно использовать не будете, если сервер с нуля ставите.

Greshnikk 19.06.2010 15:58

Понятно. Я просто не подумал, что там могут и старые версии(ревизии) содержаться.
А папка Burning Crusade тоже получается не нужна?

Feel the Power 19.06.2010 17:40

Последняя ревизия базы идёт под одну из последних ревизий ядра.

Max 22.06.2010 03:32

Цитата:

5) В консоли MySQL или с помощью программ SQLyog или Navicat создаём четыре (4) базы данных:
-) realmd (база хранит в себе данные аккаунтов, настройки аккаунтов, настройки реалмов сервера)
-) characters (база хранит в себе все данные о персонажах и обо всём с сними связанном)
-) scriptdev2 (база хранит в себе данные о Scriptdev2 скриптах - заполняется sql апдейтами из репозитория ScriptDev2)
-) mangos (база мира WoW, содержит в себе данные о существах, объектах, их заселении, расположении и луте с них, итемах, о их луте, квестах, условиях для их выполнения, EventAI скриптах для мобов и прочей мировой информации)
А не проще, вместо создания каждой базы, просто залить файл create_mysql.sql? Который поставляется вместе с исходниками.

KiriX 22.06.2010 16:36

Цитата:

Сообщение от Max (Сообщение 9337)
А не проще, вместо создания каждой базы, просто залить файл create_mysql.sql? Который поставляется вместе с исходниками.

Пусть осознают и чётко понимают что делают ;) К тому же, это вовсе не сложно.

Astellar 22.06.2010 17:08

Цитата:

Сообщение от Max (Сообщение 9337)
А не проще, вместо создания каждой базы, просто залить файл create_mysql.sql? Который поставляется вместе с исходниками.

Не проще. Кто выдаваемые в том файле привилегии видел, тот в цирке не смеётся.

Leopard 06.07.2010 20:09

Цитата:

Сообщение от KiriX (Сообщение 5467)
8) Заливаем базы.
Прошу обращаться с замечаниями и пожеланиями =)

Заливать только те файлы что были скачаны ранее или ещё какие дополнительно? Если не трудно, плиз поподробнее что и куда заливать. И ещё вопросик. Заливаю с помощью Navicat, но не вижу куда именно он заливает файлы. Что сделать, нормально ли это. Я новичек, вчера только начал этим заниматься. Сорь за возможно глупые вопросы.

Hantet 06.07.2010 20:42

Если вместе с ядром других патчей не поставлялось - это все.
Каждый sql апдейт имеет название вида:
ревизия_версия_базаданных_таблица.sql

Если у тебя ядро версии 10100, а база подходит для 10050, необходимо по очереди накатить на соответствующие названиям файлов базы.

Пример такой очерёдности:


А вообще, дружище, почитай несколько мануалов. А то что-то уж банальные вопросы у тебя.

Leopard 07.07.2010 11:45

Цитата:

Сообщение от Hantet (Сообщение 10202)
А вообще, дружище, почитай несколько мануалов. А то что-то уж банальные вопросы у тебя.

Спасибо за ответ, мне это все объяснило. Мануалы бы почитал, но не могу найти. Сорь за глупые вопросы и ещё раз Спасибо.

qGosha 24.07.2010 20:28

Гайд очень хороший, конечно выпущено 2 детали важные, но кто разбирается - разберётся. У меня увы очень плохой вопрос остался.. Как подобрать ytdb?

Hantet 24.07.2010 20:30

Цитата:

Сообщение от qGosha (Сообщение 11259)
Гайд очень хороший, конечно выпущено 2 детали важные, но кто разбирается - разберётся. У меня увы очень плохой вопрос остался.. Как подобрать ytdb?

http://ytdb.ru/showthread.php?t=2
Там всё написано.
Найти релиз базы под нужное ядро очень просто.

Пример:
Код:

Обновление 557_(10233) "Fabian's wrong"
Эту базу можно (желательно) накатывать на ядро ревизии 10233 или выше.

qGosha 24.07.2010 20:42

Цитата:

Сообщение от Hantet (Сообщение 11260)
http://ytdb.ru/showthread.php?t=2
Там всё написано.
Найти релиз базы под нужное ядро очень просто.

Пример:
Код:

Обновление 557_(10233) "Fabian's wrong"
Эту базу можно (желательно) накатывать на ядро ревизии 10233 или выше.

то есть на данный момент ytdb поддерживает версию mangos - (10233), но сам mangos уже - (10264)? Так я всё понял? :mda:

Hantet 24.07.2010 20:45

Цитата:

Сообщение от qGosha (Сообщение 11261)
то есть на данный момент ytdb поддерживает версию mangos - (10233), но сам mangos уже - (10264)? Так я всё понял? :mda:

1. Ставим ядро, заливаем свежую базу mangos.
2. Заливаем YTDB.
3. Накатывам на базу(ы) необходимые sql файлы из папки sql/updates, исходя из ревизии (см. пост #27).

tempura 24.07.2010 20:51

Цитата:

Сообщение от qGosha (Сообщение 11261)
но сам mangos уже - (10264)? Так я всё понял? :mda:

Не так.

Мангос обновляется часто.
База (любая) обновляется реже.
Значит ревизия, поддерживаемая базой, будет ВСЕГДА отставать от текущей ревизии ядра.

Но мы же все грамотные люди? Мы видим у базы цифирку 10233, видим у ядра цифирку 10264, и сами можем доставить апдейты с текущей на нужную версию. И нам для этого не нужно снова и снова писать подобные вопросы на форум. :(

malicious48 17.12.2010 14:41

help
 
Помогите, не пойму что не так сделал: скомпилировал ядро, поставил, создал БД, залил с исходника ядра. Базу для мира YTDB взял. настроил mangosd.conf, realmd.conf и scriptdev.conf. Наконец запустил, создал чара, вошел и мир пустой, нет не мобов не кого...

YuruY 17.12.2010 15:20

Ошибки в логе загрузки?

malicious48 17.12.2010 18:02

Help
 
You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.
Сообщение в денвере когда пытался залить YTDB_0.14.0_R570_MaNGOS_R10650_SD2_R1847_ACID_R306 _RuDB_R38.4

Добавлено через 8 минут
Вспомнил, что навикат есть, через него заливаю YTDB_0.14.0_R570_MaNGOS_R10650_SD2_R1847_ACID_R306 _RuDB_R38.4, обьемом в 106мб, мин 5 уже прошло, а 0% пока. Это нормально?

YuruY 17.12.2010 18:32

Цитата:

Сообщение от malicious48 (Сообщение 17290)
You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.
Сообщение в денвере когда пытался залить YTDB_0.14.0_R570_MaNGOS_R10650_SD2_R1847_ACID_R306 _RuDB_R38.4

Добавлено через 8 минут
Вспомнил, что навикат есть, через него заливаю YTDB_0.14.0_R570_MaNGOS_R10650_SD2_R1847_ACID_R306 _RuDB_R38.4, обьемом в 106мб, мин 5 уже прошло, а 0% пока. Это нормально?

Раздвоением личности не страдаете?

Цитата:

Теперь ОБЯЗАТЕЛЬНО прочесть:
http://ru-mangos.ru/showthread.php?t=26
Первый пост темы, ссылка в низу:
http://ru-mangos.ru/showthread.php?t=26
Пункт 18.

Неделю на чтение мануалов и воспоминание о вашем склерозе.

BombermaG 01.05.2011 13:49

Обновите гайды:
git clone git://github.com/scriptdev2/scriptdev2.git

Kujbor 17.06.2011 23:33

Скомпилировал очередное ядро, закинул на сервер, при попытке запустить получаю "Приложению не удалось запуститься, поскольку MSVCR100.dll не был найден. Повторная установка приложения исправит эту проблему".

Самое забавное, что библиотека лежит в положенном ей месте, стоит фреймворк 3.5, и компилы сделанные 2 и более месяцев назад прекрасно работают, а новые работать отказываются. Хотя на той машине на которой они компилируются, они работают.

Операционная система на сервере (где вылетает ошибка) Windows Server 2008 SP2 x64. Машина на которой компилируется mangos - Windows 7 максимальная x64. Компилировалось на VS 2010. Никаких критичных или как-то связанных с проблемой обновлений и изменений в операционках не производилось. Студия тоже не менялась.

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

В чем проблема может быть?? :(

Sid 18.06.2011 00:33

В том что новые библиотеки в папке /dep/lib были скомпилированы на 2010 студии.
Мелкософт на это выдает:

Цитата:

Распространяемый пакет Microsoft Visual C++ 2010 устанавливает компоненты среды выполнения библиотек Visual C++, необходимых для запуска приложений, разработанных с помощью Visual C++, на компьютере без установленной среды Visual C++ 2010.
Собсно вот http://www.microsoft.com/downloads/r...displaylang=ru

Kujbor 18.06.2011 02:07

Цитата:

Сообщение от Sid (Сообщение 23486)
В том что новые библиотеки в папке /dep/lib были скомпилированы на 2010 студии.
Мелкософт на это выдает:



Собсно вот http://www.microsoft.com/downloads/r...displaylang=ru

Ну я про это и писал:

Цитата:

Сообщение от Kujbor (Сообщение 23485)
устанавливал там же пакет для запуска программ созданных в VS2010 на компах без студии

Может не совсем понятно выразился, но именно об этом пакете я и говорил, только x64. Хотя я и x86 пробовал ставить на всякие пожарные.

Кроме того старые компилы тоже на VS2010 компилировались. И работают прекрасно по сей день..


Текущее время: 12:02. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS