19.11.2009, 04:57
The following code works fine to get the vehicle health for the first user in the game, as soon as an other player spawns or gets a vehicle all things go wrong
I can't figure it out how to make it work for multiple players...
I must somehow make it remember the correct timer for the correct user, right? Any idea's?
I can't figure it out how to make it work for multiple players...
I must somehow make it remember the correct timer for the correct user, right? Any idea's?
Код:
#include <a_samp> #include <a_npc> new Text:InfoBox; new IBoxString[128]; new ITimer[999]; new PID[999]; public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Vehicle Health Script "); print("--------------------------------------\n"); return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { KillTimer(ITimer[PID[playerid]]); TextDrawHideForPlayer(PID[playerid], InfoBox); return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { if(newstate == PLAYER_STATE_DRIVER) { InfoBox = TextDrawCreate(200.0, 360.0, " "); TextDrawUseBox(InfoBox,0); TextDrawTextSize(InfoBox, 440, 410); TextDrawBoxColor(InfoBox,0x00000066); TextDrawSetOutline(InfoBox,1); TextDrawLetterSize(InfoBox,0.5,1.2); TextDrawSetShadow(InfoBox,0); PID[playerid] = playerid; ITimer[PID[playerid]] = SetTimer("UInfoBox", 100, 1); } else { KillTimer(ITimer[PID[playerid]]); TextDrawHideForPlayer(PID[playerid], InfoBox); } return 1; } forward UInfoBox(); public UInfoBox() { new vehicleid = GetPlayerVehicleID(PID[playerid]); new Float:VHealth; GetVehicleHealth(vehicleid, VHealth); VHealth = (VHealth/10); format(IBoxString, 128, "~r~Vehicle Health: ~y~%.1f~n~~r~", VHealth); TextDrawHideForPlayer(PID[playerid], InfoBox); TextDrawSetString(InfoBox, IBoxString); TextDrawShowForPlayer(PID[playerid], InfoBox); }