Jump to content

Общий мини "HELP ME" топик по скриптингу


Recommended Posts

Похоже у тебя 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
Похоже у тебя 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.

Link to comment
Хотя погоди пока, не то что то...

не не, все работает если не использовать плохие символы [ и какуюто из круглых скобок ( или ). А так спасибо тебе, 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

Конечно, это очень просто:

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 by Guest
Link to comment
Пардон, я совсем забыл про это :) Спасибо _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

Блин да накосячил я там сверху) Хотел просто пример дать для Astari, так сказать подтолкнуть чтоб дальше сам сделал как хотел, но "не получилось, не фартануло" :D А вообще когда-то давно сделал у себя на сервере это ограничение, но забыл в точности в примере указать. Вот если что, правда с серва выдрано:

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

Люди я сделал всё по вашим инструкциям все настойки сменил и и тог мне пишет :

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

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

Так я не могу оффнуть мне нужна карта эта если я галку убераю то карты нету

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

Короче...

Для начала попробуй со стандартным .exe от GTA SA, а не от того мода с картой, просто поиграть в "сингл" (то есть в обычный са, без мультиплеера). Если тебя не крашнет, то есть смысл рыть дальше, если крашнет - то мы в замкнутом цикле оказываемся: мта нужен оригинальный эксешник, иначе краш; моду нужен свой эксешник, иначе краш...

Проверь, чтоли.

Link to comment
Я думаю имеет смысл добавить в твой конфиг строку 0.

Спасибо чувак помогло у меня пустило на сервер но вот дело у карты свои файлы .img они не используют gta3.img там какой-то файл заставлял карту по нужным работать а я тут захожу и стандартная карта

Link to comment
Короче...

Для начала попробуй со стандартным .exe от GTA SA, а не от того мода с картой, просто поиграть в "сингл" (то есть в обычный са, без мультиплеера). Если тебя не крашнет, то есть смысл рыть дальше, если крашнет - то мы в замкнутом цикле оказываемся: мта нужен оригинальный эксешник, иначе краш; моду нужен свой эксешник, иначе краш...

Проверь, чтоли.

С оригинальным работает

Link to comment

Спасибо, чет я зачастил сюда писать :D

вот еще вопрос, решил сделать так чтобы через определенное время игрокам с нужной акк датой деньги давали

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...