0% found this document useful (0 votes)
19 views6 pages

CYBRO

The document contains a Lua script for a game helper class called GMHelper, which provides various functions to manipulate player actions, such as changing teams, adding items, teleporting, and managing game state. It includes methods for killing players, adding experience, and managing monsters and items. The script is designed to enhance gameplay by allowing administrators to perform various in-game actions programmatically.

Uploaded by

annafirmalino
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views6 pages

CYBRO

The document contains a Lua script for a game helper class called GMHelper, which provides various functions to manipulate player actions, such as changing teams, adding items, teleporting, and managing game state. It includes methods for killing players, adding experience, and managing monsters and items. The script is designed to enhance gameplay by allowing administrators to perform various in-game actions programmatically.

Uploaded by

annafirmalino
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

function GMHelper:fakeChangeTeam(player)

local teamId = player.entityPlayerMP:getTeamId() % 8 + 1


HostApi.changePlayerTeam(player.rakssid, player.userId, teamId)
end---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by 10184.
--- DateTime: 2020/6/16 14:04
---
---@type GameMsgServer
local GameMsgServer = T(Global, "GameMsgServer")

function GMHelper:addGameItem(player, itemId)


player:addItem(itemId, 64)
end

function GMHelper:teleTeamPos(player, teamId)


local config = TeamConfig:getTeam(teamId)
if config then
player:teleportPos(config.initPos)
end
end

function GMHelper:destroyBed(player, teamId)


local team = GameMatch.Teams[teamId]
if not team then
return
end
if not team.isHaveBed then
return
end
for _, bedPos in pairs(team.bedPos) do
EngineWorld:setBlock(bedPos, 0)
end
team:destroyBed(player)
player:onDestroyBed(team)
end

function GMHelper:destroyAllBed(player)
for _, team in pairs(GameMatch.Teams) do
if team.isHaveBed then
for _, bedPos in pairs(team.bedPos) do
EngineWorld:setBlock(bedPos, 0)
end
team:destroyBed(player)
player:onDestroyBed(team)
end
end
end

function GMHelper:killSelf(player)
player:subHealth(10000)
end

function GMHelper:killPlayer(player)
local players = PlayerManager:getPlayers2()
for _, _player in pairs(players) do
if _player.realLife and _player.teamId ~= player.teamId then
_player:subHealth(10000)
break
end
end
end

function GMHelper:killAllPlayer(player)
local players = PlayerManager:getPlayers2()
for _, _player in pairs(players) do
if _player.realLife and _player.teamId ~= player.teamId then
_player:subHealth(10000)
end
end
end

---@param player GamePlayer


function GMHelper:addExp(player)
GMHelper:openInput(player,
{ "输入经验值" },
function(exp)
exp = tonumber(exp)
local _, is_max = ExpConfig:getMaxExp(player.level)
if not is_max then
player:addExp(exp)
end
end)
end

function GMHelper:startGame(player)
GameConfig.startPlayers = 0
GameConfig.waitingPlayerTime = 1
GameConfig.waitingPlayerTime2 = 0
end

---@param player GamePlayer


function GMHelper:fakeChangeTeam(player)
local teamId = player.entityPlayerMP:getTeamId() % 8 + 1
HostApi.changePlayerTeam(player.rakssid, player.userId, teamId)
end

---@param player GamePlayer


function GMHelper:changeHelmet(player)
local helmetIds = { 298, 1200 }
for helmetId = 901, 928 do
table.insert(helmetIds, helmetId)
end
TableUtil.tableRemove(helmetIds, 921)
TableUtil.tableRemove(helmetIds, 923)
local inv = player:getInventory()
local itemId = inv:getItemStackInfo(100).id
for pos, helmetId in pairs(helmetIds) do
if itemId == helmetId then
pos = pos % #helmetIds
pos = pos + 1
while not Item.getItemById(helmetIds[pos]) do
pos = pos % #helmetIds
pos = pos + 1
end
player.entityPlayerMP:replaceArmorItemWithEnchant(helmetIds[pos] or 0,
1, 0, {})
break
end
end
end

function GMHelper:addMonster(player)
MonsterManager:createMonster(player:getPosition(),
Define.MonsterType.ServerMonster)
end

function GMHelper:clearMonster(player)
MonsterManager:clearMonster()
end

---@param player GamePlayer


function GMHelper:resetSurvey(player)
player.had_survey = false
for itemId, times in pairs(player.game_survey) do
GamePacketSender:sendSurveyUseItemTimes(player.rakssid, itemId, times)
end
player.game_survey = {}
player.survey_player_times = 0
SurveyManager:onPlayerLogin(player)
end

function GMHelper:addRobot()
if isGameStart then
return
end
if #PlayerManager:getPlayers2() >= PlayerManager:getRoomMaxPlayer() then
return
end
local infos = GameInfoManager:getAllPlayerInfo()
local teamCount = { 0, 0, 0, 0 }
for teamId, _ in pairs(GameMatch.Teams) do
teamCount[teamId] = 0
end
for _, info in pairs(infos) do
local teamId = info:getValue("teamId", true)
teamCount[teamId] = teamCount[teamId] or 0
teamCount[teamId] = teamCount[teamId] + 1
end
local minCount, teamId = 999, 1
for tid, count in pairs(teamCount) do
if minCount >= count then
minCount = count
teamId = tonumber(tid)
end
end
local userIds = { 48672, 128, 1207280, 199520, 273792, 1403600, 3536, 16, 176,
10000, 1569872, 592, 87568, 139184, 254672 }
for _, userId in pairs(userIds) do
if not PlayerManager:getPlayerByUserId2(userId) then
GameInfoManager:newInfo("PlayerInfo", userId)
local info = GameInfoManager:getPlayerInfo(userId)
info:setValue("teamId", teamId)
AITeamManager:newAi(1, teamId, userId, "Robot:" .. userId)
break
end
end
end

---@param player GamePlayer


function GMHelper:setPlayerAFK(player)
---@type CreditScoreUtil
local CreditScoreUtil = T(Global, "CreditScoreUtil")
CreditScoreUtil:setPlayerNegative(player)
end

---@param player GamePlayer


function GMHelper:addCrossbowArrow(player, gunId, buyCount)
---商店购买的数量
buyCount = buyCount or 1
local needCount = 0 ---当前需要的数量
local info = InventoryUtil:getPlayerInventoryInfo(player)
local setting = GunSetting.getGunSetting(gunId)
local maxBulletNum = tonumber(setting.maxBulletNum)
---计算需要的数量
for _, gun in pairs(info.gun) do
if gun.id == gunId then
needCount = needCount + (maxBulletNum - gun.bullets)
end
end
-----需要数量少于购买数量则返回
if needCount < buyCount then
----弹提示,所需子弹数小于购买子弹数
GameMsgServer:sendSystemTipToPlayer(player.userId,
Messages:msgCanNotBuyCrossbowArrow())
return false
end
---填装子弹
for _, gun in pairs(info.gun) do
local curBullets = gun.bullets
if gun.id == gunId and maxBulletNum > curBullets then
local addCount = 0
if maxBulletNum - curBullets < buyCount then
addCount = maxBulletNum - curBullets
else
addCount = buyCount
end
player:replaceItem(gunId, 1, 0, gun.stackIndex, curBullets + addCount)
buyCount = buyCount - addCount
if buyCount <= 0 then
return true
end
end
end
end

---@param player GamePlayer


function GMHelper:addWaterBall(player)
player:tryAddItem(595, 1)
end

---@param player GamePlayer


function GMHelper:addBridgeEgg(player)
player:tryAddItem(594, 1)
end
---@param player GamePlayer
function GMHelper:addEnderDragon(player)
player:tryAddItem(593, 1)
end

---@param player GamePlayer


function GMHelper:addWithered(player)
player:tryAddItem(592, 1)
end

---@param player GamePlayer


function GMHelper:addBackPearl(player)
player:tryAddItem(591, 1)
end

---@param player GamePlayer


function GMHelper:addHollowBlock(player)
player:tryAddItem(590, 1)
end

---@param player GamePlayer


function GMHelper:addDoubleDummy(player)
player:tryAddItem(ItemID.DOUBLE_DUMMY, 1)
end

---@param player GamePlayer


function GMHelper:add585(player)
player:tryAddItem(585, 1)
end

---@param player GamePlayer


function GMHelper:add584(player)
player:tryAddItem(584, 1)
end
---@param player GamePlayer
function GMHelper:add583(player)
player:tryAddItem(583, 1)
end

---@param player GamePlayer


function GMHelper:addSpringboard(player)
player:tryAddItem(573, 1)
end

---@param player GamePlayer


function GMHelper:addCompass(player)
player:tryAddItem(572, 1)
end

---@param player GamePlayer


function GMHelper:addItem(player, itemId, count)
player:tryAddItem(itemId, count or 1)
end

---@param player GamePlayer


function GMHelper:resetSurvey(player)
player.had_survey = false
for itemId, times in pairs(player.game_survey) do
GamePacketSender:sendSurveyUseItemTimes(player.rakssid, itemId, times)
end
player.game_survey = {}
player.survey_player_times = 0
SurveyManager:onPlayerLogin(player)
end

---@param player GamePlayer


function GMHelper:setDeathAnimEffect(player)
player.info:setValue("deathEffect", "huoyan_zi.effect")
end

---@param player GamePlayer


function GMHelper:resetDeathAnimEffect(player)
player.info:setValue("deathEffect", "death.effect")
end

local curOccupation
---@param player GamePlayer
function GMHelper:setFakeOccupation(player)
curOccupation = (curOccupation or 0) + 1
player.info:setValue("fakeOccupation", curOccupation)
end

---@param player GamePlayer


function GMHelper:resetFakeOccupation(player)
curOccupation = 0
player.info:setValue("fakeOccupation", curOccupation)
end

---@param player GamePlayer


function GMHelper:reportAttackRecord(player)
---@type SRecordUtil
local SRecordUtil = T(Global, "SRecordUtil")
SRecordUtil:onPlayerLogout(player)
end

function GMHelper:showGameStateInfo()
---@type GameStateWriter
local GameStateWriter = T(Global, "GameStateWriter")
LogUtil.logInfo(StringUtil.v2s(GameStateWriter.fullRecord, 20))
end

You might also like