All pastes #1000536 Raw Edit

Miscellany

public cpp v1 · immutable
#1000536 ·published 2008-04-28 16:44 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;}