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

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

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

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

Помогите огроничить очки дрифта!

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

MaZZZila

Дебютант
Помогите огроничить очки дрифта! (Спасибо ставлю всем))

PHP:
#include <a_samp>
#include <ini>

#define DRIFT_MINKAT 10.0
#define DRIFT_MAXKAT 90.0
#define DRIFT_SPEED 30.0
#define DIALOG_LOGIN 998 
#define DIALOG_REGISTER 999
#define AccauntBD "players/%s.ini"

#define COLOR_ORANGE 0xFF8000AA
#define COLOR_RED 0xFF0000AA

forward OnPlayerRegistered(playerid, password[]);
forward OnPlayerLogged(playerid, password[]);
forward OnPlayerSave(playerid);
forward ShowPlayerRegisterDialog(playerid);
forward ShowPlayerLoginDialog(playerid);
forward LevelUpdate();
forward ScoreUp();
forward Drift();
forward AngleUpdate();
forward DriftCancellation(playerid);

enum PlayerData
{
Level[50]
};

enum pInfo
{
	pMoney,
	pScore
};

enum Float:Pos{ Float:sX,Float:sY,Float:sZ };

new Text3D:Level3D[MAX_PLAYERS];
new PlayerInfo[MAX_PLAYERS][pInfo];
new PlayerInf[MAX_PLAYERS][PlayerData];
new LevelStats[MAX_PLAYERS];
new Text:level[11];
new CashScoreOld;
new Text:Textdraw0;
new Text:Textdraw1;
new DriftPointsNow[200];
new PlayerDriftCancellation[200];
new Float:ppos[200][3];
new Float:SavedPos[MAX_PLAYERS][Pos];

public OnFilterScriptInit()
{
SetTimer("AngleUpdate", 200, true);
SetTimer("Drift", 200, true);

Textdraw0 = TextDrawCreate(506.000000,96.000000,"~w~All ~g~Drifting~w~ score");
TextDrawAlignment(Textdraw0,0);
TextDrawBackgroundColor(Textdraw0,0x000000ff);
TextDrawFont(Textdraw0,3);
TextDrawLetterSize(Textdraw0,0.299999,1.000000);
TextDrawColor(Textdraw0,0x00ff00ff);
TextDrawSetOutline(Textdraw0,1);
TextDrawSetProportional(Textdraw0,1);
TextDrawSetShadow(Textdraw0,1);

Textdraw1 = TextDrawCreate(498.000000,77.000000,"~g~0");
TextDrawAlignment(Textdraw1,0);
TextDrawBackgroundColor(Textdraw1,0x000000ff);
TextDrawFont(Textdraw1,3);
TextDrawLetterSize(Textdraw1,0.599999,2.200000);
TextDrawColor(Textdraw1,0xffffffff);
TextDrawSetOutline(Textdraw1,1);
TextDrawSetProportional(Textdraw1,1);
TextDrawSetShadow(Textdraw1,1);
print("Levels Downloading");
 // ==================================================================== //
level[0] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~1");
TextDrawAlignment(level[0],0);
TextDrawBackgroundColor(level[0],0x000000ff);
TextDrawFont(level[0],3);
TextDrawLetterSize(level[0],0.299999,1.000000);
TextDrawColor(level[0],0xffffffff);
TextDrawSetOutline(level[0],1);
TextDrawSetProportional(level[0],1);
TextDrawSetShadow(level[0],1);                             //
                                                                         //
level[1] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~2");
TextDrawAlignment(level[1],0);
TextDrawBackgroundColor(level[1],0x000000ff);
TextDrawFont(level[1],3);
TextDrawLetterSize(level[1],0.299999,1.000000);
TextDrawColor(level[1],0xffffffff);
TextDrawSetOutline(level[1],1);
TextDrawSetProportional(level[1],1);
TextDrawSetShadow(level[1],1);                                 //
                                                                         //
level[2] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~3");
TextDrawAlignment(level[2],0);
TextDrawBackgroundColor(level[2],0x000000ff);
TextDrawFont(level[2],3);
TextDrawLetterSize(level[2],0.299999,1.000000);
TextDrawColor(level[2],0xffffffff);
TextDrawSetOutline(level[2],1);
TextDrawSetProportional(level[2],1);
TextDrawSetShadow(level[2],1);
                                                                         //
level[3] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~4");
TextDrawAlignment(level[3],0);
TextDrawBackgroundColor(level[3],0x000000ff);
TextDrawFont(level[3],3);
TextDrawLetterSize(level[3],0.299999,1.000000);
TextDrawColor(level[3],0xffffffff);
TextDrawSetOutline(level[3],1);
TextDrawSetProportional(level[3],1);
TextDrawSetShadow(level[3],1);                           //
                                                                         //
level[4] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~5");
TextDrawAlignment(level[4],0);
TextDrawBackgroundColor(level[4],0x000000ff);
TextDrawFont(level[4],3);
TextDrawLetterSize(level[4],0.299999,1.000000);
TextDrawColor(level[4],0xffffffff);
TextDrawSetOutline(level[4],1);
TextDrawSetProportional(level[4],1);
TextDrawSetShadow(level[4],1);
                                                                         //
level[5] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~6");
TextDrawAlignment(level[5],0);
TextDrawBackgroundColor(level[5],0x000000ff);
TextDrawFont(level[5],3);
TextDrawLetterSize(level[5],0.299999,1.000000);
TextDrawColor(level[5],0xffffffff);
TextDrawSetOutline(level[5],1);
TextDrawSetProportional(level[5],1);
TextDrawSetShadow(level[5],1);
		                                                                 //
level[6] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~7");
TextDrawAlignment(level[6],0);
TextDrawBackgroundColor(level[6],0x000000ff);
TextDrawFont(level[6],3);
TextDrawLetterSize(level[6],0.299999,1.000000);
TextDrawColor(level[6],0xffffffff);
TextDrawSetOutline(level[6],1);
TextDrawSetProportional(level[6],1);
TextDrawSetShadow(level[6],1);
                                                                         //
level[7] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~8");
TextDrawAlignment(level[7],0);
TextDrawBackgroundColor(level[7],0x000000ff);
TextDrawFont(level[7],3);
TextDrawLetterSize(level[7],0.299999,1.000000);
TextDrawColor(level[7],0xffffffff);
TextDrawSetOutline(level[7],1);
TextDrawSetProportional(level[7],1);
TextDrawSetShadow(level[7],1);

level[8] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~9");
TextDrawAlignment(level[8],0);
TextDrawBackgroundColor(level[8],0x000000ff);
TextDrawFont(level[8],3);
TextDrawLetterSize(level[8],0.299999,1.000000);
TextDrawColor(level[8],0xffffffff);
TextDrawSetOutline(level[8],1);
TextDrawSetProportional(level[8],1);
TextDrawSetShadow(level[8],1);

level[9] = TextDrawCreate(515.000000,106.000000,"Drift level:~g~10");
TextDrawAlignment(level[9],0);
TextDrawBackgroundColor(level[9],0x000000ff);
TextDrawFont(level[9],3);
TextDrawLetterSize(level[9],0.299999,1.000000);
TextDrawColor(level[9],0xffffffff);
TextDrawSetOutline(level[9],1);
TextDrawSetProportional(level[9],1);
TextDrawSetShadow(level[9],1);

level[10] = TextDrawCreate(515.000000,106.000000,"Drift level:~y~VIP");
TextDrawAlignment(level[10],0);
TextDrawBackgroundColor(level[10],0x000000ff);
TextDrawFont(level[10],3);
TextDrawLetterSize(level[10],0.299999,1.000000);
TextDrawColor(level[10],0xffffffff);
TextDrawSetOutline(level[10],1);
TextDrawSetProportional(level[10],1);
TextDrawSetShadow(level[10],1);                                                                             //
SetTimer("LevelUpdate",2000,1);                                      //
// ===================================================================== //
new Max = GetMaxPlayers();
for(new i=0; i<Max; i++)
{
Level3D[i] = Create3DTextLabel(" ",0xFFFFFFAA,0.000,0.000,-4.000,18.0,0,1);
}
return 1;
}
public OnPlayerDeath(playerid,killerid)
{
ScoreUp();
if(IsPlayerConnected(killerid) && killerid != INVALID_PLAYER_ID)
{
new Score = GetPlayerMoney(killerid);
if(Score >= 0 && Score < 20000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}1{FFFFFF}.*\n*{00CCFF}Нуб в дрифтинге{FFFFFF}*");
if(Score >= 20000 && Score < 50000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*Игрок{FFFFFF}*\n*Уровень: {00CCFF}2{FFFFFF}.*\n*{00CCFF}НовичёГГ{FFFFFF}*");
if(Score >= 50000 && Score < 80000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}3{FFFFFF}.*\n*{00CCFF}Начинающтй Дрифтер{FFFFFF}*");
if(Score >= 80000 && Score < 120000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}4{FFFFFF}.*\n*{00CCFF}Проживающий{FFFFFF}*");
if(Score >= 120000 && Score < 150000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}5{FFFFFF}.*\n*{00CCFF}Свой{FFFFFF}*");
if(Score >= 150000 && Score < 180000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}6{FFFFFF}.*\n*{00CCFF}Пахан{FFFFFF}*");
if(Score >= 180000 && Score < 200000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}7{FFFFFF}.*\n*{00CCFF}Pro Drifter{FFFFFF}*");
if(Score >= 200000 && Score < 250000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}8{FFFFFF}.*\n*{00CCFF}ViP{FFFFFF}*");
if(Score >= 250000 && Score < 270000) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}9{FFFFFF}.*\n*{00CCFF}Гловарь{FFFFFF}*");
if(Score >= 270000 ) format(PlayerInf[killerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}*10*{FFFFFF}.*\n*{00CCFF}Король Дрифта{FFFFFF}*");
Update3DTextLabelText(Level3D[killerid],0x00FF00FF,PlayerInf[killerid][Level]);
}
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
ScoreUp();
new Score = GetPlayerMoney(playerid);
if(Score >= 0 && Score < 20000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}1{FFFFFF}.*\n*{00CCFF}Нуб в дрифтинге{FFFFFF}*");
if(Score >= 20000 && Score < 50000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}2{FFFFFF}.*\n*{00CCFF}НовичёГГ{FFFFFF}*");
if(Score >= 50000 && Score < 80000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}3{FFFFFF}.*\n*{00CCFF}Начинающтй Дрифтер{FFFFFF}*");
if(Score >= 80000 && Score < 120000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}4{FFFFFF}.*\n*{00CCFF}Проживающий{FFFFFF}*");
if(Score >= 120000 && Score < 150000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}5{FFFFFF}.*\n*{00CCFF}Свой{FFFFFF}*");
if(Score >= 150000 && Score < 180000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}6{FFFFFF}.*\n*{00CCFF}Пахан{FFFFFF}*");
if(Score >= 180000 && Score < 200000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}7{FFFFFF}.*\n*{00CCFF}Pro Drifter{FFFFFF}*");
if(Score >= 200000 && Score < 250000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}8{FFFFFF}.*\n*{00CCFF}ViP{FFFFFF}*");
if(Score >= 250000 && Score < 270000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}9{FFFFFF}.*\n*{00CCFF}Гловарь{FFFFFF}*");
if(Score >= 270000 ) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}*10*{FFFFFF}.*\n*{00CCFF}Король Дрифта{FFFFFF}*");
if(LevelStats[playerid] == 0) Attach3DTextLabelToPlayer(Level3D[playerid],playerid,0.0,0.0,0.47);
Update3DTextLabelText(Level3D[playerid],0x00FF00FF,PlayerInf[playerid][Level]);
LevelStats[playerid] = 1;
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
ScoreUp();
new Score = GetPlayerMoney(playerid);
if(Score >= 0 && Score < 20000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}1{FFFFFF}.*\n*{00CCFF}Нуб в дрифтинге{FFFFFF}*");
if(Score >= 20000 && Score < 50000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}2{FFFFFF}.*\n*{00CCFF}НовичёГГ{FFFFFF}*");
if(Score >= 50000 && Score < 80000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}3{FFFFFF}.*\n*{00CCFF}Начинающтй Дрифтер{FFFFFF}*");
if(Score >= 80000 && Score < 120000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}4{FFFFFF}.*\n*{00CCFF}Проживающий{FFFFFF}*");
if(Score >= 120000 && Score < 150000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}5{FFFFFF}.*\n*{00CCFF}Свой{FFFFFF}*");
if(Score >= 150000 && Score < 180000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}6{FFFFFF}.*\n*{00CCFF}Пахан{FFFFFF}*");
if(Score >= 180000 && Score < 200000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}7{FFFFFF}.*\n*{00CCFF}Pro Drifter{FFFFFF}*");
if(Score >= 200000 && Score < 250000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}8{FFFFFF}.*\n*{00CCFF}ViP{FFFFFF}*");
if(Score >= 250000 && Score < 270000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}9{FFFFFF}.*\n*{00CCFF}Гловарь{FFFFFF}*");
if(Score >= 270000 ) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}*10*{FFFFFF}.*\n*{00CCFF}Король Дрифта{FFFFFF}*");
if(LevelStats[playerid] == 0) Attach3DTextLabelToPlayer(Level3D[playerid],playerid,0.0,0.0,0.47);
Update3DTextLabelText(Level3D[playerid],0x00FF00FF,PlayerInf[playerid][Level]);
LevelStats[playerid] = 1;
return 1;
}
public OnPlayerSpawn(playerid)
{
TextDrawHideForPlayer(playerid,Textdraw0);
TextDrawHideForPlayer(playerid,Textdraw1);
ScoreUp();
new Score = GetPlayerMoney(playerid);
if(Score >= 0 && Score < 20000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}1{FFFFFF}.*\n*{00CCFF}Нуб в дрифтинге{FFFFFF}*");
if(Score >= 20000 && Score < 50000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}2{FFFFFF}.*\n*{00CCFF}НовичёГГ{FFFFFF}*");
if(Score >= 50000 && Score < 80000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}3{FFFFFF}.*\n*{00CCFF}Начинающтй Дрифтер{FFFFFF}*");
if(Score >= 80000 && Score < 120000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}4{FFFFFF}.*\n*{00CCFF}Проживающий{FFFFFF}*");
if(Score >= 120000 && Score < 150000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}5{FFFFFF}.*\n*{00CCFF}Свой{FFFFFF}*");
if(Score >= 150000 && Score < 180000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}Игрок{FFFFFF}*\n*Уровень: {00CCFF}6{FFFFFF}.*\n*{00CCFF}Пахан{FFFFFF}*");
if(Score >= 180000 && Score < 200000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}7{FFFFFF}.*\n*{00CCFF}Pro Drifter{FFFFFF}*");
if(Score >= 200000 && Score < 250000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}8{FFFFFF}.*\n*{00CCFF}ViP{FFFFFF}*");
if(Score >= 250000 && Score < 270000) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}9{FFFFFF}.*\n*{00CCFF}Гловарь{FFFFFF}*");
if(Score >= 270000 ) format(PlayerInf[playerid][Level],200,"{FFFFFF}*{00CCFF}*ViP*{FFFFFF}*\n*Уровень: {00CCFF}*10*{FFFFFF}.*\n*{00CCFF}Король Дрифта{FFFFFF}*");
if(LevelStats[playerid] == 0) Attach3DTextLabelToPlayer(Level3D[playerid],playerid,0.0,0.0,0.47);
Update3DTextLabelText(Level3D[playerid],0x00FF00FF,PlayerInf[playerid][Level]);
LevelStats[playerid] = 1;
return 1;
}

Float:GetPlayerTheoreticAngle(i)
{
	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 OnFilterScriptExit()
{
	return 1;
}
public OnPlayerRequestClass(playerid, classid)//Паблик При выборе скина
{
    TextDrawHideForPlayer(playerid,Textdraw0);
    TextDrawHideForPlayer(playerid,Textdraw1);
    ScoreUp();
    new string[128];
    PlayerInfo[playerid][pMoney] = 0;
    PlayerInfo[playerid][pScore] = 0;
    if(GetPVarInt(playerid,"Login") == 0)
    {
    format(string,sizeof(string),AccauntBD,PlayerName(playerid));
    if(fexist(string)) // ищем файл игрока
    {
    ShowPlayerLoginDialog(playerid); // если он есть открываем диолог логина
    }
    else
    {
    ShowPlayerRegisterDialog(playerid); // если его нет открываем диолог регистрации
    }
    }
    return 1;
    }
public OnPlayerConnect(playerid)
{
    SetPVarInt(playerid,"Login",0);
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	OnPlayerSave(playerid); // сохраняет акк игрока при выходе с сервера
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_LOGIN) // диалог логина
    {
        if(!response) Kick(playerid);
        if(strlen(inputtext) == 0) return ShowPlayerLoginDialog(playerid);
        OnPlayerLogged(playerid, inputtext);
        return 1;
    }
	if(dialogid == DIALOG_REGISTER) // диалог регистрации
    {
        if(!response) Kick(playerid);
        if(strlen(inputtext) == 0) return ShowPlayerRegisterDialog(playerid);
        OnPlayerRegistered(playerid, inputtext);
        return 1;
    }
	return 0;
}

public OnPlayerLogged(playerid, password[])
{
	new string[128];
    format(string,sizeof(string),AccauntBD,PlayerName(playerid));
    new iniFile = ini_openFile(string);
    ini_getString(iniFile, "Password",string);
    if(strcmp(string,password, true, 10) == 0)
	{
        ini_getInteger(iniFile,"Money",PlayerInfo[playerid][pMoney]);
        ini_getInteger(iniFile,"Score",PlayerInfo[playerid][pScore]);
        ini_closeFile(iniFile);
        GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);
        SetPlayerScore(playerid,PlayerInfo[playerid][pScore]);
    }
	else
	{
        ShowPlayerLoginDialog(playerid);
        SendClientMessage(playerid,COLOR_RED,"{FFFFFF}*Неверный {00CCFF}пароль{FFFFFF}. Попробуйте еще {00CCFF}раз{FFFFFF}.");
        ini_closeFile(iniFile);
    }
    return 1;
}

public OnPlayerRegistered(playerid, password[])
{
    new IP[24],strdate[24],string[128];
    new year,month,day;
	getdate(year, month, day);
    GetPlayerIp(playerid, IP, sizeof(IP));

    format(string,sizeof(string),AccauntBD,PlayerName(playerid));
    new iniFile = ini_createFile(string);
    if(iniFile < 0)
    iniFile = ini_openFile(string);
    ini_setString(iniFile, "Password",password);
	format(strdate, sizeof(strdate), "%d/%d/%d",day,month,year);
	ini_setString(iniFile, "RegDate", strdate);
	ini_setString(iniFile, "IP",IP);
 	ini_setInteger(iniFile,"Money",0);
	ini_setInteger(iniFile,"Score",0);
    ini_closeFile(iniFile);
    OnPlayerLogged(playerid,password);
    format(string,sizeof(string), "{FFFFFF}*Вы зарегистрировались и {00CCFF}автоматически залогинились{FFFFFF}. Ваш пароль: {00CCFF}%s{FFFFFF}.",password);
    SendClientMessage(playerid,COLOR_ORANGE,string);
    GivePlayerMoney(playerid,10000);
    return 1;
}

public OnPlayerSave(playerid)
{
	new string[128];
    format(string,sizeof(string),AccauntBD,PlayerName(playerid));
    new iniFile = ini_openFile (string);
	ini_setInteger(iniFile,"Money",GetPlayerMoney(playerid));
	ini_setInteger(iniFile,"Score",GetPlayerScore(playerid));
    ini_closeFile(iniFile);
    return 1;
}

public ShowPlayerRegisterDialog(playerid) // тут изменять то что  пишет игроку если он первый раз на сервере
{
	new string[256];
	format(string,sizeof(string), "{FFFFFF}Форма Регистрации\n{00CCFF}*{FFFFFF}Ваш ник {00CCFF}%s{FFFFFF}.\n{00CCFF}*{FFFFFF}Введите пароль в {00CCFF}окно{FFFFFF}.",PlayerName(playerid));
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "{FFFFFF}..::{00CCFF}Регистрация{FFFFFF}::..", string, ".:Регистр:.", ".:Отмена:.");
	return 1;
}

public ShowPlayerLoginDialog(playerid) // тут изменять то что пишет игроку если он уже зареган
{
    SetPVarInt(playerid,"Login",1);
 	new string[256];
	format(string,sizeof(string), "{FFFFFF}Форма Авторизации\n{00CCFF}*{FFFFFF}Введи свой пароль {00CCFF}%s{FFFFFF}.\nКоторый ты написал при {00CCFF}Регистрации{FFFFFF}.",PlayerName(playerid));
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "{FFFFFF}..::{00CCFF}Логин{FFFFFF}::..", string, ".:Логин:.", ".:Отмена:.");
	return 1;
}
public LevelUpdate()
{
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        TextDrawHideForPlayer(i,level[0]);
        TextDrawHideForPlayer(i,level[1]);
        TextDrawHideForPlayer(i,level[2]);
        TextDrawHideForPlayer(i,level[3]);
        TextDrawHideForPlayer(i,level[4]);
        TextDrawHideForPlayer(i,level[5]);
        TextDrawHideForPlayer(i,level[6]);
        TextDrawHideForPlayer(i,level[7]);
        TextDrawHideForPlayer(i,level[8]);
        TextDrawHideForPlayer(i,level[9]);
        TextDrawHideForPlayer(i,level[10]);

        new kill  = GetPlayerMoney(i);
        if(kill >= 0 && kill <= 20000) { TextDrawShowForPlayer(i,level[0]); }
        else if(kill >= 20000 && kill <= 50000) { TextDrawShowForPlayer(i,level[1]); }
        else if(kill >= 50000 && kill <= 80000) { TextDrawShowForPlayer(i,level[2]); }
        else if(kill >= 80000 && kill <= 120000) { TextDrawShowForPlayer(i,level[3]); }
        else if(kill >= 120000 && kill <= 150000) { TextDrawShowForPlayer(i,level[4]); }
        else if(kill >= 150000 && kill <= 180000) { TextDrawShowForPlayer(i,level[5]); }
        else if(kill >= 180000 && kill <= 200000) { TextDrawShowForPlayer(i,level[6]); }
        else if(kill >= 200000 && kill <= 250000) { TextDrawShowForPlayer(i,level[7]); }
        else if(kill >= 250000 && kill <= 270000) { TextDrawShowForPlayer(i,level[8]); }
        else if(kill >= 270000 && kill <= 290000) { TextDrawShowForPlayer(i,level[9]); }
        else if(kill >= 300000) { TextDrawShowForPlayer(i,level[10]); }

        else { TextDrawShowForPlayer(i,level[0]); }
    }
    return 1;
}
public DriftCancellation(playerid){ 
	PlayerDriftCancellation[playerid] = 0;
	GameTextForPlayer(playerid, Split("~n~~n~~n~~n~~n~~n~~n~~n~~w~~w~Drifting Bonus:~b~ ", tostr(DriftPointsNow[playerid]), "~w~!"), 3000, 3);
    GivePlayerMoney(playerid, DriftPointsNow[playerid]);
	DriftPointsNow[playerid] = 0;
}

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[256];
	new Float:Z;
	new Float:X;
	new Float:Y;
	new Float:SpeedX;
	for(new g=0;g<200;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] += floatval( floatabs(floatsub(Angle1, Angle2)) * 3 * (BySpeed*0.1) )/10;
			PlayerDriftCancellation[g] = SetTimerEx("DriftCancellation", 3000, 0, "d", g);
		}
		if(DriftPointsNow[g] > 0){
			format(s, sizeof(s), "~n~~n~~n~~n~~n~~n~~n~~n~~w~Drifting Score: ~b~%d~w~!", DriftPointsNow[g]);
			GameTextForPlayer(g, s, 3000, 3);
		}
		SavedPos[ g ][ sX ] = X;
		SavedPos[ g ][ sY ] = Y;
		SavedPos[ g ][ sZ ] = Z;
	}
}

Split(s1[], s2[], s3[]=""){ 
	new rxx[256];
	format(rxx, 256, "%s%s%s", s1, s2, s3);
	return rxx;
}

tostr(int){ 
	new st[256];
	format(st, 256, "%d", int);
	return st;
}

public AngleUpdate(){ 
	for(new g=0;g<200;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;
	}
}

floatval(Float:val){ 
	new str[256];
	format(str, 256, "%.0f", val);
	return todec(str);
}

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;
}

todec(str[]){ // By Luby
	return strval(str);
}
public ScoreUp()
{
	new CashScore;
	new name[MAX_PLAYER_NAME];
	for(new i=0; i<MAX_PLAYERS; i++)
	{
		if (IsPlayerConnected(i))
		{
			GetPlayerName(i, name, sizeof(name));
   			CashScore = GetPlayerMoney(i);
			SetPlayerScore(i, CashScore);
			if (CashScore > CashScoreOld)
			{
				CashScoreOld = CashScore;
			}
		}
	}
}
stock PlayerName(playerid) // функция узнающая име игрока (автора не знаю)
{
	new name[MAX_PLAYER_NAME];
	GetPlayerName(playerid,name,sizeof(name));
	return name;
}
Нужно ограничить очки дрифта до 3000 помогите!
Нажму +
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу