#include <a_samp>new Text:Textdraw0[MAX_PLAYERS];new Float:Velocity [3];public OnFilterScriptInit(){for(new i;i < MAX_PLAYERS;i++){Textdraw0 = TextDrawCreate(502.000000, 372.000000, \"-\");TextDrawBackgroundColor(Textdraw0, 255);TextDrawFont(Textdraw0, 2);TextDrawLetterSize(Textdraw0, 0.300000, 1.000000);TextDrawColor(Textdraw0, -1);TextDrawSetOutline(Textdraw0, 0);TextDrawSetProportional(Textdraw0, 1);TextDrawSetShadow(Textdraw0, 1);}SetTimer(\"Speed\", 100, true);return 1;}public OnFilterScriptExit(){for(new i;i < MAX_PLAYERS;i++){TextDrawHideForAll(Textdraw0);TextDrawDestroy(Textdraw0);}return 1;}public OnPlayerStateChange(playerid, newstate, oldstate){if(newstate == PLAYER_STATE_DRIVER){TextDrawShowForPlayer(playerid, Textdraw0[playerid]);}else if(oldstate == PLAYER_STATE_DRIVER){TextDrawHideForPlayer(playerid, Textdraw0[playerid]);}return 1;}forward Speed(playerid);public Speed(playerid){ new string[48]; format(string,sizeof(string),\"%i\",GetSpeed(playerid)); TextDrawSetString(Textdraw0[playerid],string); return 1;}stock GetSpeed ( playerid , mode = 1 ){ GetVehicleVelocity ( GetPlayerVehicleID ( playerid ) , Velocity [ 0 ] , Velocity [ 1 ] , Velocity [ 2 ] ) ; return IsPlayerInAnyVehicle ( playerid ) ? floatround ( ( ( floatsqroot ( ( ( Velocity [ 0 ] * Velocity [ 0 ] ) + ( Velocity [ 1 ] * Velocity [ 1 ] ) + ( Velocity [ 2 ] * Velocity [ 2 ] ) ) ) * ( !mode ? 105.0 : 162.5 ) ) ) * 1 ) : 0;}
#include <a_samp>new Text:Textdraw0[MAX_PLAYERS];new Float:Velocity [3];public OnFilterScriptInit(){for(new i;i < MAX_PLAYERS;i++){ Textdraw0 = TextDrawCreate(502.000000, 372.000000, \"-\"); TextDrawBackgroundColor(Textdraw0, 255); TextDrawFont(Textdraw0, 2); TextDrawLetterSize(Textdraw0, 0.300000, 1.000000); TextDrawColor(Textdraw0, -1); TextDrawSetOutline(Textdraw0, 0); TextDrawSetProportional(Textdraw0, 1); TextDrawSetShadow(Textdraw0, 1);}SetTimer(\"Speed\", 100, true);return 1;}public OnFilterScriptExit(){for(new i;i < MAX_PLAYERS;i++){ TextDrawHideForAll(Textdraw0); TextDrawDestroy(Textdraw0);}return 1;}public OnPlayerStateChange(playerid, newstate, oldstate){if(newstate == PLAYER_STATE_DRIVER){TextDrawShowForPlayer(playerid, Textdraw0[playerid]);}else if(oldstate == PLAYER_STATE_DRIVER){TextDrawHideForPlayer(playerid, Textdraw0[playerid]);}return 1;}forward Speed();public Speed(){for(new i = 0; i < MAX_PLAYERS;i++){if(IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER){ new string_[48]; format(string_,sizeof(string_),\"%d\",GetSpeed(i)); TextDrawSetString(Textdraw0,string_);}}}stock GetSpeed ( playerid , mode = 1 ){ GetVehicleVelocity ( GetPlayerVehicleID ( playerid ) , Velocity [ 0 ] , Velocity [ 1 ] , Velocity [ 2 ] ) ; return IsPlayerInAnyVehicle ( playerid ) ? floatround ( ( ( floatsqroot ( ( ( Velocity [ 0 ] * Velocity [ 0 ] ) + ( Velocity [ 1 ] * Velocity [ 1 ] ) + ( Velocity [ 2 ] * Velocity [ 2 ] ) ) ) * ( !mode ? 105.0 : 162.5 ) ) ) * 1 ) : 0;}
SetTimerEx(\"Speed\", 500, true, \"i\", playerid);
public OnPlayerStateChange(playerid, newstate, oldstate){if(newstate == PLAYER_STATE_DRIVER){TextDrawShowForPlayer(playerid, Textdraw0[playerid]); Timer1[playerid] = SetTimerEx(\"Speed\", 100, true,\"u\",playerid);}else if(oldstate == PLAYER_STATE_DRIVER){TextDrawHideForPlayer(playerid, Textdraw0[playerid]); KillTimer(Timer1[playerid]);}return 1;}
bbTamas, akos27, ne haragudjatok, de egy kis túlzással :facepalm:Tamás, a forráskódot a kedves témanyitó már rég megcsinálta, de csak a 0-s ID-n mûködött, valószínûleg az elsõ hszemben leírt okok miatt, hát nem értem, miért írtad le neki (rádaásul hibásan), hogy hogy csinálja meg, mikor már egyszer megcsinálta.Ákos, igazad van, PlayerTextDrawval is megoldható a dolog, de õ simával oldotta meg. És nem ez itt a probléma, ugyanis ha megnézed a kódját, minden játékos ID-hez csatolva létrehozott egy-egy sima TextDrawot.A Speed timernél pedig mindent jól csinált, legalábbis ott, ahol megadta a lefuttatandó függvényeket, ugyanis ott nem kell semmi féle ciklus, meg felesleges minden játékoson végigmenni. Egyszerûen playeridhez kell csatolni a timert, az OnPlayerConncet alatt meghívva. Így ráadásul csak azt a playert nézi majd a timer, aki online van a szerveren. A kód viszont lemaradt: SetTimerEx(\"Speed\", 500, true, \"i\", playerid);
new Float:Velocity [3];
new string_[48];format(string_,sizeof(string_),\"%d\",GetSpeed(i));
én bbTamas megoldását használnám Dfoglalo kódjában az a baj hogy pl 30 játékosnak 1-1 timer azért elég sok...nagyobb slotnál meg ne is mondjam spórolni kell az erõforrással még ha nem is laggolsz be miatta mert elég erõs a szerver gép, attól még oda kell figyelni hogy mennyire terheled! különösebb hibát nem látok bbTamas kódjában csak 1-2 dolgot amit nem így csinálnék: new Float:Velocity [3]; ezt lokálisan hoznám létre new string_[48];format(string_,sizeof(string_),\"%d\",GetSpeed(i)); ide nem raknék 48 cellát szerintem a 4 is elég...