03.11.2013, 11:50
Hi guys I have here below a drift points counter but it doesn't have a save point. So I planned to make by my own and also with your help.
It would be something like this (This part is important to save and load the drift points)
SaveStatus
public LoginPlayer
But I don't know how to get the points of this.
Can you please show me how?
Thanks and looking forwards to any reply.
It would be something like this (This part is important to save and load the drift points)
Код:
enum PlayerInfo { Drifts, }
Код:
INI_WriteInt(ACCOUNT, "Drifts", pInfo[playerid][Drifts]);
Код:
INI_Int("Drifts", pInfo[playerid][Drifts]);
Can you please show me how?
Thanks and looking forwards to any reply.
Код HTML:
//////////////////////////////////////////////////////////// /////////////// DRIFT POINTS COUNTER BY LUBY /////////////// /////////////// A little editted by Abhinav //////////////// //////////////////////////////////////////////////////////// #include <a_samp> // by I dont know .. :D lol #define DRIFT_MINKAT 10.0 // by Luby #define DRIFT_MAXKAT 90.0 // by Luby #define DRIFT_SPEED 30.0 // by Luby //////////// Added by Abhinav/////// #define COLOR_Label 0xFFFFFFFF #define COLOR_LabelOut 0x00000040 #define COLOR_ValueOut 0xFFFFFF40 #define COLOR_Value 0x000000FF #define Label_X 500 #define Value_X 500 #define TD_Y 100 ///////////////////////////////////// new DriftTimer[MAX_PLAYERS]; // Added by Abhinav new TimerA,TimerB,TimerC; // Added by Abhinav new DriftPointsNow[MAX_PLAYERS]; // by Luby new PlayerDriftCancellation[MAX_PLAYERS]; // by Luby new Float:ppos[MAX_PLAYERS][3]; // by Luby enum Float:Pos{ Float:sX,Float:sY,Float:sZ }; // by Luby new Float:SavedPos[MAX_PLAYERS][Pos]; // by Luby new bool:DriftMode[MAX_PLAYERS]=false; // Added by Abhinav new DriftBonus[MAX_PLAYERS]=1; // Added by Abhinav new Float:HealthInit[MAX_PLAYERS]=1000.0; // Added by Abhinav new Text:TDLabels[3]; // Added by Abhinav new Text:TDValueDrift[MAX_PLAYERS]; // Added by Abhinav new Text:TDValueBonus[MAX_PLAYERS]; // Added by Abhinav new Text:TDValueCash[MAX_PLAYERS]; // Added by Abhinav forward Drift(); // by Luby forward AngleUpdate(); // by Luby forward DriftExit(playerid); // by Luby forward CheckPlayerState(); // Added by Abhinav public OnFilterScriptInit() { TimerA=SetTimer("AngleUpdate", 200, true); // by Luby TimerC=SetTimer("CheckPlayerState", 100, true); //by Abhinav LoadTextDraws(); return 1; } public OnFilterScriptExit() { KillTimer(TimerA); KillTimer(TimerB); KillTimer(TimerC); return 1; } Float:GetPlayerTheoreticAngle(i) // By Luby { 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 DriftExit(playerid) { PlayerDriftCancellation[playerid] = 0; new Float:h; GetVehicleHealth(GetPlayerVehicleID(playerid),h); if(DriftPointsNow[playerid]>70 && DriftPointsNow[playerid]<10000 && h==HealthInit[playerid]) GivePlayerMoney(playerid,DriftPointsNow[playerid]*DriftBonus[playerid]); TextDrawHideForPlayer(playerid,TDLabels[0]); TextDrawHideForPlayer(playerid,TDLabels[1]); TextDrawHideForPlayer(playerid,TDLabels[2]); TextDrawHideForPlayer(playerid,TDValueDrift[playerid]); TextDrawHideForPlayer(playerid,TDValueBonus[playerid]); TextDrawHideForPlayer(playerid,TDValueCash[playerid]); DriftBonus[playerid]=1; SetVehicleHealth(GetPlayerVehicleID(playerid),HealthInit[playerid]); DriftPointsNow[playerid] = 0; } Float:ReturnPlayerAngle(playerid) { // By Luby new Float:Ang; if(IsPlayerInAnyVehicle(playerid))GetVehicleZAngle(GetPlayerVehicleID(playerid), Ang); else GetPlayerFacingAngle(playerid, Ang); return Ang; } public Drift() { // By Luby new Float:Angle1, Float:Angle2, Float:BySpeed; 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) && GetVType(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("DriftExit", 3000, 0, "d", g); } if(DriftPointsNow[g] > 70 && DriftPointsNow[g]<10000) { ///////////// by Abhinav //////////////////// if(DriftPointsNow[g]<500){ DriftBonus[g]=1; } if(DriftPointsNow[g]>=500 && DriftPointsNow[g]<1000) { DriftBonus[g]=2; } if(DriftPointsNow[g]>=1000 && DriftPointsNow[g]<1700) { DriftBonus[g]=3; } if(DriftPointsNow[g]>=1700 && DriftPointsNow[g]<2500) { DriftBonus[g]=4; } if(DriftPointsNow[g]>=2500) { DriftBonus[g]=5; } TextDrawShowForPlayer(g,TDLabels[0]); TextDrawShowForPlayer(g,TDLabels[1]); TextDrawShowForPlayer(g,TDLabels[2]); TextDrawShowForPlayer(g,TDValueDrift[g]); TextDrawShowForPlayer(g,TDValueBonus[g]); TextDrawShowForPlayer(g,TDValueCash[g]); new DPs[128],DBn[128],Cash[128],csh; valstr(DPs,DriftPointsNow[g],false); format(DBn,sizeof(DBn),"X%i",DriftBonus[g]); csh=DriftPointsNow[g]*DriftBonus[g]; format(Cash,sizeof(Cash),"$%i",csh); TextDrawSetString(TDValueDrift[g],DPs); TextDrawSetString(TDValueBonus[g],DBn); TextDrawSetString(TDValueCash[g],Cash); //////////////////////////////////////// } SavedPos[ g ][ sX ] = X; SavedPos[ g ][ sY ] = Y; SavedPos[ g ][ sZ ] = Z; } } public AngleUpdate() { // By Luby 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; } } floatval(Float:val){ // By Luby new str[256]; format(str, 256, "%.0f", val); return todec(str); } todec(str[]) { // By Luby return strval(str); } LoadTextDraws() { // by Abhinav TDLabels[0]=TextDrawCreate(Label_X,TD_Y,"Drift Points"); TextDrawColor(TDLabels[0],COLOR_Label); TextDrawSetShadow(TDLabels[0],0); TextDrawSetOutline(TDLabels[0],1); TextDrawLetterSize(TDLabels[0],0.5,2); TextDrawBackgroundColor(TDLabels[0],COLOR_LabelOut); TextDrawFont(TDLabels[0],1); TDLabels[1]=TextDrawCreate(Label_X,TD_Y+50,"Drift Bonus"); TextDrawColor(TDLabels[1],COLOR_Label); TextDrawSetShadow(TDLabels[1],0); TextDrawSetOutline(TDLabels[1],1); TextDrawLetterSize(TDLabels[1],0.5,2); TextDrawBackgroundColor(TDLabels[1],COLOR_LabelOut); TextDrawFont(TDLabels[1],1); TDLabels[2]=TextDrawCreate(Label_X,TD_Y+100,"Drift Cash"); TextDrawColor(TDLabels[2],COLOR_Label); TextDrawSetShadow(TDLabels[2],0); TextDrawSetOutline(TDLabels[2],1); TextDrawLetterSize(TDLabels[2],0.5,2); TextDrawBackgroundColor(TDLabels[2],COLOR_LabelOut); TextDrawFont(TDLabels[2],1); new i; for(i=0;i<=MAX_PLAYERS;i++) { TDValueDrift[i]=TextDrawCreate(Value_X,TD_Y+20,"0"); TextDrawColor(TDValueDrift[i],COLOR_Value); TextDrawSetShadow(TDValueDrift[i],0); TextDrawSetOutline(TDValueDrift[i],1); TextDrawLetterSize(TDValueDrift[i],0.5,2); TextDrawBackgroundColor(TDValueDrift[i],COLOR_ValueOut); TextDrawFont(TDValueDrift[i],3); TDValueBonus[i]=TextDrawCreate(Value_X,TD_Y+70,"X1"); TextDrawColor(TDValueBonus[i],COLOR_Value); TextDrawSetShadow(TDValueBonus[i],0); TextDrawSetOutline(TDValueBonus[i],1); TextDrawLetterSize(TDValueBonus[i],0.5,2); TextDrawBackgroundColor(TDValueBonus[i],COLOR_ValueOut); TextDrawFont(TDValueBonus[i],3); TDValueCash[i]=TextDrawCreate(Value_X,TD_Y+120,"$0"); TextDrawColor(TDValueCash[i],COLOR_Value); TextDrawSetShadow(TDValueCash[i],0); TextDrawSetOutline(TDValueCash[i],1); TextDrawLetterSize(TDValueCash[i],0.5,2); TextDrawBackgroundColor(TDValueCash[i],COLOR_ValueOut); TextDrawFont(TDValueCash[i],3); } return 1; } public CheckPlayerState() { //by Abhinav new i,cs; for(i=0;i<=MAX_PLAYERS;i++) { cs=GetPlayerState(i); if(DriftMode[i] && cs==PLAYER_STATE_DRIVER && DriftPointsNow[i]>70) { new Float:h; GetVehicleHealth(GetPlayerVehicleID(i),h); if(h<HealthInit[i]) { KillTimer(DriftTimer[i]); DriftExit(i); GameTextForPlayer(i,"~n~~n~~n~~n~~n~~n~~n~~r~Boom",800,5); DriftMode[i]=false; } } if(cs==PLAYER_STATE_DRIVER && DriftMode[i]==false) { if(GetVType(GetPlayerVehicleID(i))) { DriftMode[i]=true; GetVehicleHealth(GetPlayerVehicleID(i),HealthInit[i]); DriftTimer[i]=SetTimerEx("Drift", 200, true, "i", i); } } else if(cs!=PLAYER_STATE_DRIVER && DriftMode[i]==true) { KillTimer(DriftTimer[i]); DriftMode[i]=false; } else{} } return 1; } GetVType(vid) { // By Abhinav new Convertibles[4]={480, 533, 439, 555}; new Industrial[26]={499, 422, 482, 498, 609, 524, 578, 455, 403, 414, 582, 443, 514, 413, 515, 440, 543, 605, 459, 531, 408, 552, 478, 456, 554}; new LowRider[8]={536, 575, 534, 567, 535, 566, 576, 412}; new OffRoad[13]={568, 424, 573, 579, 400, 500, 444, 556, 557, 470, 489, 505, 595}; new Service[19]={416, 433, 431, 438, 437, 523, 427, 490, 528, 407, 544, 596, 596, 597, 598, 599, 432, 601, 420}; new Saloon[35]={445, 504, 401, 518, 527, 542, 507, 562, 585, 419, 526, 604, 466, 492, 474, 546, 517, 410, 551, 516, 467, 600, 426, 436, 547, 405, 580, 560, 550, 549, 540, 491, 529, 421}; new Sports[20]={602, 429, 496, 402, 541, 415, 589, 587, 565, 494, 502, 503, 411, 559, 603, 475, 506, 451, 558, 477}; new Wagons[5]={418, 404, 479, 458, 561}; new modelid=GetVehicleModel(vid); new i; for(i=0;i<3;i++) { if(Convertibles[i]==modelid) return 1; } for(i=0;i<25;i++) { if(Industrial[i]==modelid) return 1; } for(i=0;i<7;i++) { if(LowRider[i]==modelid) return 1; } for(i=0;i<12;i++) { if(OffRoad[i]==modelid) return 1; } for(i=0;i<19;i++) { if(Service[i]==modelid) return 1; } for(i=0;i<35;i++) { if(Saloon[i]==modelid) return 1; } for(i=0;i<20;i++) { if(Sports[i]==modelid) return 1; } for(i=0;i<5;i++) { if(Wagons[i]==modelid) return 1; } return 0; }