SA-MP Forums Archive
Serius Help - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: Serius Help (/showthread.php?tid=231961)



Serius Help - Rock18 - 26.02.2011

Hey , i have a Drift Points Counter and i wanna make drift points to save in player profile . And a command like /topdrifters to see who has the most drift points . I don't know if you have time to help me do this but if you cand help me please do it.
This is the Drift Point Counter .
Код:
#include a_samp
        #define DRIFT_MINKAT 10.0
        #define DRIFT_MAXKAT 90.0
        #define COLOR_LIGHTRED 0xFF0000FF
        #define COLOR_LIGHTBLUE 0x33CCFFAA
        #define DRIFT_SPEED 30.0
        #pragma tabsize 0
        #pragma unused GetPlayerTheoreticAngle

        new Float:ppos[200][3];
        enum Float:Pos{ Float:sX,Float:sY,Float:sZ };
        new Float:SavedPos[MAX_PLAYERS][Pos];
        new DriftPointsNow[200];
        new PunktyDriftuGracza[200];
        new Text:DriftTD[200];
        new Text:DriftTD2[200];
        new Text:Textdraw0;
        forward LicznikDriftu();
        forward clock();
        forward PodsumowanieDriftu(playerid);
        public OnPlayerConnect(playerid)
    	{
		new x;
		TextDrawHideForPlayer(playerid, DriftTD[x]);
		TextDrawHideForPlayer(playerid, DriftTD2[x]);
		TextDrawHideForPlayer(playerid, Textdraw0);
		return 1;
    	}
        IsCar(vid)
        {
	    new model = GetVehicleModel(vid);
	    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;
        }
		forward AngleUpdate();
		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;
   		}
		}
		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){ //1
			sin = asin(tmp3/dis);
			MindAngle = floatsub(floatsub(floatadd(sin, 90), floatmul(sin, 2)), -90.0);
		}
		if(ppos[i][1]<y && ppos[i][0]>x){ //2
			sin = asin(tmp3/dis);
			MindAngle = floatsub(floatadd(sin, 180), 180.0);
		}
		if(ppos[i][1]<y && ppos[i][0]<x){ //3
			sin = acos(tmp4/dis);
			MindAngle = floatsub(floatadd(sin, 360), floatmul(sin, 2));
		}
		if(ppos[i][1]>y && ppos[i][0]<x){ //4
			sin = asin(tmp3/dis);
			MindAngle = floatadd(sin, 180);
		}
		}
		if(MindAngle == 0.0){
		return angle2;
		} else
		return MindAngle;
        }
        public PodsumowanieDriftu(playerid){
	    PunktyDriftuGracza[playerid] = 0;
        GivePlayerMoney(playerid,DriftPointsNow[playerid]);
	    DriftPointsNow[playerid] = 0;
        SetTimer("DMCDP",5000,false);
        TextDrawSetString(DriftTD[playerid],"Drift Money:");
		TextDrawSetString(DriftTD2[playerid],"Drift Points:");
        }

        Float:ReturnPlayerAngle(playerid){
	    new Float:Ang;
	    if(IsPlayerInAnyVehicle(playerid))GetVehicleZAngle(GetPlayerVehicleID(playerid), Ang); else GetPlayerFacingAngle(playerid, Ang);
	    return Ang;
        }
        public LicznikDriftu(){
        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(GetPlayerState(g) == PLAYER_STATE_DRIVER && IsCar(GetPlayerVehicleID(g)) && floatabs(floatsub(Angle1, Angle2)) > DRIFT_MINKAT && floatabs(floatsub(Angle1, Angle2)) < DRIFT_MAXKAT && BySpeed > DRIFT_SPEED){
		if(PunktyDriftuGracza[g] > 0)KillTimer(PunktyDriftuGracza[g]);
		PunktyDriftuGracza[g] = 0;
		DriftPointsNow[g] += floatval( floatabs(floatsub(Angle1, Angle2)) * 3 * (BySpeed*0.1) )/10;
		PunktyDriftuGracza[g] = SetTimerEx("PodsumowanieDriftu", 3000, 0, "d", g);
		}
		if(DriftPointsNow[g] > 0){
			format(s, sizeof(s), "Drift Money:%d$", DriftPointsNow[g]);
			TextDrawSetString(DriftTD[g], s);
			format(s, sizeof(s), "Drift Points:%d", DriftPointsNow[g]);
			TextDrawSetString(DriftTD2[g], s);
		}
		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;}
        floatval(Float:val){new str[256];format(str, 256, "%.0f", val);return todec(str);}
        todec(str[]){return strval(str);}
        public OnPlayerStateChange(playerid, newstate, oldstate)
        {
        if(newstate == PLAYER_STATE_DRIVER){
		TextDrawShowForPlayer(playerid, DriftTD[playerid]);
		TextDrawShowForPlayer(playerid, DriftTD2[playerid]);
		TextDrawShowForPlayer(playerid, Textdraw0);
		}
        return 1;
        }

	forward DMCDP(playerid);
	public DMCDP(playerid)
	{
 		TextDrawSetString(DriftTD[playerid]," ");
  		TextDrawSetString(DriftTD2[playerid]," ");
	    return 1;
    	}

  	public OnPlayerCommandText(playerid, cmdtext[])
	{
		new x;

		if (strcmp("/DriftOFF", cmdtext, true, 10) == 0)
		{
		SendClientMessage(playerid,COLOR_LIGHTBLUE,"* Note: Ai dezactivat Drift Points Counter");
		TextDrawHideForPlayer(playerid, DriftTD[x]);
		TextDrawHideForPlayer(playerid, DriftTD2[x]);
		return 1;
		}

		if (strcmp("/DriftOn", cmdtext, true, 10) == 0)
		{
		SendClientMessage(playerid,COLOR_LIGHTBLUE,"* Note: Ai activat Drift Points Counter");
		TextDrawShowForPlayer(playerid, DriftTD[x]);
		TextDrawShowForPlayer(playerid, DriftTD2[x]);
		return 1;
		}
		return 0;
    	}
        public OnFilterScriptInit(){
        for(new x=0;x<200;x++){

		Textdraw0 = TextDrawCreate(3.000000, 433.000000, "~n~");
		TextDrawBackgroundColor(Textdraw0, 255);
		TextDrawFont(Textdraw0, 0);
		TextDrawLetterSize(Textdraw0, 0.519999, 1.100000);
		TextDrawColor(Textdraw0, -1);
		TextDrawSetOutline(Textdraw0, 0);
		TextDrawSetProportional(Textdraw0, 1);
		TextDrawSetShadow(Textdraw0, 1);

		DriftTD[x] = TextDrawCreate(497.000000, 97.000000, " ");
	    TextDrawBackgroundColor(Textdraw0, 255);
	    TextDrawFont(DriftTD[x], 0);
	    TextDrawLetterSize(DriftTD[x], 0.519999, 1.100000);
	    TextDrawColor(DriftTD[x], 65535);
	    TextDrawSetOutline(DriftTD[x], 0);
	    TextDrawSetProportional(DriftTD[x], 1);
	    TextDrawSetShadow(DriftTD[x], 1);

	    DriftTD2[x] = TextDrawCreate(497.000000, 108.000000, " ");
	    TextDrawBackgroundColor(DriftTD2[x], 255);
	    TextDrawFont(DriftTD2[x], 0);
	    TextDrawLetterSize(DriftTD2[x], 0.519999, 1.100000);
	    TextDrawColor(DriftTD2[x], 65535);
     	TextDrawSetOutline(DriftTD2[x], 0);
	    TextDrawSetProportional(DriftTD2[x], 1);
	    TextDrawSetShadow(DriftTD2[x], 1);
		}

        SetTimer("AngleUpdate" , 700, true);
        SetTimer("LicznikDriftu", 500, true);
        return 1;
        }
    	public OnPlayerExitVehicle(playerid, vehicleid)
        {
		new x;
		TextDrawHideForPlayer(playerid, DriftTD[x]);
		TextDrawHideForPlayer(playerid, DriftTD2[x]);
		TextDrawHideForPlayer(playerid, Textdraw0);
    	return 1;
        }
    	public OnPlayerDeath(playerid)
        {
		new x;
		TextDrawHideForPlayer(playerid, DriftTD[x]);
		TextDrawHideForPlayer(playerid, DriftTD2[x]);
		TextDrawHideForPlayer(playerid, Textdraw0);
    	return 1;
        }
    	public OnPlayerSpawn(playerid)
        {
		new x;
		TextDrawHideForPlayer(playerid, DriftTD[x]);
		TextDrawHideForPlayer(playerid, DriftTD2[x]);
		TextDrawHideForPlayer(playerid, Textdraw0);
    	return 1;
        }



Re: Serius Help - bestr32 - 05.03.2011

Easy:

anyway this is a full register system.

Код:
/*
	*
	*
	*
	*
	*
	*
	*
	*
	*
	*
	*
	*
	*
*/
#include <a_samp>
#include <dini>
#include <dudb>

#pragma unused ret_memcpy

#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA


enum pInfo
{
    pAdminLevel,
    pCash,
    pScore,
    pDriftScore,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
new gPlayerLogged[MAX_PLAYERS];

#define SERVER_USER_FILE "myserver/%s.ini"

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Register FS by iLegaL                ");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

public OnPlayerConnect(playerid)
{
    gPlayerLogged[playerid] = 0;
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if (!dini_Exists(file))
    {
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Hi your not registered", "Welcome, your not registered mate, input your registration pw below", "Register", "Leave");
    }
    if(fexist(file))
    {
        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Hi your registered", "Fucken awesome mate, your registered :D. Inpute your pw below", "Login", "Leave");
    }
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if(gPlayerLogged[playerid] == 1)
    {
        dini_IntSet(file, "Score", PlayerInfo[playerid][pScore]);
        dini_IntSet(file, "Money", PlayerInfo[playerid][pCash]);
        dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel]);
        dini_IntSet(file, "DriftScore",PlayerInfo[playerid][pDriftScore]);
    }
    gPlayerLogged[playerid] = 0;
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 1)
    {
        new name[MAX_PLAYER_NAME], file[256], string[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return
		ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Hi your not registered", "Welcome, your not registered mate, input your registration pw below", "Register", "Leave");
        dini_Create(file);
        dini_IntSet(file, "Password", udb_hash(inputtext));
        dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel] = 0);
        dini_IntSet(file, "Money",PlayerInfo[playerid][pCash] = 500);
        dini_IntSet(file, "Score",PlayerInfo[playerid][pScore] = 0);
        dini_IntSet(file, "DriftScore",PlayerInfo[playerid][pDriftScore] = 0); // 0 is the starting u could make it 2000 or 100000
        format(string, 128, "[SYSTEM]: You succesfully registered the nickname %s with password %s, you have been auto logged in.", name, inputtext);
        SendClientMessage(playerid, COLOR_YELLOW, string);
        gPlayerLogged[playerid] = 1;
    }
    if (dialogid == 2)
    {
        new name[MAX_PLAYER_NAME], file[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Hi your registered", "Fucken awesome mate, your registered :D. Inpute your pw below", "Login", "Leave");
        new tmp;
        tmp = dini_Int(file, "Password");
        if(udb_hash(inputtext) != tmp) {
            SendClientMessage(playerid, COLOR_RED, "Wrong PW sir.");
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Hi your registered", "Fucken awesome mate, your registered :D. Inpute your pw below", "Login", "Leave");
        }
        else
        {
            gPlayerLogged[playerid] = 1;
            PlayerInfo[playerid][pAdminLevel] = dini_Int(file, "AdminLevel");
            SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
            GivePlayerMoney(playerid, dini_Int(file, "Money")-GetPlayerMoney(playerid));
            SendClientMessage(playerid,COLOR_RED, "[SYSTEM]: Successfully logged in!");
        }
    }
	return 1;
}
For the /topdrifters I don't know ask someone other.


Re: Serius Help - bestr32 - 05.03.2011

Also create a myserver folder in scriptfiles.