Commit 007af97ec4c962bca4887c5f3eec00b54853b595
1 parent
9bf57456
item_random 结构更改
Showing
3 changed files
with
72 additions
and
66 deletions
Show diff stats
src/actions/AdvAction.lua
@@ -562,33 +562,33 @@ function _M.endBattleRpc(agent, data) | @@ -562,33 +562,33 @@ function _M.endBattleRpc(agent, data) | ||
562 | return true | 562 | return true |
563 | end | 563 | end |
564 | 564 | ||
565 | -function _M.workshopRpc(agent, data) | ||
566 | - local role = agent.role | ||
567 | - local msg = MsgPack.unpack(data) | ||
568 | - | ||
569 | - local id = msg.id | ||
570 | - local count = msg.count or 1 | ||
571 | - local mergeData = csvdb["adv_mergeCsv"][id] | ||
572 | - if not mergeData then return 1 end | ||
573 | - | ||
574 | - if not role:isFuncOpen(FuncOpenType.AdvWS) or role:getFuncLv(FuncOpenType.AdvWS) < mergeData.unlock then return 2 end | ||
575 | - | ||
576 | - local advWs = role.dailyData:getProperty("advWs") | ||
577 | - if math.illegalNum(count, 1, mergeData.limit - (advWs[id] or 0)) then return 3 end | ||
578 | - | ||
579 | - local cost = mergeData.formula:toNumMap() | ||
580 | - for k, v in pairs(cost) do | ||
581 | - cost[k] = v * count | ||
582 | - end | ||
583 | - if not role:checkItemEnough(cost) then return 4 end | ||
584 | - | ||
585 | - role:costItems(cost) | ||
586 | - advWs[id] = (advWs[id] or 0) + count | ||
587 | - role.dailyData:updateProperty({field = "advWs", value = advWs}) | ||
588 | - local reward = role:award({[id] = count}) | ||
589 | - SendPacket(actionCodes.Adv_workshopRpc, MsgPack.pack({reward = reward})) | ||
590 | - return true | ||
591 | -end | 565 | +-- function _M.workshopRpc(agent, data) |
566 | +-- local role = agent.role | ||
567 | +-- local msg = MsgPack.unpack(data) | ||
568 | + | ||
569 | +-- local id = msg.id | ||
570 | +-- local count = msg.count or 1 | ||
571 | +-- local mergeData = csvdb["adv_mergeCsv"][id] | ||
572 | +-- if not mergeData then return 1 end | ||
573 | + | ||
574 | +-- if not role:isFuncOpen(FuncOpenType.AdvWS) or role:getFuncLv(FuncOpenType.AdvWS) < mergeData.unlock then return 2 end | ||
575 | + | ||
576 | +-- local advWs = role.dailyData:getProperty("advWs") | ||
577 | +-- if math.illegalNum(count, 1, mergeData.limit - (advWs[id] or 0)) then return 3 end | ||
578 | + | ||
579 | +-- local cost = mergeData.formula:toNumMap() | ||
580 | +-- for k, v in pairs(cost) do | ||
581 | +-- cost[k] = v * count | ||
582 | +-- end | ||
583 | +-- if not role:checkItemEnough(cost) then return 4 end | ||
584 | + | ||
585 | +-- role:costItems(cost) | ||
586 | +-- advWs[id] = (advWs[id] or 0) + count | ||
587 | +-- role.dailyData:updateProperty({field = "advWs", value = advWs}) | ||
588 | +-- local reward = role:award({[id] = count}) | ||
589 | +-- SendPacket(actionCodes.Adv_workshopRpc, MsgPack.pack({reward = reward})) | ||
590 | +-- return true | ||
591 | +-- end | ||
592 | 592 | ||
593 | function _M.wheelSurfRpc(agent, data) | 593 | function _M.wheelSurfRpc(agent, data) |
594 | local role = agent.role | 594 | local role = agent.role |
src/actions/HeroAction.lua
@@ -594,7 +594,7 @@ function _M.createHeroRandomRpc(agent, data) | @@ -594,7 +594,7 @@ function _M.createHeroRandomRpc(agent, data) | ||
594 | local randomData = csvdb["item_randomCsv"][tonumber(itemData.use_effect)] | 594 | local randomData = csvdb["item_randomCsv"][tonumber(itemData.use_effect)] |
595 | if not randomData then return end | 595 | if not randomData then return end |
596 | 596 | ||
597 | - local temp = randomData.random_gift:randWeight(true) | 597 | + local temp = randomData.gift1:randWeight(true) |
598 | if not temp or not next(temp) then return end | 598 | if not temp or not next(temp) then return end |
599 | local reward = {} | 599 | local reward = {} |
600 | if role:isHaveHero(temp[1]) then | 600 | if role:isHaveHero(temp[1]) then |
src/actions/RoleAction.lua
@@ -410,24 +410,27 @@ function _M.openItemRpc(agent, data) | @@ -410,24 +410,27 @@ function _M.openItemRpc(agent, data) | ||
410 | local randomData = csvdb["item_randomCsv"][tonumber(itemData.use_effect)] | 410 | local randomData = csvdb["item_randomCsv"][tonumber(itemData.use_effect)] |
411 | if not randomData or randomData.openTime > 0 then return end | 411 | if not randomData or randomData.openTime > 0 then return end |
412 | 412 | ||
413 | - local reward = randomData.gift:toNumMap() | ||
414 | - for _id, _count in pairs(reward) do | ||
415 | - reward[_id] = _count * count | ||
416 | - end | ||
417 | - if randomData.random_num > 0 and randomData.random_gift ~= "" then | ||
418 | - for i = 1, count do | ||
419 | - local pool = {} | ||
420 | - for _, temp in ipairs(randomData.random_gift:toArray()) do | ||
421 | - table.insert(pool, temp:toArray(true, "=")) | ||
422 | - end | ||
423 | - local needCount = math.min(#pool, randomData.random_num) | ||
424 | - for j = 1, needCount do | ||
425 | - local idx = math.randWeight(pool, 3) | ||
426 | - reward[pool[idx][1]] = (reward[pool[idx][1]] or 0) + pool[idx][2] | ||
427 | - table.remove(pool, idx) | 413 | + local reward = {} |
414 | + for _i = 1, count do | ||
415 | + for i = 1, 10 do | ||
416 | + local num = randomData["num" .. i] | ||
417 | + local gift = randomData["gift" .. i] | ||
418 | + if num and gift and num > 0 and gift ~= "" then | ||
419 | + local pool = {} | ||
420 | + for _, temp in ipairs(gift:toArray()) do | ||
421 | + table.insert(pool, temp:toArray(true, "=")) | ||
422 | + end | ||
423 | + local needCount = math.min(#pool, num) | ||
424 | + for j = 1, needCount do | ||
425 | + local idx = math.randWeight(pool, 3) | ||
426 | + reward[pool[idx][1]] = (reward[pool[idx][1]] or 0) + pool[idx][2] | ||
427 | + table.remove(pool, idx) | ||
428 | + end | ||
428 | end | 429 | end |
429 | end | 430 | end |
430 | end | 431 | end |
432 | + reward[0] = nil | ||
433 | + | ||
431 | role:costItems({[itemId] = count}) | 434 | role:costItems({[itemId] = count}) |
432 | reward = role:award(reward) | 435 | reward = role:award(reward) |
433 | 436 | ||
@@ -479,35 +482,38 @@ function _M.openTimeBoxRpc(agent, data) | @@ -479,35 +482,38 @@ function _M.openTimeBoxRpc(agent, data) | ||
479 | local randomData = csvdb["item_randomCsv"][itemData.id] | 482 | local randomData = csvdb["item_randomCsv"][itemData.id] |
480 | reward = randomData.gift:toNumMap() -- 固定奖励 | 483 | reward = randomData.gift:toNumMap() -- 固定奖励 |
481 | -- 随机奖励 | 484 | -- 随机奖励 |
482 | - local randomGift = randomData.random_gift | ||
483 | - local randomNum = randomData.random_num | ||
484 | local gemId = boxL[slot].gem | 485 | local gemId = boxL[slot].gem |
485 | - | ||
486 | - if randomNum > 0 and randomGift and randomGift ~= "" then | ||
487 | - local selectGift = {} | ||
488 | - local pool = {} | ||
489 | - for _, temp in ipairs(randomGift:toArray()) do | ||
490 | - local set = temp:toArray(true, "=") | ||
491 | - if gemId == set[1] then | ||
492 | - table.insert(selectGift, set) | ||
493 | - else | ||
494 | - table.insert(pool, set) | 486 | + local reward = {} |
487 | + for i = 1, 10 do | ||
488 | + local num = randomData["num" .. i] | ||
489 | + local gift = randomData["gift" .. i] | ||
490 | + if num and gift and num > 0 and gift ~= "" then | ||
491 | + local pool = {} | ||
492 | + local selectGift = {} | ||
493 | + for _, temp in ipairs(gift:toArray()) do | ||
494 | + local set = temp:toArray(true, "=") | ||
495 | + if gemId == set[1] then | ||
496 | + table.insert(selectGift, set) | ||
497 | + else | ||
498 | + table.insert(pool, set) | ||
499 | + end | ||
495 | end | 500 | end |
496 | - end | ||
497 | 501 | ||
498 | - if gemId ~= 0 and next(selectGift) then | ||
499 | - randomNum = randomNum - 1 | ||
500 | - local idx = math.randWeight(selectGift, 3) | ||
501 | - reward[selectGift[idx][1]] = (reward[selectGift[idx][1]] or 0) + selectGift[idx][2] | ||
502 | - end | 502 | + if gemId ~= 0 and next(selectGift) then |
503 | + num = num - 1 | ||
504 | + local idx = math.randWeight(selectGift, 3) | ||
505 | + reward[selectGift[idx][1]] = (reward[selectGift[idx][1]] or 0) + selectGift[idx][2] | ||
506 | + end | ||
503 | 507 | ||
504 | - local needCount = math.min(#pool, randomNum) | ||
505 | - for j = 1, needCount do | ||
506 | - local idx = math.randWeight(pool, 3) | ||
507 | - reward[pool[idx][1]] = (reward[pool[idx][1]] or 0) + pool[idx][2] | ||
508 | - table.remove(pool, idx) | 508 | + local needCount = math.min(#pool, num) |
509 | + for j = 1, needCount do | ||
510 | + local idx = math.randWeight(pool, 3) | ||
511 | + reward[pool[idx][1]] = (reward[pool[idx][1]] or 0) + pool[idx][2] | ||
512 | + table.remove(pool, idx) | ||
513 | + end | ||
509 | end | 514 | end |
510 | end | 515 | end |
516 | + reward[0] = nil | ||
511 | 517 | ||
512 | boxL[slot] = nil | 518 | boxL[slot] = nil |
513 | reward = role:award(reward) | 519 | reward = role:award(reward) |