А что если так:
У игрока до смены скина с помощью /setskin был ид 73, а затем после /setskin купил другой скин (ид 99), а затем ему дали снова новый скин через /setskin.
По этому предлагаю:
PHP код:
/*
Пример использования:
CMD:setskin(playerid, params[])
{
new targetid, // переменная ID игрока
skin, // переменная ID нового скина
time; // переменная времени
// если не введен один из параметров - выводится текст
if(sscanf(params, "ddd", targetid, skin, time))
return SendClientMessage(playerid, -1,
!"Введите: /setskin [ID игрока] [ID скина] [время в секундах]");
// в итоге выдаем указанному игроку указанный скин на указанное время.
SetPlayerSkin(targetid, skin, time);
return true;
}
*/
new timerskins[MAX_PLAYERS];
stock SetPlayerTimeSkin(playerid, skin, time = 0)
{
if(!(0 <= playerid <= MAX_PLAYERS))
return 1;
if(0 == IsPlayerConnected(playerid))
return 1;
if(time != 0)
{
if(timerskins[playerid] != -2)
KillTimer(timerskins[playerid]);
timerskins = SetTimerEx("OnTimeToSkinFinished", time * 1000, false, "ii", playerid, skin);
SetPlayerSkin(playerid, skin);
}
SetPlayerSkin(playerid, skin);
return 1;
}
#if defined _ALS_SetPlayerSkin // Перехватчик
#undef SetPlayerSkin
#else
#define SetPlayerTimeSkin
#endif
#define SetPlayerSkin SetPlayerTimeSkin
public OnPlayerConnect(playerid)
{
timerskins[playerid] = -2;
return 1;
}
public OnPlayerDisconnect(playerid)
{
timerskins[playerid] = -2;
return 1;
}
forward OnTimeToSkinFinished(playerid, old_skin);
public OnTimeToSkinFinished(playerid, old_skin)
{
if(0 == IsPlayerConnected(playerid))
return 1;
SetPlayerSkin(playerid, old_skin);
return 1;
}