[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Урок 1 (Первый плагин на SM(Взято с world-source.ru))
Урок 1
rootДата: Четверг, 31.01.2013, 00:50 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Как Создать Плагин для Sourcemod (урок 1)

У вас уже должен быть установлен SourceMod.

Исходники плагинов лежат в addons/sourcemod/scripting (.sp). Скомпилированные (файлы .smx):
В addons/sourcemod/plugins

Чтобы плагин работал, достаточно файла .smx (если нет желания делиться исходным кодом).
Основные RCON команды:

Код
sm plugins load x - вкл плагин                 
sm plugins unload x - отключить                 
sm plugins reload x - перезапустить (откл и сразу вкл)                 
sm plugins list - список включенных плагинов


x - это имя плагина (файла .smx). Если вы добавите в папку plugins smx файл и смените карту - он включится без RCON команд. Если хотите отключить скрипт, но не хотите его удалять, переместите .smx файл в addons/sourcemod/plugins/disabled (отключится после смены карты).

Пробуем сделать первый плагин:

1. Создайте в папке 'scripting' x.sp (обычный текст. документ просто переименовать).
2. Вставьте этот код (скачайте в прикреплениях, т. к. отступы важны):

Код
// UTF-8 (без BOM)                 

#include <sourcemod>                 

public OnPluginStart()                 
{                 
                     PrintToServer("SM скрипт включен!");                 

                     new x = 1;                 
                     PrintToServer("x = %d", x);                 
                     new y = 4 + x;                 
                     PrintToServer("y = 4 + %d = %d", x, y);                 

                     new String:x_str[] = "CS:Source";                 
                     PrintToServer("x_str = \"%s\" | Символов в тексте: %d", x_str, strlen(x_str));                 

                     PrintToServer("Теперь пробуем цикл for");                 
                     for (new i = 1; i < 6; i++) PrintToServer("i = %i", i);                 

                     decl String:text[75];                 
                     GetCurrentMap(text, 75);                 
                     PrintToServer("Текущая карта: %s", text);                 

                     FormatTime(text, 75, "%d/%m/%Y | %H:%M");                 
                     PrintToServer("Дата | Время: %s", text);                 

                     PrintToServer("Слотов на сервере: %d", GetMaxClients());                 

                     // Ловим событие (игрок прыгнул)                 
                     HookEvent("player_jump", player_jump);                 
}                 

public player_jump(Handle:event, const String:name[], bool:dontBroadcast)                 
{                 
                      new client = GetClientOfUserId(GetEventInt(event, "userid"));                 
                      new hp = GetClientHealth(client);                 
                      if (hp < 500) SetEntProp(client, Prop_Send, "m_iHealth", hp + 1);                 
}


Используйте программу Notepad++ (текстовый редактор), соблюдайте одинаковое количество отступов в колонках (советую использовать Tab). Сохраните документ вUTF-8 без BOM, т.к. в коде есть русский текст:

Теперь скомпилируйте, запустите плагин, и смотрите в консоль сервера:

Код
SM скрипт включен!                 
x = 1                 
y = 4 + 1 = 5                 
x_str = "CS:Source" | Символов в тексте: 9                 
Теперь пробуем цикл for                 
i = 1                 
i = 2                 
i = 3                 
i = 4                 
i = 5                 
Текущая карта: de_cbble                 
Дата | Время: 25/05/2012 | 18:04                 
Слотов на сервере: 7


Вы можете зайти на сервер и попрыгать. После каждого прыжка вам будет добавляться 1 hp.

Полезные ссылки:

- Обязательно, первым делом, ознакомьтесь с этой статьёй
http://docs.sourcemod.net/api/ - список всех SM функций, синтаксис, описание
- http://wiki.alliedmods.net/ - разная информация

#include  - подключает библиотеку 'sourcemod'.

В разных библиотеках разные функции и чтобы иметь доступ к определенной функции, нужно подключить соответсвующую библиотеку. Все они находятся в addons\sourcemod\scripting\include (файлы с расширением .inc). Как узнать какие библиотеки подключать: об этом есть отдельный урок.

Советую сначала тестировать различные варианты кода в событии OnPluginStart(). Внутри используйте PrintToServer для вывода данных в консоль сервера - так вы сможете узнать что чему равно и когда было выполнено, и заходить в игру не надо.

5733790.zip(0.7 Kb)
 
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Урок 1 (Первый плагин на SM(Взято с world-source.ru))
  • Страница 1 из 1
  • 1
Поиск: