mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
Setup/DataStores
* do not rely on temporary converted dbc tables during runtime * create permanent tables instead
This commit is contained in:
@@ -30,6 +30,10 @@ function setup() : void
|
||||
['dbconfig', [null, null], 'testDB', 'Please enter your database credentials.', 'could not establish connection to:'],
|
||||
['siteconfig', [null, null], 'testSelf', 'SITE_HOST and STATIC_HOST '.CLI::bold('must').' be set. Also enable FORCE_SSL if needed. You may also want to change other variables such as NAME, NAME_SHORT or LOCALES.', 'could not access:'],
|
||||
// sql- and build- stuff here
|
||||
['SqlGen::generate', 'dungeonmap', null, null, null],
|
||||
['SqlGen::generate', 'skilllineability', null, null, null],
|
||||
['SqlGen::generate', 'soundemitters', null, null, null],
|
||||
['SqlGen::generate', 'worldmaparea', null, null, null],
|
||||
['SqlGen::generate', 'areatrigger', null, null, null],
|
||||
['SqlGen::generate', 'achievementcriteria', null, null, null],
|
||||
['SqlGen::generate', 'glyphproperties', null, null, null],
|
||||
|
||||
@@ -17,7 +17,7 @@ SqlGen::register(new class extends SetupScript
|
||||
public function generate(array $ids = []) : bool
|
||||
{
|
||||
DB::Aowow()->query('TRUNCATE ?_areatrigger');
|
||||
DB::Aowow()->query('INSERT INTO ?_areatrigger SELECT id, 0, 0, NULL, orientation, NULL, NULL, NULL, NULL, NULL, NULL FROM dbc_areatrigger');
|
||||
DB::Aowow()->query('INSERT INTO ?_areatrigger SELECT `id`, 0, 0, `mapId`, `posX`, `posY`, `orientation`, NULL, NULL, NULL, NULL, NULL, NULL, NULL FROM dbc_areatrigger');
|
||||
|
||||
/* notes:
|
||||
* while areatrigger DO have dimensions, displaying them on a map is almost always futile,
|
||||
@@ -27,24 +27,29 @@ SqlGen::register(new class extends SetupScript
|
||||
// 1: Taverns
|
||||
CLI::write(' - fetching taverns');
|
||||
|
||||
$addData = DB::World()->select('SELECT id AS ARRAY_KEY, name, ?d AS `type` FROM areatrigger_tavern', AT_TYPE_TAVERN);
|
||||
$addData = DB::World()->select('SELECT `id` AS ARRAY_KEY, `name`, ?d AS `type` FROM areatrigger_tavern', AT_TYPE_TAVERN);
|
||||
foreach ($addData as $id => $ad)
|
||||
DB::Aowow()->query('UPDATE ?_areatrigger SET ?a WHERE id = ?d', $ad, $id);
|
||||
DB::Aowow()->query('UPDATE ?_areatrigger SET ?a WHERE `id` = ?d', $ad, $id);
|
||||
|
||||
// 2: Teleporter + teleporting 4: Smart Trigger
|
||||
CLI::write(' - calculation teleporter coordinates');
|
||||
|
||||
$addData = DB::World()->select('
|
||||
SELECT ID AS ARRAY_KEY, Name AS `name`, target_map AS `map`, target_position_x AS `posY`, target_position_y AS `posX`, target_orientation AS `orientation` FROM areatrigger_teleport UNION
|
||||
SELECT entryorguid AS ARRAY_KEY, "TBD" AS `name`, action_param1 AS `map`, target_x AS `posY`, target_y AS `posX`, target_o AS `orientation` FROM smart_scripts WHERE source_type = 2 AND action_type = 62
|
||||
');
|
||||
$addData = DB::World()->select(
|
||||
'SELECT `ID` AS ARRAY_KEY, `Name` AS `name`, `target_map` AS `map`, `target_position_x` AS `posY`, `target_position_y` AS `posX`, `target_orientation` AS `orientation`
|
||||
FROM areatrigger_teleport
|
||||
UNION
|
||||
SELECT `entryorguid` AS ARRAY_KEY, "TBD" AS `name`, `action_param1` AS `map`, `target_x` AS `posY`, `target_y` AS `posX`, `target_o` AS `orientation`
|
||||
FROM smart_scripts
|
||||
WHERE `source_type` = 2 AND `action_type` = 62'
|
||||
);
|
||||
|
||||
foreach ($addData as $id => $ad)
|
||||
{
|
||||
$points = Game::worldPosToZonePos($ad['map'], $ad['posX'], $ad['posY']/*, 0*/);
|
||||
$points = Game::worldPosToZonePos($ad['map'], $ad['posX'], $ad['posY']);
|
||||
if (!$points)
|
||||
{
|
||||
CLI::write(' * AT '.$id.' teleporter endpoint '.CLI::bold($ad['name']).' could not be matched to displayable area [M:'.$ad['map'].'; X:'.$ad['posY'].'; Y:'.$ad['posX'].']', CLI::LOG_WARN);
|
||||
DB::Aowow()->query('UPDATE ?_areatrigger SET `name` = ?, `type` = ?d WHERE id = ?d', $ad['name'], AT_TYPE_TELEPORT, $id);
|
||||
DB::Aowow()->query('UPDATE ?_areatrigger SET `name` = ?, `type` = ?d WHERE `id` = ?d', $ad['name'], AT_TYPE_TELEPORT, $id);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -58,27 +63,27 @@ SqlGen::register(new class extends SetupScript
|
||||
'teleportF' => $points[0]['floor']
|
||||
);
|
||||
|
||||
DB::Aowow()->query('UPDATE ?_areatrigger SET ?a WHERE id = ?d', $update, $id);
|
||||
DB::Aowow()->query('UPDATE ?_areatrigger SET ?a WHERE `id` = ?d', $update, $id);
|
||||
}
|
||||
|
||||
// 3: Quest Objectives
|
||||
CLI::write(' - satisfying quest objectives');
|
||||
|
||||
$addData = DB::World()->select('SELECT atir.id AS ARRAY_KEY, qt.ID AS quest, NULLIF(qt.AreaDescription, "") AS `name`, qta.SpecialFlags FROM quest_template qt LEFT JOIN quest_template_addon qta ON qta.ID = qt.ID JOIN areatrigger_involvedrelation atir ON atir.quest = qt.ID');
|
||||
$addData = DB::World()->select('SELECT atir.`id` AS ARRAY_KEY, qt.`ID` AS `quest`, NULLIF(qt.AreaDescription, "") AS `name`, qta.`SpecialFlags` FROM quest_template qt LEFT JOIN quest_template_addon qta ON qta.`ID` = qt.`ID` JOIN areatrigger_involvedrelation atir ON atir.`quest` = qt.`ID`');
|
||||
foreach ($addData as $id => $ad)
|
||||
{
|
||||
if (!($ad['SpecialFlags'] & QUEST_FLAG_SPECIAL_EXT_COMPLETE))
|
||||
CLI::write(' * Areatrigger '.CLI::bold($id).' is involved in Quest '.CLI::bold($ad['quest']).', but Quest is not flagged for external completion (SpecialFlags & '.Util::asHex(QUEST_FLAG_SPECIAL_EXT_COMPLETE).')', CLI::LOG_WARN);
|
||||
CLI::write(' * Areatrigger '.CLI::bold($id).' is involved in quest '.CLI::bold($ad['quest']).', but quest is not flagged for external completion (SpecialFlags & '.Util::asHex(QUEST_FLAG_SPECIAL_EXT_COMPLETE).')', CLI::LOG_WARN);
|
||||
|
||||
DB::Aowow()->query('UPDATE ?_areatrigger SET name = ?, type = ?d, quest = ?d WHERE id = ?d', $ad['name'], AT_TYPE_OBJECTIVE, $ad['quest'], $id);
|
||||
DB::Aowow()->query('UPDATE ?_areatrigger SET `name` = ?, `type` = ?d, `quest` = ?d WHERE `id` = ?d', $ad['name'], AT_TYPE_OBJECTIVE, $ad['quest'], $id);
|
||||
}
|
||||
|
||||
// 4/5 Scripted
|
||||
CLI::write(' - assigning scripts');
|
||||
|
||||
$addData = DB::World()->select('SELECT entry AS ARRAY_KEY, IF(ScriptName = "SmartTrigger", NULL, ScriptName) AS `name`, IF(ScriptName = "SmartTrigger", 4, 5) AS `type` FROM areatrigger_scripts');
|
||||
$addData = DB::World()->select('SELECT `entry` AS ARRAY_KEY, IF(`ScriptName` = "SmartTrigger", NULL, `ScriptName`) AS `name`, IF(`ScriptName` = "SmartTrigger", 4, 5) AS `type` FROM areatrigger_scripts');
|
||||
foreach ($addData as $id => $ad)
|
||||
DB::Aowow()->query('UPDATE ?_areatrigger SET ?a WHERE id = ?d', $ad, $id);
|
||||
DB::Aowow()->query('UPDATE ?_areatrigger SET ?a WHERE `id` = ?d', $ad, $id);
|
||||
|
||||
$this->reapplyCCFlags('areatrigger', Type::AREATRIGGER);
|
||||
|
||||
|
||||
18
setup/tools/sqlgen/dungeonmap.func.php
Normal file
18
setup/tools/sqlgen/dungeonmap.func.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
if (!CLI)
|
||||
die('not in cli mode');
|
||||
|
||||
|
||||
SqlGen::register(new class extends SetupScript
|
||||
{
|
||||
use TrDBCcopy;
|
||||
|
||||
protected $command = 'dungeonmap';
|
||||
protected $dbcSourceFiles = ['dungeonmap'];
|
||||
});
|
||||
|
||||
?>
|
||||
18
setup/tools/sqlgen/skilllineability.func.php
Normal file
18
setup/tools/sqlgen/skilllineability.func.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
if (!CLI)
|
||||
die('not in cli mode');
|
||||
|
||||
|
||||
SqlGen::register(new class extends SetupScript
|
||||
{
|
||||
use TrDBCcopy;
|
||||
|
||||
protected $command = 'skilllineability';
|
||||
protected $dbcSourceFiles = ['skilllineability'];
|
||||
});
|
||||
|
||||
?>
|
||||
18
setup/tools/sqlgen/soundemitter.func.php
Normal file
18
setup/tools/sqlgen/soundemitter.func.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
if (!CLI)
|
||||
die('not in cli mode');
|
||||
|
||||
|
||||
SqlGen::register(new class extends SetupScript
|
||||
{
|
||||
use TrDBCcopy;
|
||||
|
||||
protected $command = 'soundemitters';
|
||||
protected $dbcSourceFiles = ['soundemitters'];
|
||||
});
|
||||
|
||||
?>
|
||||
18
setup/tools/sqlgen/worldmaparea.func.php
Normal file
18
setup/tools/sqlgen/worldmaparea.func.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
if (!CLI)
|
||||
die('not in cli mode');
|
||||
|
||||
|
||||
SqlGen::register(new class extends SetupScript
|
||||
{
|
||||
use TrDBCcopy;
|
||||
|
||||
protected $command = 'worldmaparea';
|
||||
protected $dbcSourceFiles = ['worldmaparea'];
|
||||
});
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user