Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @name
- @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
- @persist Microphoneleft:wirelink Microphoneright:wirelink Lastleft Lastrigt Lastsay:table Poop LLookto LHit Seat:entity
- @persist Step:table Cycle Order:array [LPos, LDist, Footchanged]:table StepSpeed Task:table Scale Speed Speedmin Speedmax
- #Add sounds
- #reverse poop state for -1 Bringball
- #Make Tail moveable
- #Bringball bring back to prop owner Lookto fix
- #Make K.I
- interval(Interval)
- runOnLast(1)
- runOnChat(1)
- if (last()) {print(MaxOps)}
- if(ops()>MaxOps) {MaxOps=ops()}
- if (first())
- {
- Name="Ruffy" #Name your dog here
- setName(Name)
- Scale=1
- Speedmin=0.6
- Speedmax=7
- Whitelist[owner():steamID(),number]=1
- Interval=10
- NoLDiff=vec(0,0,3)*Scale
- Base=entity()
- E=entity()
- I=1
- entity():setAlpha(0)
- }
- #[#Microphone bind
- if(!Microphoneleft:entity():type():find("microphone")) {
- AE=owner():aimEntity()
- if(AE:type():find("microphone")) {
- hint("Microphone for left ear found!",1)
- Microphoneleft=AE:wirelink()
- # AE:setAlpha(0)
- AE:propNotSolid(1)
- AE:setPos(Base:toWorld(vec(37.1501, -6.5, 60.1078)+NoLDiff))
- weld(AE,Base)
- }
- }
- if(!Microphoneright:entity():type():find("microphone")) {
- AE=owner():aimEntity()
- if(AE:type():find("microphone")) {
- hint("Microphone for right ear found!",1)
- Microphoneright=AE:wirelink()
- # AE:setAlpha(0)
- AE:propNotSolid(1)
- AE:setPos(Base:toWorld(vec(37.1501, 6.5, 60.1078)+NoLDiff))
- weld(AE,Base)
- }
- } ]#
- FootDiff=Base:forward()*3.5
- if(first()) {
- ## Kopf
- holoCreate(I)
- holoModel(I, "hq_icosphere")
- holoPos(I, E:toWorld(vec(33.4868, 0, 53.0511)*Scale+NoLDiff))
- holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0.0000)))
- holoScale(I, vec(1.5000, 1.5000, 1.5000)*Scale)
- holoColor(I, vec(254, 230, 186), 255)
- # holoParent(I, #)
- I++
- ##Torsos
- holoCreate(I)
- holoModel(I, "hq_cylinder")
- holoPos(I, E:toWorld(vec(0.0000, 0.0000, 32.7642)+NoLDiff))
- holoAng(I, E:toWorld(ang(0.0000, 90.0000, -90.0000)))
- holoScale(I, vec(1.8000, 1.8111, 3.6000))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, E)
- I++
- ##Nase
- holoCreate(I)
- holoModel(I, "hq_hdome_thick")
- holoPos(I, E:toWorld(vec(46, 0, 49.5548)+NoLDiff))
- holoAng(I, E:toWorld(ang(0.0000, 90.0000, 99.9990)))
- holoScale(I, vec(0.4500, 0.4500, 0.6000))
- holoColor(I, vec(160,82,4)*0.6, 255)
- holoParent(I, 1)
- I++
- ##Hals
- holoCreate(I)
- holoModel(I, "hq_cubinder")
- holoModel(I, "hq_cylinder")
- holoPos(I, E:toWorld(vec(28, 0, 43)+NoLDiff))
- HalsRanger=vec(24, 0, 43)
- holoAng(I, E:toWorld(ang(0.0000, 90.0000, 45.0000)))
- holoScale(I, vec(0.85, 0.85, 1.7))
- holoColor(I, vec(254, 230, 186), 255)
- # holoParent(I, E)
- I++
- ##Schnauze
- holoCreate(I)
- holoModel(I, "hq_rcylinder")
- holoPos(I, E:toWorld(vec(41.8221, 0, 50.8508)+NoLDiff))
- holoAng(I, E:toWorld(ang(0.0000, 90.0000, -65.0000)))
- holoScale(I, vec(0.6000, 0.6000, 0.9000))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, 1)
- I++
- ##Ohr Rechts
- holoCreate(I)
- holoModel(I, "tetra")
- holoPos(I, E:toWorld(vec(37.1501, 6.5, 60.1078)+NoLDiff))
- holoAng(I, E:toWorld(ang(39.5885,80,21)))
- holoScale(I, vec(0.4350, 0.5640, 0.6))
- holoColor(I, vec(173, 136, 71), 255)
- holoParent(I, 1)
- I++
- ##Torsos Rundung vorne
- holoCreate(I)
- holoModel(I, "hq_hdome")
- holoPos(I, E:toWorld(vec(21.3723, 0, 32.7794)+NoLDiff))
- holoAng(I, E:toWorld(ang(2.3319, 90.0000, 90.0000)))
- holoScale(I, vec(1.8000, 1.8000, 1.4119))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, E)
- I++
- ##Ohr Links
- holoCreate(I)
- holoModel(I, "tetra")
- holoPos(I, E:toWorld(vec(37.1501, -6.5, 60.1078)+NoLDiff))
- holoAng(I, E:toWorld(ang(39.5885,-80,21-45)))
- holoScale(I, vec(0.4361, 0.5642, 0.6))
- holoColor(I, vec(173, 136, 71), 255)
- holoParent(I, 1)
- I++
- ##Torsos Rundung hinten
- holoCreate(I)
- holoModel(I, "hq_dome")
- holoPos(I, E:toWorld(vec(-21.3232, 0, 32.7095)+NoLDiff))
- holoAng(I, E:toWorld(ang(0.0000, 90.0000, -90.0000)))
- holoScale(I, vec(1.8000, 1.8000, 1.2000))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, E)
- I++
- ##Tail
- holoCreate(I)
- holoModel(I, "hq_rcylinder_thick")
- holoPos(I, E:toWorld(vec(-27.7619, 0, 48.5539)+NoLDiff))
- holoAng(I, E:toWorld(ang(-0.0000, 90.0000, -37.8703)))
- holoScale(I, vec(0.4500, 0.4500, 2.1000))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, E)
- I++
- ##Auge Links
- holoCreate(I)
- holoModel(I, "hq_icosphere")
- holoPos(I, E:toWorld(vec(40.6868, -3.6066, 55.1265)+NoLDiff))
- holoAng(I, E:toWorld(ang(0.0000, 90.0000, 0.0000)))
- holoScale(I, vec(0.3000, 0.3000, 0.3000))
- holoColor(I, vec(255, 255, 255)*0.2, 255)
- holoParent(I, 1)
- I++
- ##Auge Rechts
- holoCreate(I)
- holoModel(I, "hq_icosphere")
- holoPos(I, E:toWorld(vec(40.6868, 3.6066, 55.1265)+NoLDiff))
- holoAng(I, E:toWorld(ang(0.0000, 90.0000, 0.0000)))
- holoScale(I, vec(0.3000, 0.3000, 0.3000))
- holoColor(I, vec(255, 255, 255)*0.2, 255)
- holoParent(I, 1)
- BeineScaleDiff=-vec(0.1,0.1,0)*0.5
- #Bein1 vorne rechts
- BDiff=vec(5,-6,0)
- I++
- ##Fuss
- holoCreate(I)
- holoModel(I, "hq_cylinder")
- holoPos(I, E:toWorld(vec(10,12,0)+BDiff))
- holoAng(I, E:toWorld(ang(90, 0.0000, 0)))
- holoScale(I, vec(0.6006, 1.1922, 1.2290)*0.7+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- I++
- ##Oberbein(Control)
- holoCreate(I)
- holoModel(I, "hq_sphere")
- holoPos(I, E:toWorld(vec(12,12,24)+BDiff+NoLDiff)) #
- holoAng(I, E:toWorld(ang(0, 0, 0)))
- # holoScale(I, vec(0.8,0.8,1.5))
- holoScale(I, vec(0.8)+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, E)
- I++
- ##Knieh
- holoCreate(I)
- holoModel(I, "hq_icosphere")
- holoPos(I, holoEntity(I-1):toWorld(vec(0,0,12.5))) #vec(12,25,12.5)
- # holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0)))
- holoScale(I, vec(0.8)+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-1)#
- I++
- ##Oberbein hq_cylinder
- holoCreate(I)
- holoModel(I, "hq_cubinder")
- holoScale(I, vec(0.8,0.8,1.5)+BeineScaleDiff)
- holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*2)
- holoAng(I, E:toWorld(ang(0,0,0)))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-2)
- I++
- ##Bein
- holoCreate(I)
- holoModel(I, "hq_cylinder")
- holoScale(I, vec(0.7,0.7,1)+BeineScaleDiff)
- holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*8)
- holoAng(I, E:toWorld(ang(0,0,0)))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-2)
- #Bein2 hinten rechts
- BDiff=vec(-25,-6,0)
- I++
- ##Fuss
- holoCreate(I)
- holoPos(I, E:toWorld(vec(10,12,0)+BDiff))
- holoModel(I, "hq_cylinder")
- holoAng(I, E:toWorld(ang(90, 0.0000, 0)))
- holoScale(I, vec(0.6006, 1.1922, 1.2290)*0.7+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- I++
- ##Oberbein(Control)
- holoCreate(I)
- holoModel(I, "hq_sphere")
- holoPos(I, E:toWorld(vec(10,12,24)+BDiff+NoLDiff)) #
- holoAng(I, E:toWorld(ang(0, 0, 0)))
- # holoScale(I, vec(0.8,0.8,1.5))
- holoScale(I, vec(0.8)+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, E)
- I++
- ##Knieh
- holoCreate(I)
- holoModel(I, "hq_icosphere")
- holoPos(I, holoEntity(I-1):toWorld(vec(0,0,12.5))) #vec(12,25,12.5)
- # holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0)))
- holoScale(I, vec(0.8)+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-1)#
- I++
- ##Oberbein hq_cylinder
- holoCreate(I)
- holoModel(I, "hq_cubinder")
- holoScale(I, vec(0.8,0.8,1.5)+BeineScaleDiff)
- holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*2)
- holoAng(I, E:toWorld(ang(0,0,0)))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-2)
- I++
- ##Bein
- holoCreate(I)
- holoModel(I, "hq_cylinder")
- holoScale(I, vec(0.7,0.7,1)+BeineScaleDiff)
- holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*8)
- holoAng(I, E:toWorld(ang(0,0,0)))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-2)
- #Bein3 vorne links
- BDiff=vec(5,-18,0)
- I++
- ##Fuss
- holoCreate(I)
- holoModel(I, "hq_cylinder")
- holoPos(I, E:toWorld(vec(10,12,0)+BDiff))
- holoAng(I, E:toWorld(ang(90, 0.0000, 0)))
- holoScale(I, vec(0.6006, 1.1922, 1.2290)*0.7+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- I++
- ##Oberbein(Control)
- holoCreate(I)
- holoModel(I, "hq_sphere")
- holoPos(I, E:toWorld(vec(12,12,24)+BDiff+NoLDiff)) #
- holoAng(I, E:toWorld(ang(0, 0, 0)))
- # holoScale(I, vec(0.8,0.8,1.5))
- holoScale(I, vec(0.8)+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, E)
- I++
- ##Knieh
- holoCreate(I)
- holoModel(I, "hq_icosphere")
- holoPos(I, holoEntity(I-1):toWorld(vec(0,0,12.5))) #vec(12,25,12.5)
- # holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0)))
- holoScale(I, vec(0.8)+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-1)#
- I++
- ##Oberbein hq_cylinder
- holoCreate(I)
- holoModel(I, "hq_cubinder")
- holoScale(I, vec(0.8,0.8,1.5)+BeineScaleDiff)
- holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*2)
- holoAng(I, E:toWorld(ang(0,0,0)))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-2)
- I++
- ##Bein
- holoCreate(I)
- holoModel(I, "hq_cylinder")
- holoScale(I, vec(0.7,0.7,1)+BeineScaleDiff)
- holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*8)
- holoAng(I, E:toWorld(ang(0,0,0)))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-2)
- #Bein4 hinten links
- BDiff=vec(-25,-18,0)
- I++
- ##Fuss
- holoCreate(I)
- holoModel(I, "hq_cylinder")
- holoPos(I, E:toWorld(vec(10,12,0)+BDiff))
- holoAng(I, E:toWorld(ang(90, 0.0000, 0)))
- holoScale(I, vec(0.6006, 1.1922, 1.2290)*0.7+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- I++
- ##Oberbein(Control)
- holoCreate(I)
- holoModel(I, "hq_sphere")
- holoPos(I, E:toWorld(vec(10,12,24)+BDiff+NoLDiff)) #
- holoAng(I, E:toWorld(ang(0, 0, 0)))
- # holoScale(I, vec(0.8,0.8,1.5))
- holoScale(I, vec(0.8)+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, E)
- I++
- ##Knieh
- holoCreate(I)
- holoModel(I, "hq_icosphere")
- holoPos(I, holoEntity(I-1):toWorld(vec(0,0,12.5))) #vec(12,25,12.5)
- # holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0)))
- holoScale(I, vec(0.8)+BeineScaleDiff)
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-1)#
- I++
- ##Oberbein hq_cylinder
- holoCreate(I)
- holoModel(I, "hq_cubinder")
- holoScale(I, vec(0.8,0.8,1.5)+BeineScaleDiff)
- holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*2)
- holoAng(I, E:toWorld(ang(0,0,0)))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-2)
- I++
- ##Bein
- holoCreate(I)
- holoModel(I, "hq_cylinder")
- holoScale(I, vec(0.7,0.7,1)+BeineScaleDiff)
- holoPos(I, holoEntity(I-2):pos()+holoEntity(I):up()*8)
- holoAng(I, E:toWorld(ang(0,0,0)))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, I-2)
- ##Extra Details
- I++
- ##Hals Rundung unten
- holoCreate(I)
- holoModel(I, "hq_icosphere")
- holoPos(I, holoEntity(4):toWorld(vec(0,0,-holoEntity(4):boxSize():z()*0.8))) #vec(12,25,12.5)
- # holoAng(I, E:toWorld(ang(0.0000, 0.0000, 0)))
- holoScale(I, vec(0.86))
- holoColor(I, vec(254, 230, 186), 255)
- holoParent(I, 4)
- }
- function number co(A, B, C){
- return acos((A^2 + B^2 - C^2) / (2*A*B))
- }
- function ik(L1,L2,Hip:vector,End:vector,I1,I2,Bs:entity){
- local Axis=Bs:toLocalAxis(End-Hip)
- local Angle=Axis:toAngle():setRoll(-bearing(Hip,Bs:angles(),End))
- local Dist=min(Axis:length(),L1+L2)
- local Quat=quat(Angle)*qRotation(vec(0,90-co(Dist,L1,L2),0)) #co Drehunf
- holoAng(I1,Bs:toWorld(Quat:toAngle()))
- holoAng(I2,holoEntity(I1):toWorld(ang(-co(L2, L1, Dist)+180,0,0)))
- }
- function number legpart(Holo,Leg) {
- return Holo+12+(5*(Leg-1))
- }
- function ranger currentranger(Leg,ExtraDist,Diff:vector) {
- return rangerOffset(Leglength+ExtraDist,holoEntity(LegPart["control"+Leg:toString(),number]):pos()+FootDiff+(Base:toWorld(Diff)-Base:pos()),-Base:up())
- }
- function normal step(Index,EBase:entity,Stephigh,Diff:vector,RSpeed) {
- Pos=holoEntity(Index):pos()
- End=currentranger(LegPart[Index,number],0,vec()):position()
- # if(!End:isInWorld()) {print("cap!")}
- Build=table()
- Build["index",number]=Index
- Build["diff",vector]=Diff
- Build["start",vector]=Pos
- Build["high",number]=Stephigh
- Build["lastbasepos",vector]=Base:pos()
- Build["speed",number]=RSpeed
- Build["middle",vector]=mix(Pos,End,0.5)
- Step:pushTable(Build)
- Step["active"+Index:toString(),number]=1
- RLeg=LegPart[Index,number]
- LFDiff[RLeg,vector]=Diff
- LPos[RLeg,vector]=currentranger(RLeg,0,Diff):position()
- }
- function normal refreshfoots(Sped) {
- for(X=1,4) {LPos[X,vector]=currentranger(X,0,vec()):position()}
- step(LegPart["foot"+Order[3,number]:toString(),number],Base,0,vec(),Sped)
- step(LegPart["foot"+Order[2,number]:toString(),number],Base,0,vec(),Sped)
- step(LegPart["foot"+Order[1,number]:toString(),number],Base,0,vec(),Sped)
- step(LegPart["foot"+Order[4,number]:toString(),number],Base,0,vec(),Sped)
- }
- function entity filterplyname(Search:string) {
- Plys=players()
- for(X=1,Plys:count()) {
- CPly=Plys[X,entity]
- Name=CPly:name()
- if(Search:find(Name)) {return CPly}
- }
- return owner()
- }
- if(first()) {
- Leglength=holoEntity(legpart(2,1)):pos():z()-holoEntity(legpart(1,1)):pos():z()
- Order:pushNumber(1)
- Order:pushNumber(4)
- Order:pushNumber(2)
- Order:pushNumber(3)
- State="stand"
- 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
- for(X=1,4) {LPos[X,vector]=holoEntity(legpart(2,X)):pos()}
- }
- #1036 ops
- #Step
- SCount=Step:count()
- if(SCount) {
- #print(SCount)
- for(X=1,SCount) {
- Infos=Step[X,table]
- Index=Infos["index",number]
- Diff=Infos["diff",vector]
- Leg=LegPart[Index,number]
- High=Infos["high",number]
- if(!Index) {break} #Workaround for strange E2 bug
- Start=Infos["start",vector]
- End=currentranger(LegPart[Index,number],0,Diff):position()
- Middle=Infos["middle",vector]:setZ(End:z()+High)
- Ratio=Infos["ratio",number]
- RSpeed=Infos["speed",number]
- Ratio=clamp(Ratio+RSpeed,0,1)
- Infos["ratio",number]=Ratio
- Step[X,table]=Infos
- Bezier=bezier(Start,Middle,End,Ratio)
- holoPos(Index,Bezier)
- if(Ratio==1) {
- Step:removeTable(X)
- LPos[LegPart[Index,number],vector]=Bezier+vec(0,0,Leglength)-FootDiff
- Step["active"+Index:toString(),number]=0
- # print("Leg "+LegPart[Index,number]:toString()+" finished with speed "+RSpeed:toString()+" at Ratio "+Ratio)
- }
- }
- }
- BaseChanged=changed(Base:pos()) #changed turns in for loop to 0 after one step
- ChangedLPos=0
- Nohit=1
- for(X=1,4) {
- Foot=LegPart["foot"+X:toString(),number]
- # holoPos(Foot,holoEntity(Foot):pos()+VelL*0.01)
- # LPos[X,vector]=holoEntity(Foot):pos()+VelL*0.01
- Control=LegPart["control"+X:toString(),number]
- ControlPos=holoEntity(Control):pos()
- Knee=LegPart["knee"+X:toString(),number]
- #Set FootPos
- if(!Step[1,table]["index",number]) {
- if(!(State=="liedown")) {
- Ranger=rangerOffset(Leglength+7,ControlPos,((LPos[X,vector]-vec(0,0,Leglength)+FootDiff)-holoEntity(Control):pos()))
- if(!Ranger:hit()) { #Foots are in air
- # Ranger=rangerOffset(Leglength+1,ControlPos+FootDiff,-Base:up())
- Ranger=currentranger(X,0,Diff)
- LPos[X,vector]=ControlPos
- Nohit+=1
- # holoAng(Foot,Base:toWorld(ang(90,0,0)))
- } # else {
- # holoAng(Foot,Base:toWorld(ang(-Ranger:hitNormal():toAngle():pitch()+40,0,0))+ang(90,90,0))
- holoAng(Foot,Base:toWorld(ang(0,0,0)):setPitch(90)+ang(0,0,0))
- # }
- } else {
- Ranger=rangerOffset(Leglength+7,ControlPos,((LPos[X,vector]-vec(0,0,Leglength)+FootDiff)-holoEntity(Control):pos())+vec(0,0,-0.1))
- }
- holoPos(Foot,Ranger:position()+vec(0,0,3))
- }
- #Adjust legs when something changed
- FootPos=holoEntity(Foot):pos()
- LFootPos=Footchanged[X,vector]
- if((!(LFootPos==FootPos)|BaseChanged)) {
- Footchanged[X,vector]=FootPos
- # if(!ChangedLPos) {
- Poss=holoEntity(Foot):toWorld(vec(-3,0,-3))
- # } else {
- # Poss=holoEntity(Control):toWorld(vec(3,0,0))+FootDiff-Base:up()*Leglength
- # }
- ik(12.5,12.5,ControlPos,Poss,Control,Knee,Base)
- }
- }
- #print("walking")
- #Walking
- if(!(State=="sit")&!(State=="liedown")) {
- ASpeed=Base:pos():distance(Task["walkto",vector])*0.0045
- ASpeed=clamp(ASpeed,Speedmin,Speedmax)
- # print(ASpeed)
- if(!Step[1,table]["index",number]) {
- Speed=0.18*ASpeed
- Stepdist=10
- if(!Cycle) {
- if(holoEntity(LegPart["foot"+Order[1,number]:toString(),number]):pos():distance(currentranger(Order[1,number],0,LFDiff[3,vector]):position())>Stepdist) {
- step(LegPart["foot"+Order[1,number]:toString(),number],Base,11,vec(),Speed)
- step(LegPart["foot"+Order[2,number]:toString(),number],Base,11,vec(),Speed)
- }
- Cycle=1
- } else {
- if(holoEntity(LegPart["foot"+Order[3,number]:toString(),number]):pos():distance(currentranger(Order[3,number],0,LFDiff[2,vector]):position())>Stepdist) {
- step(LegPart["foot"+Order[3,number]:toString(),number],Base,11,vec(),Speed)
- step(LegPart["foot"+Order[4,number]:toString(),number],Base,11,vec(),Speed)
- }
- Cycle=0
- }
- }
- }
- #Base:setPos(Base:pos()+Base:forward()*(ASpeed*1.8))
- #print("animations")
- #Look to Verhalten
- if(!Cache["bringball",number]|!(Cache["bringball",number]==-1)) {
- if(!(State=="liedown")) {
- NP=holoEntity(2):pos()+Base:forward()*190-Base:up()*50
- findInBox(NP-vec(100,100,100),NP+vec(100,100,100))
- } else {
- NP=Base:pos()
- findInBox(Base:toWorld(vec(20,100,130)),Base:toWorld(-vec(-170,100,130)))
- }
- findClipToClass("player")
- Ply=findClosest(holoEntity(1):pos())
- if(Ply:isPlayer()) {FLookto=Ply:toWorld(vec(0,0,64))} else {
- FLookto=(Base:pos()+Base:forward()*100):setZ(holoEntity(1):pos():z())
- # print("forward")
- }
- } elseif(Cache["ball",entity]:isValid()) {
- Ball=Cache["ball",entity]
- if(Cache["bringball",number]==3) {
- FLookto=Ball:owner():toWorld(vec(0,0,64))
- # print("toowner")
- }
- if(Cache["bringball",number]==-1) {
- FLookto=Ball:pos()
- # print("ball")
- }
- } else {
- FLookto=(Base:pos()+Base:forward()*100):setZ(holoEntity(1):pos():z())
- # print("forward")
- }
- Lookto+=(FLookto-Lookto)*0.15
- #holoCreate(45,Lookto)
- #[#Change look to sound
- Micleft=Microphoneleft["Level",number]
- Micright=Microphoneright["Level",number]
- if(Micleft|Micright) {Lastleft=Micleft Lastrigt=Micright print(Micleft)}
- MicDiff=Lastrigt-Lastleft
- 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())}
- Lookto=(mix(Microphoneleft:entity():pos(),Microphoneright:entity():pos(),0.5)+vec(MicDiff,abs(MicDiff),0)*20):setZ(holoEntity(1):pos():z())
- holoCreate(45,Lookto)]#
- #Animations
- #-Head
- #if((Task["firsttick",number]<=2&Task["task",string]=="walkto")|!(Task["task",string]=="walkto")) {
- #[if((Task["firsttick",number]<=2)&Task["task",string]:length()>=2) {
- Task["firsttick",number]=Task["firsttick",number]+1 #Because Animations is above Walkto define
- holoUnparent(1)
- holoUnparent(4)
- # print(Task["firsttick",number])
- }]#
- NPos=Base:toWorld(HalsRanger-vec(0,0,4)*(State=="liedown"))
- #NPos=holoEntity(4):toWorld(vec(0,0,holoEntity(4):boxSize():z()))
- #Sin+=1
- #Lookto=NPos+entity():forward()+entity():forward()*40+entity():right()*(sin(Sin)*30)+entity():up()*(cos(Sin)*10)
- #holoCreate(45,Lookto)
- NA3=(Lookto-NPos):toAngle()+ang(0,0,90)*(State=="liedown"&0) #Fuern Kopf
- #Lookto+=Base:up()*(60+6*(State=="sit"))
- NA=(Lookto-NPos):toAngle()+ang(0,0,90)*(State=="liedown"&0) #Fuern Hals
- if(NA:yaw()<=328) {
- #NA:setYaw(clamp(NA:yaw(),0,32))
- } else {
- #NA=NA:setYaw(clamp(NA:yaw(),328,360))
- }
- NA=NA:setPitch(-40)
- #Roll 0-32 rechts
- #Roll 328-360 links
- #print(NA)
- AngP=rangerOffset(holoEntity(4):boxSize():z()*1.25,NPos,NA:forward()):position()
- holoPos(4,mix(NPos,AngP,0.5))
- holoAng(4,NA+ang(90-10*(State=="sit"),0,0))
- holoPos(1,holoEntity(4):toWorld(vec(0,0,holoEntity(4):boxSize():z())))
- if(NA3:yaw()<=270) {
- #holoAng(1,NA3:setYaw(clamp(NA3:yaw(),0,90)))
- } else {
- #holoAng(1,NA3:setYaw(clamp(NA3:yaw(),270,350)))
- }
- holoAng(1,NA3)
- #270 340 Links
- #0 90 rechts
- #print(NA:yaw())
- if(Task["task",string]=="walkto") {holoParent(1,Base) holoParent(4,Base)}
- #}
- #print("Recieve command")
- #bring the ball (semiauto)
- if(Task["task",string]:length()<=2&Cache["bringball",number]==-1) {
- State="stand"
- findInSphere(Base:pos(),100)
- findClipToClass("prop_physics")
- Props=findToArray()
- Count=Cache["bringballcount",number]
- Cache["bringballcount",number]=Count+1
- if(Props:count()<Count) {Cache["bringballcount",number]=1 Count=1}
- Prop=Props[Count,entity]
- Vel=Prop:vel()
- if(Vel:length()>500) {
- Cache["bringball",number]=1
- Cache["ball",entity]=Prop
- timer("bringballdelay",2000)
- }
- }
- if(clk("bringballdelay")) {
- Task["task",string]="walkto"
- Cache["bringballdelay",number]=1
- }
- #Recieve Command
- if(chatClk()) {
- Said=lastSaid():lower()
- Ply=lastSpoke()
- if(Whitelist[Ply:steamID(),number]) {
- LSaid=Lastsay[Ply:steamID(),string]
- if(Said:find(Name:lower())|Said:find("boy")|LSaid:find("boy")|LSaid:find(Name:lower())) {
- TTask=Task:clone()
- TCache=Cache:clone()
- Task:clear()
- Cache:clear()
- if(Said:find("sit")|Said:find("seat")|Said:find("place")) {
- Task["task",string]="sit"
- Blckls=1
- }
- if(Said:find("come")|Said:find("walk")|Said:find("go")) {
- State="walk"
- Task["task",string]="walkto"
- if(Said:find("to")) {
- Task["walkto",vector]=filterplyname(Said):pos()+(Base:pos()-owner():pos()):toAngle():forward()*160
- Blckls=1
- }
- if(Said:find("here")) {
- Task["walkto",vector]=owner():pos()+(Base:pos()-owner():pos()):toAngle():forward()*160
- Blckls=1
- }
- if(Said:find("looking")|Said:find("there")) {
- Task["walkto",vector]=owner():aimPos()
- Blckls=1
- }
- }
- if(Said:find("follow")|Said:find("with me")) {
- Task["task",string]="stand"
- Task["follow",number]=1
- Cache["followentity",entity]=Ply
- Blckls=1
- }
- if(Said:find("stand")&Said:find("up")) {
- Task["task",string]="stand"
- Blckls=1
- }
- if(Said:find("bring")|Said:find("get")) {
- Cache["bringball",number]=-1
- Cache["followentity",entity]=Ply
- if(State=="sit") {
- refreshfoots(0.0475)
- }
- Blckls=1
- }
- if(Said:find("stop")|(Said:find("dont")&Said:find("do"))) {
- Blckls=2
- }
- if(Said:find("poop")) {
- Cache["poop",number]=1
- Task["task",string]="sit"
- Blckls=1
- }
- if(Said:find("lie down")) {
- Task["task",string]="liedown"
- Blckls=1
- }
- if(!Blckls|!Lastsay[Ply:steamID(),string]:length()) {Lastsay[Ply:steamID(),string]=Said }
- if(Blckls) {hideChat(1) print(Said)}
- hideChat(1)
- if(!Blckls) {Task=TTask Cache=Cache:merge(TCache)}
- } else {
- Lastsay[Ply:steamID(),string]=Said
- }
- }
- }
- #print("Run Command")
- #Run Command
- Setang=Base:angles()
- Setpos=Base:pos()
- if(Cache["poop",number]) {
- GDA=Cache["poop",number]
- if(GDA==1) {
- if(clk("poop")) {
- holoCreate(Poop,holoEntity(2):toWorld(vec(0,0,holoEntity(2):boxSize():z()*2)))
- holoModel(Poop,"hq_icosphere")
- holoScale(Poop,vec(1,0.3,0.3))
- holoColor(Poop,vec(89,48,1))
- Cache["contpoop",number]=1
- }
- if(Cache["contpoop",number]) {
- # holoPos(Poop,holoEntity(Poop):pos()-holoEntity(Poop):forward()*0.04)
- holoPos(Poop,holoEntity(2):toWorld(vec(0,0,holoEntity(2):boxSize():z()*2+Cache["poopcz",number])))
- Cache["poopcz",number]=Cache["poopcz",number]+0.04
- Cache["poopang",number]=Cache["poopang",number]+0.2
- Angs=Cache["poopang",number]
- #50 (drop)
- holoAng(Poop,holoEntity(2):toWorld(ang(90,0,0)))
- if(Angs>=35) {
- Cache["poop",number]=2
- }
- }
- if(!Cache["firstpoop",number]) {
- Cache["firstpoop",number]=1
- Task["task",string]="sit"
- timer("poop",2000)
- Poop=holoAmount()+1
- }
- }
- if(GDA==2) {
- holoPos(Poop,holoEntity(Poop):pos()-vec(0,0,1))
- RA=rangerOffset(1,holoEntity(Poop):pos(),vec(0,0,-1))
- 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"}
- }
- }
- if(Task["follow",number]) {
- Ply=Cache["followentity",entity]
- End=Ply:pos()+(Base:pos()-Ply:pos()):toAngle():forward()*100
- if(End:distance(Setpos)>40) {
- State="walk"
- Task["walkto",vector]=End
- Task["task",string]="walkto"
- }
- }
- if(Cache["bringball",number]) {
- Prop=Cache["ball",entity]
- if(Cache["bringball",number]==2) {
- if(clk("pickup")) {
- Task["follow",number]=1
- Cache["bringball",number]=3
- }
- Prop:setPos(holoEntity(1):toWorld(Cache["propdiff",vector]))
- } elseif (Cache["bringball",number]==3) {
- Prop:setPos(holoEntity(1):toWorld(Cache["propdiff",vector]))
- if(clk("dropprop")) {
- print("drop")
- Cache["bringball",number]=0
- Task:clear()
- Task["task",string]="stand"
- }
- if(State=="sit") {
- if(!Task["first",number]) {
- Task["first",number]=1
- timer("dropprop",2000)
- }
- }
- } elseif(!(Cache["bringball",number]==-1)) {
- Lookto=Prop:pos()
- if(clk("pickupstandup")) {
- Task:clear()
- Task["task",string]="stand"
- Cache["bringball",number]=2
- Cache["propdiff",vector]=(holoEntity(3):pos()-Base:up()*Prop:boxSize():z())-holoEntity(1):pos()
- timer("pickup",2000)
- }
- if((Task["task",string]=="walkto")) {
- Task["walkto",vector]=Prop:pos()+(Base:pos()-Prop:pos()):toAngle():forward()*55
- State="walk"
- } elseif(Cache["bringballdelay",number]) {
- if(!Task["first",number]) {
- Cache["bringballdelay",number]=0
- timer("pickupstandup",2000)
- }
- }
- }
- }
- if(Task["task",string]:length()>=2) {
- if(Task["task",string]=="liedown") {
- State="liedown"
- for(X=1,4) {Footf=LegPart["foot"+X:toString(),number] holoParent(Footf,Base)}
- LFDiff:clear()
- step(LegPart["foot"+Order[3,number]:toString(),number],Base,0,vec(0,0,0),0.6)
- step(LegPart["foot"+Order[2,number]:toString(),number],Base,0,vec(14,16,0),0.6)
- step(LegPart["foot"+Order[1,number]:toString(),number],Base,0,vec(0,0,0),0.6)
- step(LegPart["foot"+Order[4,number]:toString(),number],Base,0,vec(14,16,0),0.6)
- Task:clear()
- timer("roll90",100)
- }
- if(Task["task",string]=="sit") {
- State="sit"
- if(!Cache["bringball",number]) {
- step(LegPart["foot"+Order[3,number]:toString(),number],Base,0,vec(-13,5,0),0.0375)
- step(LegPart["foot"+Order[2,number]:toString(),number],Base,0,vec(-13,-5,0),0.0375)
- step(LegPart["foot"+Order[1,number]:toString(),number],Base,0,vec(-10,1,0),0.0375)
- step(LegPart["foot"+Order[4,number]:toString(),number],Base,0,vec(-10,-1,0),0.0375)
- } else {
- step(LegPart["foot"+Order[3,number]:toString(),number],Base,0,vec(13,5,0),0.0375)
- step(LegPart["foot"+Order[2,number]:toString(),number],Base,0,vec(13,-5,0),0.0375)
- step(LegPart["foot"+Order[1,number]:toString(),number],Base,0,vec(16,1,0),0.0375)
- step(LegPart["foot"+Order[4,number]:toString(),number],Base,0,vec(16,-1,0),0.0375)
- }
- Firstsit=1
- N=Task["follow",number]
- Task:clear()
- Task["follow",number]=N
- }
- if(Task["task",string]=="stand") {
- State="stand"
- # LFDiff:clear() #Step Leg diff clear
- refreshfoots(0.034)
- N=Task["follow",number]
- Task:clear()
- Task["follow",number]=N
- }
- if(Task["task",string]=="jump") {
- Base:setAng(Task["angle",angle])
- End=Task["jumpto",vector]
- Start=Task["start",vector]
- Middle=mix(End,Start,0.5):setZ(End:z()+80)
- Task["ratio",number]=Task["ratio",number]+0.014
- Ratio=clamp(Task["ratio",number],0,1)
- Base:setPos(bezier(Start,Middle,End,Ratio))
- if(Ratio==1) {Task=Task["backup",table]}
- }
- if(Task["task",string]=="walkto") {
- End=Task["walkto",vector]
- H1P=holoEntity(1):pos()
- Proof=H1P+Base:forward()*100
- Proof2=rangerOffset(50,H1P,Base:forward())
- if(!Proof:isInWorld()|Proof2:distance()<15) {
- print("cap!")
- TaskS=Task:clone()
- Task:clear()
- Ra=rangerOffset(400,Proof+vec(0,0,300),vec(0,0,-1))
- Task["jumpto",vector]=Ra:position()+vec(0,0,50)+Base:forward()*25
- Task["task",string]="jump"
- Task["start",vector]=Base:pos()
- Task["backup",table]=TaskS
- Task["angle",angle]=Base:toWorld(ang(-40,0,0))
- # holoCreate(45,Ra:position())
- }
- Frwd=(End-Base:pos()):toAngle():setRoll(0)
- if(Nohit<4) {Setang=Frwd:setPitch(Base:angles():pitch())}
- Pluspos=Frwd:forward()*(ASpeed*1.8)
- if(Nohit>3) {
- Pluspos=Pluspos:setX(0):setY(0):setZ(-10)
- }
- LHit=Nohit
- Setpos+=Pluspos
- if(End:distance(Setpos)<5) {
- N=Task["follow",number]
- Task:clear()
- Task["follow",number]=N
- N=round(random(1,2))
- if(N==1&!Cache["bringball",number]) {
- Task["task",string]="stand"
- } else {
- Task["task",string]="sit"
- }
- }
- }
- }
- #print(Nohit)
- if(Nohit<2&LHit>2) {
- Base:soundPlay(1,1,"physics/body/body_medium_break3.wav")
- }
- LHit=Nohit
- #print("dog states")
- #Dog States
- if(!(Task["task",string]=="jump")) {
- if(1&!(State=="liedown")) {
- # if(owner():keyPressed("pad_8")) {State="walk"} else {State="stand"}
- SRR=rangerOffset(300,Base:pos()+Base:up()*30,-Base:up())
- SR=SRR:position()
- Vel=SRR:entity():vel()*0.038
- if(Vel:length()) {for(X=1,4) {LPos[X,vector]=LPos[X,vector]+Vel} Base:setPos(Base:pos()+Vel)}
- Vela=SRR:entity():angVel():setPitch(0):setRoll(0)*0.035
- if(Vel:length()) {for(X=1,4) {Base:setAng(Base:angles()+Vela)}}
- SX=SR:x()
- # holoCreate(40,Base:pos():setZ(SZ))
- R1=currentranger(1,300,vec())
- R2=currentranger(2,300,vec())
- SZ=(R1:position():z()+R2:position():z())/2
- R1Dst=R1:distance()-(21-12*Cache["poop",number])*(State=="sit"&!Cache["bringball",number])
- R2Dst=R2:distance()-27*(State=="sit"&Cache["bringball",number])
- if(R1Dst>R2Dst&(R1Dst-R2Dst)>1) {
- # Base:setAng(ang(Base:angles():pitch()+0.6,Base:angles():yaw(),Base:angles():roll()))
- Setang+=ang(0.6*(1+2*(State=="stand")),0,0)
- } elseif((R2Dst-R1Dst)>1) {
- # Base:setAng(ang(Base:angles():pitch()-0.6,Base:angles():yaw(),Base:angles():roll()))
- Setang-=ang(0.6*(1+2*(State=="stand")),0,0)
- }
- if(State=="stand") {
- TZ=SZ+4
- }
- if(State=="walk") {
- TZ=SZ-2
- }
- if(State=="sit") {
- TZ=SZ-4
- }
- Pos=Base:pos()
- Speed=2
- Clampz=clamp(TZ-Pos:z(),-Speed,Speed)
- Move=vec(0,0,Clampz)
- if(owner():keyPressed("pad_8")) {Forward=Base:angles():setRoll(0):forward()}
- Setpos+=Move+Forward*(ASpeed*1.8)
- Base:setPos(Setpos)
- Setang=Setang:setRoll(0)
- } elseif(Cache["roll90",number]) {
- SZ=rangerOffset(200,Base:pos(),vec(0,0,-1)):position():z()
- TZ=SZ+5
- Pos=Base:pos()
- Speed=2
- Clampz=clamp(TZ-Pos:z(),-Speed,Speed)
- Move=vec(0,0,Clampz)
- if(owner():keyPressed("pad_8")) {Forward=Base:angles():setRoll(0):forward()}
- Setpos+=Move+Forward*(ASpeed*1.8)
- Setang=Setang:setRoll(90)
- } elseif(clk("roll90")) {
- Cache["roll90",number]=1
- Base:setPos(Setpos-Base:right()*10+Base:up()*4 )
- }
- }#
- Base:setAng(Setang)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement