macr0n
Ученик
Код ниже - система стадий.
Проблемы:
1. Если игрок умер от падения - вызывается SpawnPlayer, а OnPlayerPrepareDeath и OnPlayerDeathFinished игнорируются.
2. Если жертва находится в машине, то сразу после убийства она выходит из машины и стоит, пока её туда не телепортирует PutPlayerInVehicle.
3. Если при убийстве жертва находится в машине, то происходит рассинхрон: у нападающего сначала включается анимация, а потом посадка в машину, а у жертвы наоборот - сначала его садит в машину, а потом включается анимация. Таким образом у жертвы анимация прекрасно работает, а у нападающего она сбивается и второй раз не включается.
Каким образом возможно решить три проблемы?
PHP:
enum cInfo {
cStage,
Float:cDeathA,
Text3D:cDeathLabel = Create3DTextLabel("", 0xFF6347AA, 0, 0, 0, 10, 0, 1)
}
CI[MAX_PLAYERS][cInfo];
public OnPlayerPrepareDeath(playerid, const animlib[32], const animname[32], &anim_lock, &respawn_time) {
switch(CI[playerid][cStage]) {
case 0: CI[playerid][cStage]++, SendError(playerid, "Your character has been wounded."), Update3DTextLabelText(CI[playerid][cDeathLabel], 0xFF6347AA, "(( THIS CHARACTER IS WOUNDED ))");
case 1: CI[playerid][cStage]++, SendError(playerid, "Your character has died."), Update3DTextLabelText(CI[playerid][cDeathLabel], 0xFF6347AA, "(( THIS CHARACTER IS DEAD ))");
default: return 1;
}
if(IsPlayerInAnyVehicle(playerid)) {
Attach3DTextLabelToPlayer(CI[playerid][cDeathLabel], playerid, 0, 0, -0.25);
ApplyAnimation(playerid, "ped", "CAR_dead_RHS", 4.1, 0, 1, 1, 1, -1, 0);
} else {
GetPlayerFacingAngle(playerid, CI[playerid][cDeathA]);
Attach3DTextLabelToPlayer(CI[playerid][cDeathLabel], playerid, floatsin(CI[playerid][cDeathA], degrees) / 2, -floatcos(CI[playerid][cDeathA], degrees) / 2, 0);
ApplyAnimation(playerid, "WUZI", "CS_Dead_Guy", 4.1, 0, 1, 1, 1, -1, 0);
}
return 1;
}
public OnPlayerDeathFinished(playerid, bool:cancelable) return 0;
1. Если игрок умер от падения - вызывается SpawnPlayer, а OnPlayerPrepareDeath и OnPlayerDeathFinished игнорируются.
2. Если жертва находится в машине, то сразу после убийства она выходит из машины и стоит, пока её туда не телепортирует PutPlayerInVehicle.
3. Если при убийстве жертва находится в машине, то происходит рассинхрон: у нападающего сначала включается анимация, а потом посадка в машину, а у жертвы наоборот - сначала его садит в машину, а потом включается анимация. Таким образом у жертвы анимация прекрасно работает, а у нападающего она сбивается и второй раз не включается.
Каким образом возможно решить три проблемы?
Последнее редактирование:
