Flaker Posted July 24, 2012 Share Posted July 24, 2012 Похоже у тебя username не является массивом? Возможно лучше сделать такую проверку: local username = "Valera" --Пример ника local BadSymbols = { "[", "]" } --Массив с "плохими" символами if ( hasBadSymbols(username) ) then --Проверка на наличие "плохих" символов. Если есть: print("Has") else --Если таковых нет: print ("Not") end function hasBadSymbols(str) --Функция на проверку наличия в строке "плохих" символов for _, symb in ipairs(BadSymbols) do --Перебор массива "BadSymbols" if str:find(symb) then --Если в заданной строке "str" находим символ из массива "BadSymbols" тогда возвращаем true (Тоесть запрещенные символы имеются в строке) return true end end return false --если после перемора массива функция не прервалась, то возвращаем false (В строке не обнаруженно запрещенных символов) end Link to comment
H1TM4N Posted July 24, 2012 Share Posted July 24, 2012 Похоже у тебя username не является массивом? Возможно лучше сделать такую проверку: local username = "Valera" --Пример ника local BadSymbols = { "[", "]" } --Массив с "плохими" символами if ( hasBadSymbols(username) ) then --Проверка на наличие "плохих" символов. Если есть: print("Has") else --Если таковых нет: print ("Not") end function hasBadSymbols(str) --Функция на проверку наличия в строке "плохих" символов for _, symb in ipairs(BadSymbols) do --Перебор массива "BadSymbols" if str:find(symb) then --Если в заданной строке "str" находим символ из массива "BadSymbols" тогда возвращаем true (Тоесть запрещенные символы имеются в строке) return true end end return false --если после перемора массива функция не прервалась, то возвращаем false (В строке не обнаруженно запрещенных символов) end так какой-то косяк при использовании символов [ ]. Постоянно пишет malformed pattern (missing ']' ) ps конкретно именно этого символа [ Link to comment
Flaker Posted July 24, 2012 Share Posted July 24, 2012 (edited) del Edited July 24, 2012 by Guest Link to comment
H1TM4N Posted July 24, 2012 Share Posted July 24, 2012 Хотя погоди пока, не то что то... не не, все работает если не использовать плохие символы [ и какуюто из круглых скобок ( или ). А так спасибо тебе, Flaker. Link to comment
Flaker Posted July 24, 2012 Share Posted July 24, 2012 Хотя погоди пока, не то что то... не не, все работает если не использовать плохие символы [ и какуюто из круглых скобок ( или ). А так спасибо тебе, Flaker. function hasBadSymbols(CheckingString) --Функция на проверку наличия в строке "плохих" символов for _,symb in ipairs( BadSymbols ) do --Перебор массива "BadSymbols" if ( string.find(CheckingString, tostring( symb ), 0, true) ) then return true end end return false --если после перемора массива функция не прервалась, то возвращаем false (В строке не обнаруженно запрещенных символов) end Вот измени функцию, все работать должно тогда) Link to comment
Astari Posted July 25, 2012 Share Posted July 25, 2012 можно как нибудь сделать чтобы сообщение отображалось у игроков с определенной елемент датой? Link to comment
AMARANT Posted July 26, 2012 Share Posted July 26, 2012 (edited) Конечно, это очень просто: function sendMessage( message, messageType ) cancelEvent() local players = getAlivePlayers() for _,player in ipairs(players) do if getElementData(player,"yourelementdata") then outputChatBox(message,player) end end end addEventHandler( "onPlayerChat", getRootElement(), sendMessage ) function blockChatMessage(message, messageType) cancelEvent() end addEventHandler( "onPlayerChat", getRootElement(), blockChatMessage ) Edited July 26, 2012 by Guest Link to comment
_Dark_ Posted July 26, 2012 Share Posted July 26, 2012 Тогда нужно прекратить событие вызвав cancelEvent(), в противном случае сообщение все равно уйдет всем игрокам. Link to comment
AMARANT Posted July 26, 2012 Share Posted July 26, 2012 Пардон, я совсем забыл про это Спасибо _Dark_, исправил код вверху. Link to comment
Other Languages Moderators Disinterpreter Posted July 26, 2012 Other Languages Moderators Share Posted July 26, 2012 функция sendMessage у тебя не табулирована Link to comment
_Dark_ Posted July 26, 2012 Share Posted July 26, 2012 Пардон, я совсем забыл про это Спасибо _Dark_, исправил код вверху. А зачем function blockChatMessage(message, messageType) cancelEvent() end addEventHandler( "onPlayerChat", getRootElement(), blockChatMessage ) если function sendMessage( message, messageType ) cancelEvent() Вообще, вот, упрощенный вариант: addEventHandler( "onPlayerChat", root, function(message) local players = getAlivePlayers() for _,player in ipairs(players) do if(getElementData(player, "yourelementdata")) then outputChatBox(message, player) end end cancelEvent() end ) Link to comment
AMARANT Posted July 26, 2012 Share Posted July 26, 2012 Блин да накосячил я там сверху) Хотел просто пример дать для Astari, так сказать подтолкнуть чтоб дальше сам сделал как хотел, но "не получилось, не фартануло" А вообще когда-то давно сделал у себя на сервере это ограничение, но забыл в точности в примере указать. Вот если что, правда с серва выдрано: local chatRadius = 25.5 local megaphoneRadius = 100.0 function sendMessageToNearbyPlayers( message, messageType ) if messageType == 0 and not getElementData(source,"speaking") then if message==")" then local posX, posY, posZ = getElementPosition( source ) local chatSphere = createColSphere( posX, posY, posZ, chatRadius ) local nearbyPlayers = getElementsWithinColShape( chatSphere, "player" ) destroyElement( chatSphere ) for index, nearbyPlayer in ipairs( nearbyPlayers ) do outputChatBox( getPlayerName(source).." smiles", nearbyPlayer, 147, 112, 219 ) end else local posX, posY, posZ = getElementPosition( source ) local chatSphere = createColSphere( posX, posY, posZ, chatRadius ) local nearbyPlayers = getElementsWithinColShape( chatSphere, "player" ) destroyElement( chatSphere ) for index, nearbyPlayer in ipairs( nearbyPlayers ) do outputChatBox( getPlayerName(source)..": "..message, nearbyPlayer, 255, 255, 255 ) end end elseif messageType == 1 then local posX, posY, posZ = getElementPosition( source ) local chatSphere = createColSphere( posX, posY, posZ, chatRadius ) local nearbyPlayers = getElementsWithinColShape( chatSphere, "player" ) destroyElement( chatSphere ) for index, nearbyPlayer in ipairs( nearbyPlayers ) do outputChatBox( getPlayerName(source).." "..message, nearbyPlayer, 147, 112, 219 ) end end end addEventHandler( "onPlayerChat", getRootElement(), sendMessageToNearbyPlayers ) function blockChatMessage(message, messageType) cancelEvent() end addEventHandler( "onPlayerChat", getRootElement(), blockChatMessage ) Link to comment
123456zuk Posted July 26, 2012 Share Posted July 26, 2012 Люди я сделал всё по вашим инструкциям все настойки сменил и и тог мне пишет : This server is blocked your customizated GTA SA files. To join this server please uncheck: Settings>Multiplayer>Use customizated gta sa files пццц нужны идеи или какнить снять блок Link to comment
123456zuk Posted July 26, 2012 Share Posted July 26, 2012 ну античит отключил проверку на #8,#7 и #6 отключил галочку поставил что я мог не сделать? Link to comment
_Dark_ Posted July 26, 2012 Share Posted July 26, 2012 This server is blocked your customizated GTA SA files. To join this server please uncheck: Settings>Multiplayer>Use customizated gta sa files Сервером были заблокированы модифицированные файлы GTA SA. Для подключения к этому серверу, пожалуйста, снимите флаг с: Settings>Multiplayer>Use customizated gta sa files Link to comment
123456zuk Posted July 26, 2012 Share Posted July 26, 2012 Так я не могу оффнуть мне нужна карта эта если я галку убераю то карты нету Default MTA Server 22003 32 1 22005 1 5 20 1 https://wiki.multitheftauto.com/wiki/GetPlayerVersion and look like this: 1.1.0-9.03100.0 Note that this setting only determines if the client should be prompted to update. The actual build number they receive will be the highest available. See: https://nightly.multitheftauto.com/ver --> https://nightly.multitheftauto.com/ver --> 1 0 medium 1 https://wiki.multitheftauto.com/wiki/Filepath Keep a backup of this file in a safe place. Default value: server-id.keys--> server-id.keys logs/server.log logs/server_auth.log logs/db.log acl.xml logs/scripts.log 0 0 36 0 0 1 4 backups 3 5 Link to comment
123456zuk Posted July 26, 2012 Share Posted July 26, 2012 надеюсь ктонить с соображалкой поможет Link to comment
Scripting Moderators Sarrum Posted July 26, 2012 Scripting Moderators Share Posted July 26, 2012 @123456zuk Какие файлы заменяет карта? Link to comment
_Vincent_ Posted July 26, 2012 Share Posted July 26, 2012 Короче... Для начала попробуй со стандартным .exe от GTA SA, а не от того мода с картой, просто поиграть в "сингл" (то есть в обычный са, без мультиплеера). Если тебя не крашнет, то есть смысл рыть дальше, если крашнет - то мы в замкнутом цикле оказываемся: мта нужен оригинальный эксешник, иначе краш; моду нужен свой эксешник, иначе краш... Проверь, чтоли. Link to comment
TEDERIs Posted July 26, 2012 Share Posted July 26, 2012 Я думаю имеет смысл добавить в твой конфиг строку 0. Link to comment
123456zuk Posted July 26, 2012 Share Posted July 26, 2012 Я думаю имеет смысл добавить в твой конфиг строку 0. Спасибо чувак помогло у меня пустило на сервер но вот дело у карты свои файлы .img они не используют gta3.img там какой-то файл заставлял карту по нужным работать а я тут захожу и стандартная карта Link to comment
123456zuk Posted July 26, 2012 Share Posted July 26, 2012 Короче...Для начала попробуй со стандартным .exe от GTA SA, а не от того мода с картой, просто поиграть в "сингл" (то есть в обычный са, без мультиплеера). Если тебя не крашнет, то есть смысл рыть дальше, если крашнет - то мы в замкнутом цикле оказываемся: мта нужен оригинальный эксешник, иначе краш; моду нужен свой эксешник, иначе краш... Проверь, чтоли. С оригинальным работает Link to comment
Astari Posted July 27, 2012 Share Posted July 27, 2012 Спасибо, чет я зачастил сюда писать вот еще вопрос, решил сделать так чтобы через определенное время игрокам с нужной акк датой деньги давали function price(thePlayer) local account = getPlayerAccount(thePlayer) local data = getAccountData(account, "myaccountData") if (data) then givePlayerMoney(thePlayer, 468) else end end setTimer(price, 3600000, 0) уже все перепробовал, все равно ему что-то не нравится Link to comment
Kernell Posted July 27, 2012 Share Posted July 27, 2012 Astari, где логика в коде? function price(thePlayer) -- с чего вы взяли что setTimer передаёт в аргумент игрока? Опять же где логика - какого он бы игрока передавал?? игроков нужно в цикле перебирать. function price( --[[Сюда идут аргументы переданные из setTimer... ]] ) for i, pPlayer in ipairs( getElementsByType( "player" ) ) do local pAccount = getPlayerAccount( pPlayer ) local Data = pAccount and getAccountData( pAccount, "myaccountData" ) if Data then givePlayerMoney( pPlayer, 468 ) else end end end setTimer(price, 3600000, 0, --[[....т.е. отсюда]] ) 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