Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

ДрИФт Счётчик

Статус
В этой теме нельзя размещать новые ответы.

Tokio-Drift

Начинающий
Пользователь
Регистрация
13 Апр 2012
Сообщения
72
Лучшие ответы
0
Репутация
34
И так я вам сейчас покажу дрифт счётчик для сервера вырезал из какого мода не помню уже....
И так приступим....


Ко всем ==define== добавим
PHP:
#define COLOR_GREEN 0x33AA33FF
#define DRIFT_MINKAT 10.0
#define DRIFT_MAXKAT 90.0
#define DRIFT_SPEED 30.0

Ко всем ==NEw== добавим
PHP:
new dtimer, atimer;
new Text:Score[MAX_PLAYERS];
new Text:Chet[MAX_PLAYERS];
new scores[MAX_PLAYERS], scplay[MAX_PLAYERS], chets[MAX_PLAYERS];
new PlayerDriftCancellation[200];
new DriftPointsNow[200];
new Float:ppos[200][3];
enum Float:Pos{ Float:sX,Float:sY,Float:sZ };
new Float:SavedPos[MAX_PLAYERS][Pos];
К "enum pInfo" добавим
PHP:
pScore,
Ко всем "==forward==" добавим
PHP:
forward Drift();
forward AngleUpdate(); // by Tokio
forward DriftCancellation(playerid);
В "public OnFilterScriptInit()" добавим
PHP:
dtimer = SetTimer("Drift", 200, true);
atimer = SetTimer("AngleUpdate", 200, true);
В "public OnFilterScriptExit()" добавим
HTML:
KillTimer(dtimer);
KillTimer(atimer);
В "public OnPlayerConnect(playerid)" добавим

PHP:
   	scores[playerid] = 0;
   	chets[playerid] = 1;
   	scplay[playerid] = 1;
   	
//=============================TextDraw=========================================
 	Score[playerid] = TextDrawCreate(500,150,"-");
	TextDrawAlignment(Score[playerid],0);
	TextDrawBackgroundColor(Score[playerid],0x000000ff);
	TextDrawFont(Score[playerid],3);
	TextDrawLetterSize(Score[playerid],0.4,1.5);
	TextDrawColor(Score[playerid],COLOR_GREEN);
	TextDrawSetOutline(Score[playerid],1);
	TextDrawSetProportional(Score[playerid],1);
	TextDrawSetShadow(Score[playerid],1);
//============================TextDraw==========================================
 	Chet[playerid] = TextDrawCreate(500,170,"-");
	TextDrawAlignment(Chet[playerid],0);
	TextDrawBackgroundColor(Chet[playerid],0x000000ff);
	TextDrawFont(Chet[playerid],3);
	TextDrawLetterSize(Chet[playerid],0.5,1.7);
	TextDrawColor(Chet[playerid],0xA4A2AEF6);
	TextDrawSetOutline(Chet[playerid],1);
	TextDrawSetProportional(Chet[playerid],1);
	TextDrawSetShadow(Chet[playerid],1);
//==============================================================================
В "public OnPlayerDisconnect(playerid, reason)" добавим
PHP:
    TextDrawDestroy(Score[playerid]);
    TextDrawDestroy(Chet[playerid]);
В конец мода добавим
PHP:
Float:GetPlayerTheoreticAngle(i) // By Tokio
{
        new Float:sin;
        new Float:dis;
        new Float:angle2;
        new Float:x,Float:y,Float:z;
        new Float:tmp3;
        new Float:tmp4;
        new Float:MindAngle;

        if(IsPlayerConnected(i))
		{
                GetPlayerPos(i,x,y,z);
                dis = floatsqroot(floatpower(floatabs(floatsub(x,ppos[i][0])),2)+floatpower(floatabs(floatsub(y,ppos[i][1])),2));
                if(IsPlayerInAnyVehicle(i)){GetVehicleZAngle(GetPlayerVehicleID(i), angle2);}else{GetPlayerFacingAngle(i, angle2);}
                if(x>ppos[i][0]){tmp3=x-ppos[i][0];}else{tmp3=ppos[i][0]-x;}
                if(y>ppos[i][1]){tmp4=y-ppos[i][1];}else{tmp4=ppos[i][1]-y;}
                if(ppos[i][1]>y && ppos[i][0]>x)
				{
                	sin = asin(tmp3/dis);
                    MindAngle = floatsub(floatsub(floatadd(sin, 90), floatmul(sin, 2)), -90.0);
                }
                if(ppos[i][1]<y && ppos[i][0]>x)
				{
                    sin = asin(tmp3/dis);
                    MindAngle = floatsub(floatadd(sin, 180), 180.0);
                }
                if(ppos[i][1]<y && ppos[i][0]<x)
				{
                    sin = acos(tmp4/dis);
                    MindAngle = floatsub(floatadd(sin, 360), floatmul(sin, 2));
                }
                if(ppos[i][1]>y && ppos[i][0]<x)
				{
                    sin = asin(tmp3/dis);
                    MindAngle = floatadd(sin, 180);
                }
        }

        if(MindAngle == 0.0)
		{
			return angle2;
		}
		else
		{
			return MindAngle;
		}
}

public DriftCancellation(playerid)
{
	PlayerDriftCancellation[playerid] = 0;
    GivePlayerMoney(playerid, DriftPointsNow[playerid]);
    PlayerInfo[playerid][pScore] += scores[playerid];
    SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
	DriftPointsNow[playerid] = 0;
	scores[playerid] = 0;
	TextDrawHideForPlayer(playerid, Chet[playerid]);
}

Float:ReturnPlayerAngle(playerid)
{
	new Float:Ang;
	if(IsPlayerInAnyVehicle(playerid))GetVehicleZAngle(GetPlayerVehicleID(playerid), Ang); else GetPlayerFacingAngle(playerid, Ang);
	return Ang;
}

public Drift()
{
	new Float:Angle1, Float:Angle2, Float:BySpeed, s[128];
	new Float:Z;
	new Float:X;
	new Float:Y;
	new Float:SpeedX;
	for(new g=0;g<MAX_PLAYERS;g++)
	{
		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)));
		Angle1 = ReturnPlayerAngle(g);
		Angle2 = GetPlayerTheoreticAngle(g);
		BySpeed = floatmul(SpeedX, 12);
		if(IsPlayerInAnyVehicle(g) && IsCar(GetPlayerVehicleID(g)) && floatabs(floatsub(Angle1, Angle2)) > DRIFT_MINKAT && floatabs(floatsub(Angle1, Angle2)) < DRIFT_MAXKAT && BySpeed > DRIFT_SPEED)
		{
			if(PlayerDriftCancellation[g] > 0)KillTimer(PlayerDriftCancellation[g]);
			PlayerDriftCancellation[g] = 0;
			DriftPointsNow[g] += 10;
			scores[g]++;
			PlayerDriftCancellation[g] = SetTimerEx("DriftCancellation", 2000, 0, "d", g);
		}
		if(DriftPointsNow[g] > 0)
		{
		    if(scplay[g] == 1)
		    {
			    TextDrawShowForPlayer(g,Chet[g]);
				format(s, sizeof(s), "drift: +%d$", DriftPointsNow[g]);
				TextDrawSetString(Chet[g], s);
			}
		}
		SavedPos[ g ][ sX ] = X;
		SavedPos[ g ][ sY ] = Y;
		SavedPos[ g ][ sZ ] = Z;
	}
}

IsCar(model)
{
	switch(model)
	{
		case 443:return 0;
		case 448:return 0;
		case 461:return 0;
		case 462:return 0;
		case 463:return 0;
		case 468:return 0;
		case 521:return 0;
		case 522:return 0;
		case 523:return 0;
		case 581:return 0;
		case 586:return 0;
		case 481:return 0;
		case 509:return 0;
		case 510:return 0;
		case 430:return 0;
		case 446:return 0;
		case 452:return 0;
		case 453:return 0;
		case 454:return 0;
		case 472:return 0;
		case 473:return 0;
		case 484:return 0;
		case 493:return 0;
		case 595:return 0;
		case 417:return 0;
		case 425:return 0;
		case 447:return 0;
		case 465:return 0;
		case 469:return 0;
		case 487:return 0;
		case 488:return 0;
		case 497:return 0;
		case 501:return 0;
		case 548:return 0;
		case 563:return 0;
		case 406:return 0;
		case 444:return 0;
		case 556:return 0;
		case 557:return 0;
		case 573:return 0;
		case 460:return 0;
		case 464:return 0;
		case 476:return 0;
		case 511:return 0;
		case 512:return 0;
		case 513:return 0;
		case 519:return 0;
		case 520:return 0;
		case 539:return 0;
		case 553:return 0;
		case 577:return 0;
		case 592:return 0;
		case 593:return 0;
		case 471:return 0;
	}
	return 1;
}

public AngleUpdate()
{ // By Tokio
	for(new g=0;g<=MAX_PLAYERS;g++)
	{
		new Float:x, Float:y, Float:z;
		if(IsPlayerInAnyVehicle(g))GetVehiclePos(GetPlayerVehicleID(g), x, y, z); else GetPlayerPos(g, x, y, z);
		ppos[g][0] = x;
		ppos[g][1] = y;
		ppos[g][2] = z;
	}
}

public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    if(DriftPointsNow[playerid] > 0)
	{
	    DriftPointsNow[playerid] = 0;
	    scores[playerid] = 0;
		TextDrawSetString(Chet[playerid], "~r~Crash");
	}
	return 1;
}
В "public OnPlayerSpawn(playerid)" добавим
PHP:
    TextDrawHideForPlayer(playerid, Chet[playerid]);
    TextDrawShowForPlayer(playerid,Score[playerid]);

В "public OnPlayerUpdate(playerid)" добавим
PHP:
    new string[128];//Обновление Score:%d
    format(string,sizeof(string),"score %07d",PlayerInfo[playerid][pScore]);
	TextDrawSetString(Score[playerid],string);




P.S. Это мой 1 Мануал камнями сильно не кидаться:D
Если у кого-то не получилось пишите в скайп Dj_lovik
Если не жалко поставте + ...И не говорите что вырезал-вырезал..
Многие просили вот я и вырезал:D



---------- Post added at 18:58 ---------- Previous post was at 18:57 ----------

Простите сейчас обновлю скрин добавлю......


Ответов: 11
Просмотров: 181

Что за х?
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу