RU/Resource:Votemanager: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Blanked the page)
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]]

Revision as of 16:13, 31 March 2016