Jump to content

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


Recommended Posts

Этим вечером обнаружил, что гнущиеся под ветром деревья можно наклонять как твёрдые обекты (и нормальные наклоняющиеся деревья). Достаточно в карте указать . Лишь бы масштаб отличался от 1! Подходит и для колёс.

Извините, если баян или самоочевидность для нечайников.

Link to comment

Что-то не перебрасывает, уже столько перепробовал

addEventHandler ('onPlayerJoin', root, 
    function () 
        redirectPlayer (source, 'здесь ip', порт) 
    end 
) 

function redirect() 
     redirectPlayer(source, "ip", tonumber(port)) 
end 
addEventHandler("onPlayerJoin", root, redirect) 

local ip = "ip" 
local port = "port" 
local root = getRootElement() 
  
addEventHandler("onPlayerJoin", root, 
function() 
     redirectPlayer(source, ip, port) 
end) 

Link to comment

Ребят, проблема с accountdata. Есть data = "text". Сохраняю при отключении setAccountData(account, "info", tostring(data)). Проверил в интернал все сохранилось. Захожу на сервер и загружаю данные setElementData(source, "info", tostring(getAccountData(account, "info"))) и выдает данное false - почему? Как исправить?

Link to comment
а account у тебя что? (1 аргумент getAccountData)?

Что debugscript пишет?

И если можно, более полный код получения даты в студию...

addEventHandler("onPlayerLogin", root, 
  function(thePreviousAccount, theCurrentAccount, autoLogin) 
   
            local account = getAccount(getPlayerName(source)) 
            local text = tostring(getAccountData(account, "info")) 
            outputChatBox("Текст: "..text, root) 
            setElementData(source, "info", text) 
            setElementData(source, "info2", tonumber(getAccountData(account, "info2")) or 0) 
            setElementData(source, "info3", tonumber(getAccountData(account, "info3")) or 0) 
  end 
) 

в интернал info существует в виде текста "text". а в этом коде info просто не грузится. вместо него пишет false. замечу что числовые данные info2 и info3 берутся нормально.

Edited by Guest
Link to comment

Поподробнее почитай про функцию getAccount. Внимательно посмотри ее аргументы...

Я думаю, ты поймешь в чем проблема, если внимательно прочитаешь.

P.S. Еще советую глянуть getPlayerAccount

Link to comment
Поподробнее почитай про функцию getAccount. Внимательно посмотри ее аргументы...

Я думаю, ты поймешь в чем проблема, если внимательно прочитаешь.

P.S. Еще советую глянуть getPlayerAccount

с getAccount теперь понятно. и я теперь вообще не понимаю как тогда брать тостринг info?

getPlayerAccount так же не действует

Link to comment
Что пишет дебаг?

Код давай чтоль...

дебаг молчит. сделал тестовую команду и я просто не втыкаю почему мне info1 выдает false, а info2 выдает точное значение? может это tostring как то влияет?

addCommandHandler("test", function(source, command) 
        local account = getPlayerAccount( source ) 
        local text = tostring(getAccountData(account, "info1")) 
        local score = tonumber(getAccountData(account, "info2")) 
        outputChatBox ( "info1 " ..text, source, 255, 255, 0 ) 
        outputChatBox ( "info2 " ..score, source, 255, 255, 0 ) 
end ) 

Link to comment
Тоесть 1 выдает а второе нет?

Значит устанавливаешь неправильно второе...

output в чат такой:

info1 false 
info2 755 

а должно быть

info1 testText 
info2 755 

т.к. в интернал

info1 = "testText" 
info2 = 755 

Link to comment

Silum,

Создаешь закрытый изначально vehicle. https://wiki.multitheftauto.com/wiki/SetVehicleLocked

При начале входа в vehicle https://wiki.multitheftauto.com/wiki/OnVehicleStartEnter

Получаешь команду игрока: https://wiki.multitheftauto.com/wiki/GetPlayerTeam

Если имя команды https://wiki.multitheftauto.com/wiki/GetTeamName совпадает с заданным, то открыть vehicle.

____________________________________________________________

H1TM4N,

Выложи сюда твой текущий код установки значений, а так же их получения...

Если нет желания выкладывать, то могу посоветовать вот что:

1) Еще раз почитай https://wiki.multitheftauto.com/wiki/GetAccountData, и посмотри примеры... Внимательно посмотри и сравни алгоритм в примере, с твоим собственным.

Далее, там справа ты можешь видеть: Note: It is strongly recommended that you use the standard module.key naming for your keys, as shown in the example below. This prevents collisions between different scripts.

Советую последовать этой заметке...

Link to comment
Silum,

H1TM4N,

Выложи сюда твой текущий код установки значений, а так же их получения...

Если нет желания выкладывать, то могу посоветовать вот что:

1) Еще раз почитай https://wiki.multitheftauto.com/wiki/GetAccountData, и посмотри примеры... Внимательно посмотри и сравни алгоритм в примере, с твоим собственным.

Далее, там справа ты можешь видеть: Note: It is strongly recommended that you use the standard module.key naming for your keys, as shown in the example below. This prevents collisions between different scripts.

Советую последовать этой заметке...

ага. немного разобрался. у меня такие пироги, эти info1 и info2 именять нужно на выключеном/оффлайн аккаунте, как это сделать? Если не ошибаюсь взять аккаунт по нику, но кажется нет такой функции?

Link to comment
Silum,

H1TM4N,

Выложи сюда твой текущий код установки значений, а так же их получения...

Если нет желания выкладывать, то могу посоветовать вот что:

1) Еще раз почитай https://wiki.multitheftauto.com/wiki/GetAccountData, и посмотри примеры... Внимательно посмотри и сравни алгоритм в примере, с твоим собственным.

Далее, там справа ты можешь видеть: Note: It is strongly recommended that you use the standard module.key naming for your keys, as shown in the example below. This prevents collisions between different scripts.

Советую последовать этой заметке...

ага. немного разобрался. у меня такие пироги, эти info1 и info2 именять нужно на выключеном/оффлайн аккаунте, как это сделать? Если не ошибаюсь взять аккаунт по нику, но кажется нет такой функции?

Можно получить аккаунт оффлайн игрока через функцию: https://wiki.multitheftauto.com/wiki/GetAccount

К примеру, eсли ты делаешь что-то типо системы домов, то тебе надо просто сохранять в элементе дома имя аккаунта владельца, а если другой человек собирается перекупить дом, то получаешь имя аккаунта владельца дома, и вставляешь его как первый аргумент функции https://wiki.multitheftauto.com/wiki/GetAccount, так как второй аргумент этой функции опциональный (не требуемый), то ты получаешь объект аккаунта, только с помощью accountName

Link to comment

так и быть, раскрою карты) хотел замутить авторизацию по серийному номеру. на сколько я знаю в дб на аккаунт привязывается какойто серийник, но я не знаю как его брать и изменять. хотел просто добавить номер серийника в данные аккаунта. добавил. а вот при авторизации у меня проблема. я не понимаю как вынуть серийник из данных аккаунта, который еще не залогинился. постоянно выдает значение false. вот как это выглядит в моем скрипте:

function onLogin ( pass ) 
    local account = getAccount ( getPlayerName(source) ) 
    local serial = getPlayerSerial( source ) 
    local accountSerial =  tostring(getAccountData(account, "i.serial")) 
    if ( account ~= false ) then 
        if accountSerial == serial then 
            if account then 
                logIn ( source, account, pass ) 
            else 
                outputChatBox ( "error 3", source, 255, 255, 0 ) 
            end 
        else 
            outputChatBox ( "error 2", source, 255, 255, 0 ) 
        end 
    else 
        outputChatBox ( "error 1", source, 255, 255, 0 ) 
    end 
end 

Link to comment
А он у тебя устанавливается то как? И в каком эвенте?

это по типу команды register serialid username password

function onRegister ( serial, user, pass ) 
    local account = getAccount ( user ) 
    if ( account ~= false ) then 
        outputChatBox ( "error 1", source, 255, 255, 0 ) 
    else 
        account = addAccount ( user, pass ) 
        if account then 
            setAccountData(account, "i.serial", tostring(serial)) 
        else 
            outputChatBox ( "error 2", source, 255, 255, 0 ) 
        end 
    end 
end 

И эта функция когда вызывается?

это своеобразная система авторизации. так же по типу команды login pass, только с указанием серийника который и не берется из аккаунта. вместо него выдает false значение.

Link to comment

вобщем я сразу не обратил внимания на одну мелочь. onRegister в интернал создает информацию "i.serial" на аккаунт с id 3, но аккаунтов там всего 2 ! первый это consol, а второй это мой. третьего просто не существует, а во вкладке userdata существует информация на аккаунт id 3. получается я не правильно задавал значение изначально, пожалуйста поправте меня.

Link to comment

Тьфу ты... В прошлый раз плохо твой код смотрел...

Имя игрока не равно имени аккаунта!

local account = getAccount ( getPlayerName(source) ) 

Так нельзя делать!

Если ты хочешь сделать теневую регистрацию, то тебе вобще не надо создавать никаких аккаунтов!

Просто создаешь базу данных с информацией об игроке, уникальным ключем в которой является Serial

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...