RU/Resource:Votemanager: Difference between revisions
(new page) |
|||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{RU/Resource page}} | {{RU/Resource page}} | ||
__NOTOC__ | __NOTOC__ | ||
Этот скрипт управляет любыми опросами с различными вариантами ответов. '''votemap''', '''votekick''', '''votekill''' и '''voteban''' встроены. | |||
== | ==Встроенные опросы== | ||
'''votemap''' ( | '''votemap''' (начинает голосование за выбранные случайным образом карты (до 9), совместимые с модом, если он запущен) | ||
'''votemap gamemode''' ( | '''votemap gamemode''' (начинает голосование за выбранные случайным образом карты (до 9), совместимые с указанным модом) | ||
'''votemap gamemode map''' ( | '''votemap gamemode map''' (начинает голосование за указанные мод и карту) | ||
'''votemap map | '''votemap map''' (начинает голосование за смену карты, если таковая запущена, на указанную) | ||
''' | '''votemode''' (начинает голосование за выбранные случайным образом моды (до 9). по окончании голосования и старте мода, атоматичсеки начинается 'votemap gamemode') | ||
''' | '''votekick player''' (начинает голосование за кик указанного игрока) | ||
''' | '''votekill player''' (начинает голосование за убийство указанного игрока сервером) | ||
''' | '''voteban player''' (начинает голосование за бан указанного игрока) | ||
==Серверные функции== | |||
== | |||
===startPoll=== | ===startPoll=== | ||
<syntaxhighlight lang="lua">bool, int startPoll ( table pollData )</syntaxhighlight> | <syntaxhighlight lang="lua">bool, int startPoll ( table pollData )</syntaxhighlight> | ||
Создает опрос. Возвращает ''true'' при успешном создании, в противном случае - ''false'' и код ошибки (см. source для кода ошибки). | |||
* '''pollData''' | * '''pollData''' таблица, содержащая настройки опроса и массив из ''как минимум двух'' опций. Каждая опция указывается по такой форме: | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
{ | { | ||
Line 39: | Line 37: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Выбранная опция вызовет eventToTrigger от элемента triggerFrom с параметрами ''arguments...'' по окончании опроса. | |||
Если голосов недостаточно, будет выполнена опция по умолчанию, если таковая имеется. | |||
Образец: | |||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
local playerToKill = getRandomPlayer() | local playerToKill = getRandomPlayer() | ||
Line 60: | Line 58: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
*'''title''' ( | *'''title''' (требуется): заголовок опроса, который увидят клиенты на GUI менеджера | ||
*'''percentage''' ( | *'''percentage''' (опционально, по умолчанию - default.percentage): нужный % для победы опции в номинации | ||
*'''timeout''' ( | *'''timeout''' (опционально, по умолчанию - default.timeout): время опроса в секундах | ||
*'''allowchange''' ( | *'''allowchange''' (опционально, по умолчанию - default.allowchange): отвечает за возможность изменять свой голос | ||
*'''maxnominations''' ( | *'''maxnominations''' (опционально, по умолчанию - default.maxnominations): отвечает за максимальное количество номинаций в случае ничьи | ||
*'''visibleTo''' ( | *'''visibleTo''' (опционально, по умолчанию - [[getRootElement]]()): таблица игроков, которым будет виден опрос, или элемент, который содержит игроков. | ||
Если это root (корень), игроки, зашедшие уже после старта опроса смогут проголосовать. | |||
''voteconfig.xml'' | Умолчания из ''voteconfig.xml'' будут использованы для пропущенных опциональных параметров. | ||
===stopPoll=== | ===stopPoll=== | ||
<syntaxhighlight lang="lua">bool, int stopPoll ( )</syntaxhighlight> | <syntaxhighlight lang="lua">bool, int stopPoll ( )</syntaxhighlight> | ||
Останаваливает запущенный опрос. Возвращает ''true'', если опрос был успешно остановлен, иначе - ''false''. | |||
===voteMap=== | ===voteMap=== | ||
<syntaxhighlight lang="lua">bool, int voteMap ( string mapName )</syntaxhighlight> | <syntaxhighlight lang="lua">bool, int voteMap ( string mapName )</syntaxhighlight> | ||
Стартует голосование за карту. Возвращает ''true'', если опрос успешно стартовал, иначе - ''false'' и код ошибки. | |||
===voteBetweenMaps=== | ===voteBetweenMaps=== | ||
<syntaxhighlight lang="lua">bool, int voteBetweenMaps ( resource map1, resource map2, [ resource map3, ... ] )</syntaxhighlight> | <syntaxhighlight lang="lua">bool, int voteBetweenMaps ( resource map1, resource map2, [ resource map3, ... ] )</syntaxhighlight> | ||
Стартует голосование между картами. Возвращает ''true'', если опрос успешно стартовал, иначе - ''false'' и код ошибки. | |||
===voteKick=== | ===voteKick=== | ||
<syntaxhighlight lang="lua">bool, int voteKick ( player thePlayer )</syntaxhighlight> | <syntaxhighlight lang="lua">bool, int voteKick ( player thePlayer )</syntaxhighlight> | ||
Стартует голосование за кик. Возвращает ''true'', если опрос успешно стартовал, иначе - ''false'' и код ошибки. | |||
===voteKill=== | ===voteKill=== | ||
<syntaxhighlight lang="lua">bool, int voteKill ( player thePlayer )</syntaxhighlight> | <syntaxhighlight lang="lua">bool, int voteKill ( player thePlayer )</syntaxhighlight> | ||
Стартует голосование за убийство. Возвращает ''true'', если опрос успешно стартовал, иначе - ''false'' и код ошибки. | |||
===voteBan=== | ===voteBan=== | ||
<syntaxhighlight lang="lua">bool, int voteBan ( player thePlayer )</syntaxhighlight> | <syntaxhighlight lang="lua">bool, int voteBan ( player thePlayer )</syntaxhighlight> | ||
Стартует голосование за бан. Возвращает ''true'', если опрос успешно стартовал, иначе - ''false'' и код ошибки. | |||
==Серверные события== | |||
===onPollStarting=== | |||
<syntaxhighlight lang="lua">void onPollStarting ( table pollData )</syntaxhighlight> | |||
Срабатывает перед тем, как опрос начинает стартовать. Позволяет другим ресурсам изменять опрос. Используйте onPollModified, чтобы отозвать опрос. | |||
===onPollModified=== | |||
<syntaxhighlight lang="lua">void onPollModified ( table pollData )</syntaxhighlight> | |||
Вы можете использовать ее для отправки опроса с изменениями. | |||
===onPollStart=== | ===onPollStart=== | ||
<syntaxhighlight lang="lua">void onPollStart ( )</syntaxhighlight> | <syntaxhighlight lang="lua">void onPollStart ( )</syntaxhighlight> | ||
Срабатывает перед стартом опроса. Отмена отменяет опрос. | |||
===onPollStop=== | ===onPollStop=== | ||
<syntaxhighlight lang="lua">void onPollStop ( )</syntaxhighlight> | <syntaxhighlight lang="lua">void onPollStop ( )</syntaxhighlight> | ||
Срабатывает перед остановкой опроса. Отмена предотвращает отмену опроса. | |||
===onPollEnd=== | ===onPollEnd=== | ||
<syntaxhighlight lang="lua">void onPollEnd ( | <syntaxhighlight lang="lua">void onPollEnd ( chosenOption )</syntaxhighlight> | ||
Срабатывает по окончании опроса. Отмена не дает никакого эффекта.<br /> | |||
'''chosenOption''': Возвращает номер выбранной опции. | |||
===onPollDraw=== | ===onPollDraw=== | ||
<syntaxhighlight lang="lua">void onPollDraw ( )</syntaxhighlight> | <syntaxhighlight lang="lua">void onPollDraw ( )</syntaxhighlight> | ||
Срабатывает, когда опрос оканчивается ничьей. Отмена предотвращает повторные номинации. | |||
===onClientSendVote=== | ===onClientSendVote=== | ||
<syntaxhighlight lang="lua">void onClientSendVote ( int vote )</syntaxhighlight> | <syntaxhighlight lang="lua">void onClientSendVote ( int vote )</syntaxhighlight> | ||
Срабатывает, когда на сервер посылается голос. ''client'' - клиент, отправивший голос. Отмена выливается в игнорирование голоса клиента менеджером. | |||
== | ==Настройки по умолчанию== | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<settings> | <settings> | ||
Line 152: | Line 159: | ||
</settings> | </settings> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[en:Resource:Votemanager]] |
Latest revision as of 03:05, 1 April 2016
Этот скрипт управляет любыми опросами с различными вариантами ответов. votemap, votekick, votekill и voteban встроены.
Встроенные опросы
votemap (начинает голосование за выбранные случайным образом карты (до 9), совместимые с модом, если он запущен)
votemap gamemode (начинает голосование за выбранные случайным образом карты (до 9), совместимые с указанным модом)
votemap gamemode map (начинает голосование за указанные мод и карту)
votemap map (начинает голосование за смену карты, если таковая запущена, на указанную)
votemode (начинает голосование за выбранные случайным образом моды (до 9). по окончании голосования и старте мода, атоматичсеки начинается 'votemap gamemode')
votekick player (начинает голосование за кик указанного игрока)
votekill player (начинает голосование за убийство указанного игрока сервером)
voteban player (начинает голосование за бан указанного игрока)
Серверные функции
startPoll
bool, int startPoll ( table pollData )
Создает опрос. Возвращает true при успешном создании, в противном случае - false и код ошибки (см. source для кода ошибки).
- pollData таблица, содержащая настройки опроса и массив из как минимум двух опций. Каждая опция указывается по такой форме:
{ string optionName, string eventToTrigger, [element triggerFrom = getRootElement()], default = [bool isDefaultOption = false], var argument1, var argument2, ... }
Выбранная опция вызовет eventToTrigger от элемента triggerFrom с параметрами arguments... по окончании опроса.
Если голосов недостаточно, будет выполнена опция по умолчанию, если таковая имеется.
Образец:
local playerToKill = getRandomPlayer() local notEnoughVotesMessage = "Not enough votes to kill "..getPlayerName(playerToKill).."." startPoll { --start settings (dictionary part) title="Kill "..getPlayerName(playerToKill).."?", percentage=75, timeout=30, allowchange=false, maxnominations=3, visibleTo=getRootElement(), --start options (array part) [1]={"Yes", "doKillPlayer", playerToKill}, [2]={"No", "doOutputChatBox", notEnoughVotesMessage, getRootElement(), vR, vG, vB; default=true}, }
- title (требуется): заголовок опроса, который увидят клиенты на GUI менеджера
- percentage (опционально, по умолчанию - default.percentage): нужный % для победы опции в номинации
- timeout (опционально, по умолчанию - default.timeout): время опроса в секундах
- allowchange (опционально, по умолчанию - default.allowchange): отвечает за возможность изменять свой голос
- maxnominations (опционально, по умолчанию - default.maxnominations): отвечает за максимальное количество номинаций в случае ничьи
- visibleTo (опционально, по умолчанию - getRootElement()): таблица игроков, которым будет виден опрос, или элемент, который содержит игроков.
Если это root (корень), игроки, зашедшие уже после старта опроса смогут проголосовать.
Умолчания из voteconfig.xml будут использованы для пропущенных опциональных параметров.
stopPoll
bool, int stopPoll ( )
Останаваливает запущенный опрос. Возвращает true, если опрос был успешно остановлен, иначе - false.
voteMap
bool, int voteMap ( string mapName )
Стартует голосование за карту. Возвращает true, если опрос успешно стартовал, иначе - false и код ошибки.
voteBetweenMaps
bool, int voteBetweenMaps ( resource map1, resource map2, [ resource map3, ... ] )
Стартует голосование между картами. Возвращает true, если опрос успешно стартовал, иначе - false и код ошибки.
voteKick
bool, int voteKick ( player thePlayer )
Стартует голосование за кик. Возвращает true, если опрос успешно стартовал, иначе - false и код ошибки.
voteKill
bool, int voteKill ( player thePlayer )
Стартует голосование за убийство. Возвращает true, если опрос успешно стартовал, иначе - false и код ошибки.
voteBan
bool, int voteBan ( player thePlayer )
Стартует голосование за бан. Возвращает true, если опрос успешно стартовал, иначе - false и код ошибки.
Серверные события
onPollStarting
void onPollStarting ( table pollData )
Срабатывает перед тем, как опрос начинает стартовать. Позволяет другим ресурсам изменять опрос. Используйте onPollModified, чтобы отозвать опрос.
onPollModified
void onPollModified ( table pollData )
Вы можете использовать ее для отправки опроса с изменениями.
onPollStart
void onPollStart ( )
Срабатывает перед стартом опроса. Отмена отменяет опрос.
onPollStop
void onPollStop ( )
Срабатывает перед остановкой опроса. Отмена предотвращает отмену опроса.
onPollEnd
void onPollEnd ( chosenOption )
Срабатывает по окончании опроса. Отмена не дает никакого эффекта.
chosenOption: Возвращает номер выбранной опции.
onPollDraw
void onPollDraw ( )
Срабатывает, когда опрос оканчивается ничьей. Отмена предотвращает повторные номинации.
onClientSendVote
void onClientSendVote ( int vote )
Срабатывает, когда на сервер посылается голос. client - клиент, отправивший голос. Отмена выливается в игнорирование голоса клиента менеджером.
Настройки по умолчанию
<settings> <setting name="*color" value="#DF6464" /> <setting name="*log_votes" value="[true]" /> <setting name="*default.timeout" value="[30]"/> <setting name="*default.allowchange" value="[false]"/> <setting name="*default.percentage" value="[75]"/> <setting name="*default.maxnominations" value="[3]"/> <setting name="*votemap.enabled" value="[true]"/> <setting name="*votemap.timeout" value="[30]"/> <setting name="*votemap.locktime" value="[60]"/> <setting name="*votemap.percentage" value="[70]"/> <setting name="*votemap.allowchange" value="[true]"/> <setting name="*votekick.enabled" value="[true]"/> <setting name="*votekick.timeout" value="[30]"/> <setting name="*votekick.locktime" value="[120]"/> <setting name="*votekick.percentage" value="[75]"/> <setting name="*votekick.allowchange" value="[true]"/> <setting name="*voteban.enabled" value="[false]"/> <setting name="*voteban.timeout" value="[30]"/> <setting name="*voteban.locktime" value="[120]"/> <setting name="*voteban.percentage" value="[85]"/> <setting name="*voteban.allowchange" value="[true]"/> <setting name="*votekill.enabled" value="[true]"/> <setting name="*votekill.timeout" value="[30]"/> <setting name="*votekill.locktime" value="[120]"/> <setting name="*votekill.percentage" value="[75]"/> <setting name="*votekill.allowchange" value="[true]"/> </settings>