Jump to content

Вопросы и ответы по MTA.


Recommended Posts

Может подсказать кто-нибудь?

Реально-ли реализовать вывод в dx форму всех take/give PlayerMoney?

Именно без всякого экспорта!.

По-моему, так:

  
_givePlayerMoney = givePlayerMoney 
function givePlayerMoney(player, money) 
    if(player) then 
        _givePlayerMoney(player, money) 
        triggerClientEvent(...) -- Вызываем событие, которое принимает параметры с деньгами и игроками и рисует их 
        return true 
    end 
    return false 
end 
  

Аналогично и с takePlayerMoney.

Link to comment

Все таки лучше экспорт.. а я же надеялся что можно простой ресурс создать и оно автоматически будет выводить данные действия.. спасибо за советы и примеры:)

Link to comment
Все таки лучше экспорт.. а я же надеялся что можно простой ресурс создать и оно автоматически будет выводить данные действия.. спасибо за советы и примеры:)

По-моему, лучше просто отслеживать изменения количества денег у игрока:

local playerMoney = { } 
local function update ( ) 
    for _, player in ipairs ( getElementsByType ( "player" ) ) do 
        local money = getPlayerMoney ( player ) 
        if money ~= playerMoney [ player ] then 
            if money > playerMoney [ player ] then 
                -- Вероятно, была вызвана givePlayerMoney 
            else 
                -- Вероятно, была вызвана takePlayerMoney 
            end 
            playerMoney [ player ] = money 
        end 
    end 
end 
  
addEventHandler ( "onResourceStart", resourceRoot, 
    function ( ) 
        for _, player in ipairs ( getElementsByType ( "player" ) ) do 
            playerMoney [ player ] = getPlayerMoney ( player ) 
        end 
         
        setTimer ( update, 1000, 0 ) 
    end 
, false ) 
  
addEventHandler ( "onPlayerJoin", root, 
    function ( ) 
        playerMoney [ source ] = getPlayerMoney ( source ) 
    end 
) 

(Серверная сторона)

Link to comment
Все таки лучше экспорт.. а я же надеялся что можно простой ресурс создать и оно автоматически будет выводить данные действия.. спасибо за советы и примеры:)

По-моему, лучше просто отслеживать изменения количества денег у игрока:

local playerMoney = { } 
local function update ( ) 
    for _, player in ipairs ( getElementsByType ( "player" ) ) do 
        local money = getPlayerMoney ( player ) 
        if money ~= playerMoney [ player ] then 
            if money > playerMoney [ player ] then 
                -- Вероятно, была вызвана givePlayerMoney 
            else 
                -- Вероятно, была вызвана takePlayerMoney 
            end 
            playerMoney [ player ] = money 
        end 
    end 
end 
  
addEventHandler ( "onResourceStart", resourceRoot, 
    function ( ) 
        for _, player in ipairs ( getElementsByType ( "player" ) ) do 
            playerMoney [ player ] = getPlayerMoney ( player ) 
        end 
         
        setTimer ( update, 1000, 0 ) 
    end 
, false ) 
  
addEventHandler ( "onPlayerJoin", root, 
    function ( ) 
        playerMoney [ source ] = getPlayerMoney ( source ) 
    end 
) 

(Серверная сторона)

Воу.. Благодарю:)))

Link to comment

Вопрос по базам.

Существенна ли разница, если вместо уникального ID использовать ник игрока? Например, использование ника как ключа убирает такую проблему, как битые ID, т.е. ID, который были удалены и больше не используются auto_increment'ом.

Наглядный пример:

1     Петя 
2     Ваня 

Если удалить Петю, то следующий ид будет 3:

2     Ваня 
3     Дима 

Слышал, что выборка по числу является самым быстрым способом. Мне интересно, сильно ли будет отличаться скорость выборки?

Link to comment
Помогите создать HUD или научите мне такой надо и скажите возможно ли такой создать? 8Q0NvA3hP2.jpg

Возможно.

Нужно не только знание в Lua, но ещё и среднее владение PS.

А вообще, уродливый HUD.

Link to comment

Здравствуйте!

Как удалить аккаунт дату?

Пробовал ставить значение nil все ровно дата остаеться...

Как тогда сделать проверку на аккаунтдату со значением nil?

Вот соственно сам код:

function startJob() 
local acc = getPlayerAccount ( source ) 
 if not (getAccountData(acc, 'jobs')) then 
    setAccountData(acc, 'jobs', pizza) 
    local skin = tostring(getElementModel(source)) 
    setAccountData(acc,'oldSkin',skin) 
    setElementModel ( source, 155 ) 
 else 
    outputChatBox('Вы уже имеете работу!') 
 end 
  
end 
addEvent('startpizza', true) 
addEventHandler('startpizza', root, startJob) 
  
function quitJob() 
local acc = getPlayerAccount ( source ) 
    if (getAccountData(acc, 'jobs')) then 
        local skin = getAccountData(acc,'oldSkin') 
        setElementModel(source, skin) 
        setAccountData(acc,'jobs', nil) 
    end 
end 
addEvent('removejob',true) 
addEventHandler('removejob', root, quitJob) 
  

GUI окно добавлять не стал.

Link to comment
hkqSe.png

Только я вижу это место так?

Нет, все. Просто в МТА конечная карта ГТА СА, которая после всех миссий. А в последней миссии как раз эту стену ты и разбиваешь на сват авто (которе еще водой поливает).

Чтобы закрыть дырку, используй объект - 3059.

А вот, чтобы не развалить его, нужно что-то придумать. Как вариант - убрать коллизию и поставить за стену не разрушаемый объект.

Link to comment
Нет, все. Просто в МТА конечная карта ГТА СА, которая после всех миссий. А в последней миссии как раз эту стену ты и разбиваешь на сват авто (которе еще водой

Если следовать вашей логике - тогда где интерьер за этой стеной?

В МТА вырезан SCM, поэтому там пусто.

Кстати чтобы объект не разрушался, достаточно setObjectBreakable

Link to comment

Захотелось достать этот объект, который должен стоять внутри этой дырки. Поиск не дал результатов. Возможно ли в одиночной игре узнать ид объекта? Или какие-то другие способы, чтобы найти этот самый объект.

Link to comment
Хмм... Найти недостающий объект я думаю не помеха, а что-нибудь после этого разробы изменят?

а оно надо? если даже найдешь этот объект сам его не в силах поставить что ли? да и к тому же они 100% знают об этом (как и об этом)еще со времен мта рейс

Link to comment

тебе же ответили как устранить так называемый 'баг'

Чтобы закрыть дырку, используй объект - 3059.
Кстати чтобы объект не разрушался, достаточно setObjectBreakable

тебе даже ид объекта подсказали, да и не только, ещё и функцию как сделать этот объект неразрушаемым. По-моему это даже больше чем надо.

Ну ладно если тебе это так сложно, то я сделаю это за тебя.

fix1 = createObject ( 3059, 2521.9987792969, -1272.9509277344, 35.605663299561, 0, 0, 0) -- фиксим баг здания в восточном Лос Сантосе 
fix2 = createObject ( 3083, 2167.8210449219, -1518.1896972656, 20.224843978882, 0, 0, 359.91595458984) -- фиксим баг биллборда в Идлвуде 
setObjectBreakable(fix1, false) -- делаем стену здания в восточном Лос Сантосе неразрушаемой 

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