Jump to content

Проверка предыдущего значения state


Recommended Posts

Здравствуйте, помогите, пожалуйста, сделать проверку предыдущего значения state при onPlayerWasted. Допустим, если предыдущие значение игрока было alive, то функция выполняется, а если другое, в моём случае training, то ничего не выполняется. Так вот как получить oldValue, мне только приходит в голову через trigger вызвать onClientElementDataChange.

function onWasted() 
   получаем oldValue 
   if oldValue == "alive" then 
               ... 
   end 
end 
addEventHandler("onPlayerWasted",getRootElement(), onWasted) 

Link to comment

Вообщем, речь идёт о DM respawn, при wasted игрок получает деньги, поинты и т.п. Игрок нажимает кнопку респавна, чтобы опять сыграть (его state уже становиться не alive или dead, а training), когда он опять проигрывает, он всё-равно получает деньги. Так вот, надо сделать проверку предыдущего значения state и если оно было alive, то игрок получает деньги, а если нет, то ничего не получает. Надеюсь, что теперь стало понятнее.

Link to comment
  
local state = "alive" 
  
function onWasted() 
   if state == "alive" then 
      state = "dead" 
      givePlayerMoney( source, 1000 ) 
   else 
      state = "training" 
      givePlayerMoney( source, 100 ) 
      outputChatBox( "Криворукий нуб", source ) 
   end 
end 
addEventHandler( "onPlayerWasted", getRootElement(), onWasted ) 
  

Link to comment

Как я и ожидал, это не работает, так как onPlayerWasted значение игрока само по себе меняется на dead, а в нашей функции он проверяет жив ли он, а не значение, которые было перед dead. Я попробовал через trigger, но не работает, ошибок не выдаёт.

client

addEvent("onClientElementDataChange", true) 
addEventHandler("onClientElementDataChange", getLocalPlayer(), 
function(dataName, oldValue) 
    if(getElementType(source) ~= "player" or dataName ~= "state")then return end 
    local oldValue = getElementData(source, dataName) 
         end 
end) 

server

function onWasted() 
   triggerClientEvent(source, "onClientElementDataChange", getRootElement(), oldValue) 
   if oldValue == "alive" then 
      givePlayerMoney( source, 1000 ) 
      outputChatBox( "Работает", source ) 
   else 
      givePlayerMoney( source, 100 ) 
      outputChatBox( "Криворукий нуб", source ) 
   end 
end 
addEventHandler( "onPlayerWasted", getRootElement(), onWasted ) 

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