Files
aowow/setup/tools/sqlgen/events.ss.php
Sarjuuk bf184e7555 Core/Setup
* rewritten to be able to dynamicly load it's components
   - CLISetup -> checks for UtilityScripts (config, setup, dbc reader, etc.) -> checks for SetupScripts (individual sql/file generators)
   - each step may now have a help prompt attached. If none are provided, the containing script may provide it's help.
   - all Scripts are self contained modules. No more editing of 3+ files if some component is added/removed
 * removed intermediaries FileGen & SqlGen
 * functional changes
   - allow providing CLI arguments to siteconfig and account UtilityScript and skip the interactive prompts
   - set slot for consumable enchantment items so they are filtrable
   - zones dataset is now localized and generated from GlobalStrings.lua and DungeonMap.dbc. Related data dumps removed.
   - 'aowow' and 'prQueue' executables now have shebangs

    WARNING - command line options have been renamed!
2024-06-20 18:10:12 +02:00

49 lines
1.4 KiB
PHP

<?php
if (!defined('AOWOW_REVISION'))
die('illegal access');
if (!CLI)
die('not in cli mode');
CLISetup::registerSetup("sql", new class extends SetupScript
{
protected $info = array(
'events' => [[], CLISetup::ARGV_PARAM, 'Compiles data for type: Event from world db.']
);
protected $worldDependency = ['game_event', 'game_event_prerequisite'];
public function generate(array $ids = []) : bool
{
DB::Aowow()->query('TRUNCATE ?_events');
$events = DB::World()->select(
'SELECT ge.eventEntry,
holiday,
0, -- cuFlags
IFNULL(UNIX_TIMESTAMP(start_time), 0),
IFNULL(UNIX_TIMESTAMP(end_time), 0),
occurence * 60,
length * 60,
IF (gep.eventEntry IS NOT NULL, GROUP_CONCAT(prerequisite_event SEPARATOR " "), NULL),
description
FROM game_event ge
LEFT JOIN game_event_prerequisite gep ON gep.eventEntry = ge.eventEntry
{ WHERE ge.eventEntry IN (?a) }
GROUP BY ge.eventEntry',
$ids ?: DBSIMPLE_SKIP
);
foreach ($events as $e)
DB::Aowow()->query('INSERT INTO ?_events VALUES (?a)', array_values($e));
$this->reapplyCCFlags('events', Type::WORLDEVENT);
return true;
}
});
?>