#if defined _OPUByState_included
#endinput
#endif
#define _OPUByState_included
#include <a_samp>
forward OnPlayerUpdateOnFoot(playerid);
forward OnPlayerUpdateDriver(playerid);
forward OnPlayerUpdatePassenger(playerid);
forward OPUOnFootOrDriver(playerid);
forward OPUOnFootOrPassenger(playerid);
forward OPUDriverOrPassenger(playerid);
static gOPUBS_HasCB[7];
public OnGameModeInit()
{
gOPUBS_HasCB[0] = funcidx("OPUBS_OnPlayerUpdate") != -1;
gOPUBS_HasCB[1] = funcidx("OPUBS_OnPlayerUpdateOnFoot") != -1;
gOPUBS_HasCB[2] = funcidx("OPUBS_OnPlayerUpdateDriver") != -1;
gOPUBS_HasCB[3] = funcidx("OPUBS_OnPlayerUpdatePassenger") != -1;
gOPUBS_HasCB[4] = funcidx("OPUBS_OPUOnFootOrDriver") != -1;
gOPUBS_HasCB[5] = funcidx("OPUBS_OPUOnFootOrPassenger") != -1;
gOPUBS_HasCB[6] = funcidx("OPUBS_OPUDriverOrPassenger") != -1;
if (funcidx("OPUBS_OnGameModeInit") != -1)
{
return CallLocalFunction("OPUBS_OnGameModeInit", "");
}
return 1;
}
#if defined _ALS_OnGameModeInit
#undef OnGameModeInit
#else
#define _ALS_OnGameModeInit
#endif
#define OnGameModeInit OPUBS_OnGameModeInit
forward OPUBS_OnGameModeInit();
public OnPlayerUpdate(playerid)
{
switch( GetPlayerState(playerid) )
{
case PLAYER_STATE_ONFOOT:
{
OnPlayerUpdateOnFoot(playerid);
OPUOnFootOrDriver(playerid);
OPUOnFootOrPassenger(playerid);
}
case PLAYER_STATE_DRIVER:
{
OnPlayerUpdateDriver(playerid);
OPUOnFootOrDriver(playerid);
OPUDriverOrPassenger(playerid);
}
case PLAYER_STATE_PASSENGER:
{
OnPlayerUpdatePassenger(playerid);
OPUOnFootOrPassenger(playerid);
OPUDriverOrPassenger(playerid);
}
}
if (gOPUBS_HasCB[0])
{
return CallLocalFunction("OPUBS_OnPlayerUpdate", "i",playerid);
}
return 1;
}
#if defined _ALS_OnPlayerUpdate
#undef OnPlayerUpdate
#else
#define _ALS_OnPlayerUpdate
#endif
#define OnPlayerUpdate OPUBS_OnPlayerUpdate
forward OPUBS_OnPlayerUpdate(playerid);
public OnPlayerUpdateOnFoot(playerid)
{
if (gOPUBS_HasCB[1])
{
return CallLocalFunction("OPUBS_OnPlayerUpdateOnFoot", "i",playerid);
}
return 1;
}
#if defined _ALS_OnPlayerUpdateOnFoot
#undef OnPlayerUpdateOnFoot
#else
#define _ALS_OnPlayerUpdateOnFoot
#endif
#define OnPlayerUpdateOnFoot OPUBS_OnPlayerUpdateOnFoot
forward OPUBS_OnPlayerUpdateOnFoot(playerid);
public OnPlayerUpdateDriver(playerid)
{
if (gOPUBS_HasCB[2])
{
return CallLocalFunction("OPUBS_OnPlayerUpdateDriver", "i",playerid);
}
return 1;
}
#if defined _ALS_OnPlayerUpdateDriver
#undef OnPlayerUpdateDriver
#else
#define _ALS_OnPlayerUpdateDriver
#endif
#define OnPlayerUpdateDriver OPUBS_OnPlayerUpdateDriver
forward OPUBS_OnPlayerUpdateDriver(playerid);
public OnPlayerUpdatePassenger(playerid)
{
if (gOPUBS_HasCB[3])
{
return CallLocalFunction("OPUBS_OnPlayerUpdatePassenger", "i",playerid);
}
return 1;
}
#if defined _ALS_OnPlayerUpdatePassenger
#undef OnPlayerUpdatePassenger
#else
#define _ALS_OnPlayerUpdatePassenger
#endif
#define OnPlayerUpdatePassenger OPUBS_OnPlayerUpdatePassenger
forward OPUBS_OnPlayerUpdatePassenger(playerid);
public OPUOnFootOrDriver(playerid)
{
if (gOPUBS_HasCB[4])
{
return CallLocalFunction("OPUBS_OPUOnFootOrDriver", "i",playerid);
}
return 1;
}
#if defined _ALS_OPUOnFootOrDriver
#undef OPUOnFootOrDriver
#else
#define _ALS_OPUOnFootOrDriver
#endif
#define OPUOnFootOrDriver OPUBS_OPUOnFootOrDriver
forward OPUBS_OPUOnFootOrDriver(playerid);
public OPUOnFootOrPassenger(playerid)
{
if (gOPUBS_HasCB[5])
{
return CallLocalFunction("OPUBS_OPUOnFootOrPassenger", "i",playerid);
}
return 1;
}
#if defined _ALS_OPUOnFootOrPassenger
#undef OPUOnFootOrPassenger
#else
#define _ALS_OPUOnFootOrPassenger
#endif
#define OPUOnFootOrPassenger OPUBS_OPUOnFootOrPassenger
forward OPUBS_OPUOnFootOrPassenger(playerid);
public OPUDriverOrPassenger(playerid)
{
if (gOPUBS_HasCB[6])
{
return CallLocalFunction("OPUBS_OPUDriverOrPassenger", "i",playerid);
}
return 1;
}
#if defined _ALS_OPUDriverOrPassenger
#undef OPUDriverOrPassenger
#else
#define _ALS_OPUDriverOrPassenger
#endif
#define OPUDriverOrPassenger OPUBS_OPUDriverOrPassenger
forward OPUBS_OPUDriverOrPassenger(playerid);
Isn't using OnPlayerUpdate callback easier than using a specific player update callback ?
|
Depends: if you have some pieces of code that should be executed only when the player is in a certain state, you can have your script better organized if you have these callbacks. For example, if you have a piece of code that bans a player if he uses a jetpack, you better put it in OnPlayerUpdateOnFoot because he won't be using one while driving or being a passenger.
|
This is just going to cause severe lag because CallLocalFunction is incredibly slow! To whom it may concern: I do not recommend using this.
|
This is just going to cause severe lag because CallLocalFunction is incredibly slow! To whom it may concern: I do not recommend using this.
|
It ain't THAT slow, but this code definitely IS slow. You call a callback by a direct function call, and then use CallLocalFunction.
+ The hooks aren't needed(except for the OnPlayerUpdate one). |
It ain't THAT slow, but this code definitely IS slow. You call a callback by a direct function call, and then use CallLocalFunction.
+ The hooks aren't needed(except for the OnPlayerUpdate one). |
: error 004: function "OnPlayerUpdateOnFoot" is not implemented : error 004: function "OPUOnFootOrDriver" is not implemented : error 004: function "OPUOnFootOrPassenger" is not implemented : error 004: function "OnPlayerUpdateDriver" is not implemented : error 004: function "OPUOnFootOrDriver" is not implemented : error 004: function "OPUDriverOrPassenger" is not implemented : error 004: function "OnPlayerUpdatePassenger" is not implemented : error 004: function "OPUOnFootOrPassenger" is not implemented : error 004: function "OPUDriverOrPassenger" is not implemented Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 9 Errors.