Ошибки и варнинги при компилировании мода вылезают в max_speed.inc
Ошибки:
max_speed.inc:
max_speed.pwn:
Просьба по возможности помочь.
Ошибки:
> Executing task: ""E:\сервера/pawno/pawncc.exe" "e:\сервера\gamemodes\BEST_RP_TEST.pwn" -Dgamemodes -;+ -(+ -d3" <
Pawn compiler 3.10.8 Copyright © 1997-2006, ITB CompuPhase
E:\ёхЁтхЁр\pawno\include\nex-ac.inc(6540) : error 004: function "ac_OnPlayerStateChange" is not implemented
E:\ёхЁтхЁр\pawno\include\max_speed.inc(9) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(13) : error 020: invalid symbol name ""
E:\ёхЁтхЁр\pawno\include\max_speed.inc(32) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(33) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(34) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(35) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(38) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(39) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(40) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(41) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(263) : error 055: start of function body without function header
E:\ёхЁтхЁр\pawno\include\max_speed.inc(268) : error 010: invalid function or declaration
E:\ёхЁтхЁр\pawno\include\max_speed.inc(270) : error 054: unmatched closing brace ("}")
E:\ёхЁтхЁр\pawno\include\max_speed.inc(283) : error 017: undefined symbol "max_speed_timer"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(283) : warning 215: expression has no effect
E:\ёхЁтхЁр\pawno\include\max_speed.inc(283) : error 001: expected token: ";", but found "]"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(283) : error 029: invalid expression, assumed zero
E:\ёхЁтхЁр\pawno\include\max_speed.inc(283) : fatal error 107: too many error messages on one line
Compilation aborted.
9 Errors.
Pawn compiler 3.10.8 Copyright © 1997-2006, ITB CompuPhase
E:\ёхЁтхЁр\pawno\include\nex-ac.inc(6540) : error 004: function "ac_OnPlayerStateChange" is not implemented
E:\ёхЁтхЁр\pawno\include\max_speed.inc(9) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(13) : error 020: invalid symbol name ""
E:\ёхЁтхЁр\pawno\include\max_speed.inc(32) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(33) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(34) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(35) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(38) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(39) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(40) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(41) : warning 213: tag mismatch: expected tag none ("_"), but found "Float"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(263) : error 055: start of function body without function header
E:\ёхЁтхЁр\pawno\include\max_speed.inc(268) : error 010: invalid function or declaration
E:\ёхЁтхЁр\pawno\include\max_speed.inc(270) : error 054: unmatched closing brace ("}")
E:\ёхЁтхЁр\pawno\include\max_speed.inc(283) : error 017: undefined symbol "max_speed_timer"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(283) : warning 215: expression has no effect
E:\ёхЁтхЁр\pawno\include\max_speed.inc(283) : error 001: expected token: ";", but found "]"
E:\ёхЁтхЁр\pawno\include\max_speed.inc(283) : error 029: invalid expression, assumed zero
E:\ёхЁтхЁр\pawno\include\max_speed.inc(283) : fatal error 107: too many error messages on one line
Compilation aborted.
9 Errors.
max_speed.inc:
#if defined _inc_max_speed
#endinput
#endif
#define _inc_max_speed
/*settings*/
static const
Float:MAX_VEHICLE_SPEED_CHANGE = 10.0, // на сколько может скорость транспорта превышать максимальную
MAX_VEHICLE_SPEED_SET = 0.1, // на сколько изменять постоянно
MAX_VEHICLE_SPEED_TIMER = 250, // частота вызова таймера, мс
/*variables, massives, enums*/
enum e_STRUCT_VEHICLE_SPEED
{
newX,
newY,
newZ,
newA,
newSpeed,
oldX,
oldY,
oldZ,
oldA,
oldSpeed
};
static gVehicleSpeed[MAX_PLAYERS][e_STRUCT_VEHICLE_SPEED];
static const e_STRUCT_VEHICLE_SPEED_DEFAULT[e_STRUCT_VEHICLE_SPEED] =
{
Float:0.0,
Float:0.0,
Float:0.0,
Float:0.0,
0,
Float:0.0,
Float:0.0,
Float:0.0,
Float:0.0,
0
};
static const
gVehicleMaxSpeed[] =
{
160, // 400
160, // 401
200, // 402
120, // 403
150, // 404
165, // 405
110, // 406
170, // 407
110, // 408
180, // 409
160, // 410
240, // 411
160, // 412
160, // 413
140, // 414
230, // 415
155, // 416
200, // 417
150, // 418
160, // 419
180, // 420
180, // 421
165, // 422
145, // 423
170, // 424
200, // 425
200, // 426
170, // 427
170, // 428
200, // 429
190, // 430
130, // 431
080, // 432
180, // 433
200, // 434
120, // 435
160, // 436
160, // 437
160, // 438
160, // 439
160, // 440
075, // 441
150, // 442
150, // 443
110, // 444
165, // 445
280, // 446
200, // 447
190, // 448
150, // 449
120, // 450
240, // 451
190, // 452
190, // 453
190, // 454
140, // 455
160, // 456
160, // 457
165, // 458
160, // 459
200, // 460
190, // 461
190, // 462
190, // 463
075, // 464
075, // 465
160, // 466
160, // 467
190, // 468
200, // 469
170, // 470
160, // 471
190, // 472
190, // 473
160, // 474
160, // 475
200, // 476
200, // 477
150, // 478
165, // 479
200, // 480
120, // 481
150, // 482
120, // 483
190, // 484
160, // 485
100, // 486
200, // 487
200, // 488
170, // 489
170, // 490
160, // 491
160, // 492
190, // 493
220, // 494
170, // 495
200, // 496
200, // 497
140, // 498
140, // 499
160, // 500
075, // 501
220, // 502
220, // 503
160, // 504
170, // 505
230, // 506
165, // 507
140, // 508
120, // 509
140, // 510
200, // 511
200, // 512
200, // 513
120, // 514
120, // 515
165, // 516
165, // 517
160, // 518
330, // 519
330, // 520
190, // 521
190, // 522
190, // 523
110, // 524
160, // 525
160, // 526
160, // 527
170, // 528
160, // 529
060, // 530
070, // 531
140, // 532
200, // 533
160, // 534
160, // 535
160, // 536
110, // 537
110, // 538
150, // 539
160, // 540
230, // 541
160, // 542
165, // 543
170, // 544
160, // 545
160, // 546
160, // 547
200, // 548
160, // 549
160, // 550
165, // 551
160, // 552
200, // 563
170, // 554
180, // 555
110, // 556
110, // 557
200, // 558
200, // 559
200, // 560
200, // 561
200, // 562
200, // 563
075, // 564
200, // 565
160, // 566
160, // 567
170, // 568
110, // 569
110, // 570
090, // 571
060, // 572
110, // 574
160, // 575
160, // 576
200, // 577
110, // 578
160, // 579
165, // 580
190, // 581
160, // 582
170, // 583
120, // 584
165, // 585
190, // 586
200, // 587
140, // 588
200, // 589
110, // 590
120, // 591
200, // 592
200, // 593
060, // 594
190, // 595
200, // 596
200, // 597
200, // 598
160, // 599
165, // 600
110, // 601
200, // 602
200, // 603
160, // 604
165, // 605
160, // 606
160, // 607
160, // 608
140, // 609
160, // 610
160 // 611
};
/*system's code*/
public OnPlayerStateChange(playerid, newstate, oldstate)
{
max_speed_timer[playerid] = SetTimerEx("@UpdateVehicleVelocity", MAX_VEHICLE_SPEED_TIMER, true, "i", playerid);
#if defined max_speed_OnPlayerStateChange
return max_speed_OnPlayerStateChange(playerid, newstate, oldstate);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerStateChange
#undef OnPlayerStateChange
#else
#define _ALS_OnPlayerStateChange
#endif
#if defined max_speed_OnPlayerStateChange
forward max_speed_OnPlayerStateChange(playerid, newstate, oldstate);
#endif
public OnPlayerExitVehicle(playerid, vehicleid)
{
KillTimer(max_speed_timer[playerid]);
max_speed_timer[playerid] = -1;
#if defined max_speed_OnPlayerExitVehicle
return max_speed_OnPlayerExitVehicle(playerid, vehicleid);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerExitVehicle
#undef OnPlayerExitVehicle
#else
#define _ALS_OnPlayerExitVehicle
#endif
#define OnPlayerExitVehicle max_speed_OnPlayerExitVehicle
#if defined max_speed_OnPlayerExitVehicle
forward max_speed_OnPlayerExitVehicle(playerid, vehicleid);
#endif
public OnPlayerDisconnect(playerid, reason)
{
gVehicleSpeed[playerid] = e_STRUCT_VEHICLE_SPEED_DEFAULT;
#if defined max_speed_OnPlayerDisconnect
return max_speed_OnPlayerDisconnect(playerid, reason);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerDisconnect
#undef OnPlayerDisconnect
#else
#define _ALS_OnPlayerDisconnect
#endif
#define OnPlayerDisconnect max_speed_OnPlayerDisconnect
#if defined max_speed_OnPlayerDisconnect
forward max_speed_OnPlayerDisconnect(playerid, reason);
#endif
@UpdateVehicleVelocity(playerid);
@UpdateVehicleVelocity(playerid)
{
static keys, ud, lr, vehicleid = GetPlayerVehicleID(playerid);
GetPlayerKeys(playerid, keys, ud, lr);
GetVehiclePos(vehicleid, gVehicleSpeed[playerid][newX], gVehicleSpeed[playerid][newY], gVehicleSpeed[playerid][newZ]);
GetVehicleZAngle(vehicleid, gVehicleSpeed[playerid][newA]);
GetVehicleSpeed(vehicleid, gVehicleSpeed[playerid][newSpeed]);
if(gVehicleSpeed[playerid][newZ] > gVehicleSpeed[playerid][oldZ])
return 0; // если игрок едет вверх, выходим из функции
static
bool: set_angle;
if(IsNumberInRange(gVehicleSpeed[vehicleid][newA], -gVehicleSpeed[vehicleid][oldA], gVehicleSpeed[vehicleid][newA])
set_angle = false;
if(ud == KEY_UP && GetVehicleSpeed[vehicleid] < (gVehicleMaxSpeed[GetVehicleModel(vehicleid)]+10) && set_angle == false) // игрок давит кнопку газа и он не достиг максимальной скорости
SetVehicleSpeed(vehicleid, gVehicleSpeed[playerid][newSpeed]+MAX_VEHICLE_SPEED_SET);
gVehicleSpeed[playerid][oldX] = gVehicleSpeed[playerid][newX];
gVehicleSpeed[playerid][oldY] = gVehicleSpeed[playerid][newY];
gVehicleSpeed[playerid][oldZ] = gVehicleSpeed[playerid][oldZ];
gVehicleSpeed[playerid][oldA] = gVehicleSpeed[playerid][oldA];
gVehicleSpeed[playerid][oldSpeed] = gVehicleSpeed[playerid][newSpeed];
return 1;
}
stock GetVehicleSpeed(vehicleid)
return floatround(floatsqroot(gVehicleSpeed[playerid][newX]*gVehicleSpeed[playerid][newX]+gVehicleSpeed[playerid][newY]*gVehicleSpeed[playerid][newY]+gVehicleSpeed[playerid][newZ]*gVehicleSpeed[playerid][newZ])*180.0);
stock SetVehicleSpeed(vehicleid, speed)
{
new Float:x, Float:y, Float:z, Float:a;
GetVehicleZAngle(vehicleid, x);
GetVehicleVelocity(vehicleid, x, y, z);
return SetVehicleVelocity(vehicleid, floatsin(-a,degrees)*(speed/99), floatcos(-a,degrees)*(speed/99), z);
}
stock IsNumberInRange(value, min, max)
return ((value-(min+cellmin))<(max-(min+cellmin));
#endinput
#endif
#define _inc_max_speed
/*settings*/
static const
Float:MAX_VEHICLE_SPEED_CHANGE = 10.0, // на сколько может скорость транспорта превышать максимальную
MAX_VEHICLE_SPEED_SET = 0.1, // на сколько изменять постоянно
MAX_VEHICLE_SPEED_TIMER = 250, // частота вызова таймера, мс
/*variables, massives, enums*/
enum e_STRUCT_VEHICLE_SPEED
{
newX,
newY,
newZ,
newA,
newSpeed,
oldX,
oldY,
oldZ,
oldA,
oldSpeed
};
static gVehicleSpeed[MAX_PLAYERS][e_STRUCT_VEHICLE_SPEED];
static const e_STRUCT_VEHICLE_SPEED_DEFAULT[e_STRUCT_VEHICLE_SPEED] =
{
Float:0.0,
Float:0.0,
Float:0.0,
Float:0.0,
0,
Float:0.0,
Float:0.0,
Float:0.0,
Float:0.0,
0
};
static const
gVehicleMaxSpeed[] =
{
160, // 400
160, // 401
200, // 402
120, // 403
150, // 404
165, // 405
110, // 406
170, // 407
110, // 408
180, // 409
160, // 410
240, // 411
160, // 412
160, // 413
140, // 414
230, // 415
155, // 416
200, // 417
150, // 418
160, // 419
180, // 420
180, // 421
165, // 422
145, // 423
170, // 424
200, // 425
200, // 426
170, // 427
170, // 428
200, // 429
190, // 430
130, // 431
080, // 432
180, // 433
200, // 434
120, // 435
160, // 436
160, // 437
160, // 438
160, // 439
160, // 440
075, // 441
150, // 442
150, // 443
110, // 444
165, // 445
280, // 446
200, // 447
190, // 448
150, // 449
120, // 450
240, // 451
190, // 452
190, // 453
190, // 454
140, // 455
160, // 456
160, // 457
165, // 458
160, // 459
200, // 460
190, // 461
190, // 462
190, // 463
075, // 464
075, // 465
160, // 466
160, // 467
190, // 468
200, // 469
170, // 470
160, // 471
190, // 472
190, // 473
160, // 474
160, // 475
200, // 476
200, // 477
150, // 478
165, // 479
200, // 480
120, // 481
150, // 482
120, // 483
190, // 484
160, // 485
100, // 486
200, // 487
200, // 488
170, // 489
170, // 490
160, // 491
160, // 492
190, // 493
220, // 494
170, // 495
200, // 496
200, // 497
140, // 498
140, // 499
160, // 500
075, // 501
220, // 502
220, // 503
160, // 504
170, // 505
230, // 506
165, // 507
140, // 508
120, // 509
140, // 510
200, // 511
200, // 512
200, // 513
120, // 514
120, // 515
165, // 516
165, // 517
160, // 518
330, // 519
330, // 520
190, // 521
190, // 522
190, // 523
110, // 524
160, // 525
160, // 526
160, // 527
170, // 528
160, // 529
060, // 530
070, // 531
140, // 532
200, // 533
160, // 534
160, // 535
160, // 536
110, // 537
110, // 538
150, // 539
160, // 540
230, // 541
160, // 542
165, // 543
170, // 544
160, // 545
160, // 546
160, // 547
200, // 548
160, // 549
160, // 550
165, // 551
160, // 552
200, // 563
170, // 554
180, // 555
110, // 556
110, // 557
200, // 558
200, // 559
200, // 560
200, // 561
200, // 562
200, // 563
075, // 564
200, // 565
160, // 566
160, // 567
170, // 568
110, // 569
110, // 570
090, // 571
060, // 572
110, // 574
160, // 575
160, // 576
200, // 577
110, // 578
160, // 579
165, // 580
190, // 581
160, // 582
170, // 583
120, // 584
165, // 585
190, // 586
200, // 587
140, // 588
200, // 589
110, // 590
120, // 591
200, // 592
200, // 593
060, // 594
190, // 595
200, // 596
200, // 597
200, // 598
160, // 599
165, // 600
110, // 601
200, // 602
200, // 603
160, // 604
165, // 605
160, // 606
160, // 607
160, // 608
140, // 609
160, // 610
160 // 611
};
/*system's code*/
public OnPlayerStateChange(playerid, newstate, oldstate)
{
max_speed_timer[playerid] = SetTimerEx("@UpdateVehicleVelocity", MAX_VEHICLE_SPEED_TIMER, true, "i", playerid);
#if defined max_speed_OnPlayerStateChange
return max_speed_OnPlayerStateChange(playerid, newstate, oldstate);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerStateChange
#undef OnPlayerStateChange
#else
#define _ALS_OnPlayerStateChange
#endif
#if defined max_speed_OnPlayerStateChange
forward max_speed_OnPlayerStateChange(playerid, newstate, oldstate);
#endif
public OnPlayerExitVehicle(playerid, vehicleid)
{
KillTimer(max_speed_timer[playerid]);
max_speed_timer[playerid] = -1;
#if defined max_speed_OnPlayerExitVehicle
return max_speed_OnPlayerExitVehicle(playerid, vehicleid);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerExitVehicle
#undef OnPlayerExitVehicle
#else
#define _ALS_OnPlayerExitVehicle
#endif
#define OnPlayerExitVehicle max_speed_OnPlayerExitVehicle
#if defined max_speed_OnPlayerExitVehicle
forward max_speed_OnPlayerExitVehicle(playerid, vehicleid);
#endif
public OnPlayerDisconnect(playerid, reason)
{
gVehicleSpeed[playerid] = e_STRUCT_VEHICLE_SPEED_DEFAULT;
#if defined max_speed_OnPlayerDisconnect
return max_speed_OnPlayerDisconnect(playerid, reason);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerDisconnect
#undef OnPlayerDisconnect
#else
#define _ALS_OnPlayerDisconnect
#endif
#define OnPlayerDisconnect max_speed_OnPlayerDisconnect
#if defined max_speed_OnPlayerDisconnect
forward max_speed_OnPlayerDisconnect(playerid, reason);
#endif
@UpdateVehicleVelocity(playerid);
@UpdateVehicleVelocity(playerid)
{
static keys, ud, lr, vehicleid = GetPlayerVehicleID(playerid);
GetPlayerKeys(playerid, keys, ud, lr);
GetVehiclePos(vehicleid, gVehicleSpeed[playerid][newX], gVehicleSpeed[playerid][newY], gVehicleSpeed[playerid][newZ]);
GetVehicleZAngle(vehicleid, gVehicleSpeed[playerid][newA]);
GetVehicleSpeed(vehicleid, gVehicleSpeed[playerid][newSpeed]);
if(gVehicleSpeed[playerid][newZ] > gVehicleSpeed[playerid][oldZ])
return 0; // если игрок едет вверх, выходим из функции
static
bool: set_angle;
if(IsNumberInRange(gVehicleSpeed[vehicleid][newA], -gVehicleSpeed[vehicleid][oldA], gVehicleSpeed[vehicleid][newA])
set_angle = false;
if(ud == KEY_UP && GetVehicleSpeed[vehicleid] < (gVehicleMaxSpeed[GetVehicleModel(vehicleid)]+10) && set_angle == false) // игрок давит кнопку газа и он не достиг максимальной скорости
SetVehicleSpeed(vehicleid, gVehicleSpeed[playerid][newSpeed]+MAX_VEHICLE_SPEED_SET);
gVehicleSpeed[playerid][oldX] = gVehicleSpeed[playerid][newX];
gVehicleSpeed[playerid][oldY] = gVehicleSpeed[playerid][newY];
gVehicleSpeed[playerid][oldZ] = gVehicleSpeed[playerid][oldZ];
gVehicleSpeed[playerid][oldA] = gVehicleSpeed[playerid][oldA];
gVehicleSpeed[playerid][oldSpeed] = gVehicleSpeed[playerid][newSpeed];
return 1;
}
stock GetVehicleSpeed(vehicleid)
return floatround(floatsqroot(gVehicleSpeed[playerid][newX]*gVehicleSpeed[playerid][newX]+gVehicleSpeed[playerid][newY]*gVehicleSpeed[playerid][newY]+gVehicleSpeed[playerid][newZ]*gVehicleSpeed[playerid][newZ])*180.0);
stock SetVehicleSpeed(vehicleid, speed)
{
new Float:x, Float:y, Float:z, Float:a;
GetVehicleZAngle(vehicleid, x);
GetVehicleVelocity(vehicleid, x, y, z);
return SetVehicleVelocity(vehicleid, floatsin(-a,degrees)*(speed/99), floatcos(-a,degrees)*(speed/99), z);
}
stock IsNumberInRange(value, min, max)
return ((value-(min+cellmin))<(max-(min+cellmin));
#include <a_samp>
#if defined _inc_max_speed
#endinput
#endif
#define _inc_max_speed
new max_speed_timer[MAX_PLAYERS];
/*settings*/
static const
Float:MAX_VEHICLE_SPEED_CHANGE = 10.0, // на сколько может скорость транспорта превышать максимальную
Float:MAX_VEHICLE_SPEED_SET = 0.1, // на сколько изменять постоянно
MAX_VEHICLE_SPEED_TIMER = 250; // частота вызова таймера, мс
/*variables, massives, enums*/
enum e_STRUCT_VEHICLE_SPEED
{
Float:newX,
Float:newY,
Float:newZ,
Float:newA,
newSpeed,
FloatldX,
FloatldY,
FloatldZ,
FloatldA,
oldSpeed
};
static gVehicleSpeed[MAX_PLAYERS][e_STRUCT_VEHICLE_SPEED];
static const e_STRUCT_VEHICLE_SPEED_DEFAULT[e_STRUCT_VEHICLE_SPEED] =
{
Float:0.0,
Float:0.0,
Float:0.0,
Float:0.0,
0,
Float:0.0,
Float:0.0,
Float:0.0,
Float:0.0,
0
};
static const
gVehicleMaxSpeed[] =
{
160, // 400
160, // 401
200, // 402
120, // 403
150, // 404
165, // 405
110, // 406
170, // 407
110, // 408
180, // 409
160, // 410
240, // 411
160, // 412
160, // 413
140, // 414
230, // 415
155, // 416
200, // 417
150, // 418
160, // 419
180, // 420
180, // 421
165, // 422
145, // 423
170, // 424
200, // 425
200, // 426
170, // 427
170, // 428
200, // 429
190, // 430
130, // 431
080, // 432
180, // 433
200, // 434
120, // 435
160, // 436
160, // 437
160, // 438
160, // 439
160, // 440
075, // 441
150, // 442
150, // 443
110, // 444
165, // 445
280, // 446
200, // 447
190, // 448
150, // 449
120, // 450
240, // 451
190, // 452
190, // 453
190, // 454
140, // 455
160, // 456
160, // 457
165, // 458
160, // 459
200, // 460
190, // 461
190, // 462
190, // 463
075, // 464
075, // 465
160, // 466
160, // 467
190, // 468
200, // 469
170, // 470
160, // 471
190, // 472
190, // 473
160, // 474
160, // 475
200, // 476
200, // 477
150, // 478
165, // 479
200, // 480
120, // 481
150, // 482
120, // 483
190, // 484
160, // 485
100, // 486
200, // 487
200, // 488
170, // 489
170, // 490
160, // 491
160, // 492
190, // 493
220, // 494
170, // 495
200, // 496
200, // 497
140, // 498
140, // 499
160, // 500
075, // 501
220, // 502
220, // 503
160, // 504
170, // 505
230, // 506
165, // 507
140, // 508
120, // 509
140, // 510
200, // 511
200, // 512
200, // 513
120, // 514
120, // 515
165, // 516
165, // 517
160, // 518
330, // 519
330, // 520
190, // 521
190, // 522
190, // 523
110, // 524
160, // 525
160, // 526
160, // 527
170, // 528
160, // 529
600, // 530
070, // 531
140, // 532
200, // 533
160, // 534
160, // 535
160, // 536
110, // 537
110, // 538
150, // 539
160, // 540
230, // 541
160, // 542
165, // 543
170, // 544
160, // 545
160, // 546
160, // 547
200, // 548
160, // 549
160, // 550
165, // 551
160, // 552
200, // 563
170, // 554
180, // 555
110, // 556
110, // 557
200, // 558
200, // 559
200, // 560
200, // 561
200, // 562
200, // 563
075, // 564
200, // 565
160, // 566
160, // 567
170, // 568
110, // 569
110, // 570
090, // 571
060, // 572
110, // 574
160, // 575
160, // 576
200, // 577
110, // 578
160, // 579
165, // 580
190, // 581
160, // 582
170, // 583
120, // 584
165, // 585
190, // 586
200, // 587
140, // 588
200, // 589
110, // 590
120, // 591
200, // 592
200, // 593
060, // 594
190, // 595
200, // 596
200, // 597
200, // 598
160, // 599
165, // 600
110, // 601
200, // 602
200, // 603
160, // 604
165, // 605
160, // 606
160, // 607
160, // 608
140, // 609
160, // 610
160, // 611
160 // 15153
};
/*system's code*/
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
max_speed_timer[playerid] = SetTimerEx("@UpdateVehicleVelocity", MAX_VEHICLE_SPEED_TIMER, true, "i", playerid);
#if defined max_speed_OnPlayerStateChange
return max_speed_OnPlayerStateChange(playerid, newstate, oldstate);
#else
return 1;
#endif
}
return 1;
}
#if defined _ALS_OnPlayerStateChange
#undef OnPlayerStateChange
#else
#define _ALS_OnPlayerStateChange
#endif
#if defined max_speed_OnPlayerStateChange
forward max_speed_OnPlayerStateChange(playerid, newstate, oldstate);
#endif
public OnPlayerExitVehicle(playerid, vehicleid)
{
KillTimer(max_speed_timer[playerid]);
max_speed_timer[playerid] = -1;
#if defined max_speed_OnPlayerExitVehicle
return max_speed_OnPlayerExitVehicle(playerid, vehicleid);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerExitVehicle
#undef OnPlayerExitVehicle
#else
#define _ALS_OnPlayerExitVehicle
#endif
#define OnPlayerExitVehicle max_speed_OnPlayerExitVehicle
#if defined max_speed_OnPlayerExitVehicle
forward max_speed_OnPlayerExitVehicle(playerid, vehicleid);
#endif
public OnPlayerDisconnect(playerid, reason)
{
gVehicleSpeed[playerid] = e_STRUCT_VEHICLE_SPEED_DEFAULT;
#if defined max_speed_OnPlayerDisconnect
return max_speed_OnPlayerDisconnect(playerid, reason);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerDisconnect
#undef OnPlayerDisconnect
#else
#define _ALS_OnPlayerDisconnect
#endif
#define OnPlayerDisconnect max_speed_OnPlayerDisconnect
#if defined max_speed_OnPlayerDisconnect
forward max_speed_OnPlayerDisconnect(playerid, reason);
#endif
@UpdateVehicleVelocity(playerid);
@UpdateVehicleVelocity(playerid)
{
new keys, ud, lr, vehicleid = GetPlayerVehicleID(playerid);
GetPlayerKeys(playerid, keys, ud, lr);
GetVehiclePos(vehicleid, gVehicleSpeed[playerid][newX], gVehicleSpeed[playerid][newY], gVehicleSpeed[playerid][newZ]);
GetVehicleZAngle(vehicleid, gVehicleSpeed[playerid][newA]);
gVehicleSpeed[playerid][newSpeed] = GetVehicleSpeed(playerid);
printf("0");
//if(gVehicleSpeed[playerid][newZ] > gVehicleSpeed[playerid][oldZ])
// return 1; // если игрок едет вверх, выходим из функции
printf("1");
static
bool: set_angle;
if(IsNumberInRange(gVehicleSpeed[vehicleid][newA], -gVehicleSpeed[vehicleid][oldA], gVehicleSpeed[vehicleid][newA]))
set_angle = false;
printf("2");
if(ud == KEY_UP && GetVehicleSpeed(playerid) < (gVehicleMaxSpeed[GetVehicleModel(vehicleid)]+10) && set_angle == false) // игрок давит кнопку газа и он не достиг максимальной скорости
SetVehicleSpeed(vehicleid, gVehicleSpeed[playerid][newSpeed]+MAX_VEHICLE_SPEED_SET);
printf("3");
gVehicleSpeed[playerid][oldX] = gVehicleSpeed[playerid][newX];
gVehicleSpeed[playerid][oldY] = gVehicleSpeed[playerid][newY];
gVehicleSpeed[playerid][oldZ] = gVehicleSpeed[playerid][oldZ];
gVehicleSpeed[playerid][oldA] = gVehicleSpeed[playerid][oldA];
gVehicleSpeed[playerid][oldSpeed] = gVehicleSpeed[playerid][newSpeed];
new fmt_msg[144];
format(fmt_msg, sizeof fmt_msg, "speed: %f", GetVehicleSpeed(playerid));
SendClientMessage(playerid, -1, fmt_msg);
return 1;
}
stock GetVehicleSpeed(playerid)
return floatround(floatsqroot(gVehicleSpeed[playerid][newX]*gVehicleSpeed[playerid][newX]+gVehicleSpeed[playerid][newY]*gVehicleSpeed[playerid][newY]+gVehicleSpeed[playerid][newZ]*gVehicleSpeed[playerid][newZ])*180.0);
stock SetVehicleSpeed(vehicleid, Float: speed)
{
new Float:x, Float:y, Float:z, Float:a;
GetVehicleZAngle(vehicleid, x);
GetVehicleVelocity(vehicleid, x, y, z);
return SetVehicleVelocity(vehicleid, floatsin(-a,degrees)*(speed/99), floatcos(-a,degrees)*(speed/99), z);
}
stock IsNumberInRange(Float: value, Float: min, Float: max)
return ((value-(min+cellmin))<(max-(min+cellmin)));
#if defined _inc_max_speed
#endinput
#endif
#define _inc_max_speed
new max_speed_timer[MAX_PLAYERS];
/*settings*/
static const
Float:MAX_VEHICLE_SPEED_CHANGE = 10.0, // на сколько может скорость транспорта превышать максимальную
Float:MAX_VEHICLE_SPEED_SET = 0.1, // на сколько изменять постоянно
MAX_VEHICLE_SPEED_TIMER = 250; // частота вызова таймера, мс
/*variables, massives, enums*/
enum e_STRUCT_VEHICLE_SPEED
{
Float:newX,
Float:newY,
Float:newZ,
Float:newA,
newSpeed,
FloatldX,
FloatldY,
FloatldZ,
FloatldA,
oldSpeed
};
static gVehicleSpeed[MAX_PLAYERS][e_STRUCT_VEHICLE_SPEED];
static const e_STRUCT_VEHICLE_SPEED_DEFAULT[e_STRUCT_VEHICLE_SPEED] =
{
Float:0.0,
Float:0.0,
Float:0.0,
Float:0.0,
0,
Float:0.0,
Float:0.0,
Float:0.0,
Float:0.0,
0
};
static const
gVehicleMaxSpeed[] =
{
160, // 400
160, // 401
200, // 402
120, // 403
150, // 404
165, // 405
110, // 406
170, // 407
110, // 408
180, // 409
160, // 410
240, // 411
160, // 412
160, // 413
140, // 414
230, // 415
155, // 416
200, // 417
150, // 418
160, // 419
180, // 420
180, // 421
165, // 422
145, // 423
170, // 424
200, // 425
200, // 426
170, // 427
170, // 428
200, // 429
190, // 430
130, // 431
080, // 432
180, // 433
200, // 434
120, // 435
160, // 436
160, // 437
160, // 438
160, // 439
160, // 440
075, // 441
150, // 442
150, // 443
110, // 444
165, // 445
280, // 446
200, // 447
190, // 448
150, // 449
120, // 450
240, // 451
190, // 452
190, // 453
190, // 454
140, // 455
160, // 456
160, // 457
165, // 458
160, // 459
200, // 460
190, // 461
190, // 462
190, // 463
075, // 464
075, // 465
160, // 466
160, // 467
190, // 468
200, // 469
170, // 470
160, // 471
190, // 472
190, // 473
160, // 474
160, // 475
200, // 476
200, // 477
150, // 478
165, // 479
200, // 480
120, // 481
150, // 482
120, // 483
190, // 484
160, // 485
100, // 486
200, // 487
200, // 488
170, // 489
170, // 490
160, // 491
160, // 492
190, // 493
220, // 494
170, // 495
200, // 496
200, // 497
140, // 498
140, // 499
160, // 500
075, // 501
220, // 502
220, // 503
160, // 504
170, // 505
230, // 506
165, // 507
140, // 508
120, // 509
140, // 510
200, // 511
200, // 512
200, // 513
120, // 514
120, // 515
165, // 516
165, // 517
160, // 518
330, // 519
330, // 520
190, // 521
190, // 522
190, // 523
110, // 524
160, // 525
160, // 526
160, // 527
170, // 528
160, // 529
600, // 530
070, // 531
140, // 532
200, // 533
160, // 534
160, // 535
160, // 536
110, // 537
110, // 538
150, // 539
160, // 540
230, // 541
160, // 542
165, // 543
170, // 544
160, // 545
160, // 546
160, // 547
200, // 548
160, // 549
160, // 550
165, // 551
160, // 552
200, // 563
170, // 554
180, // 555
110, // 556
110, // 557
200, // 558
200, // 559
200, // 560
200, // 561
200, // 562
200, // 563
075, // 564
200, // 565
160, // 566
160, // 567
170, // 568
110, // 569
110, // 570
090, // 571
060, // 572
110, // 574
160, // 575
160, // 576
200, // 577
110, // 578
160, // 579
165, // 580
190, // 581
160, // 582
170, // 583
120, // 584
165, // 585
190, // 586
200, // 587
140, // 588
200, // 589
110, // 590
120, // 591
200, // 592
200, // 593
060, // 594
190, // 595
200, // 596
200, // 597
200, // 598
160, // 599
165, // 600
110, // 601
200, // 602
200, // 603
160, // 604
165, // 605
160, // 606
160, // 607
160, // 608
140, // 609
160, // 610
160, // 611
160 // 15153
};
/*system's code*/
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
max_speed_timer[playerid] = SetTimerEx("@UpdateVehicleVelocity", MAX_VEHICLE_SPEED_TIMER, true, "i", playerid);
#if defined max_speed_OnPlayerStateChange
return max_speed_OnPlayerStateChange(playerid, newstate, oldstate);
#else
return 1;
#endif
}
return 1;
}
#if defined _ALS_OnPlayerStateChange
#undef OnPlayerStateChange
#else
#define _ALS_OnPlayerStateChange
#endif
#if defined max_speed_OnPlayerStateChange
forward max_speed_OnPlayerStateChange(playerid, newstate, oldstate);
#endif
public OnPlayerExitVehicle(playerid, vehicleid)
{
KillTimer(max_speed_timer[playerid]);
max_speed_timer[playerid] = -1;
#if defined max_speed_OnPlayerExitVehicle
return max_speed_OnPlayerExitVehicle(playerid, vehicleid);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerExitVehicle
#undef OnPlayerExitVehicle
#else
#define _ALS_OnPlayerExitVehicle
#endif
#define OnPlayerExitVehicle max_speed_OnPlayerExitVehicle
#if defined max_speed_OnPlayerExitVehicle
forward max_speed_OnPlayerExitVehicle(playerid, vehicleid);
#endif
public OnPlayerDisconnect(playerid, reason)
{
gVehicleSpeed[playerid] = e_STRUCT_VEHICLE_SPEED_DEFAULT;
#if defined max_speed_OnPlayerDisconnect
return max_speed_OnPlayerDisconnect(playerid, reason);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerDisconnect
#undef OnPlayerDisconnect
#else
#define _ALS_OnPlayerDisconnect
#endif
#define OnPlayerDisconnect max_speed_OnPlayerDisconnect
#if defined max_speed_OnPlayerDisconnect
forward max_speed_OnPlayerDisconnect(playerid, reason);
#endif
@UpdateVehicleVelocity(playerid);
@UpdateVehicleVelocity(playerid)
{
new keys, ud, lr, vehicleid = GetPlayerVehicleID(playerid);
GetPlayerKeys(playerid, keys, ud, lr);
GetVehiclePos(vehicleid, gVehicleSpeed[playerid][newX], gVehicleSpeed[playerid][newY], gVehicleSpeed[playerid][newZ]);
GetVehicleZAngle(vehicleid, gVehicleSpeed[playerid][newA]);
gVehicleSpeed[playerid][newSpeed] = GetVehicleSpeed(playerid);
printf("0");
//if(gVehicleSpeed[playerid][newZ] > gVehicleSpeed[playerid][oldZ])
// return 1; // если игрок едет вверх, выходим из функции
printf("1");
static
bool: set_angle;
if(IsNumberInRange(gVehicleSpeed[vehicleid][newA], -gVehicleSpeed[vehicleid][oldA], gVehicleSpeed[vehicleid][newA]))
set_angle = false;
printf("2");
if(ud == KEY_UP && GetVehicleSpeed(playerid) < (gVehicleMaxSpeed[GetVehicleModel(vehicleid)]+10) && set_angle == false) // игрок давит кнопку газа и он не достиг максимальной скорости
SetVehicleSpeed(vehicleid, gVehicleSpeed[playerid][newSpeed]+MAX_VEHICLE_SPEED_SET);
printf("3");
gVehicleSpeed[playerid][oldX] = gVehicleSpeed[playerid][newX];
gVehicleSpeed[playerid][oldY] = gVehicleSpeed[playerid][newY];
gVehicleSpeed[playerid][oldZ] = gVehicleSpeed[playerid][oldZ];
gVehicleSpeed[playerid][oldA] = gVehicleSpeed[playerid][oldA];
gVehicleSpeed[playerid][oldSpeed] = gVehicleSpeed[playerid][newSpeed];
new fmt_msg[144];
format(fmt_msg, sizeof fmt_msg, "speed: %f", GetVehicleSpeed(playerid));
SendClientMessage(playerid, -1, fmt_msg);
return 1;
}
stock GetVehicleSpeed(playerid)
return floatround(floatsqroot(gVehicleSpeed[playerid][newX]*gVehicleSpeed[playerid][newX]+gVehicleSpeed[playerid][newY]*gVehicleSpeed[playerid][newY]+gVehicleSpeed[playerid][newZ]*gVehicleSpeed[playerid][newZ])*180.0);
stock SetVehicleSpeed(vehicleid, Float: speed)
{
new Float:x, Float:y, Float:z, Float:a;
GetVehicleZAngle(vehicleid, x);
GetVehicleVelocity(vehicleid, x, y, z);
return SetVehicleVelocity(vehicleid, floatsin(-a,degrees)*(speed/99), floatcos(-a,degrees)*(speed/99), z);
}
stock IsNumberInRange(Float: value, Float: min, Float: max)
return ((value-(min+cellmin))<(max-(min+cellmin)));
Последнее редактирование модератором: