Topic: [Coding-Tutorial](RUS)#2 System Command
Sorry that is not in English!!!:(
Всем привет, это второй урок по кодингу в Teeworlds и так давайте сегодня сделаем систему команд.
Цель:
1. Научиться создавать систему команд
2. Сделать свою команду по примеру урока
Что нам для этого нужно?
1. Исходники Teeworlds (Уже с bam'ом и Compiling.bat. Вот мой урок о том где их взять: *Klick*)
2. Текстовый редактор
Советую Sublime Text: Download
Или можно пользоваться: Обычным, Notepad++, CodeBox
3. Знания о том как запустить сервер (Если нужно кому, пишите комментарий сделаю урок!)
И так если всё у вас есть приступим, те у кого нет скачайте.
Для начала зайдём в папку с исходниками, потом /src/game/server/gamecontext.cpp,
и потом ищем такой код (Ctrl+F - поиск):
SendChat(ClientID, Team, pMsg->m_pMessage);
Вот скрин:
Теперь сотрём эти две строки:
pPlayer->m_LastChat = Server()->Tick();
SendChat(ClientID, Team, pMsg->m_pMessage);
И в место них напишем такой код:
if(!strncmp(pMsg->m_pMessage,"/",1)) //Если сообщение игрока начинается с "/"
{
pPlayer->m_LastChat = Server()->Tick(); // Перехватывавем егоint myID = pPlayer->GetCID(); // Задаём переменную кторая будет означать ID игрока
}
else
SendChat(ClientID, Team, pMsg->m_pMessage); //иначе просто игрок отправит сообщение
Вот что получилось:
Теперь создадим команду "/cmdlist", которая будет показывать список команд на сервере.
Для начала после:
int myID=pPlayer->GetCID();
Напишем такой код:
if(!strcmp(pMsg->m_pMessage,"/cmdlist")) //если игрок ввёл "/cmdlist"
{
SendChatTarget(myID,"---------Commands---------"); //Выводит сообщение
SendChatTarget(myID,"/cmdlist"); //Выводит сообщение
SendChatTarget(myID,"-----------------------------------"); //Выводит сообщение
}
Вот что получилось:
В принципе и всё, теперь можно побаловаться и добавить команду "/hello", или какую-то другую
я сделаю "/hello" для начала после
if(!strcmp(pMsg->m_pMessage,"/cmdlist")) //если игрок ввёл "/cmdlist"
{
SendChatTarget(myID,"---------Commands---------"); //Выводит сообщение
SendChatTarget(myID,"/cmdlist"); //Выводит сообщение
SendChatTarget(myID,"-----------------------------------"); //Выводит сообщение
}
добавим такой код
else if(!strcmp(pMsg->m_pMessage,"/hello")) //или(else) если(if) игрок ввёл "/cmdlist"
{
SendChatTarget(myID,"Server: Hi "); //Выводит сообщение "Server: Hi " извеняюсь форум заменил двоеточие+D на смайлики))
}
Вот что получилось:
И добавим команду в список всех команд.
Для завершения сделаем проверку на не существующую команду
После кода:
else if(!strcmp(pMsg->m_pMessage,"/hello")) //или(else) если(if) игрок ввёл "/cmdlist"
{
SendChatTarget(myID,"Server: Hi "); //Выводит сообщение "Server: Hi "
}
Добавим такой код:
else if(!strncmp(pMsg->m_pMessage, "/", 1))
{
SendChatTarget(myID, "Wrong CMD, see /cmdlist");
}
Думаю скрин не нужно...
Теперь протестим:
1. Запускаем Compiling.bat (Компилируем - дальше буду использовать это выражение.)
2. В папке с исходниками должен появиться "teeworlds_srv.exe", это наш сервер!
3. Запускаем сервер и тестим!!
Вот скрины:
/cmdlist
/hello
На этом пока-что всё надеюсь вам это было полезно.
Попробуйте как ДЗ сделать команду /help. И поэкспериментировать с ней.
Отвисывайтесь в комменты, кому- что не понятно, объясню!
Автор: SEG4
Contacts:
Skype: Thehacer007
VK: *Klick*
РЕБЯТА!!! Следующий туториал будет о том как сделать что-то в character.cpp и character.h. Например команду "/xxl" или "/aip", бесконечные жизни, бесконечные патроны. Всё это в следующем уроке!!! Ждите:D
1. [Coding-Tutorial](RUS)#1 Compiling
2. [Coding-Tutorial](RUS)#1 System Command