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:
Machiavelli
2010-06-03 18:03:18 +02:00
parent 77230036cc
commit f346d779a5
2 changed files with 38 additions and 0 deletions
+37
View File
@@ -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;
+1
View File
@@ -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