All pastes #1000532 Raw Edit

Unnamed

public text v1 · immutable
#1000532 ·published 2008-04-28 16:40 UTC
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;}