2016-07-31 2 views
1

그래서 비밀 코드를 입력 할 수있는 프리미엄 코드 시스템에서 작업하고 있으며 코드가 유효하면 사용한 코드를 기반으로 보상을 제공합니다. 아주 간단한 아이디어는, 그러나, 나는 그것에 약간 말썽이있다.이미 저장된 테이블에 새 요소 추가

나는 이런 식으로 뭔가 보이는 모든 코드가있는 테이블이 : 게임을 처음 실행하는 경우

GameState.PremiumCodesTable = GameState.PremiumCodesTable or {{code = "X45", value = 30}, {code = "MM4", value = 45}, {code = "B47", value = 100}} 

기본적으로을의 GameState.PremiumCodesTablenil 될 것입니다 그것은 GameState 테이블에 새로운 요소를 작성합니다 {{code = "X45", value = 30}, {code = "MM4", value = 45}, {code = "B47", value = 100}}

이제 사용자가 유효한 코드를 사용하면 이 테이블에서을 삭제합니다. 결국 사용자는 모든 코드를 찾아 사용하며 GameState.PremiumCodesTable 테이블은 비어 있습니다.

이제 게임을 업데이트하고 찾을 새로운 코드를 가져오고 싶습니다. 그러나 GameState.PremiumCodesTable은 이미 비어 있고 으로 저장되어 있기 때문에 항상 비어 있습니다.

어떻게 나중에 코드를 추가 할 수 있습니까?

나는 해결책이 있지만, 나는 그것을 좋아하지 않는다. 그래서 나는 여기서 묻는다. 내 솔루션과 같이 코드에 의해 코드를 추가하는 것입니다

GameState.PremiumCodesTable[1] = GameState.PremiumCodesTable[1] or {code = "X45", value = 30} 
GameState.PremiumCodesTable[2] = GameState.PremiumCodesTable[2] or {code = "MM4", value = 45} 
GameState.PremiumCodesTable[3] = GameState.PremiumCodesTable[3] or {code = "B47", value = 100} 

등등 ... 그러나,이 너무 많은 공간을 차지을, 그래서 나는 것과 같은 단지 하나의 큰 테이블에 가지고 싶습니다 위.

+0

'table.remove' 및'table.insert'. 간단한'table [code] = something'으로 삽입하고,'table [code] = '와 함께 제거하고'{x45 = 30}'또는'{x45 = {type = 1, count = 2, nil' (또는 사용 된 코드를 표시하는'false') 그리고'if table [code] then ... '과 같은 체크 – FareakyGnome

답변

1

저장 파일을 사용하여 사용 된 코드 문자열 배열을 저장 한 다음 PremiumCodesTable을 초기화하여 모든 코드에 대한 전체 데이터를 포함하십시오. 그런 식으로 저장 파일은 최소한의 정보량을 유지하므로 원하는 경우 저장 파일을 최대한 자유롭게 처리 할 수 ​​있습니다. (코드 데이터를 비 배열 테이블에 저장하여 액세스하기 쉽게해야 할 수도 있습니다.)

GameState.usedCodes = GameState.usedCodes or {} 

local PremiumCodesTable = { 
    {code = "X45", value = 30}, 
    {code = "MM4", value = 45}, 
    {code = "B47", value = 100} 
} 
+0

이것은 실제로 좋은 생각입니다! 고마워요! – FICHEKK

관련 문제