09.06.2015, 01:18
Boa noite a Todos, tenho um servidor de Drift e tenho um contador de Drift, so que estou tendo uma dorzinha de cabeзa para fazer com que some os pontos de drift e que salve e quando chegar a um determinado ponrto que seria 20000 ele resetaria. Mas gostaria que quando o player saisse so servidor e ficasse salvo os pontos de drift dele.
O Codigo.
O Codigo.
Код:
for(new x=0;x<200;x++){ DriftTD[x] = TextDrawCreate(3.000000, 431.422515, "Drift:"); TextDrawBackgroundColor(DriftTD[x], 255); TextDrawFont(DriftTD[x], 1); TextDrawLetterSize(DriftTD[x], 0.400000, 1.600000); TextDrawColor(DriftTD[x], -2147483393); TextDrawSetOutline(DriftTD[x], 1); TextDrawSetProportional(DriftTD[x], 1); DriftTD2[x] = TextDrawCreate(3.000000, 431.422515, "Drift:"); TextDrawBackgroundColor(DriftTD2[x], 255); TextDrawFont(DriftTD2[x], 1); TextDrawLetterSize(DriftTD2[x], 0.400000, 1.600000); TextDrawColor(DriftTD2[x], -1378294017); TextDrawSetOutline(DriftTD2[x], 1); TextDrawSetProportional(DriftTD2[x], 1); } SetTimer("AngleUpdate" , 700, true); SetTimer("LicznikDriftu", 500, true); 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]); SetPlayerScore(playerid,DriftPointsNow[playerid]); DriftPointsNow[playerid] = 0; //TextDrawSetString(DriftTD[playerid]," "); //TextDrawSetString(DriftTD2[playerid]," "); SetTimer("DMCDP",1000,false); } 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), " ", DriftPointsNow[g]); TextDrawSetString(DriftTD[g], s); format(s, sizeof(s), "Drift:~g~%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);} TextDrawShowForPlayer(playerid, DriftTD[x]); TextDrawHideForPlayer(playerid, DriftTD2[x]);