Jump to content

проверка скилла


Recommended Posts

вообщем есть проблема

функция getSkillFunc

  
function getSkillFunc(player,Levelids) 
if (Levelids == tonumber) then 
local skillsID = tonumber 
triggerClientEvent(source, "selectSkill", source,skillsID) 
return true 
else 
return false 
end 
end  
  

клиент

  
addEvent("selectSkill",true) 
addEventHandler( "selectSkill", getRootElement(), 
    function(skillsID) 
    if (tonumber(skillsID)) then 
     guiGridListSetItemText(GUIEditor_Grid[211],tonumber(skillsID),5,"purchased",false,false) 
    guiGridListSetItemColor (GUIEditor_Grid[211],tonumber(skillsID),5,0,255,0) 
    outputChatBox("текст изменился на "..tonumber(skillsID)) 
    end 
    end 
) 
  

вызывается так

  
getSkillFunc(1,source) 
  

функция skillButtonFunc

  
function skillButtonFunc (Levelids, Levelnames,Levelmoneys,LevelLevels ,LevelStatus) 
outputChatBox("skill buy") 
    if (Levelids == "0") then 
    outputChatBox("0") 
    getThisElementData(4,source) 
    takeMoneyFunc(3250,4,source) 
    getSkillFunc(0,source) 
    setPedStat(source, 71, 99) 
    elseif (Levelids == "1") then 
    getThisElementData(1,source) 
    takeMoneyFunc(5500,1,source) 
    getSkillFunc(1,source) 
    setPedStat(source, 71, 299) 
    end 
end 
addEvent ("PlayerSkillBuy", true) 
addEventHandler ("PlayerSkillBuy", getRootElement(),skillButtonFunc) 
  

не работает функция вообщем суть такова

когда игрок покупает скилл он должен проверять Levelids и тригером менять текст в гридлисте.

но я не знаю как перенести аргумент из функции skillButtonFunc.

помогите пожалуйста.

Link to comment
  • 2 weeks later...
function getSkillFunc(player,Levelids) 

вызывается так

getSkillFunc(1,source) 

Может быть нужно аргументы поменять на getSkillFunc(source,1), ведь у тебя в функции сначала идет игрок, а потом уровень чего-то там.

И вот тут заменить source на player, ведь ты не событие создаешь привязанное к игроку, а просто вызываешь функцию

function getSkillFunc(player,Levelids) 
.... 
triggerClientEvent(player, "selectSkill", player, skillsID) 
  

и ещё у тебя вот тут такие магические строчки

if (Levelids == tonumber) then 
local skillsID = tonumber 

наверное что-то не дописал ;)

Это только поверхностный взгляд на код, в сути не разбирался

Link to comment

lex128 я уже исправил :)

но не до конца вообще такая проблемка ведь set/get elementdata к примеру "SkillBought" и к примеру число 1

но как сохранять множество чисел в одной дате???

не сохранять же к примеру 30 разных дат ....

помогите пожалуйста с этим недорозумением.

сама функция получает уровень,деньги,ID скилла.

  
function getSkillFunc(player,data,cashs,Levelids)    
     if (getElementData(player,"Level") >= tonumber(data)) then 
     outputChatBox("уровень подходит") 
     if (getPlayerMoney (player) >= tonumber(cashs)) then 
     takePlayerMoney (player,cashs) 
     outputChatBox("деньги подходят") 
     if (Levelids) then 
     outputChatBox("отправлен к клиенту") 
        triggerClientEvent(player, "selectSkill", getRootElement(), Levelids) 
        return true 
    else 
        return false     
     end 
    end 
  end 
end 
  

используется так

  
getSkillFunc(source,0,1,0) 
  

эвент в клиенте:

  
addEvent("selectSkill",true) 
addEventHandler( "selectSkill", getLocalPlayer(), 
    function(skillsIDIn) 
    skillsID = skillsIDIn 
    if (tonumber(skillsID)) then 
    guiGridListSetItemText(MainGrid,tonumber(skillsID),5,"purchased",false,false) 
    guiGridListSetItemColor (MainGrid,tonumber(skillsID),5,0,255,0) 
    local datasSk = setElementData(getLocalPlayer(),"SkillBuy",skillsID) 
    outputChatBox("set data skill "..tostring(skillsID).." , "..tostring(datasSk)) 
    outputChatBox("text change "..tonumber(skillsID)) 
    end 
    end 
) 
  

используем тут

  
bindKey ("F5", "down", 
    function() 
        if (guiGetVisible(MainWindowLevel) == false) then 
            guiSetVisible(MainWindowLevel,true) 
             showCursor(true) 
               if (skillsID) then 
                  if (getElementData(getLocalPlayer(),"SkillBuy") == tonumber(skillsID)) then -- вообщем нужно получить как нибудь из одной даты много чисел если соответствуют к примеру если есть число 1 и 2 то сетим текст в строку 1 и 2 ))) 
                   outputChatBox("get element data") 
                    local textAddSkill = guiGridListSetItemText(MainGrid,tonumber(skillsID),5,"purchased",false,false) 
                    local textAddSkill2 = guiGridListSetItemColor (MainGrid,tonumber(skillsID),5,0,255,0) 
                    outputChatBox("text add "..tostring(textAddSkill).." , "..tostring(textAddSkill2).." , "..tostring(getElementData(getLocalPlayer(),"SkillBuy")).."") 
                 end 
         end 
        elseif (guiGetVisible(MainWindowLevel) == true) then 
            guiSetVisible(MainWindowLevel,false) 
            showCursor(false) 
        end 
    end 
) 
  

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