我在做一个游戏机。
我已经做了一些类似于“Build a house”的事情,其中我做了一个mysql事件,在一个特定的时间将house的db条目从5改为10,例如在5分25秒内。
问题是当我想在6分12秒内做一个像两个家伙之间的战斗。。。。。我必须在6分12秒内运行一个php脚本来计算他们的部队和当时的战斗本身,然后修改数据库。
我不能“预先计算”战斗的时候,这个家伙派遣他的部队到另一个原因,在那6分12秒,另一个家伙可以购买更多的军队或防御。。。
我希望你明白我想做什么。
mysql无法从事件或触发器运行php脚本。。。
我想,每秒运行一个cron作业来检查这一秒是否发生了冲突,服务器负载太大了。。。。即使不是这样,大多数提供商也只允许每5分钟或2分钟运行一次cron.。。
有什么方法可以实现我的目标吗?
编辑:也许我只是停留在mysql事件,但我必须做很多事情,当计算战斗。。。例如,使用随机数,增加百分比,做一些查询,也许使用数组,写消息给玩家。。。我不认为所有这些都可能在mysql
https://dev.mysql.com/doc/refman/8.0/en/events-overview.html
CREATE TABLE player (
id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(50) NOT NULL,
Attack NOT NULL,
Defense NOT NULL,
Health NOT NULL,
TroopCount NOT NULL
);
CREATE TABLE battle (
id INT PRIMARY KEY AUTO_INCREMENT,
attackerid INT NOT NULL,
defenderid INT NOT NULL,
desc VARCHAR(255) NOT NULL,
battledate DATETIME NOT NULL
);
CREATE EVENT IF NOT EXISTS battle_001
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 6 MINUTE + INTERVAL 12 SECONDS
DO
INSERT INTO battle(battledate,desc)
# Create Select to do the math
SELECT NOW()
, #replace with battle algorithm both the attacker and defender values available for the math
FROM player AS attacker
INNER Join player AS defender
ON defender.id = #replace with defenders id
WHERE attacker.id = #replace with attackers id
;