killer100 Posted July 20, 2011 Share Posted July 20, 2011 Помогите написать скрипт пожалуйста. Если игрок спамит в чат отослал например 5 одинаковых сообщений подряд, то его кикает консоль с причиной Spam. Как это сделать? Link to comment
MX_Master Posted July 20, 2011 Share Posted July 20, 2011 Помогите написать скрипт пожалуйста. Если игрок спамит в чат отослал например 5 одинаковых сообщений подряд, то его кикает консоль с причиной Spam. Как это сделать? https://community.multitheftauto.com/index.php?p=resources&s=details&id=2537 Link to comment
killer100 Posted July 20, 2011 Share Posted July 20, 2011 Помогите написать скрипт пожалуйста. Если игрок спамит в чат отослал например 5 одинаковых сообщений подряд, то его кикает консоль с причиной Spam. Как это сделать? https://community.multitheftauto.com/index.php?p=resources&s=details&id=2537 Это не то, в этом скрипте игроку даётся мут, и тем более он не работает... Link to comment
MX_Master Posted July 20, 2011 Share Posted July 20, 2011 я не сморел, просто поищи в комьюнити еще Link to comment
Other Languages Moderators Disinterpreter Posted July 20, 2011 Other Languages Moderators Share Posted July 20, 2011 Люди помогите такая трабла. Файл я скачал и закинул в sysytem32. Перезагружал, но неработает. http://imagehost.spark-media.ru/i4/88F2 ... 8F424C.jpg Link to comment
MX_Master Posted July 20, 2011 Share Posted July 20, 2011 Люди помогите такая трабла. Файл я скачал и закинул в sysytem32. Перезагружал, но неработает.http://imagehost.spark-media.ru/i4/88F2 ... 8F424C.jpg Microsoft® C++ Runtime Library Скачай и установи Link to comment
Other Languages Moderators Disinterpreter Posted July 21, 2011 Other Languages Moderators Share Posted July 21, 2011 Непомогло.... Ставил 2005 непомогало потмо поставил 2010 x64 непомогло (2005 я ненашел 64х) Link to comment
killer100 Posted July 21, 2011 Share Posted July 21, 2011 я не сморел, просто поищи в комьюнити еще там не такого, помогите кто может Link to comment
MX_Master Posted July 21, 2011 Share Posted July 21, 2011 Непомогло.... Ставил 2005 непомогало потмо поставил 2010 x64 непомогло (2005 я ненашел 64х) 2008 ? я не сморел, просто поищи в комьюнити еще там не такого, помогите кто может поискал, нашел тока примерное: https://community.multitheftauto.com/index.php?p= ... ils&id=601 https://community.multitheftauto.com/index.php?p= ... ils&id=202 Link to comment
Other Languages Moderators Disinterpreter Posted July 21, 2011 Other Languages Moderators Share Posted July 21, 2011 Надо MX_Master(у) спасибо сказать сразу двоих юзеров окучивает Link to comment
Arisu Posted July 21, 2011 Share Posted July 21, 2011 Задался вопросом о приоритетности передачи пакетов. Вопрос к лилу Тоди: на конкретном примере: если я сделаю подряд triggerClientEvent(player) setElementData(player), не произойдет ли так, что elementData будет передано игроку раньше, чем event? Тот же вопрос и для обратного порядка функций. Link to comment
MX_Master Posted July 22, 2011 Share Posted July 22, 2011 Теоретики собрались (: Про практику уже забыли, наверное Link to comment
killer100 Posted July 22, 2011 Share Posted July 22, 2011 Помогите со скриптом пожалуйста, этот скрипт показывает онлайн админов, но он показывает вот так: Online admins list: Admins: name, name, name SuperModerators: name, name Moderators: name, name, name А как сделать что бы он показывал вот так? Online admins list: Admins: name, name, name SuperModerators: name, name,name Moderators: name, name local admins = "" function processAdminList() players = getElementsByType ( "player" ) admins = "" for k,v in ipairs(players) do local accountname = "" if (isGuestAccount(getPlayerAccount(v)) == false) then accountname = getAccountName (getPlayerAccount(v)) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) then if (admins == "") then admins = "Admins: "..getPlayerName(v) else admins = admins .. ", a: " .. getPlayerName(v) end end if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "SuperModerator" ) ) then if (admins == "") then admins = "SuperModerators: "..getPlayerName(v) else admins = admins .. ", b: " .. getPlayerName(v) end end if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Moderator" ) ) then if (admins == "") then admins = "Moderators: "..getPlayerName(v) else admins = admins .. ", c: " .. getPlayerName(v) end end end end end addEventHandler( "onPlayerLogin", getRootElement(), processAdminList ) addEventHandler( "onPlayerLogout", getRootElement(), processAdminList ) addEventHandler( "onPlayerQuit", getRootElement(), processAdminList ) function setAdminList(Player,command) if admins ~= "" then outputChatBox("Online Admins: "..admins , Player, 255 , 255, 0) else outputChatBox("No admins online." , Player, 255 , 255, 0) end end addCommandHandler("admins", setAdminList) function tAdmins(message,messageType) if message == "!admins" or message == "!Admins" or message =="!onlineadmins" then local playeraccount = getPlayerAccount(source) if admins ~= "" then outputChatBox("Online Admins: "..admins , getRootElement(), 255 , 255, 0) else outputChatBox("No admins online." , getRootElement(), 255 , 255, 0) end end end addEventHandler("onPlayerChat",getRootElement(),tAdmins) Link to comment
MX_Master Posted July 22, 2011 Share Posted July 22, 2011 вставь \n в нужных местах (переход на новую строку) Link to comment
Arisu Posted July 22, 2011 Share Posted July 22, 2011 Теоретики собрались (: Про практику уже забыли, наверное Да причем тут это. Где-то я видел, слышал, читал, что в мта некоторые пакеты имеют больший приоритет, чем другие. Я собираюсь перебросить игроку таблицу скинов через triggerClientEvent, а затем установить ему статус "Select", чтобы активировать выбор на стороне клиента. triggerClientEvent(player, "updateSkinsTable", root, { 300, 301, 302, 310, 314 }) setElementData(player, "state", "Select") Вот и боюсь, а не уйдет ли дата вперед эвента со скинами? Ориентироваться на "практику" смысла нет - всего сетевого кода я не знаю, к тому же неизвестно, как поведет себя при большом пинге, пакетопотерях и т.п. Link to comment
killer100 Posted July 22, 2011 Share Posted July 22, 2011 вставь \n в нужных местах (переход на новую строку) зделай пожалуйста, потому что я не понял как это сделать. Я в скриптах понимаю очень мало. Link to comment
MX_Master Posted July 22, 2011 Share Posted July 22, 2011 Теоретики собрались (: Про практику уже забыли, наверное Да причем тут это. Где-то я видел, слышал, читал, что в мта некоторые пакеты имеют больший приоритет, чем другие. Я собираюсь перебросить игроку таблицу скинов через triggerClientEvent, а затем установить ему статус "Select", чтобы активировать выбор на стороне клиента. triggerClientEvent(player, "updateSkinsTable", root, { 300, 301, 302, 310, 314 }) setElementData(player, "state", "Select") Вот и боюсь, а не уйдет ли дата вперед эвента со скинами? Ориентироваться на "практику" смысла нет - всего сетевого кода я не знаю, к тому же неизвестно, как поведет себя при большом пинге, пакетопотерях и т.п. одним тригером передать список и состояние, клиент сам изменит данные элемента и начнет выбор вставь \n в нужных местах (переход на новую строку) зделай пожалуйста, потому что я не понял как это сделать. Я в скриптах понимаю очень мало. пора начать пробовать Link to comment
killer100 Posted July 22, 2011 Share Posted July 22, 2011 вставь \n в нужных местах (переход на новую строку) зделай пожалуйста, потому что я не понял как это сделать. Я в скриптах понимаю очень мало. пора начать пробовать ты мне не поможешь? Link to comment
Kenix Posted July 22, 2011 Share Posted July 22, 2011 local admins = "" function processAdminList() players = getElementsByType ( "player" ) admins = "" for k,v in ipairs(players) do local accountname = "" if (isGuestAccount(getPlayerAccount(v)) == false) then accountname = getAccountName (getPlayerAccount(v)) if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Admin" ) ) then if (admins == "") then admins = "\nAdmins: "..getPlayerName(v) else admins = admins .. ", a: " .. getPlayerName(v) end end if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "SuperModerator" ) ) then if (admins == "") then admins = "\nSuperModerators: "..getPlayerName(v) else admins = admins .. ", b: " .. getPlayerName(v) end end if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "Moderator" ) ) then if (admins == "") then admins = "\nModerators: "..getPlayerName(v) else admins = admins .. ", c: " .. getPlayerName(v) end end end end end addEventHandler( "onPlayerLogin", getRootElement(), processAdminList ) addEventHandler( "onPlayerLogout", getRootElement(), processAdminList ) addEventHandler( "onPlayerQuit", getRootElement(), processAdminList ) function setAdminList(Player,command) if admins ~= "" then outputChatBox("Online Admins: "..admins , Player, 255 , 255, 0) else outputChatBox("No admins online." , Player, 255 , 255, 0) end end addCommandHandler("admins", setAdminList) function tAdmins(message,messageType) if message == "!admins" or message == "!Admins" or message =="!onlineadmins" then local playeraccount = getPlayerAccount(source) if admins ~= "" then outputChatBox("Online Admins: "..admins , getRootElement(), 255 , 255, 0) else outputChatBox("No admins online." , getRootElement(), 255 , 255, 0) end end end addEventHandler("onPlayerChat",getRootElement(),tAdmins) Link to comment
Arisu Posted July 22, 2011 Share Posted July 22, 2011 можно было бы, но тогда мне придется делать отдельный триггер для "тихой" передачи списка скинов (без активации выбора). была не была, сделаю как хотел, а массовые тесты покажут. Link to comment
MX_Master Posted July 23, 2011 Share Posted July 23, 2011 Это тот же самый тригер, только вместо состояния что-ньть вроде false. Тогда клиент изменит список и не будет вызывать выбор. Link to comment
Antibird Posted July 25, 2011 Share Posted July 25, 2011 (edited) [РЕШЕНО] Возникла интересная ситуация, вкратце опишу в чем дело. При рестарте сервера у меня автоматически компилируются скрипты, что удобно - внес изменения и перезапустил сервер, никаких лишних телодвижений. Система проста: сначала на сервере читаются клиентские скрипты и пишутся в одну строку, потом это отдается на съедение string.dump, потом уже скомпилированный скрипт попадает на клиент и там запускается (да, такой я параноик). Внезапно стали происходить чудные вещи. Если длина исходного скрипта, передаваемый на обработку функции string.dump, больше 65534 байта, то клиент перестает его загружать (через loadstirng, естественно). Уточняю, что дело не в каких-либо аспектах пересылки скрипта с сервера на клиент, и вот почему. Провел эксперимент: 1. Запустил со скриптом меньше 65 Кб и записал два файла - скомпилированный сервером (на сервере) и он же, переданный на клиент (на клиенте, очевидно). 2. Используя обычную строку-комментарий довел размер скрипта до 65535 и снова записал такие же файлы. 3. Сравнил, используя notepad++ ( есть там такой инструмент: "Compare" ) все 4 файла. Notepad клянется, что "Files match". Все, то есть. Совсем. Нет, это фантастика, ей богу. То есть скомпиленные скрипты с и без строки-комментария абсолютно идентичны, что есть логично и правильно, а вот длина исходного кода имеет значение. Где собака-то зарыта, чем они все-таки могут отличаться и как это увидеть? Edited July 26, 2011 by Guest Link to comment
MX_Master Posted July 25, 2011 Share Posted July 25, 2011 в инфе про string.dump сказано, что он кушает ИДент функции, превращая ее в бинарник, чтобы потом loadstring мог с этого бинарника создать функцию заново и вернул её ИДент. Это так, для справки и для тех, кто не читал. я юзаю loadstring для загрузки больших скриптов и местами бинарников, уж точно больше 64 кб, версия мта 1.1. Так что с этим все в порядке я так понимаю, что все дело в string.dump. В инете видно есть жалоба, что байт-код ей создается не совсем верно. Решения были связаны только с последующим использованием loadstring: вокруг loadstring поставить assert в loadstring вторым параметром укзать нечто вроде "(noname)", это так называемое chunk name источник - http://lua-users.org/lists/lua-l/2004-07/msg00222.html Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now