|
|
| Line 1: |
Line 1: |
| {{RU/Resource page}}
| |
| __NOTOC__
| |
| Этот скрипт управляет любыми опросами с различными вариантами ответов. '''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===
| |
| <syntaxhighlight lang="lua">bool, int startPoll ( table pollData )</syntaxhighlight>
| |
| Создает опрос. Возвращает ''true'' при успешном создании, в противном случае - ''false'' и код ошибки (см. source для кода ошибки).
| |
|
| |
| * '''pollData''' таблица, содержащая настройки опроса и массив из ''как минимум двух'' опций. Каждая опция указывается по такой форме:
| |
| <syntaxhighlight lang="lua">
| |
| {
| |
| string optionName,
| |
| string eventToTrigger,
| |
| [element triggerFrom = getRootElement()],
| |
| default = [bool isDefaultOption = false],
| |
| var argument1,
| |
| var argument2,
| |
| ...
| |
| }
| |
| </syntaxhighlight>
| |
| Выбранная опция вызовет eventToTrigger от элемента triggerFrom с параметрами ''arguments...'' по окончании опроса.
| |
|
| |
| Если голосов недостаточно, будет выполнена опция по умолчанию, если таковая имеется.
| |
|
| |
| Образец:
| |
| <syntaxhighlight lang="lua">
| |
| 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},
| |
| }
| |
| </syntaxhighlight>
| |
| *'''title''' (требуется): заголовок опроса, который увидят клиенты на GUI менеджера
| |
| *'''percentage''' (опционально, по умолчанию - default.percentage): нужный % для победы опции в номинации
| |
| *'''timeout''' (опционально, по умолчанию - default.timeout): время опроса в секундах
| |
| *'''allowchange''' (опционально, по умолчанию - default.allowchange): отвечает за возможность изменять свой голос
| |
| *'''maxnominations''' (опционально, по умолчанию - default.maxnominations): отвечает за максимальное количество номинаций в случае ничьи
| |
| *'''visibleTo''' (опционально, по умолчанию - [[getRootElement]]()): таблица игроков, которым будет виден опрос, или элемент, который содержит игроков.
| |
| Если это root (корень), игроки, зашедшие уже после старта опроса смогут проголосовать.
| |
|
| |
| Умолчания из ''voteconfig.xml'' будут использованы для пропущенных опциональных параметров.
| |
|
| |
| ===stopPoll===
| |
| <syntaxhighlight lang="lua">bool, int stopPoll ( )</syntaxhighlight>
| |
| Останаваливает запущенный опрос. Возвращает ''true'', если опрос был успешно остановлен, иначе - ''false''.
| |
|
| |
| ===voteMap===
| |
| <syntaxhighlight lang="lua">bool, int voteMap ( string mapName )</syntaxhighlight>
| |
| Стартует голосование за карту. Возвращает ''true'', если опрос успешно стартовал, иначе - ''false'' и код ошибки.
| |
|
| |
| ===voteBetweenMaps===
| |
| <syntaxhighlight lang="lua">bool, int voteBetweenMaps ( resource map1, resource map2, [ resource map3, ... ] )</syntaxhighlight>
| |
| Стартует голосование между картами. Возвращает ''true'', если опрос успешно стартовал, иначе - ''false'' и код ошибки.
| |
|
| |
| ===voteKick===
| |
| <syntaxhighlight lang="lua">bool, int voteKick ( player thePlayer )</syntaxhighlight>
| |
| Стартует голосование за кик. Возвращает ''true'', если опрос успешно стартовал, иначе - ''false'' и код ошибки.
| |
|
| |
| ===voteKill===
| |
| <syntaxhighlight lang="lua">bool, int voteKill ( player thePlayer )</syntaxhighlight>
| |
| Стартует голосование за убийство. Возвращает ''true'', если опрос успешно стартовал, иначе - ''false'' и код ошибки.
| |
|
| |
| ===voteBan===
| |
| <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===
| |
| <syntaxhighlight lang="lua">void onPollStart ( )</syntaxhighlight>
| |
| Срабатывает перед стартом опроса. Отмена отменяет опрос.
| |
|
| |
| ===onPollStop===
| |
| <syntaxhighlight lang="lua">void onPollStop ( )</syntaxhighlight>
| |
| Срабатывает перед остановкой опроса. Отмена предотвращает отмену опроса.
| |
|
| |
| ===onPollEnd===
| |
| <syntaxhighlight lang="lua">void onPollEnd ( chosenOption )</syntaxhighlight>
| |
| Срабатывает по окончании опроса. Отмена не дает никакого эффекта.<br />
| |
| '''chosenOption''': Возвращает номер выбранной опции.
| |
|
| |
| ===onPollDraw===
| |
| <syntaxhighlight lang="lua">void onPollDraw ( )</syntaxhighlight>
| |
| Срабатывает, когда опрос оканчивается ничьей. Отмена предотвращает повторные номинации.
| |
|
| |
| ===onClientSendVote===
| |
| <syntaxhighlight lang="lua">void onClientSendVote ( int vote )</syntaxhighlight>
| |
| Срабатывает, когда на сервер посылается голос. ''client'' - клиент, отправивший голос. Отмена выливается в игнорирование голоса клиента менеджером.
| |
|
| |
| ==Настройки по умолчанию==
| |
| <syntaxhighlight lang="xml">
| |
| <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>
| |
| </syntaxhighlight>
| |
|
| |
| [[en:Resource:Votemanager]]
| |