Zon3
Wiek: 32 Na forum: 4280 dni Posty: 66
Piwa : 4
Witam. Mam skrypt systemu wypadk?w ale wypadek dzia?a tylko w niekt?rych pojazdach, np. w truckach ju? nie dzia?a. W osob?wce uderz? z pr?dko?ci? 90 km/h i jest wypadek a truckiem z pr?dko?ci? 110 km/h i nie ma wypadku ;/ Prosz? o szybk? pomoc. Oto skrypt:
Kod:
#include a_samp.inc
#define WYPADEK_OnPlayerUpdate //usu? te linijk? je?eli nie chcesz korzysta? z OnPlayerUpdate.
//#define WYPADEK_TIMER (1000) //czas w timerze. Nic nie zmienia je?eli korzystasz z OnPlayerUpdate.
#define WYPADEK_PASAZER //usu? te linijke je?eli nie chcesz, aby pasa?erowie r?wnie? byli ranni podczas wypadku.
#define WYPADEK_HP (150) //ile pojazd ma straci? HP, aby by?o to uznane za wypadek.
#define DIALOG_INFO (9999) //ID Dialogu, kt?ry nie ma nic przypisane w OnDialogResponse.
new Float:PlayerVehicleLastHealth[MAX_PLAYERS];
new PlayerLastVehicle[MAX_PLAYERS];
#if !defined WYPADEK_OnPlayerUpdate
public OnFilterScriptInit()
{
SetTimer("CheckPlayersCrash", WYPADEK_TIMER, true);
return 1;
}
#endif
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
GetVehicleHealth(vehicleid, PlayerVehicleLastHealth[playerid]);
return 1;
}
#if !defined WYPADEK_OnPlayerUpdate
forward CheckPlayersCrash();
public CheckPlayersCrash()
{
static Float:vhp;
for(new i = GetMaxPlayers(); i > -1; --i)
{
#if defined WYPADEK_PASAZER
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
#else
if(IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
#endif
{
GetVehicleHealth(GetPlayerVehicleID(i), vhp);
if(vhp + WYPADEK_HP < PlayerVehicleLastHealth[i] && GetPlayerVehicleID(i) == PlayerLastVehicle[i])
{
TogglePlayerControllable(i, false);
ShowPlayerDialog(i, DIALOG_INFO, DIALOG_STYLE_MSGBOX, "{FF0000}Wypadek!", "{FFFFFF}Dozna?e? urazu podczas wypadku. Poczekaj a? dojdziesz do siebie.", "OK", "");
#if defined _fadescreen_included
SetPVarInt(i, "FadeScreenCrash", ShowPlayerFadeScreenToBlank(i, 30, 255, 0, 0, 255));
#else
SetTimerEx("CrashPlayerOff", 15000, 0, "d", i);
#endif
}
PlayerVehicleLastHealth[i] = vhp;
PlayerLastVehicle[i] = GetPlayerVehicleID(i);
}
}
return 1;
}
#else
public OnPlayerUpdate(playerid)
{
static Float:vhp;
#if defined WYPADEK_PASAZER
if(IsPlayerInAnyVehicle(playerid))
#else
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
#endif
{
GetVehicleHealth(GetPlayerVehicleID(playerid), vhp);
if(vhp + WYPADEK_HP < PlayerVehicleLastHealth[playerid] && GetPlayerVehicleID(playerid) == PlayerLastVehicle[playerid])
{
TogglePlayerControllable(playerid, false);
ShowPlayerDialog(playerid, DIALOG_INFO, DIALOG_STYLE_MSGBOX, "{FF0000}Wypadek!", "{FFFFFF}Dozna?e? urazu podczas wypadku. Poczekaj a? dojdziesz do siebie.", "OK", "");
#if defined _fadescreen_included
SetPVarInt(playerid, "FadeScreenCrash", ShowPlayerFadeScreenToBlank(playerid, 30, 255, 0, 0, 255));
#else
SetTimerEx("CrashPlayerOff", 15000, 0, "d", playerid);
#endif
}
PlayerVehicleLastHealth[playerid] = vhp;
PlayerLastVehicle[playerid] = GetPlayerVehicleID(playerid);
}
return 1;
}
#endif
#if !defined _fadescreen_included
forward CrashPlayerOff(playerid);
public CrashPlayerOff(playerid)
{
TogglePlayerControllable(playerid, true);
return 1;
}
#else
public OnPlayerFadeScreenEnd(playerid, fadeid)
{
if(fadeid == GetPVarInt(playerid, "FadeScreenCrash"))
{
TogglePlayerControllable(playerid, true);
return 1;
}
return 1;
}
#endif
Prosz? o szybk? pomoc. Z g?ry dzi?kuj?.