Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Run;
- interface
- implementation
- var Decl: byte;
- const
- DeffaultMoveSpeed = 0.30; //> is faster < is slow
- MouseMovementAccuracy = 0.001; // def 0.001
- MovementOffsetSpeedAdd = 0.0073; //0.0004 deffault
- CursorMaxSearch = 125;
- DeffaultCheckPointRange = 50;
- MinimalCheckPointRange = 40;
- BigTextLayer = 2;
- type
- TCheckPoints = record
- Check, RunerActive, StartFinish: boolean;
- CheckPointsId, Typ, lap:integer;
- Pos: array[1..2] of single;
- Range: single;
- LastPoss: single;
- TimeToActive: array[1..7] of integer;
- PlayerPos: array[1..2] of single;
- EditMode: array[1..32] of boolean;
- end;
- type
- TPlayerStat = record
- RunMode:boolean;
- CheckPointGet,Lap:integer;
- Timer:int64;
- end;
- var
- MapCheckPoints: TStringList;
- PlInfo: array[1..32] of TPlayerStat;
- CheckPoint: TCheckPoints;
- SpeedMovementText: single;
- bot:boolean; botprev: TStringList; xio:int64;
- procedure SaveCheckPoint();
- begin
- if (CheckPoint.Check) then begin
- if (CheckPoint.CheckPointsID>MapCheckPoints.Count) then begin
- MapCheckPoints.Append('X'+floattostr(CheckPoint.Pos[1])+'Y'+floattostr(CheckPoint.Pos[2])+'R'+floattostr(CheckPoint.Range)+'T'+inttostr(CheckPoint.Typ)+'L'+inttostr(CheckPoint.Lap));
- MapCheckPoints.SaveToFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
- CheckPoint.Check:=false;
- end else
- begin
- MapCheckPoints.Insert(CheckPoint.CheckPointsID,'X'+floattostr(CheckPoint.Pos[1])+'Y'+floattostr(CheckPoint.Pos[2])+'R'+floattostr(CheckPoint.Range)+'T'+inttostr(CheckPoint.Typ)+'L'+inttostr(CheckPoint.Lap));
- MapCheckPoints.Delete(CheckPoint.CheckPointsID+1);
- MapCheckPoints.SaveToFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
- CheckPoint.Check:=false;
- end;
- end;
- end;
- procedure SaveSetLap();
- var TempX,TempY,TempRange: single; temptyp:byte;
- begin
- TempX:=strtofloat(GetPiece(GetPiece(MapCheckPoints[0],'X',1),'Y',0)); TempY:=strtofloat(GetPiece(GetPiece(MapCheckPoints[0],'Y',1),'R',0)); TempRange:=strtofloat(GetPiece(GetPiece(MapCheckPoints[0],'R',1),'T',0)); temptyp:=strtoint(GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0));
- MapCheckPoints.Insert(0,'X'+floattostr(TempX)+'Y'+floattostr(TempY)+'R'+floattostr(TempRange)+'T'+inttostr(temptyp)+'L'+inttostr(CheckPoint.Lap));
- MapCheckPoints.Delete(1);
- MapCheckPoints.SaveToFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
- end;
- procedure SaveSetType(i,typett:integer);
- var TempX,TempY,TempRange: single; temptyp:byte;
- begin
- TempX:=strtofloat(GetPiece(GetPiece(MapCheckPoints[i],'X',1),'Y',0)); TempY:=strtofloat(GetPiece(GetPiece(MapCheckPoints[i],'Y',1),'R',0)); TempRange:=strtofloat(GetPiece(GetPiece(MapCheckPoints[i],'R',1),'T',0)); temptyp:=strtoint(GetPiece(GetPiece(MapCheckPoints[i],'T',1),'L',0));
- MapCheckPoints.Insert(i,'X'+floattostr(TempX)+'Y'+floattostr(TempY)+'R'+floattostr(TempRange)+'T'+inttostr(typett)+'L'+inttostr(CheckPoint.Lap));
- MapCheckPoints.Delete(i+1);
- MapCheckPoints.SaveToFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
- end;
- function FindCheckPoint(ID: byte; MaxDistance: integer): integer;
- var i: integer; TempX, TempY, X2, Y2, CursorMaxDist, NearestDistCursor, MaxDist, Dist: single;
- begin
- MaxDist:=MaxDistance*MaxDistance; CursorMaxDist:=CursorMaxSearch*CursorMaxSearch;
- Result:=-1;
- if (MapCheckPoints.Count=0) then exit;
- for i := 0 to MapCheckPoints.Count-1 do begin
- TempX:=strtofloat(GetPiece(GetPiece(MapCheckPoints[i],'X',1),'Y',0));
- TempY:=strtofloat(GetPiece(GetPiece(MapCheckPoints[i],'Y',1),'R',0));
- X2:=TempX; Y2:=TempY;
- X2:=X2-Players[ID].MouseAimX; Y2:=Y2-Players[ID].MouseAimY; NearestDistCursor:=X2*X2+Y2*Y2;
- X2:=TempX; Y2:=TempY;
- X2:=X2-Players[ID].X; Y2:=Y2-Players[ID].Y; Dist:=X2*X2+Y2*Y2;
- if (NearestDistCursor<CursorMaxDist) and (Dist<MaxDist) then begin
- Result:=i;
- CursorMaxDist:=NearestDistCursor;
- end;
- end;
- end;
- procedure OffAndReset(ID:byte);
- begin
- CheckPoint.RunerActive:=false;
- PlInfo[ID].RunMode:=false;
- PlInfo[ID].CheckPointGet:=0;
- PlInfo[ID].Timer:=0;
- PlInfo[ID].Lap:=1;
- Players[ID].Team:=5;
- end;
- function Commands(Player: TActivePlayer; Text: string): Boolean;
- var selectid,b:integer; TempX,TempY,TempRange:single; i:byte;
- begin
- if (Text='/playbot') then begin
- if (File.Exists(Script.Dir+'data/mapsdata/aplos')) then begin
- xio:=0;
- botprev := File.CreateStringListFromFile(Script.Dir+'data/mapsdata/aplos');
- if (bot) then bot:=false else bot:=true;
- end;
- end;
- if (Text='/play') then begin
- if (CheckPoint.RunerActive) then begin
- for b := 1 to 32 do if (Players[b].Active) and (PlInfo[b].RunMode) then begin
- if (Player.ID=b) then begin
- OffAndReset(Player.ID);
- Players.WriteConsole(Player.Name+' stoped runs!',$FFBB);
- end else Player.WriteConsole('Now play: '+Players[b].Name+', plese wait for end his game.',$FFBB);
- end;
- end else
- begin
- if (MapCheckPoints.Count>2) then begin
- for i := 1 to 32 do if (Players[i].Active) and (i<>Player.ID) and (Players[i].Team<>5) then Players[i].Team:=5;
- if not (PlInfo[Player.ID].RunMode) then begin
- PlInfo[Player.ID].RunMode:=true; CheckPoint.RunerActive:=true; File.Delete(Script.Dir+'data/mapsdata/aplos');
- Players[Player.ID].Team:=4;
- PlInfo[Player.ID].CheckPointGet:=0;
- PlInfo[Player.ID].Timer:=0;
- PlInfo[Player.ID].Lap:=1;
- Player.Move(strtofloat(GetPiece(GetPiece(MapCheckPoints[0],'X',1),'Y',0)),strtofloat(GetPiece(GetPiece(MapCheckPoints[0],'Y',1),'R',0)));
- Players.WriteConsole(Player.Name+' its run begins!',$FFBB);
- end;
- end else Player.WriteConsole('This map has too few checkpoints, minimal must be 3.',$FFBB);
- end;
- end;
- if (Player.IsAdmin) then begin
- if (Text='/editmodehelp') then begin
- Player.WriteConsole('Movement keys : Default : Description',$FFBB);
- Player.WriteConsole('Movement key : A,W,S,D : Move Checkpoint',$FFBB);
- Player.WriteConsole('Jet key : Right Mouse & Move <> : Press and move left or right to set',$FFBB);
- Player.WriteConsole('------------- : --------------------- : movement speed /setcheckpointspeed',$FFBB);
- Player.WriteConsole('Reload ket : R : Press to save all settings checkpoint /savecheckpoint',$FFBB);
- Player.WriteConsole('Shooting key : Left M. on checkpoint : Press to start edit checkpoint /selectcheckpoint',$FFBB);
- Player.WriteConsole('------------- : no editing checkpoint : -----------',$FFBB);
- Player.WriteConsole('Throw key : F checkpoing is edit : Cancel edit /canceleditcheckpoint',$FFBB);
- Player.WriteConsole('Throw key : F checkpoint non edit : Press to delete checkpoint edit /deletecheckpoint',$FFBB);
- Player.WriteConsole('------------- : mouse on checkpoint : -----------',$FFBB);
- Player.WriteConsole('Change Weap : q : Press to start create checkpoint',$FFBB);
- Player.WriteConsole('Shooting key : If editing checkpoint : Press to set range',$FFBB);
- Player.WriteConsole('------------- : Left M. : -----------',$FFBB);
- end;
- if (Text='/canceleditcheckpoint') then begin
- CheckPoint.Check:=false;
- Player.WriteConsole('Interrupt, editing or creating checkpoint.',$FFBB);
- end;
- if (Text='/helpcreate') then begin
- Player.WriteConsole('Use move keys to move checkpoint.',$FFBB);
- Player.WriteConsole('Use /setcheckpointspeed <num:1,2,3 or 1.123> to change speed move checkpoint.',$FFBB);
- Player.WriteConsole('Use /checkpointrange <num:1,2,3 or 1.123> to change range checkpoint.',$FFBB);
- Player.WriteConsole('Use /setrunlaps <num:1,2,3> to change run laps.',$FFBB);
- Player.WriteConsole('Use /savecheckpoint to accept and save checkpoint.',$FFBB);
- Player.WriteConsole('Use /selectcheckpoint <num> to edit checkpoint.',$FFBB);
- Player.WriteConsole('Use /deletecheckpoint <num> to delete checkpoint.',$FFBB);
- Player.WriteConsole('Use /editmode to ON useful checkpoint editor.',$FFBB);
- end;
- if (Text='/createcheckpoint') then begin
- if (CheckPoint.Check=false) then begin
- CheckPoint.Check:=true;
- CheckPoint.CheckPointsID:=MapCheckPoints.Count+1;
- CheckPoint.Range:=DeffaultCheckPointRange;
- CheckPoint.Typ:=2;
- CheckPoint.Pos[1]:=Player.X; CheckPoint.PlayerPos[1]:=Player.X;
- CheckPoint.Pos[2]:=Player.Y; CheckPoint.PlayerPos[2]:=Player.Y;
- Player.WriteConsole('You start create checkpoint: '+inttostr(CheckPoint.CheckPointsID),$FFBB);
- Player.WriteConsole('Use move keys to move checkpoint.',$FFBB);
- Player.WriteConsole('Use /setcheckpointspeed <num:1,2,3 or 1.123> to change speed move checkpoint.',$FFBB);
- Player.WriteConsole('Use /checkpointrange <num:1,2,3 or 1.123> to change range checkpoint.',$FFBB);
- Player.WriteConsole('Use /setrunlaps <num:1,2,3> to change run laps.',$FFBB);
- Player.WriteConsole('Use /savecheckpoint to accept and save checkpoint.',$FFBB);
- Player.WriteConsole('Use /selectcheckpoint <num> to edit checkpoint.',$FFBB);
- Player.WriteConsole('Use /deletecheckpoint <num> to delete checkpoint.',$FFBB);
- Player.WriteConsole('Use /editmode to ON useful checkpoint editor.',$FFBB);
- end else CheckPoint.Check:=false;
- end;
- if (Text='/editmode') then begin
- if (CheckPoint.EditMode[Player.ID]=false) then begin
- CheckPoint.EditMode[Player.ID]:=true;
- Player.WriteConsole('Edit mode is on!',$FFBB);
- Player.WriteConsole('Write /editmodehelp to see help how use.',$FFBB);
- end else
- begin
- CheckPoint.EditMode[Player.ID]:=false;
- Player.WriteConsole('Edit mode is off!',$FFBB);
- end;
- end;
- if (Text='/savecheckpoint') then begin
- SaveCheckPoint();
- Player.WriteConsole('Save all settings checkpoint: '+inttostr(CheckPoint.CheckPointsID+1),$FFBB);
- end;
- if (Copy(Text,1,17)='/selectcheckpoint') then begin
- selectid:=-1;
- try
- delete(Text,1,17);
- selectid:=strtoint(text)-1;
- if (selectid>-1) then begin
- if (selectid<MapCheckPoints.Count) then begin
- CheckPoint.Check:=true;
- CheckPoint.CheckPointsID:=selectid;
- TempX:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'X',1),'Y',0));
- TempY:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'Y',1),'R',0));
- TempRange:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'R',1),'T',0));
- CheckPoint.Typ:=strtoint(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'T',1),'L',0));
- CheckPoint.Pos[1]:=TempX; CheckPoint.PlayerPos[1]:=TempX;
- CheckPoint.Pos[2]:=TempY; CheckPoint.PlayerPos[2]:=TempY;
- CheckPoint.Range:=TempRange;
- Player.WriteConsole('Select checkpoint:'+text,$FFBB);
- end else Player.WriteConsole('Checkpoint id is too high. The highest id: '+inttostr(MapCheckPoints.Count),$FFBB);
- end else Player.WriteConsole('ID must be greater than 0.',$FFBB);
- except
- Player.WriteConsole('An error occurred, please enter a valid number of checkpoint.',$FFBB);
- end;
- end;
- if (Copy(Text,1,17)='/deletecheckpoint') then begin
- if not (CheckPoint.Check) then begin
- selectid:=-1;
- try
- delete(Text,1,17);
- selectid:=strtoint(text)-1;
- if (selectid>-1) then begin
- if (selectid<MapCheckPoints.Count) then begin
- Player.WriteConsole('Remove checkpoint:'+text,$FFBB);
- if (selectid=0) and (GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0)='4') then begin
- Player.WriteConsole('We see that delete Start/Finish checkpoint. And see lap '+inttostr(CheckPoint.Lap)+', we set laps to 1 ;)',$FFBB);
- CheckPoint.Lap:=1;
- SaveSetLap();
- end;
- if (selectid=0) and (GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0)='1') then begin
- SaveSetType(MapCheckPoints.Count-1,2);
- Player.WriteConsole('We detect you delete start checkpoint. We change finish checkpoint to normal.',$FFBB);
- end;
- if (selectid=MapCheckPoints.Count-1) and (GetPiece(GetPiece(MapCheckPoints[MapCheckPoints.Count-1],'T',1),'L',0)='3') then begin
- SaveSetType(0,2);
- Player.WriteConsole('We detect you delete finish checkpoint. We change start checkpoint to normal.',$FFBB);
- end;
- MapCheckPoints.Delete(selectid);
- MapCheckPoints.SaveToFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
- for b := 0 to MapCheckPoints.Count+1 do Players.WorldText(b+1,'',70,$33CC00,0.0001,0,0);
- end else Player.WriteConsole('Checkpoint id is too high. The highest id: '+inttostr(MapCheckPoints.Count),$FFBB);
- end else Player.WriteConsole('ID must be greater than 0.',$FFBB);
- except
- Player.WriteConsole('An error occurred, please enter a valid number of checkpoint.',$FFBB);
- end;
- end else Player.WriteConsole('You can not remove a checkpoint when creating or editing other checkpoint.',$FFBB);
- end;
- if (Copy(Text,1,16)='/checkpointrange') then begin
- if (CheckPoint.Check) then begin
- try
- delete(Text,1,16);
- TempRange:=strtofloat(text);
- if (TempRange<MinimalCheckPointRange) then begin
- TempRange:=MinimalCheckPointRange;
- Player.WriteConsole('Value is higher than the minimum, I set to minimal: '+formatfloat('0.0000',MinimalCheckPointRange),$FFBB);
- end else Player.WriteConsole('Checkpoint range set to: '+formatfloat('0.0000',TempRange),$FFBB);
- except
- Player.WriteConsole('An error occurred, please enter a valid number (can be 123 etc or 1.1234). I set to default value: '+formatfloat('0.0000',DeffaultCheckPointRange),$FFBB);
- TempRange:=DeffaultCheckPointRange;
- end;
- CheckPoint.Range:=TempRange;
- end;
- end;
- if (Copy(Text,1,11)='/setrunlaps') then begin
- if (MapCheckPoints.Count>2) then begin
- if (GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0)='4') then begin
- try
- delete(Text,1,11);
- selectid:=strtoint(text);
- if (selectid<=0) then begin
- selectid:=1;
- Player.WriteConsole('The minimum number of laps is 1. Changed to the minimum value.',$FFBB);
- end else Player.WriteConsole('Changed the number of laps on '+inttostr(selectid)+'.',$FFBB);
- except
- Player.WriteConsole('An error occurred, please enter a valid number (can be 123 etc). I set to last value: '+inttostr(Checkpoint.Lap),$FFBB);
- selectid:=Checkpoint.Lap;
- end;
- CheckPoint.Lap:=selectid;
- SaveSetLap();
- end else
- begin
- Player.WriteConsole('First plese change "Checkpoint 1!" or "[ Start ]" change to checkpoint Start/Finish.',$FFBB);
- Player.WriteConsole('To change first start edit checkpoint 1 next write /setcheckpointtype 4 and save checkpoint.',$FFBB);
- end;
- end else Player.WriteConsole('First create minimum 3 checkpoints.',$FFBB);
- end;
- if (Copy(Text,1,18)='/setcheckpointtype') then begin
- if (CheckPoint.Check) then begin
- if (MapCheckPoints.Count>2) then begin
- try
- delete(Text,1,18);
- selectid:=strtoint(text);
- if (selectid>0) then begin
- if (selectid<5) then begin
- if (CheckPoint.CheckPointsId<=MapCheckPoints.Count) then begin
- case selectid of
- 1: begin
- if (CheckPoint.CheckPointsId=0) then begin
- CheckPoint.Typ:=selectid;
- Player.WriteConsole('Checkpoint change to start.',$FFBB);
- if (GetPiece(GetPiece(MapCheckPoints[MapCheckPoints.Count-1],'T',1),'L',0)<>'3') then begin
- SaveSetType(MapCheckPoints.Count-1,3);
- Player.WriteConsole('We setup for you to finish checkpoint type on the last checkpoint.',$FFBB);
- end;
- if (CheckPoint.Lap>1) then begin
- Player.WriteConsole('We see that disable laps mode. And see lap '+inttostr(CheckPoint.Lap)+', we set laps to 1 ;)',$FFBB);
- CheckPoint.Lap:=1;
- SaveSetLap();
- end;
- end else Player.WriteConsole('To set to start checkpoint id must be 1.',$FFBB);
- end;
- 2: begin
- CheckPoint.Typ:=selectid;
- Player.WriteConsole('Checkpoint change to normal.',$FFBB);
- if (CheckPoint.CheckPointsId=0) then begin
- if (GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0)='1') then begin
- SaveSetType(0,2);
- Player.WriteConsole('You set start checkpoint to normal we set checkpoint finish also to normal checkpoin for you.',$FFBB);
- end;
- if (GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0)='4') then begin
- Player.WriteConsole('We detect checkpoint Start/Finish and we disable this checkpoint.',$FFBB);
- if (CheckPoint.Lap>1) then begin
- Player.WriteConsole('We see that disable laps mode. And see lap '+inttostr(CheckPoint.Lap)+', we set laps to 1 ;)',$FFBB);
- CheckPoint.Lap:=1;
- SaveSetLap();
- end;
- end;
- end;
- if (CheckPoint.CheckPointsId=MapCheckPoints.Count-1) then begin
- if (GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0)='1') then begin
- SaveSetType(0,2);
- Player.WriteConsole('You set finish checkpoint to normal we set checkpoint start also to normal checkpoin for you.',$FFBB);
- end;
- end;
- end;
- 3: begin
- if (CheckPoint.CheckPointsId=MapCheckPoints.Count-1) then begin
- CheckPoint.Typ:=selectid;
- Player.WriteConsole('Checkpoint change to end.',$FFBB);
- if (GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0)<>'1') then begin
- SaveSetType(0,1);
- Player.WriteConsole('We setup for you to start checkpoint type on at the first checkpoint.',$FFBB);
- end;
- if (CheckPoint.Lap>1) then begin
- Player.WriteConsole('We see that disable laps mode. And see lap '+inttostr(CheckPoint.Lap)+', we set laps to 1 ;)',$FFBB);
- CheckPoint.Lap:=1;
- SaveSetLap();
- end;
- end else Player.WriteConsole('To set to start checkpoint id must be '+inttostr(MapCheckPoints.Count)+'.'+inttostr(CheckPoint.CheckPointsId),$FFBB);
- end;
- 4: begin
- if (CheckPoint.CheckPointsId=0) then begin
- CheckPoint.Typ:=selectid;
- if (GetPiece(GetPiece(MapCheckPoints[MapCheckPoints.Count-1],'T',1),'L',0)='3') then begin
- SaveSetType(MapCheckPoints.Count-1,2);
- Player.WriteConsole('We find finish checkpoint and change to normal checkpoint.',$FFBB);
- end else Player.WriteConsole('Checkpoint change to start and end.',$FFBB);
- end else Player.WriteConsole('To set to start checkpoint id must be 1.',$FFBB);
- end;
- end;
- end else Player.WriteConsole('Plese first save new checkpoint next edit and start change checkpoint type.',$FFBB);
- end else Player.WriteConsole('Checkpoint type too high number. 1 start, 2 normal, 3 end, 4 start and end',$FFBB);
- end else Player.WriteConsole('Checkpoint type too low number. 1 start, 2 normal, 3 end, 4 start and end',$FFBB);
- except
- Player.WriteConsole('An error occurred, please enter a valid number(1-4). We set to normal checkpoint.',$FFBB);
- selectid:=2;
- end;
- end else Player.WriteConsole('Must create minimum 3 checkpoint to start change type.',$FFBB);
- end else Player.WriteConsole('First start edit checkpoint.',$FFBB);
- end;
- if (Copy(Text,1,19)='/setcheckpointspeed') then begin
- try
- delete(Text,1,19);
- TempRange:=strtofloat(text);
- if (TempRange<0.01) then begin
- TempRange:=0.01;
- Player.WriteConsole('Value is higher than the minimum, I set to minimal: 0.01',$FFBB);
- end else
- begin
- Player.WriteConsole('Last speed: '+formatfloat('0.0000',SpeedMovementText)+', default: '+formatfloat('0.0000',DeffaultMoveSpeed),$FFBB);
- Player.WriteConsole('Checkpoint movement speed set to: '+formatfloat('0.0000',TempRange),$FFBB);
- end;
- except
- Player.WriteConsole('An error occurred, please enter a valid number (can be 123 etc or 1.1234). I set to default value: '+formatfloat('0.0000',DeffaultMoveSpeed),$FFBB);
- TempRange:=DeffaultMoveSpeed;
- end;
- SpeedMovementText:=TempRange;
- end;
- end;
- Result:=False;
- end;
- procedure ChangeAfter(Next: string);
- begin
- if (File.Exists(Script.Dir+'data/mapsdata/'+next)) then begin
- MapCheckPoints := File.CreateStringListFromFile(Script.Dir+'data/mapsdata/'+next);
- if (MapCheckPoints.Count>0) then begin
- CheckPoint.Lap := strtoint(GetPiece(MapCheckPoints[0],'L',1));
- if (CheckPoint.Lap<1) then CheckPoint.Lap:=1;
- end else CheckPoint.Lap:=1;
- end else
- begin
- MapCheckPoints := File.CreateStringList();
- CheckPoint.Lap:=1;
- end;
- end;
- function DistplayTime(times:double):string;
- var min,sec,ms: integer; temp: double;
- begin
- min := trunc(times/3600.0);
- sec := trunc((times-(min*3600.0))/60.0);
- temp:= times-((min*3600.0)+(sec*60.0));
- ms := trunc(temp/60.0*1000);
- if (min>0) then Result:=inttostr(min)+'min, ';
- if (sec>0) then if (result<>'') then Result:=Result+inttostr(sec)+'sec, ' else Result:=inttostr(sec)+'sec, ';
- if (ms>0) then if (result<>'') then Result:=Result+inttostr(ms)+'ms' else Result:=inttostr(ms)+'ms';
- if (Result[Length(Result)]=',') then Result:=Copy(Result,1,Length(Result)-1);
- end;
- procedure AppOnIdleSC3(Ticks: integer);
- var SearchRunnerID,CheckPType: byte; i,b: integer; tempcolor: longint; TempX,TempY,TempRange,TempAcc,XTam,YTam: single; kd: double; NS, NW: TNewWeapon; TempTimes: string;
- begin
- //--- Search Runner ID ---\\
- SearchRunnerID:=33;
- for i := 1 to 32 do if (Players[i].Active) and (PlInfo[i].RunMode) then SearchRunnerID:=i;
- //--- Display Timer ---\\
- if (CheckPoint.RunerActive) and (SearchRunnerID<33) then begin
- PlInfo[SearchRunnerID].Timer := PlInfo[SearchRunnerID].Timer+1;
- TempTimes := DistplayTime(PlInfo[SearchRunnerID].Timer);
- Players[SearchRunnerID].BigText(BigTextLayer,'Your time: '+TempTimes, 20,$FFBB,0.065,12,425);
- for i := 1 to 32 do begin
- if (Players[i].Active) and (i<>SearchRunnerID) then begin
- Players[i].BigText(BigTextLayer,Players[SearchRunnerID].Name+' time: '+TempTimes, 20,$FFBB,0.065,12,425);
- end;
- end;
- end;
- //--- Display All Checkpoints ---\\
- for i := 0 to MapCheckPoints.Count-iif(CheckPoint.StartFinish,0,1) do begin
- if (CheckPoint.CheckPointsID=i) and (CheckPoint.Check) then continue;
- //--- Get Temp Checkpoin Info ---\\
- if (i=MapCheckPoints.Count) then begin
- TempX:=strtofloat(GetPiece(GetPiece(MapCheckPoints[0],'X',1),'Y',0));
- TempY:=strtofloat(GetPiece(GetPiece(MapCheckPoints[0],'Y',1),'R',0));
- TempRange:=strtofloat(GetPiece(GetPiece(MapCheckPoints[0],'R',1),'T',0));
- CheckPType:=strtoint(GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0));
- end else
- begin
- TempX:=strtofloat(GetPiece(GetPiece(MapCheckPoints[i],'X',1),'Y',0));
- TempY:=strtofloat(GetPiece(GetPiece(MapCheckPoints[i],'Y',1),'R',0));
- TempRange:=strtofloat(GetPiece(GetPiece(MapCheckPoints[i],'R',1),'T',0));
- CheckPType:=strtoint(GetPiece(GetPiece(MapCheckPoints[i],'T',1),'L',0));
- end;
- if (CheckPoint.RunerActive) and (SearchRunnerID<33) then begin
- if (PlInfo[SearchRunnerID].CheckPointGet=i) then begin
- TempAcc:=Distance(TempX,TempY,Players[SearchRunnerID].X,Players[SearchRunnerID].Y);
- if (TempAcc<=TempRange) then begin
- PlInfo[SearchRunnerID].CheckPointGet:=PlInfo[SearchRunnerID].CheckPointGet+1;
- if (PlInfo[SearchRunnerID].CheckPointGet=MapCheckPoints.Count+iif(CheckPoint.StartFinish,1,0)) then begin
- if (PlInfo[SearchRunnerID].Lap=CheckPoint.Lap) then begin
- OffAndReset(SearchRunnerID);
- Players.WriteConsole(Players[SearchRunnerID].Name+' have time: '+TempTimes,$FFBB);
- Players[SearchRunnerID].BigText(BigTextLayer,'Your time: '+TempTimes, 250,$FFBB,0.065,12,425);
- for b := 1 to 32 do begin
- if (Players[b].Active) and (b<>SearchRunnerID) then begin
- Players[b].BigText(BigTextLayer,Players[SearchRunnerID].Name+' time: '+TempTimes, 250,$FFBB,0.065,12,425);
- end;
- end;
- end else
- begin
- PlInfo[SearchRunnerID].Lap:=PlInfo[SearchRunnerID].Lap+1;
- PlInfo[SearchRunnerID].CheckPointGet:=0;
- end;
- end;
- end;
- end;
- //--- Get Checkpoint Color ---\\
- if (i<PlInfo[SearchRunnerID].CheckPointGet) then tempcolor:=$FF9900 else tempcolor:=$33CC00;
- //--- Display Checkpoint If Runer Active ---\\
- case (CheckPType) of
- 1: begin Players.WorldText(i+1,'[ Start ]',70,tempcolor,0.055,TempX-31.95,TempY); CheckPoint.StartFinish:=false; end;
- 2: Players.WorldText(i+1,'Checkpoint '+inttostr(i+1)+'!',70,tempcolor,0.055,TempX-43.5,TempY);
- 3: begin Players.WorldText(i+1,'[ Finish! ]',70,tempcolor,0.055,TempX-34,TempY); CheckPoint.StartFinish:=false; end;
- 4: if (PlInfo[SearchRunnerID].CheckPointGet>1) then begin
- CheckPoint.StartFinish:=true;
- if (CheckPoint.Lap>1) then Players.WorldText(i+MapCheckPoints.Count+12,'[ Lap '+inttostr(PlInfo[SearchRunnerID].Lap)+'/'+inttostr(CheckPoint.Lap)+'! ]',70,tempcolor+12000,0.035,TempX-22.8,TempY-6.5);
- Players.WorldText(i+1,'[ Finish! ]',70,tempcolor,0.055,TempX-34,TempY);
- end else
- begin
- CheckPoint.StartFinish:=false;
- if (CheckPoint.Lap>1) then Players.WorldText(i+MapCheckPoints.Count+12,'[ Lap '+inttostr(PlInfo[SearchRunnerID].Lap)+'/'+inttostr(CheckPoint.Lap)+'! ]',70,tempcolor+12000,0.035,TempX-22.8,TempY-6.5);
- Players.WorldText(i+1,'[ Start ]',70,tempcolor,0.055,TempX-31.95,TempY);
- end;
- end;
- end else
- begin
- //--- If No Runer Active Display Checkpoint ---\\
- case (CheckPType) of
- 1: Players.WorldText(i+1,'[ Start ]',70,$33CC00,0.055,TempX-31.95,TempY);
- 2: Players.WorldText(i+1,'Checkpoint '+inttostr(i+1)+'!',70,$33CC00,0.055,TempX-43.5,TempY);
- 3: Players.WorldText(i+1,'[ Finish! ]',70,$33CC00,0.055,TempX-34,TempY);
- 4: begin
- if (CheckPoint.Lap>1) then Players.WorldText(i+MapCheckPoints.Count+12,'[ Lap '+inttostr(CheckPoint.Lap)+' ]',70,$FF9900+12000,0.035,TempX-17,TempY-6.5);
- Players.WorldText(i+1,'[Start/Finish]',70,$33CC00,0.055,TempX-45.5,TempY);
- end;
- end;
- end;
- end;
- //-- Disable Edit Mode And More If Player Is Runing --\\
- if (CheckPoint.RunerActive) then WriteLnFile(Script.Dir+'data/mapsdata/aplos',Floattostr(Players[SearchRunnerID].X)+':'+Floattostr(Players[SearchRunnerID].Y));
- if (bot) then begin
- XTam:= strtofloat(GetPiece(botprev[xio],':',0));
- YTam:= strtofloat(GetPiece(botprev[xio],':',1));
- map.CreateBullet(XTam,YTam , 0, 0, 0, 5, Players[1]);
- if xio< botprev.count then xio:=xio+1;
- if xio= botprev.count then begin
- bot:=false;
- File.Delete(Script.Dir+'data/mapsdata/aplos');
- end;
- end;
- if (CheckPoint.RunerActive) then exit;
- for i := 1 to 32 do begin
- if (Players[i].Active) and (Players[i].IsAdmin) and (CheckPoint.Check) then begin
- //--- Move Text ---\\
- if (Players[i].KeyUp) then CheckPoint.Pos[2]:=CheckPoint.Pos[2]-SpeedMovementText;
- if (Players[i].KeyCrouch) then CheckPoint.Pos[2]:=CheckPoint.Pos[2]+SpeedMovementText;
- if (Players[i].KeyLeft) then CheckPoint.Pos[1]:=CheckPoint.Pos[1]-SpeedMovementText;
- if (Players[i].KeyRight) then CheckPoint.Pos[1]:=CheckPoint.Pos[1]+SpeedMovementText;
- //--- Off Move Player ---\\
- Players[i].Move(CheckPoint.PlayerPos[1],CheckPoint.PlayerPos[2]);
- Players[i].SetVelocity(0,0);
- //--- Display Text ---\\
- Players.WorldText(MapCheckPoints.Count+11,'[-]',55,$FF00FF ,0.025,CheckPoint.Pos[1]-3.8,CheckPoint.Pos[2]);
- Players.WorldText(MapCheckPoints.Count+2,'Pos X: '+FormatFloat('0.0000',CheckPoint.Pos[1])+', Pos Y: '+FormatFloat('0.0000',CheckPoint.Pos[2])+', Range: '+FormatFloat('0.0000',CheckPoint.Range),70,$FF9999,0.025,CheckPoint.Pos[1]-71.5,CheckPoint.Pos[2]-3.1);
- case (CheckPoint.Typ) of
- 1: Players.WorldText(MapCheckPoints.Count+3,'[ Start ]',70,$33CC00,0.055,CheckPoint.Pos[1]-31.95,CheckPoint.Pos[2]);
- 2: if (CheckPoint.CheckPointsID>MapCheckPoints.Count) then Players.WorldText(MapCheckPoints.Count+3,'Checkpoint '+inttostr(CheckPoint.CheckPointsID)+'!',70,$33CC00,0.055,CheckPoint.Pos[1]-43.5,CheckPoint.Pos[2]) else Players.WorldText(MapCheckPoints.Count+3,'Checkpoint '+inttostr(CheckPoint.CheckPointsID+1)+'!',70,$33CC00,0.055,CheckPoint.Pos[1]-43.5,CheckPoint.Pos[2]);
- 3: Players.WorldText(MapCheckPoints.Count+3,'[ Finish! ]',70,$33CC00,0.055,CheckPoint.Pos[1]-34,CheckPoint.Pos[2]);
- 4: begin
- if (CheckPoint.Lap>1) then Players.WorldText(MapCheckPoints.Count+13,'[ Lap '+inttostr(CheckPoint.Lap)+' ]',70,$FF9900+12000,0.035,CheckPoint.Pos[1]-17,CheckPoint.Pos[2]-6.5);
- Players.WorldText(MapCheckPoints.Count+3,'[Start/Finish]',70,$33CC00,0.055,CheckPoint.Pos[1]-45.5,CheckPoint.Pos[2]);
- end;
- end;
- end;
- //--- Edit Mode ---\\
- if (Players[i].Active) and (Players[i].IsAdmin) and (CheckPoint.EditMode[i]) then begin
- //--- Set Weapon For Good Mouse Work ---\\
- if (CheckPoint.TimeToActive[6]>0) or (CheckPoint.TimeToActive[3]>0) then begin
- NS:=TNewWeapon.Create(); NS.WType:=12; NS.Ammo:=1;
- NW:=TNewWeapon.Create(); NW.WType:=255; NW.Ammo:=1;
- Players[i].ForceWeapon(NS,NW);
- NS.Free(); NW.Free();
- end else
- begin
- NS:=TNewWeapon.Create(); NS.WType:=255; NS.Ammo:=1;
- NW:=TNewWeapon.Create(); NW.WType:=255; NW.Ammo:=1;
- Players[i].ForceWeapon(NS,NW);
- NS.Free(); NW.Free();
- end;
- //--- Mouse Move Speed Add ---\\
- if (Players[i].KeyJetpack) and (CheckPoint.Check) then begin
- if (CheckPoint.TimeToActive[1]>=10) then begin
- if CheckPoint.TimeToActive[1]=10 then begin
- CheckPoint.LastPoss:=single(Players[i].MouseAimX);
- CheckPoint.TimeToActive[1]:=CheckPoint.TimeToActive[1]+1;
- end;
- TempAcc:=CheckPoint.LastPoss-single(Players[i].MouseAimX);
- if TempAcc>MouseMovementAccuracy then SpeedMovementText:=SpeedMovementText-MovementOffsetSpeedAdd else if TempAcc<-MouseMovementAccuracy then SpeedMovementText:=SpeedMovementText+MovementOffsetSpeedAdd;
- if (SpeedMovementText<0.01) then SpeedMovementText:=0.01;
- CheckPoint.LastPoss:=single(Players[i].MouseAimX);
- Players.WorldText(MapCheckPoints.Count+4,'SpeedMove: '+FormatFloat('0.0000',SpeedMovementText),70,$33CC00,0.035,Players[i].MouseAimX-38,Players[i].MouseAimY-12.1);
- end else CheckPoint.TimeToActive[1]:=CheckPoint.TimeToActive[1]+1;
- end else CheckPoint.TimeToActive[1]:=0;
- //--- Key Save Check Point ---\\
- if (Players[i].KeyReload) and (CheckPoint.Check) then begin
- if (CheckPoint.TimeToActive[2]>=18) then begin
- Players.WorldText(MapCheckPoints.Count+5,'Save Complete :)',70,$CC3300,0.035,CheckPoint.Pos[1]-32.4,CheckPoint.Pos[2]-8.8);
- SaveCheckPoint();
- end else
- begin
- //-- Display Save Info --\\
- kd := (CheckPoint.TimeToActive[2]/18.0)*100;
- Players.WorldText(MapCheckPoints.Count+5,'Save '+formatfloat('0.00',kd)+'% :)',70,$CC3300,0.035,CheckPoint.Pos[1]-28,CheckPoint.Pos[2]-8.8);
- CheckPoint.TimeToActive[2]:=CheckPoint.TimeToActive[2]+1;
- end;
- end else CheckPoint.TimeToActive[2]:=0;
- //--- Key Get Edit ---\\
- if (Players[i].KeyShoot) and (CheckPoint.Check=false) then begin
- if (CheckPoint.TimeToActive[3]>=45) then begin
- //-- Start Edit --\\
- CheckPoint.CheckPointsID:=FindCheckPoint(i,700);
- if (CheckPoint.CheckPointsID>-1) then begin
- CheckPoint.Check:=true;
- TempX:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'X',1),'Y',0));
- TempY:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'Y',1),'R',0));
- CheckPoint.Typ:=strtoint(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'T',1),'L',0));
- CheckPoint.Pos[1]:=TempX; CheckPoint.PlayerPos[1]:=TempX;
- CheckPoint.Pos[2]:=TempY; CheckPoint.PlayerPos[2]:=TempY;
- CheckPoint.Range:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'R',1),'T',0));
- Players.WorldText(MapCheckPoints.Count+6,'Start Editing :)',70,$CC3300,0.035,CheckPoint.Pos[1]-27.5,CheckPoint.Pos[2]-8.8);
- end else if (CheckPoint.CheckPointsID=-1) then CheckPoint.TimeToActive[3]:=0;
- end else
- begin
- //-- Search Check Point --\\
- CheckPoint.CheckPointsID:=FindCheckPoint(i,700);
- if (CheckPoint.CheckPointsID>-1) then begin
- TempX:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'X',1),'Y',0));
- TempY:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'Y',1),'R',0));
- //-- Display Start Edit Info --\\
- kd := (CheckPoint.TimeToActive[3]/45.0)*100;
- Players.WorldText(MapCheckPoints.Count+6,'Begin Edit '+formatfloat('0.00',kd)+'% :)',70,$CC3300,0.035,TempX-38,TempY-4.2);
- CheckPoint.TimeToActive[3]:=CheckPoint.TimeToActive[3]+1;
- end else if (CheckPoint.CheckPointsID=-1) then CheckPoint.TimeToActive[3]:=0;
- end;
- end else CheckPoint.TimeToActive[3]:=0;
- //--- Key Canceled Edit ---\\
- if (Players[i].KeyThrow) and (CheckPoint.Check) then begin
- if (CheckPoint.TimeToActive[4]>=18) then begin
- //-- Canceled Edit --\\
- Players.WorldText(MapCheckPoints.Count+7,'Canceled Editing!',70,$CC3300,0.035,CheckPoint.Pos[1]-33,CheckPoint.Pos[2]-8.8);
- CheckPoint.Check:=false;
- end else
- begin
- //-- Display Canceled Edit Info --\\
- kd := (CheckPoint.TimeToActive[4]/18.0)*100;
- Players.WorldText(MapCheckPoints.Count+7,'Canceled Editing '+formatfloat('0.00',kd)+'%',70,$CC3300,0.035,CheckPoint.Pos[1]-46.5,CheckPoint.Pos[2]-8.8);
- CheckPoint.TimeToActive[4]:=CheckPoint.TimeToActive[4]+1;
- end;
- end else CheckPoint.TimeToActive[4]:=0;
- //--- Key Create Checkpoint ---\\
- if (Players[i].KeyChangeWeap) and (CheckPoint.Check=false) then begin
- if (CheckPoint.TimeToActive[5]>=25) then begin
- //-- Ket Create Checkpoint --\\
- CheckPoint.Check:=true;
- CheckPoint.CheckPointsID:=MapCheckPoints.Count+1;
- CheckPoint.Pos[1]:=Players[i].X; CheckPoint.PlayerPos[1]:=Players[i].X;
- CheckPoint.Pos[2]:=Players[i].Y; CheckPoint.PlayerPos[2]:=Players[i].Y;
- CheckPoint.Range:=DeffaultCheckPointRange;
- CheckPoint.Typ:=2;
- Players.WorldText(MapCheckPoints.Count+8,'Create Create Checkpoint!',70,$CC3300,0.035,CheckPoint.Pos[1]-50.5,CheckPoint.Pos[2]-8.8);
- end else
- begin
- //-- Display Create Checkpoint Info --\\
- kd := (CheckPoint.TimeToActive[5]/25.0)*100;
- Players.WorldText(MapCheckPoints.Count+8,'Create Checkpoint '+formatfloat('0.00',kd)+'%',70,$CC3300,0.035,Players[i].X-51,Players[i].Y-8.8);
- CheckPoint.TimeToActive[5]:=CheckPoint.TimeToActive[5]+1;
- end;
- end else CheckPoint.TimeToActive[5]:=0;
- //--- Mouse Set Range ---\\
- if (Players[i].KeyShoot) and (CheckPoint.Check) then begin
- if (CheckPoint.TimeToActive[6]>=22) then begin
- CheckPoint.Range := Distance(CheckPoint.Pos[1],CheckPoint.Pos[2],single(Players[i].MouseAimX),single(Players[i].MouseAimY));
- if (CheckPoint.Range<MinimalCheckPointRange) then CheckPoint.Range:=MinimalCheckPointRange;
- Players.WorldText(MapCheckPoints.Count+9,'Range: '+formatfloat('0.0000',CheckPoint.Range),70,$33CC00,0.035,Players[i].MouseAimX-31.3,Players[i].MouseAimY-12.1);
- end else CheckPoint.TimeToActive[6]:=CheckPoint.TimeToActive[6]+1;
- end else CheckPoint.TimeToActive[6]:=0;
- //--- Key Delete Checkpoint ---\\
- if (Players[i].KeyThrow) and (CheckPoint.Check=false) then begin
- if (CheckPoint.TimeToActive[7]>=45) then begin
- CheckPoint.CheckPointsID:=FindCheckPoint(i,700);
- if (CheckPoint.CheckPointsID>-1) then begin
- Players[i].WriteConsole('Remove checkpoint: '+inttostr(CheckPoint.CheckPointsID+1),$FFBB);
- if (CheckPoint.CheckPointsID=0) and (GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0)='4') then begin
- Players[i].WriteConsole('We see that delete Start/Finish checkpoint. And see lap '+inttostr(CheckPoint.Lap)+', we set laps to 1 ;)',$FFBB);
- CheckPoint.Lap:=1;
- SaveSetLap();
- end;
- if (CheckPoint.CheckPointsID=0) and (GetPiece(GetPiece(MapCheckPoints[0],'T',1),'L',0)='1') then begin
- SaveSetType(MapCheckPoints.Count-1,2);
- Players[i].WriteConsole('We detect you delete start checkpoint. We change finish checkpoint to normal.',$FFBB);
- end;
- if (CheckPoint.CheckPointsID=MapCheckPoints.Count-1) and (GetPiece(GetPiece(MapCheckPoints[MapCheckPoints.Count-1],'T',1),'L',0)='3') then begin
- SaveSetType(0,2);
- Players[i].WriteConsole('We detect you delete finish checkpoint. We change start checkpoint to normal.',$FFBB);
- end;
- TempX:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'X',1),'Y',0));
- TempY:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'Y',1),'R',0));
- Players.WorldText(MapCheckPoints.Count+10,'Delete Complete :)',70,$CC3300,0.035,TempX-37,TempY-4.2);
- MapCheckPoints.Delete(CheckPoint.CheckPointsID); CheckPoint.TimeToActive[7]:=0;
- MapCheckPoints.SaveToFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
- for b := 0 to MapCheckPoints.Count+1 do Players.WorldText(b+1,'',70,$33CC00,0.0001,0,0);
- end else if (CheckPoint.CheckPointsID=-1) then CheckPoint.TimeToActive[7]:=0;
- end else
- begin
- //-- Display Delete Info --\\-
- CheckPoint.CheckPointsID:=FindCheckPoint(i,700);
- if (CheckPoint.CheckPointsID>-1) then begin
- TempX:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'X',1),'Y',0));
- TempY:=strtofloat(GetPiece(GetPiece(MapCheckPoints[CheckPoint.CheckPointsID],'Y',1),'R',0));
- kd := (CheckPoint.TimeToActive[7]/45.0)*100;
- Players.WorldText(MapCheckPoints.Count+10,'Delete '+formatfloat('0.00',kd)+'% :)',70,$CC3300,0.035,TempX-32.5,TempY-4.2);
- CheckPoint.TimeToActive[7]:=CheckPoint.TimeToActive[7]+1;
- end else if (CheckPoint.CheckPointsID=-1) then CheckPoint.TimeToActive[7]:=0;
- end;
- end else CheckPoint.TimeToActive[7]:=0;
- end;
- end;
- end;
- Procedure JoinTeam(Player: TActivePlayer; Team: TTeam);
- begin
- if (CheckPoint.RunerActive) then begin
- if not (PlInfo[Player.ID].RunMode) and (Team.ID<>5) then Player.Team:=5;
- if (PlInfo[Player.ID].RunMode) and (Team.ID<>4) then begin
- OffAndReset(Player.ID);
- Players.WriteConsole(Player.Name+' stoped runing!',$FFBB);
- end;
- end;
- end;
- procedure LeaveGame(Player: TActivePlayer; Kicked: Boolean);
- begin
- if (PlInfo[Player.ID].RunMode) then OffAndReset(Player.ID);
- if (CheckPoint.EditMode[Player.ID]) then begin
- CheckPoint.EditMode[Player.ID]:=false;
- CheckPoint.Check:=false;
- end;
- end;
- initialization
- begin
- //---Instal Script ---\\
- for Decl := 1 to 32 do Players[Decl].OnCommand := @Commands;
- for Decl := 1 to 5 do Game.Teams[Decl].OnJoin := @JoinTeam;
- Game.TickThreshold := 1;
- Game.OnLeave := @LeaveGame;
- Map.OnAfterMapChange := @ChangeAfter;
- Game.OnClockTick := @AppOnIdleSC3;
- //-- Vars --\\
- SpeedMovementText:=DeffaultMoveSpeed;
- //--- Load Map Checkpoints ---\\
- if (File.Exists(Script.Dir+'data/mapsdata/'+Game.CurrentMap)) then begin
- MapCheckPoints := File.CreateStringListFromFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
- if (MapCheckPoints.Count>0) then begin
- CheckPoint.Lap := strtoint(GetPiece(MapCheckPoints[0],'L',1));
- if (CheckPoint.Lap<1) then CheckPoint.Lap:=1;
- end else CheckPoint.Lap:=1;
- end else
- begin
- MapCheckPoints := File.CreateStringList();
- CheckPoint.Lap:=1;
- end;
- end;
- finalization;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement