rendered paste body#include <a_samp>#include <dudb>#define xFILExDOESxNOTxEXISTS "__FILEDOESNOTEXISTS__"#define STAT_EXT ".stat"#define STAT_DIR "statystyki/"new Text:PlayerTextDraw[200];enum Float:Pos{ Float:sX,Float:sY,Float:sZ };new Float:SavedPos[MAX_PLAYERS][Pos];new PMVEH[200];new Paliwo[700];new PaliwoGlobalne=1000;forward PosCheck();forward ProcessFuelEnd(playerid);forward RespawnVehicle(vid);public OnGameModeInit(){for(new x=0;x<200;x++){ PlayerTextDraw[x] = Text:TextDrawCreate(7.0, 270.0, " "); TextDrawFont(PlayerTextDraw[x], 1); TextDrawSetShadow(PlayerTextDraw[x], 1); TextDrawSetOutline(PlayerTextDraw[x], 0); TextDrawAlignment(PlayerTextDraw[x], 0); TextDrawLetterSize(PlayerTextDraw[x], 0.4, 0.8);}for(new g=0;g<749;g++){SetVehicleToRespawn(g);}SetTimer("PosCheck", 100, true);return true;}public PosCheck(){ new Float:SpeedX; new Float:Z; new Float:X; new Float:Y; new s[256]; for(new g=0;g<200;g++)if(IsPlayerConnected(g)){ s = ""; GetPlayerPos(g, X, Y, Z); SpeedX = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(X,SavedPos[ g ][ sX ])),2),floatpower(floatabs(floatsub(Y,SavedPos[ g ][ sY ])),2)),floatpower(floatabs(floatsub(Z,SavedPos[ g ][ sZ ])),2))); if(!strcmp(GetStat(Split(PlayerName(g), "metrow")), xFILExDOESxNOTxEXISTS, false))SetStat(Split(PlayerName(g), "metrow"), "0"); new GSta = todec(GetStat(Split(PlayerName(g), "metrow"))); new intstr[256]; format(intstr, 256, "%.0f", SpeedX); SetStat(Split(PlayerName(g), "metrow"), tostr(GSta+todec(intstr))); if(IsPlayerInAnyVehicle(g)){ if(SpeedX > 300.0)SpeedX = 0.0; format(s, sizeof(s), "~b~Predkosc : %.0f KM/H", floatmul(SpeedX, 12)); new modelid = GetVehicleModel(GetPlayerVehicleID(g)); if(!IsPlane(modelid))if(modelid != 481 && modelid != 509 && modelid != 510){ if( SavedPos[ g ][ sZ ] > Z) Paliwo[GetPlayerVehicleID(g)] -= (floatround(SpeedX) / 8); else Paliwo[GetPlayerVehicleID(g)] -= (floatround(SpeedX) / 6); } else { if( SavedPos[ g ][ sZ ] > Z) Paliwo[GetPlayerVehicleID(g)] -= (floatround(SpeedX) / 18); else Paliwo[GetPlayerVehicleID(g)] -= (floatround(SpeedX) / 16); } new Float:HealthV; GetVehicleHealth(GetPlayerVehicleID(g), HealthV); HealthV = floatsub(HealthV, 250.0); if(HealthV < 1)HealthV = 0; if(HealthV > 350)format(s, sizeof(s), "%s_~n~~g~Zycie Auta ~w~:~g~ %.0f %%", s, (HealthV/750)*100); if(HealthV < 350 && HealthV > 100)format(s, sizeof(s), "%s_~n~~y~Zycie Auta ~w~:~y~ %.0f %%", s, (HealthV/750)*100); if(HealthV < 100)format(s, sizeof(s), "%s_~n~~r~Zycie Auta ~w~: ~r~%.0f %%", s, (HealthV/750)*100); if(HealthV > 1000)format(s, sizeof(s), "%s_~n~~g~Zycie Auta ~w~: ~r~Nieskonczone (pozostalo %.0fd)", s, HealthV-1000.0); TextDrawSetString(PlayerTextDraw[g],s); if(!IsPlane(GetVehicleModel(GetPlayerVehicleID(g)))){ if(Paliwo[GetPlayerVehicleID(g)] > 0)format(s, sizeof(s), "%s_~n~~w~Paliwo ~w~:~w~ %d %%", s, (Paliwo[GetPlayerVehicleID(g)]*100)/PaliwoGlobalne); else format(s, sizeof(s), "%s_~n~~w~Paliwo ~w~:~w~ 0", s); TextDrawSetString(PlayerTextDraw[g],s); if(Paliwo[GetPlayerVehicleID(g)] < 1){ GameTextForPlayer(g, "~r~Koniec ~w~Paliwa.", 1000, 5); TogglePlayerControllable(g, 0); SetTimerEx("ProcessFuelEnd", 1500, 0, "d", g); SetTimerEx("RespawnVehicle", 40000, 0, "d", GetPlayerVehicleID(g)); } } if(Paliwo[GetPlayerVehicleID(g)] < 100 && Paliwo[GetPlayerVehicleID(g)] > 80){ GameTextForPlayer(g, "~r~Paliwo sie konczy!~n~~w~Zatankuj.", 1000, 5); } } else TextDrawHideForPlayer(g, PlayerTextDraw[g]); SavedPos[ g ][ sX ] = X; SavedPos[ g ][ sY ] = Y; SavedPos[ g ][ sZ ] = Z; } return 1;}GetStat(type[]){ if(!fexist(Split(STAT_DIR, Encode(type), STAT_EXT))){ new No[256]; No = xFILExDOESxNOTxEXISTS; return No; } new File:fh = fopen(Split(STAT_DIR, Encode(type), STAT_EXT), io_readwrite); new result[256]; fread(fh, result); fclose(fh); new Decoded[256]; Decoded = Decode(result); return Decoded;}Split(s1[], s2[], s3[]=""){ new rxx[256]; format(rxx, 256, "%s%s%s", s1, s2, s3); return rxx;}stock PlayerName(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, MAX_PLAYER_NAME); return name;}SetStat(type[], value[]){ fremove(Split(STAT_DIR, Encode(type), STAT_EXT)); new File:fh = fopen(Split(STAT_DIR, Encode(type), STAT_EXT), io_write); fwrite(fh,Encode(value)); fclose(fh); return true;}todec(str[]){ return strval(str);}tostr(int){ new st[256]; format(st, 256, "%d", int); return st;}IsPlane(model){ switch(model) { case 460:return 1; case 464:return 1; case 476:return 1; case 511:return 1; case 512:return 1; case 513:return 1; case 519:return 1; case 520:return 1; case 539:return 1; case 553:return 1; case 577:return 1; case 592:return 1; case 593:return 1; case 417:return 1; case 425:return 1; case 447:return 1; case 465:return 1; case 469:return 1; case 487:return 1; case 488:return 1; case 497:return 1; case 501:return 1; case 548:return 1; case 563:return 1; } return 0;}Encode(str[]){ new result[256]; set(result, str); for(new g=0;g<strlen(str);g++){ if(str[g] > 64 && str[g] < 122){ result[g] = str[g]; } else if(str[g] == 122){ result[g] = 65; } } for(new x=0;x<strlen(result)*2;x++){ if(result[x] > 67) result = CharInject(result, x, result[x]-2); else result = CharInject(result, x, (result[x]+56)-2); x++; } return result;}Decode(str[]){ new result[256]; set(result, str); for(new x=0;x<strlen(result);x++){ result = DeleteChar(result, x+1); } result[(strlen(str)/2)]='\0'; new result2[256]; set(result2, result); for(new g=0;g<strlen(result2);g++){ if(result2[g] > 65 && result2[g] < 123){ result[g] = result2[g]-1; } else if(result2[g] == 65){ result[g] = 122; } } return result;}CharInject(strx[], pos, inject){ new str[256]; set(str, strx); for(new g=pos;g<strlen(str);g++){ str[g+1] = strx[g]; } str[pos] = inject; return str;}DeleteChar(strx[], pos){ new str[256]; set(str, strx); for(new g=pos;g<strlen(str);g++){ str[g] = strx[g+1]; } str[strlen(str)] = '\0'; return str;}public OnPlayerStateChange(playerid, newstate, oldstate){if(newstate == PLAYER_STATE_DRIVER){TextDrawShowForPlayer(playerid, PlayerTextDraw[playerid]);}return true;}public ProcessFuelEnd(playerid){ TogglePlayerControllable(playerid, 1); new Vehid = GetPlayerVehicleID(playerid); RemovePlayerFromVehicle(playerid); for(new g=0;g<200;g++) SetVehicleParamsForPlayer(Vehid,g,0,1); return true;}public RespawnVehicle(vid){SetVehicleToRespawn(vid);return true;}public OnVehicleSpawn(vehicleid){Paliwo[vehicleid] = PaliwoGlobalne;for(new g=0;g<200;g++)if(PMVEH[g]!=vehicleid)SetVehicleParamsForPlayer(vehicleid,g,0,0);return true;}