Форма входа
Меню сайта
Рандомный опрос
Вам еще интересен этот сайт?
Всего ответов: 32
Наша кнопка
Полезное для CS2D
[ Показать код кнопки ]
Показать плеер
Суббота, 26.07.2025, 06:35
Приветствую Вас Гость

Создание команды в чат - Форум

[ Ленточный вариант · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Создание команды в чат
NiconNeoДата: Пятница, 21.05.2010, 21:26 | Сообщение # 1
..::[AdmiN]::..
Группа: Администраторы
Сообщений: 142
Награды: 12
Репутация: 9
Статус: Offline
Крюк "say"
Посылает прикрепленной функции два значения: id (ID игрока, сказавшего фразу message), message (фраза, которую сказал игрок с ID id). Функция может иметь в себе return (return 1 для остановки функции и скрытия того, что сказал игрок с ID id).

Создать команду в чат очень просто. Для этого достаточно прикрепить функцию к крюку "say". А для того, чтобы создать команду, надо добавить в функцию это:
if (message == "команда") then -- причем скобки ставить не обязательно
отступ то, что выполнит команда
end

При этом скобки в операторах if, elseif, while, for и др. не обязательны.
Итак, почему бы не сделать команду с параметрами? А вот это может решаться немного иным способом, чем вы себе представляли. И это тоже очень просто. Есть одна отличная функция totable(string, match). Стоп-стоп-стоп, ее нет в библиотеке LUA. Что делать? Нельзя об этом не сказать biggrin Просто напишите в начало скрипта этот код:
function totable(t, match)
local cmd = {}
if type(match) == "string" then match = "[^"..match.."]+" end
for word in string.gmatch(t, match) do
table.insert(cmd, word)
end
return cmd
end

Итак, функцию, которая нам поможет мы знаем. Настал черед научиться ее использовать. smile Итак, рассмотрим пример.
Code
local itable = totable(message, ' ') -- разложим таблицу по словам (' ' - пробел)
if itable[1] == '!usgn' then -- если команда - "!usgn"
     local p = tonumber(itable[2]) -- переводим строковый тип в числовой и сохраняем в p
     if p ~= nil and player(p, 'exists') then -- проверяем, верно ли указан ID игрока
       if player(p, 'usgn') > 0 then -- Залогиннен ли игрок в USGN?
         msg2(id, 'USGN of this player (ID '..p..') is '..player(p, 'usgn')) -- Если да, пишем его USGN.
       else
         msg2(id, 'This player (ID '..p..') is not logged in USGN system') -- Если нет, пишем это.
       end
     else
       msg2(id, 'Wrong usage or player doesn\'t exist!')
     end
     return 1 -- скрываем команду (рекомендуется)
end

Эта команда показывает USGN ID игрока, если он у него есть, иначе говорит, что у него нет USGN ID. Если игрока нет, тоже об этом говорит. Форма: !usgn <ID игрока>.
Думаю, этот образец вам пригодится. wink
 
qwertoДата: Понедельник, 02.08.2010, 21:57 | Сообщение # 2
2
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Статус: Offline
Что тут не правельно???

if sample==nil then sample={} end
sample.sayfuncs={}

addhook("say","sample.sayfuncs.say")
function sample.sayfuncs.say(p,txt)
if (txt=="!speed") then
parse("speedmod "..p.." 100")
end

 
NiconNeoДата: Понедельник, 02.08.2010, 21:59 | Сообщение # 3
..::[AdmiN]::..
Группа: Администраторы
Сообщений: 142
Награды: 12
Репутация: 9
Статус: Offline
Вообще тут все правильно, может ошибка в другом скрипте
 
FaqApДата: Вторник, 03.08.2010, 11:23 | Сообщение # 4
1
Группа: Пользователи
Сообщений: 14
Награды: 0
Репутация: 1
Статус: Offline
тут отступпов нет happy

 
qwertoДата: Вторник, 03.08.2010, 11:37 | Сообщение # 5
2
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Статус: Offline
они есть тока в файр фокс не вставились,а как правильно поставить их?
 
qwertoДата: Вторник, 03.08.2010, 11:38 | Сообщение # 6
2
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Статус: Offline

вот
Прикрепления: 0593447.png (4.7 Kb)
 
NiconNeoДата: Вторник, 03.08.2010, 19:40 | Сообщение # 7
..::[AdmiN]::..
Группа: Администраторы
Сообщений: 142
Награды: 12
Репутация: 9
Статус: Offline
Quote (FaqAp)
тут отступпов нет

Отступы только для хорошей восприимчивости кода человеком. На выполнение сценария они не влияют wink


Ой, беру свои слова назад. Ты в конце "end" не дописал один. Ты "if" завершил, а функцию - нет))
Я тупанул че-то )) Неудобно без отступов))
 
qwertoДата: Вторник, 03.08.2010, 21:30 | Сообщение # 8
2
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 0
Статус: Offline
Спасибо всем!!!Теперь буду знать,а то я раньше не писал луа а только брал шаблоны.
 
  • Страница 1 из 1
  • 1
Поиск:

последняя новость
Сайт больше обновляться не будет

Подробнее
Друзья
Быстрый старт
Скачать CS2D 0.1.2.2 ZIP-архивом
Для установки просто распаковать в какую-нибудь папку

Скачать выделенный сервер для CS2D 0.1.2.2
Инструкция по ссылке.

Lua скрипты
Что такое и с чем едят

Получи USGN ID!
USGN ID используется для идентификации в игре

Новые файлы
Самые закачиваемые
Новые статьи
Самые читаемые
Поиск
Мини-чат
Статистика