Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 20.77 KB | None | 0 0
  1. unit Run;
  2.  
  3. interface
  4.  
  5. implementation
  6. var Decl: byte;
  7.  
  8. const
  9.     DeffaultMoveSpeed = 0.30;   //> is faster < is slow
  10.     MouseMovementAccuracy = 0.001;  // def 0.001
  11.     MovementOffsetSpeedAdd = 0.0073; //0.0004 deffault
  12.  
  13.     CursorMaxSearch     = 125;
  14.  
  15.     DeffaultCheckPointRange = 60;
  16.     MinimalCheckPointRange = 45;
  17.  
  18. type
  19.     TCheckPoints = record
  20.             Check: boolean;
  21.             CheckPointsId:integer;
  22.             Pos: array[1..2] of single;
  23.             Range: single;
  24.             LastPoss: single;
  25.             TimeToActive: array[1..7] of integer;
  26.             PlayerPos: array[1..2] of single;
  27.             EditMode: array[1..32] of boolean;
  28. end;
  29.  
  30. var
  31.     MapCheckPoints: TStringList;
  32.     CheckPoint: TCheckPoints;
  33.     SpeedMovementText: single;
  34.  
  35. function GetPiece2(text,pos:string;num:integer):string;
  36. var i,findpos,pos1:integer;
  37. begin
  38.     findpos:=0;
  39.     Result:='';
  40.     for i := 1 to length(text) do begin
  41.         if text[i]=pos then begin
  42.             if num=0 then begin
  43.                 Result:=Copy(text,1,i-1);
  44.                 exit;
  45.             end else
  46.             begin
  47.                 findpos:=findpos+1;
  48.                 if findpos=num then pos1:=i+1;
  49.                 if findpos=num+1 then begin
  50.                     Result:=Copy(text,pos1,i-pos1);
  51.                     exit;
  52.                 end;
  53.             end;
  54.         end else
  55.         begin
  56.             if i=length(text) then begin
  57.                 Result:=Copy(text,pos1,length(text));
  58.                 exit;
  59.             end;
  60.         end;
  61.     end;
  62. end;
  63.  
  64. procedure SaveCheckPoint();
  65. begin
  66.     if (CheckPoint.Check) then begin
  67.         if (CheckPoint.CheckPointsID>MapCheckPoints.Count) then begin
  68.             MapCheckPoints.Append('X'+floattostr(CheckPoint.Pos[1])+'Y'+floattostr(CheckPoint.Pos[2])+'R'+floattostr(CheckPoint.Range));
  69.             MapCheckPoints.SaveToFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
  70.             CheckPoint.Check:=false;
  71.         end else
  72.         begin
  73.             MapCheckPoints.Insert(CheckPoint.CheckPointsID,'X'+floattostr(CheckPoint.Pos[1])+'Y'+floattostr(CheckPoint.Pos[2])+'R'+floattostr(CheckPoint.Range));
  74.             MapCheckPoints.Delete(CheckPoint.CheckPointsID+1);
  75.             MapCheckPoints.SaveToFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
  76.             CheckPoint.Check:=false;
  77.         end;
  78.     end;
  79. end;
  80.  
  81. function FindCheckPoint(ID: byte; MaxDistance: integer; UsingRaycast: boolean): integer;
  82. var i: integer; TempX, TempY, X, Y, X2, Y2, CursorMaxDist, NearestDistCursor, MaxDist, Dist: single;
  83. begin
  84.     X:=Players[ID].X;   Y:=Players[ID].Y;
  85.     MaxDist:=MaxDistance*MaxDistance;   CursorMaxDist:=CursorMaxSearch*CursorMaxSearch;
  86.     Result:=-1;
  87.     if (MapCheckPoints.Count=0) then exit;
  88.     for i := 0 to MapCheckPoints.Count-1 do begin
  89.         TempX:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[i],'X',1),'Y',0));
  90.         TempY:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[i],'Y',1),'R',0));
  91.         X2:=TempX;  Y2:=TempY;
  92.         if (UsingRayCast) then if Map.RayCast(X,Y-7,X2,Y2-7,false, false, true, true, 2) then continue;
  93.  
  94.         X2:=X2-Players[ID].MouseAimX;   Y2:=Y2-Players[ID].MouseAimY;   NearestDistCursor:=X2*X2+Y2*Y2;
  95.         X2:=TempX;  Y2:=TempY;
  96.         X2:=X2-X;   Y2:=Y2-Y;   Dist:=X2*X2+Y2*Y2;
  97.  
  98.         if (NearestDistCursor<CursorMaxDist) and (Dist<MaxDist) then begin
  99.             Result:=i;
  100.             CursorMaxDist:=NearestDistCursor;
  101.         end;
  102.     end;
  103. end;
  104.  
  105. function Commands(Player: TActivePlayer; Text: string): Boolean;
  106. var selectid,b:integer; TempX,TempY,TempRange:single;
  107. begin
  108.     if (Player.IsAdmin) then begin
  109.         if (Text='/editmodehelp') then begin
  110.             Player.WriteConsole('Movement keys :        Default        : Description',$FFBB);
  111.             Player.WriteConsole('Movement key  :        A,W,S,D        : Move Checkpoint',$FFBB);
  112.             Player.WriteConsole('Jet key       : Right Mouse & Move <> : Press and move left or right to set',$FFBB);
  113.             Player.WriteConsole('------------- : --------------------- : movement speed /setcheckpointspeed',$FFBB);
  114.             Player.WriteConsole('Reload ket    :           R           : Press to save all settings checkpoint /savecheckpoint',$FFBB);
  115.             Player.WriteConsole('Shooting key  : Left M. on checkpoint : Press to start edit checkpoint /selectcheckpoint',$FFBB);
  116.             Player.WriteConsole('------------- : no editing checkpoint : -----------',$FFBB);
  117.             Player.WriteConsole('Throw key     : F checkpoing is edit  : Cancel edit /canceleditcheckpoint',$FFBB);
  118.             Player.WriteConsole('Throw key     : F checkpoint non edit : Press to delete checkpoint edit /deletecheckpoint',$FFBB);
  119.             Player.WriteConsole('------------- :  mouse on checkpoint  : -----------',$FFBB);
  120.             Player.WriteConsole('Change Weap   :          q            : Press to start create checkpoint',$FFBB);
  121.             Player.WriteConsole('Shooting key  : If editing checkpoint : Press to set range',$FFBB);
  122.             Player.WriteConsole('------------- :        Left M.        : -----------',$FFBB);
  123.         end;
  124.         if (Text='/canceleditcheckpoint') then begin
  125.             CheckPoint.Check:=false;
  126.             Player.WriteConsole('Interrupt, editing or creating checkpoint.',$FFBB);
  127.         end;
  128.         if (Text='/createcheckpoint') then begin
  129.             if (CheckPoint.Check=false) then begin
  130.                 CheckPoint.Check:=true;
  131.                 CheckPoint.CheckPointsID:=MapCheckPoints.Count+1;
  132.                 CheckPoint.Range:=DeffaultCheckPointRange;
  133.                 CheckPoint.Pos[1]:=Player.X; CheckPoint.PlayerPos[1]:=Player.X;
  134.                 CheckPoint.Pos[2]:=Player.Y; CheckPoint.PlayerPos[2]:=Player.Y;
  135.                 Player.WriteConsole('You start create checkpoint: '+inttostr(CheckPoint.CheckPointsID),$FFBB);
  136.                 Player.WriteConsole('Use move keys to move checkpoint.',$FFBB);
  137.                 Player.WriteConsole('Use /setcheckpointspeed <num:1,2,3 or 1.123> to change speed move checkpoint.',$FFBB);
  138.                 Player.WriteConsole('Use /checkpointrange <num:1,2,3 or 1.123> to change range checkpoint.',$FFBB);
  139.                 Player.WriteConsole('Use /savecheckpoint to accept and save checkpoint.',$FFBB);
  140.                 Player.WriteConsole('Use /selectcheckpoint <num> to edit checkpoint.',$FFBB);
  141.                 Player.WriteConsole('Use /deletecheckpoint <num> to delete checkpoint.',$FFBB);
  142.                 Player.WriteConsole('Use /editmode to ON useful checkpoint editor.',$FFBB);
  143.             end else CheckPoint.Check:=false;
  144.         end;
  145.         if (Text='/editmode') then begin
  146.             if (CheckPoint.EditMode[Player.ID]=false) then begin
  147.                 CheckPoint.EditMode[Player.ID]:=true;
  148.                 Player.WriteConsole('Edit mode is on!',$FFBB);
  149.                 Player.WriteConsole('Write /editmodehelp to see help how use.',$FFBB);
  150.             end else
  151.             begin
  152.                 CheckPoint.EditMode[Player.ID]:=false;
  153.                 Player.WriteConsole('Edit mode is off!',$FFBB);
  154.             end;
  155.         end;
  156.         if (Text='/savecheckpoint') then begin
  157.             SaveCheckPoint();
  158.             Player.WriteConsole('Save all settings checkpoint: '+inttostr(CheckPoint.CheckPointsID+1),$FFBB);
  159.         end;
  160.         if (Copy(Text,1,17)='/selectcheckpoint') then begin
  161.             selectid:=-1;
  162.             try
  163.                 delete(Text,1,17);
  164.                 selectid:=strtoint(text)-1;
  165.                 if (selectid>-1) then begin
  166.                     if (selectid<MapCheckPoints.Count) then begin
  167.                         CheckPoint.Check:=true;
  168.                         CheckPoint.CheckPointsID:=selectid;
  169.                         TempX:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'X',1),'Y',0));
  170.                         TempY:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'Y',1),'R',0));
  171.                         TempRange:=strtofloat(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'R',1));
  172.                         CheckPoint.Pos[1]:=TempX; CheckPoint.PlayerPos[1]:=TempX;
  173.                         CheckPoint.Pos[2]:=TempY; CheckPoint.PlayerPos[2]:=TempY;
  174.                         CheckPoint.Range:=TempRange;
  175.                         Player.WriteConsole('Select checkpoint:'+text,$FFBB);
  176.                     end else Player.WriteConsole('Checkpoint id is too high. The highest id: '+inttostr(MapCheckPoints.Count),$FFBB);
  177.                 end else Player.WriteConsole('ID must be greater than 0.',$FFBB);
  178.             except
  179.                 Player.WriteConsole('An error occurred, please enter a valid number of checkpoint.',$FFBB);
  180.             end;
  181.         end;
  182.         if (Copy(Text,1,17)='/deletecheckpoint') then begin
  183.             if not (CheckPoint.Check) then begin
  184.                 selectid:=-1;
  185.                 try
  186.                     delete(Text,1,17);
  187.                     selectid:=strtoint(text)-1;
  188.                     if (selectid>-1) then begin
  189.                         if (selectid<MapCheckPoints.Count) then begin
  190.                             MapCheckPoints.Delete(selectid);
  191.                             MapCheckPoints.SaveToFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
  192.                             for b := 0 to MapCheckPoints.Count+1 do Players.WorldText(b+1,'',70,$33CC00,0.0001,0,0);
  193.                             Player.WriteConsole('Remove checkpoint:'+text,$FFBB);
  194.                         end else Player.WriteConsole('Checkpoint id is too high. The highest id: '+inttostr(MapCheckPoints.Count),$FFBB);
  195.                     end else Player.WriteConsole('ID must be greater than 0.',$FFBB);
  196.                 except
  197.                     Player.WriteConsole('An error occurred, please enter a valid number of checkpoint.',$FFBB);
  198.                 end;
  199.             end else Player.WriteConsole('You can not remove a checkpoint when creating or editing other checkpoint.',$FFBB);
  200.         end;
  201.         if (Copy(Text,1,16)='/checkpointrange') then begin
  202.             if (CheckPoint.Check) then begin
  203.                 try
  204.                     delete(Text,1,16);
  205.                     TempRange:=strtofloat(text);
  206.                     if (TempRange<MinimalCheckPointRange) then begin
  207.                         TempRange:=MinimalCheckPointRange;
  208.                         Player.WriteConsole('Value is higher than the minimum, I set to minimal: '+formatfloat('0.0000',MinimalCheckPointRange),$FFBB);
  209.                     end else Player.WriteConsole('Checkpoint range set to: '+formatfloat('0.0000',TempRange),$FFBB);
  210.                 except
  211.                     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);
  212.                     TempRange:=DeffaultCheckPointRange;
  213.                 end;
  214.                 CheckPoint.Range:=TempRange;
  215.             end;
  216.         end;
  217.         if (Copy(Text,1,19)='/setcheckpointspeed') then begin
  218.             try
  219.                 delete(Text,1,19);
  220.                 TempRange:=strtofloat(text);
  221.                 if (TempRange<0.01) then begin
  222.                     TempRange:=0.01;
  223.                     Player.WriteConsole('Value is higher than the minimum, I set to minimal: 0.01',$FFBB);
  224.                 end else
  225.                 begin
  226.                     Player.WriteConsole('Last speed: '+formatfloat('0.0000',SpeedMovementText)+', default: '+formatfloat('0.0000',DeffaultMoveSpeed),$FFBB);
  227.                     Player.WriteConsole('Checkpoint movement speed set to: '+formatfloat('0.0000',TempRange),$FFBB);
  228.                 end;
  229.             except
  230.                 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);
  231.                 TempRange:=DeffaultMoveSpeed;
  232.             end;
  233.             SpeedMovementText:=TempRange;
  234.         end;
  235.     end;
  236.     Result:=False;
  237. end;
  238.  
  239. procedure ChangeAfter(Next: string);
  240. begin
  241.     if (File.Exists(Script.Dir+'data/mapsdata/'+next)) then MapCheckPoints := File.CreateStringListFromFile(Script.Dir+'data/mapsdata/'+next) else MapCheckPoints := File.CreateStringList();
  242. end;
  243.  
  244. procedure AppOnIdleSC3(Ticks: integer);
  245. var i,b:integer; TempX,TempY,TempAcc:single; kd:double; NS, NW: TNewWeapon;
  246. begin
  247.     for i := 1 to 32 do begin
  248.         if (Players[i].Active) and (Players[i].IsAdmin) and (CheckPoint.Check) then begin
  249.             //--- Move Text ---\\
  250.             if (Players[i].KeyUp) then CheckPoint.Pos[2]:=CheckPoint.Pos[2]-SpeedMovementText;
  251.             if (Players[i].KeyCrouch) then CheckPoint.Pos[2]:=CheckPoint.Pos[2]+SpeedMovementText;
  252.             if (Players[i].KeyLeft) then CheckPoint.Pos[1]:=CheckPoint.Pos[1]-SpeedMovementText;
  253.             if (Players[i].KeyRight) then CheckPoint.Pos[1]:=CheckPoint.Pos[1]+SpeedMovementText;
  254.             //--- Off Move Player ---\\
  255.             Players[i].Move(CheckPoint.PlayerPos[1],CheckPoint.PlayerPos[2]);
  256.             Players[i].SetVelocity(0,0);
  257.             //--- Display Text ---\\
  258.             Players.WorldText(MapCheckPoints.Count+11,'[-]',55,$FF00FF ,0.025,CheckPoint.Pos[1]-3.8,CheckPoint.Pos[2]);
  259.             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);
  260.             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])
  261.         end;
  262.         //--- Edit Mode ---\\
  263.         if (Players[i].Active) and (Players[i].IsAdmin) then begin
  264.             if (CheckPoint.EditMode[i]) then begin
  265.                 if (CheckPoint.Check=false) and (CheckPoint.TimeToActive[3]>0) then begin
  266.                     NS:=TNewWeapon.Create();    NS.WType:=12;   NS.Ammo:=1;
  267.                     NW:=TNewWeapon.Create();    NW.WType:=255;  NW.Ammo:=1;
  268.                     Players[i].ForceWeapon(NS,NW);
  269.                     NS.Free(); NW.Free();
  270.                 end else
  271.                 begin
  272.                     NS:=TNewWeapon.Create();    NS.WType:=255;  NS.Ammo:=1;
  273.                     NW:=TNewWeapon.Create();    NW.WType:=255;  NW.Ammo:=1;
  274.                     Players[i].ForceWeapon(NS,NW);
  275.                     NS.Free(); NW.Free();
  276.                 end;
  277.                 //--- Mouse Move Speed Add ---\\
  278.                 if (Players[i].KeyJetpack) then begin
  279.                     if (CheckPoint.TimeToActive[1]>=10) then begin
  280.                         if CheckPoint.TimeToActive[1]=10 then begin
  281.                             CheckPoint.LastPoss:=single(Players[i].MouseAimX);
  282.                             CheckPoint.TimeToActive[1]:=CheckPoint.TimeToActive[1]+1;
  283.                         end;
  284.                         TempAcc:=CheckPoint.LastPoss-single(Players[i].MouseAimX);
  285.                         if TempAcc>MouseMovementAccuracy then SpeedMovementText:=SpeedMovementText-MovementOffsetSpeedAdd else if TempAcc<-MouseMovementAccuracy then SpeedMovementText:=SpeedMovementText+MovementOffsetSpeedAdd;
  286.                         if (SpeedMovementText<0.01) then SpeedMovementText:=0.01;
  287.                         CheckPoint.LastPoss:=single(Players[i].MouseAimX);
  288.                         Players.WorldText(MapCheckPoints.Count+4,'SpeedMove: '+FormatFloat('0.0000',SpeedMovementText),70,$33CC00,0.035,Players[i].MouseAimX-38,Players[i].MouseAimY-12.1);
  289.                     end else CheckPoint.TimeToActive[1]:=CheckPoint.TimeToActive[1]+1;
  290.                 end else CheckPoint.TimeToActive[1]:=0;
  291.                 //--- Key Save Check Point ---\\
  292.                 if (Players[i].KeyReload) and (CheckPoint.Check) then begin
  293.                     if (CheckPoint.TimeToActive[2]>=18) then begin
  294.                         Players.WorldText(MapCheckPoints.Count+5,'Save Complete :)',70,$CC3300,0.035,CheckPoint.Pos[1]-32.4,CheckPoint.Pos[2]-8.8);
  295.                         SaveCheckPoint();
  296.                     end else
  297.                     begin
  298.                         //-- Display Save Info --\\
  299.                         kd := (CheckPoint.TimeToActive[2]/18.0)*100;
  300.                         Players.WorldText(MapCheckPoints.Count+5,'Save '+formatfloat('0.00',kd)+'% :)',70,$CC3300,0.035,CheckPoint.Pos[1]-28,CheckPoint.Pos[2]-8.8);
  301.                         CheckPoint.TimeToActive[2]:=CheckPoint.TimeToActive[2]+1;
  302.                     end;
  303.                 end else CheckPoint.TimeToActive[2]:=0;
  304.                 //--- Key Get Edit ---\\
  305.                 if (Players[i].KeyShoot) and (CheckPoint.Check=false) then begin
  306.                     if (CheckPoint.TimeToActive[3]>=45) then begin
  307.                         //-- Start Edit --\\
  308.                         CheckPoint.CheckPointsID:=FindCheckPoint(i,700,false);
  309.                         if (CheckPoint.CheckPointsID>-1) then begin
  310.                             CheckPoint.Check:=true;
  311.                             TempX:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'X',1),'Y',0));
  312.                             TempY:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'Y',1),'R',0));
  313.                             CheckPoint.Pos[1]:=TempX; CheckPoint.PlayerPos[1]:=TempX;
  314.                             CheckPoint.Pos[2]:=TempY; CheckPoint.PlayerPos[2]:=TempY;
  315.                             Players.WorldText(MapCheckPoints.Count+6,'Start Editing :)',70,$CC3300,0.035,CheckPoint.Pos[1]-27.5,CheckPoint.Pos[2]-8.8);
  316.                         end else if (CheckPoint.CheckPointsID=-1) then CheckPoint.TimeToActive[3]:=0;
  317.                     end else
  318.                     begin
  319.                         //-- Search Check Point --\\
  320.                         CheckPoint.CheckPointsID:=FindCheckPoint(i,700,false);
  321.                         if (CheckPoint.CheckPointsID>-1) then begin
  322.                             TempX:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'X',1),'Y',0));
  323.                             TempY:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'Y',1),'R',0));
  324.                             //-- Display Start Edit Info --\\
  325.                             kd := (CheckPoint.TimeToActive[3]/45.0)*100;
  326.                             Players.WorldText(MapCheckPoints.Count+6,'Begin Edit '+formatfloat('0.00',kd)+'% :)',70,$CC3300,0.035,TempX-38,TempY-4.2);
  327.                             CheckPoint.TimeToActive[3]:=CheckPoint.TimeToActive[3]+1;
  328.                         end else if (CheckPoint.CheckPointsID=-1) then CheckPoint.TimeToActive[3]:=0;
  329.                     end;
  330.                 end else CheckPoint.TimeToActive[3]:=0;
  331.                 //--- Key Canceled Edit ---\\
  332.                 if (Players[i].KeyThrow) and (CheckPoint.Check) then begin
  333.                     if (CheckPoint.TimeToActive[4]>=18) then begin
  334.                         //-- Canceled Edit --\\
  335.                         Players.WorldText(MapCheckPoints.Count+7,'Canceled Editing!',70,$CC3300,0.035,CheckPoint.Pos[1]-33,CheckPoint.Pos[2]-8.8);
  336.                         CheckPoint.Check:=false;
  337.                     end else
  338.                     begin
  339.                         //-- Display Canceled Edit Info --\\
  340.                         kd := (CheckPoint.TimeToActive[4]/18.0)*100;
  341.                         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);
  342.                         CheckPoint.TimeToActive[4]:=CheckPoint.TimeToActive[4]+1;
  343.                     end;
  344.                 end else CheckPoint.TimeToActive[4]:=0;
  345.                 if (Players[i].KeyChangeWeap) and (CheckPoint.Check=false) then begin
  346.                     if (CheckPoint.TimeToActive[5]>=25) then begin
  347.                         //-- Ket Create Checkpoint --\\
  348.                         CheckPoint.Check:=true;
  349.                         CheckPoint.CheckPointsID:=MapCheckPoints.Count+1;
  350.                         CheckPoint.Pos[1]:=Players[i].X; CheckPoint.PlayerPos[1]:=Players[i].X;
  351.                         CheckPoint.Pos[2]:=Players[i].Y; CheckPoint.PlayerPos[2]:=Players[i].Y;
  352.                         Players.WorldText(MapCheckPoints.Count+8,'Create Create Checkpoint!',70,$CC3300,0.035,CheckPoint.Pos[1]-50.5,CheckPoint.Pos[2]-8.8);
  353.                         CheckPoint.Range:=DeffaultCheckPointRange;
  354.                     end else
  355.                     begin
  356.                         //-- Display Create Checkpoint Info --\\
  357.                         kd := (CheckPoint.TimeToActive[5]/25.0)*100;
  358.                         Players.WorldText(MapCheckPoints.Count+8,'Create Checkpoint '+formatfloat('0.00',kd)+'%',70,$CC3300,0.035,Players[i].X-51,Players[i].Y-8.8);
  359.                         CheckPoint.TimeToActive[5]:=CheckPoint.TimeToActive[5]+1;
  360.                     end;
  361.                 end else CheckPoint.TimeToActive[5]:=0;
  362.                 //--- Mouse Set Range ---\\
  363.                 if (Players[i].KeyShoot) and (CheckPoint.Check) then begin
  364.                     if (CheckPoint.TimeToActive[6]>=22) then begin
  365.                         CheckPoint.Range := Distance(CheckPoint.Pos[1],CheckPoint.Pos[2],single(Players[i].MouseAimX),single(Players[i].MouseAimY));
  366.                         if (CheckPoint.Range<MinimalCheckPointRange) then CheckPoint.Range:=MinimalCheckPointRange;
  367.                         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);
  368.                     end else CheckPoint.TimeToActive[6]:=CheckPoint.TimeToActive[6]+1;
  369.                 end else CheckPoint.TimeToActive[6]:=0;
  370.                 //--- Key Delete Checkpoint ---\\
  371.                 if (Players[i].KeyThrow) and (CheckPoint.Check=false) then begin
  372.                     if (CheckPoint.TimeToActive[7]>=45) then begin
  373.                         CheckPoint.CheckPointsID:=FindCheckPoint(i,700,false);
  374.                         if (CheckPoint.CheckPointsID>-1) then begin
  375.                             TempX:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'X',1),'Y',0));
  376.                             TempY:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'Y',1),'R',0));
  377.                             Players.WorldText(MapCheckPoints.Count+10,'Delete Complete :)',70,$CC3300,0.035,TempX-37,TempY-4.2);
  378.                             MapCheckPoints.Delete(CheckPoint.CheckPointsID); CheckPoint.TimeToActive[7]:=0;
  379.                             MapCheckPoints.SaveToFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap);
  380.                             for b := 0 to MapCheckPoints.Count+1 do Players.WorldText(b+1,'',70,$33CC00,0.0001,0,0);
  381.                         end else if (CheckPoint.CheckPointsID=-1) then CheckPoint.TimeToActive[7]:=0;
  382.                     end else
  383.                     begin
  384.                         //-- Display Delete Info --\\-
  385.                         CheckPoint.CheckPointsID:=FindCheckPoint(i,700,false);
  386.                         if (CheckPoint.CheckPointsID>-1) then begin
  387.                             TempX:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'X',1),'Y',0));
  388.                             TempY:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[CheckPoint.CheckPointsID],'Y',1),'R',0));
  389.                             kd := (CheckPoint.TimeToActive[7]/45.0)*100;
  390.                             Players.WorldText(MapCheckPoints.Count+10,'Delete '+formatfloat('0.00',kd)+'% :)',70,$CC3300,0.035,TempX-32.5,TempY-4.2);
  391.                             CheckPoint.TimeToActive[7]:=CheckPoint.TimeToActive[7]+1;
  392.                         end else if (CheckPoint.CheckPointsID=-1) then CheckPoint.TimeToActive[7]:=0;
  393.                     end;
  394.                 end else CheckPoint.TimeToActive[7]:=0;
  395.             end;
  396.         end;
  397.     end;
  398.     //--- Display All Checkpoints ---\\
  399.     for i := 0 to MapCheckPoints.Count-1 do begin
  400.         if (CheckPoint.CheckPointsID=i) and (CheckPoint.Check) then continue;
  401.         TempX:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[i],'X',1),'Y',0));
  402.         TempY:=strtofloat(GetPiece2(GetPiece2(MapCheckPoints[i],'Y',1),'R',0));
  403.         Players.WorldText(i+1,'Checkpoint '+inttostr(i+1)+'!',70,$33CC00,0.055,TempX-43.5,TempY);
  404.     end;
  405. end;
  406.  
  407. procedure LeaveGame(Player: TActivePlayer; Kicked: Boolean);
  408. begin
  409.     CheckPoint.EditMode[Player.ID]:=false;
  410.     CheckPoint.Check:=false;
  411. end;
  412.  
  413. initialization
  414. begin
  415.     //---Instal Script ---\\
  416.     for Decl := 1 to 32 do Players[Decl].OnCommand := @Commands;
  417.     Game.TickThreshold := 1;
  418.     Game.OnLeave := @LeaveGame;
  419.     Map.OnAfterMapChange := @ChangeAfter;
  420.     Game.OnClockTick := @AppOnIdleSC3;
  421.     //-- Vars --\\
  422.     SpeedMovementText:=DeffaultMoveSpeed;
  423.     //--- Load Map Checkpoints ---\\
  424.     if (File.Exists(Script.Dir+'data/mapsdata/'+Game.CurrentMap)) then MapCheckPoints := File.CreateStringListFromFile(Script.Dir+'data/mapsdata/'+Game.CurrentMap) else MapCheckPoints := File.CreateStringList();
  425. end;
  426.  
  427. finalization;
  428. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement