Advertisement
sadfroger

Dog

Feb 25th, 2017
549
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 34.10 KB | None | 0 0
  1. @name
  2. @persist Base:entity Leglength Interval State:string FootDiff:vector LegPart:table ChangedLPosBypass:table MaxOps LFDiff:table Whitelist:table Name:string Cache:table Lookto:vector Lastlookto:vector Sin HalsRanger:vector
  3. @persist Microphoneleft:wirelink Microphoneright:wirelink Lastleft Lastrigt Lastsay:table Poop LLookto LHit Seat:entity
  4. @persist Step:table Cycle Order:array  [LPos, LDist, Footchanged]:table StepSpeed Task:table Scale Speed Speedmin Speedmax
  5. #Add sounds
  6. #reverse poop state for -1 Bringball
  7. #Make Tail moveable
  8. #Bringball bring back to prop owner Lookto fix
  9. #Make K.I
  10. interval(Interval)
  11. runOnLast(1)
  12. runOnChat(1)
  13. if (last()) {print(MaxOps)}
  14. if(ops()>MaxOps) {MaxOps=ops()}
  15. if (first())
  16. {
  17.     Name="Ruffy" #Name your dog here
  18.     setName(Name)
  19.     Scale=1
  20.     Speedmin=0.6
  21.     Speedmax=7
  22.     Whitelist[owner():steamID(),number]=1
  23.     Interval=10
  24.     NoLDiff=vec(0,0,3)*Scale
  25.     Base=entity()
  26.     E=entity()
  27.     I=1
  28.     entity():setAlpha(0)
  29. }
  30. #[#Microphone bind
  31. if(!Microphoneleft:entity():type():find("microphone")) {
  32.     AE=owner():aimEntity()
  33.     if(AE:type():find("microphone")) {
  34.         hint("Microphone for left ear found!",1)
  35.         Microphoneleft=AE:wirelink()  
  36. #        AE:setAlpha(0)
  37.         AE:propNotSolid(1)
  38.         AE:setPos(Base:toWorld(vec(37.1501, -6.5, 60.1078)+NoLDiff))
  39.         weld(AE,Base)
  40.     }  
  41. }
  42. if(!Microphoneright:entity():type():find("microphone")) {
  43.     AE=owner():aimEntity()
  44.     if(AE:type():find("microphone")) {
  45.         hint("Microphone for right ear found!",1)
  46.         Microphoneright=AE:wirelink()  
  47. #        AE:setAlpha(0)
  48.         AE:propNotSolid(1)
  49.         AE:setPos(Base:toWorld(vec(37.1501, 6.5, 60.1078)+NoLDiff))
  50.         weld(AE,Base)
  51.     }  
  52. } ]#
  53. FootDiff=Base:forward()*3.5
  54. if(first()) {
  55.     ## Kopf
  56.     holoCreate(I)
  57.     holoModel(I, "hq_icosphere")
  58.     holoPos(I, E:toWorld(vec(33.4868, 0, 53.0511)*Scale+NoLDiff))
  59.     holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0.0000)))
  60.     holoScale(I, vec(1.5000, 1.5000, 1.5000)*Scale)
  61.     holoColor(I, vec(254, 230, 186), 255)
  62. #    holoParent(I, #)
  63.  
  64.  
  65.     I++
  66.     ##Torsos
  67.     holoCreate(I)
  68.     holoModel(I, "hq_cylinder")
  69.     holoPos(I, E:toWorld(vec(0.0000, 0.0000, 32.7642)+NoLDiff))
  70.     holoAng(I, E:toWorld(ang(0.0000, 90.0000, -90.0000)))
  71.     holoScale(I, vec(1.8000, 1.8111, 3.6000))
  72.     holoColor(I, vec(254, 230, 186), 255)
  73.     holoParent(I, E)
  74.  
  75.  
  76.     I++
  77.     ##Nase
  78.     holoCreate(I)
  79.     holoModel(I, "hq_hdome_thick")
  80.     holoPos(I, E:toWorld(vec(46, 0, 49.5548)+NoLDiff))
  81.     holoAng(I, E:toWorld(ang(0.0000, 90.0000, 99.9990)))
  82.     holoScale(I, vec(0.4500, 0.4500, 0.6000))
  83.     holoColor(I, vec(160,82,4)*0.6, 255)
  84.     holoParent(I, 1)
  85.  
  86.  
  87.     I++
  88.     ##Hals
  89.     holoCreate(I)
  90.     holoModel(I, "hq_cubinder")
  91.     holoModel(I, "hq_cylinder")
  92.     holoPos(I, E:toWorld(vec(28, 0, 43)+NoLDiff))
  93.     HalsRanger=vec(24, 0, 43)
  94.     holoAng(I, E:toWorld(ang(0.0000, 90.0000, 45.0000)))
  95.     holoScale(I, vec(0.85, 0.85, 1.7))
  96.     holoColor(I, vec(254, 230, 186), 255)
  97. #    holoParent(I, E)
  98.  
  99.  
  100.     I++
  101.     ##Schnauze
  102.     holoCreate(I)
  103.     holoModel(I, "hq_rcylinder")
  104.     holoPos(I, E:toWorld(vec(41.8221, 0, 50.8508)+NoLDiff))
  105.     holoAng(I, E:toWorld(ang(0.0000, 90.0000, -65.0000)))
  106.     holoScale(I, vec(0.6000, 0.6000, 0.9000))
  107.     holoColor(I, vec(254, 230, 186), 255)
  108.     holoParent(I, 1)
  109.  
  110.  
  111.     I++
  112.     ##Ohr Rechts
  113.     holoCreate(I)
  114.     holoModel(I, "tetra")
  115.     holoPos(I, E:toWorld(vec(37.1501, 6.5, 60.1078)+NoLDiff))
  116.     holoAng(I, E:toWorld(ang(39.5885,80,21)))
  117.     holoScale(I, vec(0.4350, 0.5640, 0.6))
  118.     holoColor(I, vec(173, 136, 71), 255)
  119.     holoParent(I, 1)
  120.  
  121.  
  122.     I++
  123.     ##Torsos Rundung vorne
  124.     holoCreate(I)
  125.     holoModel(I, "hq_hdome")
  126.     holoPos(I, E:toWorld(vec(21.3723, 0, 32.7794)+NoLDiff))
  127.     holoAng(I, E:toWorld(ang(2.3319, 90.0000, 90.0000)))
  128.     holoScale(I, vec(1.8000, 1.8000, 1.4119))
  129.     holoColor(I, vec(254, 230, 186), 255)
  130.     holoParent(I, E)
  131.  
  132.  
  133.     I++
  134.     ##Ohr Links
  135.     holoCreate(I)
  136.     holoModel(I, "tetra")
  137.     holoPos(I, E:toWorld(vec(37.1501, -6.5, 60.1078)+NoLDiff))
  138.     holoAng(I, E:toWorld(ang(39.5885,-80,21-45)))
  139.     holoScale(I, vec(0.4361, 0.5642, 0.6))
  140.     holoColor(I, vec(173, 136, 71), 255)
  141.     holoParent(I, 1)
  142.  
  143.  
  144.     I++
  145.     ##Torsos Rundung hinten
  146.     holoCreate(I)
  147.     holoModel(I, "hq_dome")
  148.     holoPos(I, E:toWorld(vec(-21.3232, 0, 32.7095)+NoLDiff))
  149.     holoAng(I, E:toWorld(ang(0.0000, 90.0000, -90.0000)))
  150.     holoScale(I, vec(1.8000, 1.8000, 1.2000))
  151.     holoColor(I, vec(254, 230, 186), 255)
  152.     holoParent(I, E)
  153.  
  154.  
  155.     I++
  156.     ##Tail
  157.     holoCreate(I)
  158.     holoModel(I, "hq_rcylinder_thick")
  159.     holoPos(I, E:toWorld(vec(-27.7619, 0, 48.5539)+NoLDiff))
  160.     holoAng(I, E:toWorld(ang(-0.0000, 90.0000, -37.8703)))
  161.     holoScale(I, vec(0.4500, 0.4500, 2.1000))
  162.     holoColor(I, vec(254, 230, 186), 255)
  163.     holoParent(I, E)
  164.  
  165.  
  166.     I++
  167.     ##Auge Links
  168.     holoCreate(I)
  169.     holoModel(I, "hq_icosphere")
  170.     holoPos(I, E:toWorld(vec(40.6868, -3.6066, 55.1265)+NoLDiff))
  171.     holoAng(I, E:toWorld(ang(0.0000, 90.0000, 0.0000)))
  172.     holoScale(I, vec(0.3000, 0.3000, 0.3000))
  173.     holoColor(I, vec(255, 255, 255)*0.2, 255)
  174.     holoParent(I, 1)
  175.  
  176.  
  177.     I++
  178.     ##Auge Rechts
  179.     holoCreate(I)
  180.     holoModel(I, "hq_icosphere")
  181.     holoPos(I, E:toWorld(vec(40.6868, 3.6066, 55.1265)+NoLDiff))
  182.     holoAng(I, E:toWorld(ang(0.0000, 90.0000, 0.0000)))
  183.     holoScale(I, vec(0.3000, 0.3000, 0.3000))
  184.     holoColor(I, vec(255, 255, 255)*0.2, 255)
  185.     holoParent(I, 1)
  186.  
  187. BeineScaleDiff=-vec(0.1,0.1,0)*0.5
  188. #Bein1 vorne rechts
  189. BDiff=vec(5,-6,0)
  190.     I++
  191.     ##Fuss
  192.     holoCreate(I)
  193.     holoModel(I, "hq_cylinder")
  194.     holoPos(I, E:toWorld(vec(10,12,0)+BDiff))
  195.     holoAng(I, E:toWorld(ang(90, 0.0000, 0)))
  196.     holoScale(I, vec(0.6006, 1.1922, 1.2290)*0.7+BeineScaleDiff)
  197.     holoColor(I, vec(254, 230, 186), 255)
  198.  
  199.  
  200.     I++  
  201.     ##Oberbein(Control)
  202.     holoCreate(I)
  203.     holoModel(I, "hq_sphere")
  204.     holoPos(I, E:toWorld(vec(12,12,24)+BDiff+NoLDiff)) #
  205.     holoAng(I, E:toWorld(ang(0, 0, 0)))
  206. #   holoScale(I, vec(0.8,0.8,1.5))
  207.     holoScale(I, vec(0.8)+BeineScaleDiff)
  208.     holoColor(I, vec(254, 230, 186), 255)
  209.     holoParent(I, E)
  210.  
  211.  
  212.     I++
  213.     ##Knieh
  214.     holoCreate(I)
  215.     holoModel(I, "hq_icosphere")
  216.     holoPos(I, holoEntity(I-1):toWorld(vec(0,0,12.5))) #vec(12,25,12.5)
  217.   #  holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0)))
  218.     holoScale(I, vec(0.8)+BeineScaleDiff)
  219.     holoColor(I, vec(254, 230, 186), 255)
  220.     holoParent(I, I-1)#
  221.    
  222.    
  223.     I++  
  224.     ##Oberbein hq_cylinder
  225.     holoCreate(I)
  226.     holoModel(I, "hq_cubinder")
  227.     holoScale(I, vec(0.8,0.8,1.5)+BeineScaleDiff)
  228.     holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*2)
  229.     holoAng(I, E:toWorld(ang(0,0,0)))
  230.     holoColor(I, vec(254, 230, 186), 255)
  231.     holoParent(I, I-2)
  232.    
  233.    
  234.     I++  
  235.     ##Bein
  236.     holoCreate(I)
  237.     holoModel(I, "hq_cylinder")
  238.     holoScale(I, vec(0.7,0.7,1)+BeineScaleDiff)
  239.     holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*8)
  240.     holoAng(I, E:toWorld(ang(0,0,0)))
  241.     holoColor(I, vec(254, 230, 186), 255)
  242.     holoParent(I, I-2)
  243.    
  244.    
  245. #Bein2 hinten rechts
  246. BDiff=vec(-25,-6,0)
  247.     I++
  248.     ##Fuss
  249.     holoCreate(I)
  250.     holoPos(I, E:toWorld(vec(10,12,0)+BDiff))
  251.     holoModel(I, "hq_cylinder")
  252.     holoAng(I, E:toWorld(ang(90, 0.0000, 0)))
  253.     holoScale(I, vec(0.6006, 1.1922, 1.2290)*0.7+BeineScaleDiff)
  254.     holoColor(I, vec(254, 230, 186), 255)
  255.  
  256.  
  257.     I++  
  258.     ##Oberbein(Control)
  259.     holoCreate(I)
  260.     holoModel(I, "hq_sphere")
  261.     holoPos(I, E:toWorld(vec(10,12,24)+BDiff+NoLDiff)) #
  262.     holoAng(I, E:toWorld(ang(0, 0, 0)))
  263. #   holoScale(I, vec(0.8,0.8,1.5))
  264.     holoScale(I, vec(0.8)+BeineScaleDiff)
  265.     holoColor(I, vec(254, 230, 186), 255)
  266.     holoParent(I, E)
  267.  
  268.  
  269.     I++
  270.     ##Knieh
  271.     holoCreate(I)
  272.     holoModel(I, "hq_icosphere")
  273.     holoPos(I, holoEntity(I-1):toWorld(vec(0,0,12.5))) #vec(12,25,12.5)
  274.   #  holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0)))
  275.     holoScale(I, vec(0.8)+BeineScaleDiff)
  276.     holoColor(I, vec(254, 230, 186), 255)
  277.     holoParent(I, I-1)#
  278.    
  279.    
  280.     I++  
  281.     ##Oberbein hq_cylinder
  282.     holoCreate(I)
  283.     holoModel(I, "hq_cubinder")
  284.     holoScale(I, vec(0.8,0.8,1.5)+BeineScaleDiff)
  285.     holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*2)
  286.     holoAng(I, E:toWorld(ang(0,0,0)))
  287.     holoColor(I, vec(254, 230, 186), 255)
  288.     holoParent(I, I-2)
  289.    
  290.    
  291.     I++  
  292.     ##Bein
  293.     holoCreate(I)
  294.     holoModel(I, "hq_cylinder")
  295.     holoScale(I, vec(0.7,0.7,1)+BeineScaleDiff)
  296.     holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*8)
  297.     holoAng(I, E:toWorld(ang(0,0,0)))
  298.     holoColor(I, vec(254, 230, 186), 255)
  299.     holoParent(I, I-2)
  300.    
  301.    
  302. #Bein3 vorne links
  303. BDiff=vec(5,-18,0)
  304.     I++
  305.     ##Fuss
  306.     holoCreate(I)
  307.     holoModel(I, "hq_cylinder")
  308.     holoPos(I, E:toWorld(vec(10,12,0)+BDiff))
  309.     holoAng(I, E:toWorld(ang(90, 0.0000, 0)))
  310.     holoScale(I, vec(0.6006, 1.1922, 1.2290)*0.7+BeineScaleDiff)
  311.     holoColor(I, vec(254, 230, 186), 255)
  312.  
  313.  
  314.     I++  
  315.     ##Oberbein(Control)
  316.     holoCreate(I)
  317.     holoModel(I, "hq_sphere")
  318.     holoPos(I, E:toWorld(vec(12,12,24)+BDiff+NoLDiff)) #
  319.     holoAng(I, E:toWorld(ang(0, 0, 0)))
  320. #   holoScale(I, vec(0.8,0.8,1.5))
  321.     holoScale(I, vec(0.8)+BeineScaleDiff)
  322.     holoColor(I, vec(254, 230, 186), 255)
  323.     holoParent(I, E)
  324.  
  325.  
  326.     I++
  327.     ##Knieh
  328.     holoCreate(I)
  329.     holoModel(I, "hq_icosphere")
  330.     holoPos(I, holoEntity(I-1):toWorld(vec(0,0,12.5))) #vec(12,25,12.5)
  331.   #  holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0)))
  332.     holoScale(I, vec(0.8)+BeineScaleDiff)
  333.     holoColor(I, vec(254, 230, 186), 255)
  334.     holoParent(I, I-1)#
  335.    
  336.    
  337.     I++  
  338.     ##Oberbein hq_cylinder
  339.     holoCreate(I)
  340.     holoModel(I, "hq_cubinder")
  341.     holoScale(I, vec(0.8,0.8,1.5)+BeineScaleDiff)
  342.     holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*2)
  343.     holoAng(I, E:toWorld(ang(0,0,0)))
  344.     holoColor(I, vec(254, 230, 186), 255)
  345.     holoParent(I, I-2)
  346.    
  347.    
  348.     I++  
  349.     ##Bein
  350.     holoCreate(I)
  351.     holoModel(I, "hq_cylinder")
  352.     holoScale(I, vec(0.7,0.7,1)+BeineScaleDiff)
  353.     holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*8)
  354.     holoAng(I, E:toWorld(ang(0,0,0)))
  355.     holoColor(I, vec(254, 230, 186), 255)
  356.     holoParent(I, I-2)
  357.    
  358.    
  359. #Bein4 hinten links
  360. BDiff=vec(-25,-18,0)
  361.     I++
  362.     ##Fuss
  363.     holoCreate(I)
  364.     holoModel(I, "hq_cylinder")
  365.     holoPos(I, E:toWorld(vec(10,12,0)+BDiff))
  366.     holoAng(I, E:toWorld(ang(90, 0.0000, 0)))
  367.     holoScale(I, vec(0.6006, 1.1922, 1.2290)*0.7+BeineScaleDiff)
  368.     holoColor(I, vec(254, 230, 186), 255)
  369.  
  370.  
  371.     I++  
  372.     ##Oberbein(Control)
  373.     holoCreate(I)
  374.     holoModel(I, "hq_sphere")
  375.     holoPos(I, E:toWorld(vec(10,12,24)+BDiff+NoLDiff)) #
  376.     holoAng(I, E:toWorld(ang(0, 0, 0)))
  377. #   holoScale(I, vec(0.8,0.8,1.5))
  378.     holoScale(I, vec(0.8)+BeineScaleDiff)
  379.     holoColor(I, vec(254, 230, 186), 255)
  380.     holoParent(I, E)
  381.  
  382.  
  383.     I++
  384.     ##Knieh
  385.     holoCreate(I)
  386.     holoModel(I, "hq_icosphere")
  387.     holoPos(I, holoEntity(I-1):toWorld(vec(0,0,12.5))) #vec(12,25,12.5)
  388.   #  holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0)))
  389.     holoScale(I, vec(0.8)+BeineScaleDiff)
  390.     holoColor(I, vec(254, 230, 186), 255)
  391.     holoParent(I, I-1)#
  392.    
  393.    
  394.     I++  
  395.     ##Oberbein hq_cylinder
  396.     holoCreate(I)
  397.     holoModel(I, "hq_cubinder")
  398.     holoScale(I, vec(0.8,0.8,1.5)+BeineScaleDiff)
  399.     holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*2)
  400.     holoAng(I, E:toWorld(ang(0,0,0)))
  401.     holoColor(I, vec(254, 230, 186), 255)
  402.     holoParent(I, I-2)
  403.    
  404.    
  405.     I++  
  406.     ##Bein
  407.     holoCreate(I)
  408.     holoModel(I, "hq_cylinder")
  409.     holoScale(I, vec(0.7,0.7,1)+BeineScaleDiff)
  410.     holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*8)
  411.     holoAng(I, E:toWorld(ang(0,0,0)))
  412.     holoColor(I, vec(254, 230, 186), 255)
  413.     holoParent(I, I-2)
  414. ##Extra Details
  415.      I++      
  416.     ##Hals Rundung unten
  417.     holoCreate(I)
  418.     holoModel(I, "hq_icosphere")
  419.     holoPos(I, holoEntity(4):toWorld(vec(0,0,-holoEntity(4):boxSize():z()*0.8))) #vec(12,25,12.5)
  420.   #  holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0)))
  421.     holoScale(I, vec(0.86))
  422.     holoColor(I, vec(254, 230, 186), 255)
  423.     holoParent(I, 4)  
  424. }
  425.  
  426. function number co(A, B, C){
  427.     return acos((A^2 + B^2 - C^2) / (2*A*B))
  428. }
  429.  
  430. function ik(L1,L2,Hip:vector,End:vector,I1,I2,Bs:entity){
  431.     local Axis=Bs:toLocalAxis(End-Hip)
  432.     local Angle=Axis:toAngle():setRoll(-bearing(Hip,Bs:angles(),End))
  433.     local Dist=min(Axis:length(),L1+L2)
  434.     local Quat=quat(Angle)*qRotation(vec(0,90-co(Dist,L1,L2),0)) #co Drehunf
  435.     holoAng(I1,Bs:toWorld(Quat:toAngle()))
  436.     holoAng(I2,holoEntity(I1):toWorld(ang(-co(L2, L1, Dist)+180,0,0)))
  437. }
  438.  
  439. function number legpart(Holo,Leg) {
  440.     return Holo+12+(5*(Leg-1))  
  441. }
  442. function ranger currentranger(Leg,ExtraDist,Diff:vector) {
  443.    
  444.     return rangerOffset(Leglength+ExtraDist,holoEntity(LegPart["control"+Leg:toString(),number]):pos()+FootDiff+(Base:toWorld(Diff)-Base:pos()),-Base:up())
  445.  
  446. }
  447.  
  448. function normal step(Index,EBase:entity,Stephigh,Diff:vector,RSpeed) {
  449.     Pos=holoEntity(Index):pos()
  450.     End=currentranger(LegPart[Index,number],0,vec()):position()
  451. #    if(!End:isInWorld()) {print("cap!")}
  452.     Build=table()
  453.     Build["index",number]=Index
  454.     Build["diff",vector]=Diff
  455.     Build["start",vector]=Pos
  456.     Build["high",number]=Stephigh
  457.     Build["lastbasepos",vector]=Base:pos()
  458.     Build["speed",number]=RSpeed
  459.     Build["middle",vector]=mix(Pos,End,0.5)
  460.     Step:pushTable(Build)
  461.     Step["active"+Index:toString(),number]=1  
  462.     RLeg=LegPart[Index,number]
  463.     LFDiff[RLeg,vector]=Diff
  464.     LPos[RLeg,vector]=currentranger(RLeg,0,Diff):position()    
  465. }
  466.  
  467. function normal refreshfoots(Sped) {
  468.         for(X=1,4) {LPos[X,vector]=currentranger(X,0,vec()):position()}  
  469.         step(LegPart["foot"+Order[3,number]:toString(),number],Base,0,vec(),Sped)
  470.         step(LegPart["foot"+Order[2,number]:toString(),number],Base,0,vec(),Sped)
  471.         step(LegPart["foot"+Order[1,number]:toString(),number],Base,0,vec(),Sped)
  472.         step(LegPart["foot"+Order[4,number]:toString(),number],Base,0,vec(),Sped)        
  473. }
  474. function entity filterplyname(Search:string) {
  475.     Plys=players()
  476.     for(X=1,Plys:count()) {
  477.         CPly=Plys[X,entity]
  478.         Name=CPly:name()
  479.         if(Search:find(Name)) {return CPly}  
  480.     }  
  481.     return owner()
  482. }
  483. if(first()) {
  484.     Leglength=holoEntity(legpart(2,1)):pos():z()-holoEntity(legpart(1,1)):pos():z()
  485.     Order:pushNumber(1)
  486.     Order:pushNumber(4)
  487.     Order:pushNumber(2)
  488.     Order:pushNumber(3)
  489.     State="stand"
  490.     for(X=1,4) {LegPart[legpart(1,X),number]=X LegPart["foot"+X:toString(),number]=legpart(1,X) LegPart["control"+X:toString(),number]=legpart(2,X) LegPart["knee"+X:toString(),number]=legpart(3,X)} #Building an table saves ops
  491.     for(X=1,4) {LPos[X,vector]=holoEntity(legpart(2,X)):pos()}
  492.    
  493. }
  494.  
  495. #1036 ops
  496. #Step
  497. SCount=Step:count()
  498. if(SCount) {
  499. #print(SCount)
  500.     for(X=1,SCount) {
  501.         Infos=Step[X,table]
  502.         Index=Infos["index",number]
  503.         Diff=Infos["diff",vector]
  504.         Leg=LegPart[Index,number]
  505.         High=Infos["high",number]
  506.         if(!Index) {break} #Workaround for strange E2 bug
  507.         Start=Infos["start",vector]
  508.         End=currentranger(LegPart[Index,number],0,Diff):position()
  509.         Middle=Infos["middle",vector]:setZ(End:z()+High)
  510.         Ratio=Infos["ratio",number]
  511.         RSpeed=Infos["speed",number]
  512.         Ratio=clamp(Ratio+RSpeed,0,1)
  513.         Infos["ratio",number]=Ratio
  514.         Step[X,table]=Infos
  515.         Bezier=bezier(Start,Middle,End,Ratio)  
  516.         holoPos(Index,Bezier)
  517.         if(Ratio==1) {
  518.             Step:removeTable(X)      
  519.             LPos[LegPart[Index,number],vector]=Bezier+vec(0,0,Leglength)-FootDiff
  520.             Step["active"+Index:toString(),number]=0
  521. #            print("Leg "+LegPart[Index,number]:toString()+" finished with speed "+RSpeed:toString()+" at Ratio "+Ratio)
  522.         }
  523.     }  
  524. }
  525.  
  526. BaseChanged=changed(Base:pos()) #changed turns in for loop to 0 after one step
  527. ChangedLPos=0
  528. Nohit=1
  529. for(X=1,4) {
  530.     Foot=LegPart["foot"+X:toString(),number]
  531. #    holoPos(Foot,holoEntity(Foot):pos()+VelL*0.01)
  532. #    LPos[X,vector]=holoEntity(Foot):pos()+VelL*0.01
  533.     Control=LegPart["control"+X:toString(),number]
  534.     ControlPos=holoEntity(Control):pos()
  535.     Knee=LegPart["knee"+X:toString(),number]
  536. #Set FootPos
  537.     if(!Step[1,table]["index",number]) {
  538.         if(!(State=="liedown")) {
  539.         Ranger=rangerOffset(Leglength+7,ControlPos,((LPos[X,vector]-vec(0,0,Leglength)+FootDiff)-holoEntity(Control):pos()))  
  540.         if(!Ranger:hit()) { #Foots are in air
  541. #            Ranger=rangerOffset(Leglength+1,ControlPos+FootDiff,-Base:up())
  542.             Ranger=currentranger(X,0,Diff)
  543.             LPos[X,vector]=ControlPos
  544.             Nohit+=1
  545.        #     holoAng(Foot,Base:toWorld(ang(90,0,0)))
  546.         } # else {
  547.  
  548. #            holoAng(Foot,Base:toWorld(ang(-Ranger:hitNormal():toAngle():pitch()+40,0,0))+ang(90,90,0))
  549.              holoAng(Foot,Base:toWorld(ang(0,0,0)):setPitch(90)+ang(0,0,0))
  550.        
  551. #        }
  552.        
  553.     } else {
  554.         Ranger=rangerOffset(Leglength+7,ControlPos,((LPos[X,vector]-vec(0,0,Leglength)+FootDiff)-holoEntity(Control):pos())+vec(0,0,-0.1))  
  555.     }
  556.     holoPos(Foot,Ranger:position()+vec(0,0,3))
  557.     }
  558. #Adjust legs when something changed
  559.     FootPos=holoEntity(Foot):pos()
  560.     LFootPos=Footchanged[X,vector]
  561.     if((!(LFootPos==FootPos)|BaseChanged)) {
  562.         Footchanged[X,vector]=FootPos
  563. #        if(!ChangedLPos) {
  564.             Poss=holoEntity(Foot):toWorld(vec(-3,0,-3))
  565. #        } else {
  566. #            Poss=holoEntity(Control):toWorld(vec(3,0,0))+FootDiff-Base:up()*Leglength
  567. #        }
  568.         ik(12.5,12.5,ControlPos,Poss,Control,Knee,Base)
  569.        
  570.     }  
  571. }
  572. #print("walking")
  573. #Walking
  574. if(!(State=="sit")&!(State=="liedown")) {
  575.     ASpeed=Base:pos():distance(Task["walkto",vector])*0.0045
  576.     ASpeed=clamp(ASpeed,Speedmin,Speedmax)
  577. #    print(ASpeed)
  578.     if(!Step[1,table]["index",number]) {
  579.         Speed=0.18*ASpeed
  580.         Stepdist=10
  581.         if(!Cycle) {
  582.         if(holoEntity(LegPart["foot"+Order[1,number]:toString(),number]):pos():distance(currentranger(Order[1,number],0,LFDiff[3,vector]):position())>Stepdist) {
  583.             step(LegPart["foot"+Order[1,number]:toString(),number],Base,11,vec(),Speed)
  584.             step(LegPart["foot"+Order[2,number]:toString(),number],Base,11,vec(),Speed)
  585.         }
  586.         Cycle=1
  587.         } else {
  588.         if(holoEntity(LegPart["foot"+Order[3,number]:toString(),number]):pos():distance(currentranger(Order[3,number],0,LFDiff[2,vector]):position())>Stepdist) {
  589.             step(LegPart["foot"+Order[3,number]:toString(),number],Base,11,vec(),Speed)
  590.             step(LegPart["foot"+Order[4,number]:toString(),number],Base,11,vec(),Speed)
  591.         }
  592.     Cycle=0
  593.         }
  594.     }
  595. }
  596. #Base:setPos(Base:pos()+Base:forward()*(ASpeed*1.8))
  597. #print("animations")
  598. #Look to Verhalten
  599.  
  600. if(!Cache["bringball",number]|!(Cache["bringball",number]==-1)) {
  601. if(!(State=="liedown")) {
  602.     NP=holoEntity(2):pos()+Base:forward()*190-Base:up()*50
  603.     findInBox(NP-vec(100,100,100),NP+vec(100,100,100))
  604. } else {
  605.     NP=Base:pos()
  606.     findInBox(Base:toWorld(vec(20,100,130)),Base:toWorld(-vec(-170,100,130)))
  607. }
  608. findClipToClass("player")
  609. Ply=findClosest(holoEntity(1):pos())
  610. if(Ply:isPlayer()) {FLookto=Ply:toWorld(vec(0,0,64))} else {
  611.     FLookto=(Base:pos()+Base:forward()*100):setZ(holoEntity(1):pos():z())  
  612. #    print("forward")
  613. }
  614. } elseif(Cache["ball",entity]:isValid()) {
  615.     Ball=Cache["ball",entity]
  616.     if(Cache["bringball",number]==3) {
  617.         FLookto=Ball:owner():toWorld(vec(0,0,64))
  618. #        print("toowner")
  619.     }
  620.     if(Cache["bringball",number]==-1) {
  621.         FLookto=Ball:pos()
  622. #        print("ball")
  623.     }
  624. } else {
  625.     FLookto=(Base:pos()+Base:forward()*100):setZ(holoEntity(1):pos():z())
  626. #    print("forward")  
  627. }
  628. Lookto+=(FLookto-Lookto)*0.15
  629. #holoCreate(45,Lookto)
  630. #[#Change look to sound
  631. Micleft=Microphoneleft["Level",number]
  632. Micright=Microphoneright["Level",number]
  633. if(Micleft|Micright) {Lastleft=Micleft Lastrigt=Micright print(Micleft)}
  634. MicDiff=Lastrigt-Lastleft
  635. if(Micleft|Micright) {Lookto=(mix(Microphoneleft:entity():pos(),Microphoneright:entity():pos(),0.5)+vec(MicDiff,abs(MicDiff),0)*500+entity():forward()*15):setZ(holoEntity(1):pos():z())}
  636. Lookto=(mix(Microphoneleft:entity():pos(),Microphoneright:entity():pos(),0.5)+vec(MicDiff,abs(MicDiff),0)*20):setZ(holoEntity(1):pos():z())
  637. holoCreate(45,Lookto)]#
  638. #Animations
  639. #-Head
  640. #if((Task["firsttick",number]<=2&Task["task",string]=="walkto")|!(Task["task",string]=="walkto")) {
  641. #[if((Task["firsttick",number]<=2)&Task["task",string]:length()>=2) {
  642.     Task["firsttick",number]=Task["firsttick",number]+1 #Because Animations is above Walkto define
  643.     holoUnparent(1)
  644.     holoUnparent(4)
  645. #    print(Task["firsttick",number])
  646. }]#
  647. NPos=Base:toWorld(HalsRanger-vec(0,0,4)*(State=="liedown"))
  648. #NPos=holoEntity(4):toWorld(vec(0,0,holoEntity(4):boxSize():z()))
  649. #Sin+=1
  650. #Lookto=NPos+entity():forward()+entity():forward()*40+entity():right()*(sin(Sin)*30)+entity():up()*(cos(Sin)*10)
  651. #holoCreate(45,Lookto)
  652.  
  653. NA3=(Lookto-NPos):toAngle()+ang(0,0,90)*(State=="liedown"&0) #Fuern Kopf
  654. #Lookto+=Base:up()*(60+6*(State=="sit"))
  655. NA=(Lookto-NPos):toAngle()+ang(0,0,90)*(State=="liedown"&0) #Fuern Hals
  656. if(NA:yaw()<=328) {
  657. #NA:setYaw(clamp(NA:yaw(),0,32))
  658. } else {
  659. #NA=NA:setYaw(clamp(NA:yaw(),328,360))
  660. }
  661. NA=NA:setPitch(-40)
  662.  
  663. #Roll 0-32 rechts
  664. #Roll 328-360 links
  665. #print(NA)
  666. AngP=rangerOffset(holoEntity(4):boxSize():z()*1.25,NPos,NA:forward()):position()
  667. holoPos(4,mix(NPos,AngP,0.5))
  668. holoAng(4,NA+ang(90-10*(State=="sit"),0,0))
  669. holoPos(1,holoEntity(4):toWorld(vec(0,0,holoEntity(4):boxSize():z())))
  670. if(NA3:yaw()<=270) {
  671. #holoAng(1,NA3:setYaw(clamp(NA3:yaw(),0,90)))
  672. } else {
  673. #holoAng(1,NA3:setYaw(clamp(NA3:yaw(),270,350)))
  674. }
  675. holoAng(1,NA3)
  676. #270 340 Links
  677. #0 90 rechts
  678. #print(NA:yaw())
  679. if(Task["task",string]=="walkto") {holoParent(1,Base) holoParent(4,Base)}
  680. #}
  681. #print("Recieve command")
  682.  
  683. #bring the ball (semiauto)
  684. if(Task["task",string]:length()<=2&Cache["bringball",number]==-1) {
  685. State="stand"
  686. findInSphere(Base:pos(),100)
  687. findClipToClass("prop_physics")
  688. Props=findToArray()
  689. Count=Cache["bringballcount",number]
  690. Cache["bringballcount",number]=Count+1
  691. if(Props:count()<Count) {Cache["bringballcount",number]=1 Count=1}
  692. Prop=Props[Count,entity]
  693. Vel=Prop:vel()
  694.  
  695. if(Vel:length()>500) {
  696.     Cache["bringball",number]=1
  697.     Cache["ball",entity]=Prop    
  698.     timer("bringballdelay",2000)
  699. }
  700. }
  701. if(clk("bringballdelay")) {
  702.     Task["task",string]="walkto"
  703.     Cache["bringballdelay",number]=1  
  704. }
  705.  
  706. #Recieve Command
  707. if(chatClk()) {
  708.     Said=lastSaid():lower()
  709.     Ply=lastSpoke()
  710.     if(Whitelist[Ply:steamID(),number]) {
  711.     LSaid=Lastsay[Ply:steamID(),string]
  712.     if(Said:find(Name:lower())|Said:find("boy")|LSaid:find("boy")|LSaid:find(Name:lower())) {
  713.        
  714.         TTask=Task:clone()
  715.         TCache=Cache:clone()
  716.         Task:clear()
  717.         Cache:clear()
  718.         if(Said:find("sit")|Said:find("seat")|Said:find("place")) {
  719.             Task["task",string]="sit"
  720.             Blckls=1
  721.         }    
  722.         if(Said:find("come")|Said:find("walk")|Said:find("go")) {
  723.             State="walk"
  724.            
  725.             Task["task",string]="walkto"
  726.             if(Said:find("to")) {
  727.                 Task["walkto",vector]=filterplyname(Said):pos()+(Base:pos()-owner():pos()):toAngle():forward()*160
  728.                 Blckls=1                  
  729.             }
  730.             if(Said:find("here")) {
  731.                 Task["walkto",vector]=owner():pos()+(Base:pos()-owner():pos()):toAngle():forward()*160
  732.                 Blckls=1
  733.             }
  734.             if(Said:find("looking")|Said:find("there")) {
  735.                 Task["walkto",vector]=owner():aimPos()
  736.                 Blckls=1
  737.                
  738.             }  
  739.         }
  740.         if(Said:find("follow")|Said:find("with me")) {
  741.             Task["task",string]="stand"  
  742.             Task["follow",number]=1
  743.             Cache["followentity",entity]=Ply
  744.             Blckls=1
  745.         }
  746.         if(Said:find("stand")&Said:find("up")) {
  747.             Task["task",string]="stand"        
  748.             Blckls=1    
  749.         }      
  750.         if(Said:find("bring")|Said:find("get")) {
  751.             Cache["bringball",number]=-1  
  752.             Cache["followentity",entity]=Ply
  753.             if(State=="sit") {
  754.             refreshfoots(0.0475)
  755.             }
  756.             Blckls=1
  757.         }
  758.         if(Said:find("stop")|(Said:find("dont")&Said:find("do"))) {
  759.             Blckls=2
  760.         }
  761.         if(Said:find("poop")) {
  762.             Cache["poop",number]=1  
  763.             Task["task",string]="sit"
  764.             Blckls=1
  765.         }
  766.         if(Said:find("lie down")) {
  767.             Task["task",string]="liedown"
  768.             Blckls=1  
  769.         }
  770.  
  771.         if(!Blckls|!Lastsay[Ply:steamID(),string]:length()) {Lastsay[Ply:steamID(),string]=Said }
  772.         if(Blckls) {hideChat(1) print(Said)}
  773.         hideChat(1)
  774.         if(!Blckls) {Task=TTask Cache=Cache:merge(TCache)}
  775.     } else {
  776.         Lastsay[Ply:steamID(),string]=Said
  777.     }
  778.     }
  779. }
  780. #print("Run Command")
  781. #Run Command
  782. Setang=Base:angles()
  783. Setpos=Base:pos()
  784. if(Cache["poop",number]) {
  785.     GDA=Cache["poop",number]
  786.     if(GDA==1) {
  787.     if(clk("poop")) {
  788.       holoCreate(Poop,holoEntity(2):toWorld(vec(0,0,holoEntity(2):boxSize():z()*2)))  
  789.       holoModel(Poop,"hq_icosphere")
  790.       holoScale(Poop,vec(1,0.3,0.3))
  791.       holoColor(Poop,vec(89,48,1))
  792.       Cache["contpoop",number]=1
  793.     }
  794.     if(Cache["contpoop",number]) {
  795. #    holoPos(Poop,holoEntity(Poop):pos()-holoEntity(Poop):forward()*0.04)
  796.     holoPos(Poop,holoEntity(2):toWorld(vec(0,0,holoEntity(2):boxSize():z()*2+Cache["poopcz",number])))
  797.     Cache["poopcz",number]=Cache["poopcz",number]+0.04
  798.     Cache["poopang",number]=Cache["poopang",number]+0.2
  799.     Angs=Cache["poopang",number]
  800.     #50 (drop)
  801.     holoAng(Poop,holoEntity(2):toWorld(ang(90,0,0)))
  802.     if(Angs>=35) {
  803.         Cache["poop",number]=2  
  804.          
  805.     }
  806.     }
  807.     if(!Cache["firstpoop",number]) {
  808.         Cache["firstpoop",number]=1
  809.         Task["task",string]="sit"    
  810.         timer("poop",2000)  
  811.         Poop=holoAmount()+1
  812.     }      
  813.     }
  814.     if(GDA==2) {
  815.         holoPos(Poop,holoEntity(Poop):pos()-vec(0,0,1))
  816.         RA=rangerOffset(1,holoEntity(Poop):pos(),vec(0,0,-1))
  817.         if(RA:hit()) {Cache:clear() Task:clear() holoAng(Poop,RA:hitNormal():toAngle()+ang(90,0+holoEntity(Poop):angles():yaw(),0)) refreshfoots(0.5) State="stand"}
  818.     }
  819. }
  820. if(Task["follow",number]) {
  821.     Ply=Cache["followentity",entity]
  822.     End=Ply:pos()+(Base:pos()-Ply:pos()):toAngle():forward()*100
  823.     if(End:distance(Setpos)>40) {
  824.       State="walk"
  825.       Task["walkto",vector]=End
  826.       Task["task",string]="walkto"
  827.     }
  828. }
  829. if(Cache["bringball",number]) {
  830.     Prop=Cache["ball",entity]
  831.     if(Cache["bringball",number]==2) {
  832.         if(clk("pickup")) {
  833.             Task["follow",number]=1
  834.             Cache["bringball",number]=3            
  835.         }
  836.         Prop:setPos(holoEntity(1):toWorld(Cache["propdiff",vector]))  
  837.     } elseif (Cache["bringball",number]==3) {
  838.             Prop:setPos(holoEntity(1):toWorld(Cache["propdiff",vector]))  
  839.             if(clk("dropprop")) {
  840.                 print("drop")
  841.                 Cache["bringball",number]=0
  842.                 Task:clear()
  843.                 Task["task",string]="stand"
  844.             }
  845.             if(State=="sit") {
  846.             if(!Task["first",number]) {
  847.                 Task["first",number]=1
  848.                 timer("dropprop",2000)  
  849.             }
  850.             }
  851.     } elseif(!(Cache["bringball",number]==-1)) {
  852.         Lookto=Prop:pos()
  853.         if(clk("pickupstandup")) {
  854.             Task:clear()
  855.             Task["task",string]="stand"
  856.             Cache["bringball",number]=2
  857.             Cache["propdiff",vector]=(holoEntity(3):pos()-Base:up()*Prop:boxSize():z())-holoEntity(1):pos()
  858.             timer("pickup",2000)
  859.         }
  860.         if((Task["task",string]=="walkto")) {
  861.             Task["walkto",vector]=Prop:pos()+(Base:pos()-Prop:pos()):toAngle():forward()*55
  862.             State="walk"
  863.         } elseif(Cache["bringballdelay",number]) {
  864.             if(!Task["first",number]) {
  865.                 Cache["bringballdelay",number]=0  
  866.                 timer("pickupstandup",2000)
  867.             }
  868.         }
  869. }
  870. }
  871. if(Task["task",string]:length()>=2) {
  872.     if(Task["task",string]=="liedown") {
  873.         State="liedown"
  874.         for(X=1,4) {Footf=LegPart["foot"+X:toString(),number] holoParent(Footf,Base)}
  875.         LFDiff:clear()
  876.         step(LegPart["foot"+Order[3,number]:toString(),number],Base,0,vec(0,0,0),0.6)
  877.         step(LegPart["foot"+Order[2,number]:toString(),number],Base,0,vec(14,16,0),0.6)
  878.         step(LegPart["foot"+Order[1,number]:toString(),number],Base,0,vec(0,0,0),0.6)
  879.         step(LegPart["foot"+Order[4,number]:toString(),number],Base,0,vec(14,16,0),0.6)  
  880.         Task:clear()  
  881.         timer("roll90",100)
  882.     }
  883.     if(Task["task",string]=="sit") {
  884.         State="sit"
  885.         if(!Cache["bringball",number]) {
  886.         step(LegPart["foot"+Order[3,number]:toString(),number],Base,0,vec(-13,5,0),0.0375)
  887.         step(LegPart["foot"+Order[2,number]:toString(),number],Base,0,vec(-13,-5,0),0.0375)
  888.         step(LegPart["foot"+Order[1,number]:toString(),number],Base,0,vec(-10,1,0),0.0375)
  889.         step(LegPart["foot"+Order[4,number]:toString(),number],Base,0,vec(-10,-1,0),0.0375)      
  890.         } else {
  891.         step(LegPart["foot"+Order[3,number]:toString(),number],Base,0,vec(13,5,0),0.0375)
  892.         step(LegPart["foot"+Order[2,number]:toString(),number],Base,0,vec(13,-5,0),0.0375)
  893.         step(LegPart["foot"+Order[1,number]:toString(),number],Base,0,vec(16,1,0),0.0375)
  894.         step(LegPart["foot"+Order[4,number]:toString(),number],Base,0,vec(16,-1,0),0.0375)            
  895.         }
  896.         Firstsit=1
  897.         N=Task["follow",number]
  898.         Task:clear()      
  899.         Task["follow",number]=N    
  900.     }    
  901.     if(Task["task",string]=="stand") {
  902.         State="stand"    
  903. #        LFDiff:clear() #Step Leg diff clear
  904.         refreshfoots(0.034)
  905.         N=Task["follow",number]
  906.         Task:clear()      
  907.         Task["follow",number]=N    
  908.     }
  909.     if(Task["task",string]=="jump") {
  910.         Base:setAng(Task["angle",angle])
  911.         End=Task["jumpto",vector]
  912.         Start=Task["start",vector]  
  913.         Middle=mix(End,Start,0.5):setZ(End:z()+80)
  914.         Task["ratio",number]=Task["ratio",number]+0.014
  915.         Ratio=clamp(Task["ratio",number],0,1)
  916.         Base:setPos(bezier(Start,Middle,End,Ratio))
  917.         if(Ratio==1) {Task=Task["backup",table]}
  918.     }
  919.     if(Task["task",string]=="walkto") {
  920.         End=Task["walkto",vector]
  921.         H1P=holoEntity(1):pos()
  922.         Proof=H1P+Base:forward()*100
  923.         Proof2=rangerOffset(50,H1P,Base:forward())
  924.         if(!Proof:isInWorld()|Proof2:distance()<15) {
  925.             print("cap!")
  926.             TaskS=Task:clone()
  927.             Task:clear()
  928.             Ra=rangerOffset(400,Proof+vec(0,0,300),vec(0,0,-1))
  929.             Task["jumpto",vector]=Ra:position()+vec(0,0,50)+Base:forward()*25
  930.             Task["task",string]="jump"
  931.             Task["start",vector]=Base:pos()
  932.             Task["backup",table]=TaskS
  933.             Task["angle",angle]=Base:toWorld(ang(-40,0,0))
  934. #            holoCreate(45,Ra:position())
  935.         }
  936.         Frwd=(End-Base:pos()):toAngle():setRoll(0)
  937.  
  938.         if(Nohit<4) {Setang=Frwd:setPitch(Base:angles():pitch())}
  939.  
  940.         Pluspos=Frwd:forward()*(ASpeed*1.8)
  941.         if(Nohit>3) {
  942.             Pluspos=Pluspos:setX(0):setY(0):setZ(-10)  
  943.         }
  944.         LHit=Nohit
  945.         Setpos+=Pluspos
  946.         if(End:distance(Setpos)<5) {
  947.            N=Task["follow",number]
  948.            Task:clear()      
  949.            Task["follow",number]=N    
  950.             N=round(random(1,2))
  951.             if(N==1&!Cache["bringball",number]) {
  952.                 Task["task",string]="stand"  
  953.             } else {
  954.                 Task["task",string]="sit"  
  955.             }
  956.         }
  957.     }
  958. }
  959. #print(Nohit)
  960. if(Nohit<2&LHit>2) {
  961.     Base:soundPlay(1,1,"physics/body/body_medium_break3.wav")    
  962. }
  963. LHit=Nohit
  964. #print("dog states")
  965. #Dog States
  966. if(!(Task["task",string]=="jump")) {
  967. if(1&!(State=="liedown")) {
  968. #    if(owner():keyPressed("pad_8")) {State="walk"} else {State="stand"}
  969.     SRR=rangerOffset(300,Base:pos()+Base:up()*30,-Base:up())
  970.     SR=SRR:position()
  971.     Vel=SRR:entity():vel()*0.038
  972.     if(Vel:length()) {for(X=1,4) {LPos[X,vector]=LPos[X,vector]+Vel} Base:setPos(Base:pos()+Vel)}
  973.     Vela=SRR:entity():angVel():setPitch(0):setRoll(0)*0.035
  974.     if(Vel:length()) {for(X=1,4) {Base:setAng(Base:angles()+Vela)}}
  975.     SX=SR:x()
  976.    
  977. #    holoCreate(40,Base:pos():setZ(SZ))
  978.     R1=currentranger(1,300,vec())
  979.     R2=currentranger(2,300,vec())
  980.     SZ=(R1:position():z()+R2:position():z())/2
  981.         R1Dst=R1:distance()-(21-12*Cache["poop",number])*(State=="sit"&!Cache["bringball",number])
  982.         R2Dst=R2:distance()-27*(State=="sit"&Cache["bringball",number])
  983.  
  984.     if(R1Dst>R2Dst&(R1Dst-R2Dst)>1) {
  985. #        Base:setAng(ang(Base:angles():pitch()+0.6,Base:angles():yaw(),Base:angles():roll()))
  986.         Setang+=ang(0.6*(1+2*(State=="stand")),0,0)
  987.     } elseif((R2Dst-R1Dst)>1) {
  988. #        Base:setAng(ang(Base:angles():pitch()-0.6,Base:angles():yaw(),Base:angles():roll()))
  989.         Setang-=ang(0.6*(1+2*(State=="stand")),0,0)
  990.     }
  991.  
  992. if(State=="stand") {
  993.     TZ=SZ+4
  994. }
  995. if(State=="walk") {
  996.     TZ=SZ-2  
  997. }
  998. if(State=="sit") {
  999.     TZ=SZ-4  
  1000. }
  1001.     Pos=Base:pos()
  1002.     Speed=2
  1003.     Clampz=clamp(TZ-Pos:z(),-Speed,Speed)
  1004.     Move=vec(0,0,Clampz)
  1005.     if(owner():keyPressed("pad_8")) {Forward=Base:angles():setRoll(0):forward()}
  1006.     Setpos+=Move+Forward*(ASpeed*1.8)
  1007.     Base:setPos(Setpos)
  1008.     Setang=Setang:setRoll(0)
  1009. } elseif(Cache["roll90",number]) {
  1010.     SZ=rangerOffset(200,Base:pos(),vec(0,0,-1)):position():z()
  1011.     TZ=SZ+5
  1012.     Pos=Base:pos()
  1013.     Speed=2
  1014.     Clampz=clamp(TZ-Pos:z(),-Speed,Speed)
  1015.     Move=vec(0,0,Clampz)
  1016.     if(owner():keyPressed("pad_8")) {Forward=Base:angles():setRoll(0):forward()}
  1017.     Setpos+=Move+Forward*(ASpeed*1.8)    
  1018.     Setang=Setang:setRoll(90)
  1019. } elseif(clk("roll90")) {
  1020.     Cache["roll90",number]=1
  1021.     Base:setPos(Setpos-Base:right()*10+Base:up()*4                                                      )
  1022. }
  1023. }#
  1024.  
  1025. Base:setAng(Setang)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement