Этот колбэк вызывается, когда игрок вызывает какой либо колбэк. Вызывается каждый раз когда вызывается любой из пабликов в параметрах которого есть playerid.Параметры:
(playerid, callback)Пример использования:
playerid ID игрока, который вызывает колбэк.
callback ID колбэка, который вызвал или использует данный игрок.
Для получения названия колбэка используйте ф-ию GetNameCallback(callback)
#define MAX_CALLBACK 57 new counter[MAX_CALLBACK];//счётчик входов в данную ф-ию
stock GetNameCallback(callback) { new Message[32]; switch(callback) { case 5: Message = "PlayerConnect"; case 6: Message = "PlayerDisconnect"; case 7: Message = "PlayerSpawn"; case 8: Message = "PlayerDeath"; case 9: Message = "VehicleSpawn"; case 10: Message = "VehicleDeath"; case 11: Message = "PlayerTxt"; case 12: Message = "PlayerCommandText"; case 13: Message = "PlayerRequestClass"; case 14: Message = "PlayerEnterVehicle"; case 15: Message = "PlayerExitVehicle"; case 16: Message = "PlayerStateChange"; case 17: Message = "PlayerEnterCheckpoint"; case 18: Message = "PlayerLeaveCheckpoint"; case 19: Message = "PlayerEnterRaceCheckpoint"; case 20: Message = "PlayerLeaveRaceCheckpoint"; case 21: Message = "RconCommand"; case 22: Message = "PlayerRequestSpawn"; case 23: Message = "ObjectMoved"; case 24: Message = "PlayerObjectMoved"; case 25: Message = "PlayerPickUpPickup"; case 26: Message = "VehicleMod"; case 27: Message = "EnterExitModShop"; case 28: Message = "VehiclePaintjob"; case 29: Message = "VehicleRespray"; case 30: Message = "VehicleDamageStatusUpdate"; case 31: Message = "UnoccupiedVehicleUpdate"; case 32: Message = "PlayerSelectedMenuRow"; case 33: Message = "PlayerExitedMenu"; case 34: Message = "PlayerInteriorChange"; case 35: Message = "PlayerKeyStateChange"; case 36: Message = "RconLoginAttempt"; case 37: Message = "PlayerUpdate"; case 38: Message = "PlayerStreamIn"; case 39: Message = "PlayerStreamOut"; case 40: Message = "VehicleStreamIn"; case 41: Message = "VehicleStreamOut"; case 42: Message = "ActorStreamIn"; case 43: Message = "ActorStreamOut"; case 44: Message = "DialogResponse"; case 45: Message = "PlayerTakeDamage"; case 46: Message = "PlayerGiveDamage"; case 47: Message = "PlayerGiveDamageActor"; case 48: Message = "PlayerClickMap"; case 49: Message = "PlayerClickTextDraw"; case 50: Message = "PlayerClickPlayerTextDraw"; case 51: Message = "IncomingConnection"; case 52: Message = "TrailerUpdate"; case 53: Message = "VehicleSirenStateChange"; case 54: Message = "PlayerClickPlayer"; case 55: Message = "PlayerEditObject"; case 56: Message = "PlayerEditAttachedObject"; case 57: Message = "PlayerWeaponShot"; case 58: Message = "PlayerSelectObject"; default: Message = "Unknown"; } return Message; }
//Вызывается каждый раз когда вызывается любой из пабликов, который меняет массив PlayerInfo forward OnPlayerInfoChange(playerid, callback); public OnPlayerInfoChange(playerid, callback) //Данная процедура обрабатывается при изменении информации о игроке. { counter[callback]++; if( callback == UnoccupiedVehicleUpdate || //callback == PlayerKeyStateChange || callback == TrailerUpdate || callback == PlayerStreamIn || callback == PlayerStreamOut || callback == VehicleStreamIn || callback == VehicleStreamOut) { return 1; } //ИНФОРМИРОВАНИЕ new str[137+32+3+32+2+6]; format(str, sizeof(str), "Information about player {0080FF}%s{FFFFFF}[%d] has changed. Callback: {0080FF}%s{FFFFFF}[%d] call: {00FF00}%d", PlayerName(playerid), playerid, GetNameCallback(callback), callback, counter[callback]); SendClientMessage(playerid, -1, str); //print(str); return 1; }
Основное назначение: для вывода данных по игроку тогда, когда они меняются. Для сохранения данных игрока тогда когда они меняются, а не постоянно каждую милисекунду или интервал заданный таймером. Данные на экране по переменным игрока будут меняться не каждую секунду, а только тогда когда игрок что то сделает. Дополнительное назначение: Скрипт для замены таймеров и OnPlayerUpdate, т.к. они постоянно с заданным интервалом запускаются. Данный же колбэк запускается только тогда, когда игрок меняет своё состояние, меняет интерьер, садиться или выходит из тачки, т.е. если просто перемещается - данный колбэк вызываться не будет. За счёт этого нагрузка на сервер будет минимальна. Также можно видеть каким игроком, когда, в какой последовательности и сколько раз вызывается какой либо колбэк. |
Если поставить return 1; то перестанет выполнятся код в других загруженных скриптах в этих пабликах.
|