mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 22:37:03 +00:00
[11947] Improve SCRIPT_COMMAND_MOVE_TO
This changes the handling of SCRIPT_COMMAND_MOVE_TO, to not expect some travel-time, but directly provide the speed for the movement (*100). Attention to DB-Devs, please check your MOVE_TO scripts. Signed-off-by: Schmoozerd <schmoozerd@scriptdev2.com>
This commit is contained in:
parent
78b0ffe4eb
commit
ea08f7c5d7
7 changed files with 42 additions and 13 deletions
|
|
@ -150,7 +150,8 @@ Where "A -> B" means that the command is executed from A with B as target.
|
|||
|
||||
3 SCRIPT_COMMAND_MOVE_TO resultingSource = Creature
|
||||
If position is very near to current position, or x=y=z=0, then only orientation is changed
|
||||
* datalong2 = travel time
|
||||
* datalong2 = travel_speed*100 (use 0 for creature default movement)
|
||||
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: teleport unit to position
|
||||
* x/y/z/o
|
||||
|
||||
4 SCRIPT_COMMAND_FLAG_SET source = any
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ CREATE TABLE `db_version` (
|
|||
`version` varchar(120) default NULL,
|
||||
`creature_ai_version` varchar(120) default NULL,
|
||||
`cache_id` int(10) default '0',
|
||||
`required_11940_07_mangos_spell_scripts` bit(1) default NULL
|
||||
`required_11947_01_mangos_dbscripts` bit(1) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
|
||||
|
||||
--
|
||||
|
|
|
|||
19
sql/updates/11947_01_mangos_dbscripts.sql
Normal file
19
sql/updates/11947_01_mangos_dbscripts.sql
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_11940_07_mangos_spell_scripts required_11947_01_mangos_dbscripts bit;
|
||||
|
||||
-- Update teleport
|
||||
UPDATE creature_movement_scripts SET data_flags=data_flags|8 WHERE command=3 AND datalong2=0 AND (x!=0 AND y!=0 AND z!=0);
|
||||
UPDATE event_scripts SET data_flags=data_flags|8 WHERE command=3 AND datalong2=0 AND (x!=0 AND y!=0 AND z!=0);
|
||||
UPDATE gameobject_scripts SET data_flags=data_flags|8 WHERE command=3 AND datalong2=0 AND (x!=0 AND y!=0 AND z!=0);
|
||||
UPDATE gossip_scripts SET data_flags=data_flags|8 WHERE command=3 AND datalong2=0 AND (x!=0 AND y!=0 AND z!=0);
|
||||
UPDATE quest_end_scripts SET data_flags=data_flags|8 WHERE command=3 AND datalong2=0 AND (x!=0 AND y!=0 AND z!=0);
|
||||
UPDATE quest_start_scripts SET data_flags=data_flags|8 WHERE command=3 AND datalong2=0 AND (x!=0 AND y!=0 AND z!=0);
|
||||
UPDATE spell_scripts SET data_flags=data_flags|8 WHERE command=3 AND datalong2=0 AND (x!=0 AND y!=0 AND z!=0);
|
||||
|
||||
-- Set all move commands to default creature speed
|
||||
UPDATE creature_movement_scripts SET datalong2=0 WHERE command=3;
|
||||
UPDATE event_scripts SET datalong2=0 WHERE command=3;
|
||||
UPDATE gameobject_scripts SET datalong2=0 WHERE command=3;
|
||||
UPDATE gossip_scripts SET datalong2=0 WHERE command=3;
|
||||
UPDATE quest_end_scripts SET datalong2=0 WHERE command=3;
|
||||
UPDATE quest_start_scripts SET datalong2=0 WHERE command=3;
|
||||
UPDATE spell_scripts SET datalong2=0 WHERE command=3;
|
||||
|
|
@ -1036,15 +1036,23 @@ void ScriptAction::HandleScriptStep()
|
|||
break;
|
||||
}
|
||||
|
||||
if (m_script->moveTo.travelTime != 0)
|
||||
// For command additional teleport the unit
|
||||
if (m_script->data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL)
|
||||
{
|
||||
float speed = ((Unit*)pSource)->GetDistance(m_script->x, m_script->y, m_script->z) / ((float)m_script->moveTo.travelTime * 0.001f);
|
||||
((Unit*)pSource)->MonsterMoveWithSpeed(m_script->x, m_script->y, m_script->z, speed);
|
||||
}
|
||||
else
|
||||
((Unit*)pSource)->NearTeleportTo(m_script->x, m_script->y, m_script->z, m_script->o != 0.0f ? m_script->o : ((Unit*)pSource)->GetOrientation());
|
||||
break;
|
||||
}
|
||||
|
||||
// Normal Movement
|
||||
if (m_script->moveTo.travelSpeed)
|
||||
((Unit*)pSource)->MonsterMoveWithSpeed(m_script->x, m_script->y, m_script->z, m_script->moveTo.travelSpeed * 0.01f);
|
||||
else
|
||||
{
|
||||
((Unit*)pSource)->GetMotionMaster()->Clear();
|
||||
((Unit*)pSource)->GetMotionMaster()->MovePoint(0, m_script->x, m_script->y, m_script->z);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SCRIPT_COMMAND_FLAG_SET:
|
||||
// TODO
|
||||
if (!source)
|
||||
|
|
@ -1175,8 +1183,7 @@ void ScriptAction::HandleScriptStep()
|
|||
|
||||
pGo->SetLootState(GO_READY);
|
||||
pGo->SetRespawnTime(time_to_despawn); //despawn object in ? seconds
|
||||
|
||||
pGo->GetMap()->Add(pGo);
|
||||
pGo->Refresh();
|
||||
break;
|
||||
}
|
||||
case SCRIPT_COMMAND_TEMP_SUMMON_CREATURE:
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@ enum ScriptCommand // resSource, resTar
|
|||
SCRIPT_COMMAND_EMOTE = 1, // resSource = Unit, resTarget = Unit/none
|
||||
// datalong1 = emote_id
|
||||
SCRIPT_COMMAND_FIELD_SET = 2, // source = any, datalong3 = field_id, datalong2 = value
|
||||
SCRIPT_COMMAND_MOVE_TO = 3, // resSource = Creature, datalong2 = time, x/y/z
|
||||
SCRIPT_COMMAND_MOVE_TO = 3, // resSource = Creature, datalong2 = travel_speed*100, x/y/z
|
||||
// data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: teleport unit to position
|
||||
SCRIPT_COMMAND_FLAG_SET = 4, // source = any, datalong3 = field_id, datalong2 = bitmask
|
||||
SCRIPT_COMMAND_FLAG_REMOVE = 5, // source = any, datalong3 = field_id, datalong2 = bitmask
|
||||
SCRIPT_COMMAND_TELEPORT_TO = 6, // source or target with Player, datalong2 = map_id, x/y/z
|
||||
|
|
@ -128,7 +129,7 @@ struct ScriptInfo
|
|||
struct // SCRIPT_COMMAND_MOVE_TO (3)
|
||||
{
|
||||
uint32 unused1; // datalong
|
||||
uint32 travelTime; // datalong2
|
||||
uint32 travelSpeed; // datalong2
|
||||
} moveTo;
|
||||
|
||||
struct // SCRIPT_COMMAND_FLAG_SET (4)
|
||||
|
|
@ -334,6 +335,7 @@ struct ScriptInfo
|
|||
{
|
||||
switch (command)
|
||||
{
|
||||
case SCRIPT_COMMAND_MOVE_TO:
|
||||
case SCRIPT_COMMAND_TEMP_SUMMON_CREATURE:
|
||||
case SCRIPT_COMMAND_CAST_SPELL:
|
||||
case SCRIPT_COMMAND_MORPH_TO_ENTRY_OR_MODEL:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "11946"
|
||||
#define REVISION_NR "11947"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef __REVISION_SQL_H__
|
||||
#define __REVISION_SQL_H__
|
||||
#define REVISION_DB_CHARACTERS "required_11785_02_characters_instance"
|
||||
#define REVISION_DB_MANGOS "required_11940_07_mangos_spell_scripts"
|
||||
#define REVISION_DB_MANGOS "required_11947_01_mangos_dbscripts"
|
||||
#define REVISION_DB_REALMD "required_10008_01_realmd_realmd_db_version"
|
||||
#endif // __REVISION_SQL_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue