Implement SCRIPT_COMMAND_MOD_UPDATEFIELD with parameters datalong = index, datalong2 = newvalue.
This will allow you to set the specified index value to the specified flag, as per Malcrom´s request. --HG-- branch : trunk
This commit is contained in:
@@ -3906,6 +3906,43 @@ void Map::ScriptsProcess()
|
|||||||
pSource->SendMovieStart(step.script->datalong);
|
pSource->SendMovieStart(step.script->datalong);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case SCRIPT_COMMAND_MOD_UPDATEFIELD:
|
||||||
|
{
|
||||||
|
if (!source)
|
||||||
|
{
|
||||||
|
sLog.outError("SCRIPT_COMMAND_MOD_UPDATEFIELD (script id: %u) call for NULL source.", step.script->id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16 maxOffset = 0;
|
||||||
|
switch (source->GetTypeId())
|
||||||
|
{
|
||||||
|
case TYPEID_ITEM:
|
||||||
|
maxOffset = ITEM_END;
|
||||||
|
break;
|
||||||
|
case TYPEID_UNIT:
|
||||||
|
maxOffset = UNIT_END;
|
||||||
|
break;
|
||||||
|
case TYPEID_PLAYER:
|
||||||
|
maxOffset = PLAYER_END;
|
||||||
|
break;
|
||||||
|
case TYPEID_GAMEOBJECT:
|
||||||
|
maxOffset = GAMEOBJECT_END;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (step.script->datalong > maxOffset || !step.script->datalong)
|
||||||
|
{
|
||||||
|
sLog.outError("SCRIPT_COMMAND_MOD_UPDATEFIELD (script id: %u). invalid index parameter (%u). maximum offset: (%u) for typeid %u",
|
||||||
|
step.script->id, step.script->datalong, maxOffset, source->GetTypeId());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
source->SetFlag(step.script->datalong, step.script->datalong2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
sLog.outError("Unknown script command %u called.", step.script->command);
|
sLog.outError("Unknown script command %u called.", step.script->command);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -453,6 +453,7 @@ enum WorldStates
|
|||||||
#define SCRIPT_COMMAND_MODEL 32 // datalong = model id
|
#define SCRIPT_COMMAND_MODEL 32 // datalong = model id
|
||||||
#define SCRIPT_COMMAND_CLOSE_GOSSIP 33 // close gossip window -- no values
|
#define SCRIPT_COMMAND_CLOSE_GOSSIP 33 // close gossip window -- no values
|
||||||
#define SCRIPT_COMMAND_PLAYMOVIE 34 // datalong = movie id
|
#define SCRIPT_COMMAND_PLAYMOVIE 34 // datalong = movie id
|
||||||
|
#define SCRIPT_COMMAND_MOD_UPDATEFIELD 35 // datalong = index, datalong2 = newvalue
|
||||||
|
|
||||||
/// Storage class for commands issued for delayed execution
|
/// Storage class for commands issued for delayed execution
|
||||||
struct CliCommandHolder
|
struct CliCommandHolder
|
||||||
|
|||||||
Reference in New Issue
Block a user