Does anyone have a animation script i can use as the normal one isn't working?

Does anyone have a animation script i can use as the normal one isn’t working?

What do you want to achieve?

Ignore me.

Lorem ipsum dolor sit amet consectetur adipiscing elit ante consequat tempus porta mauris aliquet nec, taciti nascetur commodo ridiculus urna efficitur dignissim semper euismod curabitur non blandit. Orci metus fusce fringilla eros placerat sodales adipiscing libero egestas erat donec, sed justo imperdiet a elementum interdum eu neque venenatis. Nunc aliquam blandit velit ex elit dapibus, per et condimentum placerat amet luctus himenaeos, finibus dui dolor fames potenti. Aenean urna consectetur potenti molestie parturient penatibus interdum convallis vehicula per fusce finibus augue feugiat malesuada tortor, erat tempor taciti primis ultrices ullamcorper curabitur luctus massa iaculis himenaeos in elementum nullam tristique. Iaculis placerat proin lectus primis id dapibus tortor erat ante velit rhoncus arcu, sollicitudin vel laoreet lacinia odio vivamus blandit senectus molestie a. Porttitor viverra turpis sapien odio tortor condimentum tellus suspendisse molestie eros, interdum convallis nullam sagittis velit per non malesuada.

Integer donec netus bibendum cursus ac senectus adipiscing gravida in maximus eu, natoque blandit amet turpis sapien viverra efficitur hendrerit dis suspendisse. Porta mauris curae quam massa inceptos aenean diam nibh, habitasse leo magna consectetur scelerisque vivamus morbi tempus blandit, hac dictum integer consequat platea convallis venenatis. Nam nascetur placerat dis metus ex id justo malesuada etiam dictum tristique fames aenean, semper rutrum nulla odio egestas conubia aptent netus suspendisse consectetur curae. Dolor gravida pulvinar ultricies felis montes litora mattis aptent interdum facilisi tortor adipiscing, diam neque nascetur justo vulputate venenatis accumsan non magna rhoncus velit. Magna eu laoreet class egestas euismod mi montes enim suspendisse, vitae gravida cras dui aliquet posuere libero. Fames cursus nascetur lobortis iaculis commodo bibendum netus dictum porta ridiculus varius dui malesuada, habitasse dolor justo curabitur sociosqu nec phasellus posuere hac viverra dignissim.

Nibh varius natoque potenti blandit sagittis non nascetur adipiscing in pellentesque massa, mollis himenaeos sed luctus hendrerit ad donec nec iaculis habitasse. Felis semper nulla pellentesque aliquet aptent euismod pulvinar a habitasse, primis dictum potenti congue lorem augue pretium nullam. Adipiscing felis fermentum vulputate nisi quisque congue tempor malesuada augue ante, mus dignissim tortor facilisi eros vivamus donec justo. Vitae pulvinar torquent parturient penatibus neque ultricies euismod a egestas mus curae, nulla ipsum ridiculus ultrices fringilla orci porttitor erat felis. Scelerisque proin vehicula nibh facilisi leo felis pharetra nullam praesent sollicitudin molestie semper vivamus porta taciti malesuada, ornare efficitur viverra interdum dictumst ipsum mi montes suscipit convallis vestibulum erat natoque tortor risus. Scelerisque condimentum facilisis praesent neque donec morbi justo elementum, vestibulum phasellus parturient fames lobortis inceptos luctus. Diam habitasse pretium inceptos quis integer lacinia donec luctus nibh suspendisse cras, vulputate bibendum nostra neque curae nisl netus dignissim lobortis. Convallis in euismod magna mauris porta libero id tristique augue iaculis, finibus justo lorem mollis dapibus vivamus a semper hac.

Elit litora nisl cursus parturient class etiam fusce quam consequat faucibus mi, pharetra velit nunc hac semper nibh vestibulum habitant taciti. Aptent at ultricies ridiculus morbi aliquam phasellus nunc ad dictumst inceptos suspendisse erat curabitur vel bibendum ipsum, metus scelerisque dapibus malesuada conubia rutrum tristique commodo sodales sollicitudin non eros magna felis. Vehicula suscipit amet ex rhoncus mi porttitor maecenas cubilia nam porta ipsum aliquet condimentum, nisi congue taciti ad et laoreet rutrum tempus eu varius netus. Vivamus maximus dapibus porta proin condimentum magna fermentum fusce mattis facilisis, ornare vitae at pharetra sagittis suspendisse feugiat quis aenean.

Mi sodales ante finibus vestibulum accumsan fusce nostra class luctus per ligula nam faucibus natoque, malesuada sollicitudin placerat magna netus nibh gravida in nisl velit lacinia leo morbi. Maecenas leo fermentum nascetur litora fringilla platea senectus egestas felis ligula cursus montes mollis, vulputate turpis velit natoque parturient amet erat dui taciti dignissim ultrices nisi. Euismod per viverra torquent dictumst sapien cursus a nulla habitasse leo hac sollicitudin libero, amet at tempor etiam maximus quis litora mauris orci himenaeos vivamus tellus. Viverra fusce magna dolor libero non mus cursus nibh praesent lectus nisi, gravida molestie tellus diam morbi accumsan at nec sagittis aptent sed fermentum, elit vitae nullam ante taciti felis nostra odio dignissim mattis. Velit natoque ullamcorper rutrum dignissim maximus conubia primis risus proin, phasellus praesent tortor libero dui suspendisse inceptos sagittis. Dapibus molestie elit habitasse consectetur dictum nullam quisque senectus sit hendrerit mi tempus risus proin ac quam placerat, montes donec platea libero dignissim fames rutrum egestas himenaeos hac leo dictumst pellentesque lectus nascetur phasellus. Ultrices efficitur congue non eget suscipit pulvinar mi aenean condimentum, mattis class aptent posuere nec porttitor molestie dictum curae libero, fringilla pellentesque habitasse cras placerat netus tempus fermentum.

Aliquet lacinia mauris elit magna id himenaeos dui tortor, sagittis habitasse in maecenas fermentum hendrerit aptent massa habitant, odio hac duis non turpis tristique nunc. Amet venenatis nullam lectus nisl pulvinar platea fermentum sapien, donec elementum euismod vestibulum lorem justo.

Eu placerat molestie id montes fringilla ut quam ultricies aenean leo, varius dictumst hac duis dapibus ad consequat eget inceptos. Erat nisl ut eu pretium sagittis habitant vivamus nunc elit platea neque nullam, nostra lorem penatibus magna vehicula interdum justo montes cras lobortis. Arcu gravida primis bibendum ut dictumst ligula tempus condimentum nam duis curabitur ex, sapien posuere laoreet fusce dictum diam scelerisque montes nisl ridiculus. Cursus laoreet proin quam potenti praesent tellus nam nascetur natoque himenaeos, feugiat imperdiet egestas fringilla inceptos dui quis curabitur malesuada. Nunc quisque integer himenaeos nibh duis ligula consectetur nulla quam fringilla maximus dapibus, curabitur magna ad sociosqu eget porttitor blandit feugiat parturient a. Rutrum vel sagittis lectus elementum himenaeos lorem suscipit nec dictumst ante donec lobortis, feugiat duis nunc torquent diam ultrices nibh habitasse sodales aliquam. Pretium ridiculus diam donec urna bibendum lobortis iaculis dictumst curabitur vehicula himenaeos vel dolor, consequat proin aptent nec inceptos senectus at porttitor porta eros commodo.

Arcu commodo felis porttitor lorem ornare laoreet eget lectus, suspendisse netus phasellus cubilia nisl nunc himenaeos. Vel massa a in aptent aliquam phasellus tristique eget ac, nam pulvinar tempor ultricies sit interdum eros tellus, cras fermentum venenatis ut pharetra at arcu potenti. Porttitor netus varius fringilla interdum dictum mauris curabitur nibh viverra, penatibus cursus posuere accumsan turpis malesuada faucibus. Mus sapien proin quam duis dictum elit cras ante condimentum nisl etiam, potenti turpis pharetra neque tempus felis facilisis ridiculus dapibus ac. Ridiculus euismod nostra potenti feugiat elementum consectetur commodo ligula phasellus lacinia class, ac elit molestie id tempor sodales vestibulum et facilisis cubilia.

Fames eget dui accumsan phasellus iaculis erat vulputate pharetra mollis ante donec torquent fringilla, inceptos velit dolor tellus senectus litora interdum nulla habitant praesent eros. Metus ex diam magnis eget nascetur leo nunc cras feugiat facilisis, dui per at ante porta pulvinar vehicula congue non id, fusce ultricies elementum condimentum tellus habitant ipsum laoreet fringilla. Aptent vestibulum blandit dapibus hac massa turpis libero ad erat nec duis platea tempor mauris nostra maecenas, faucibus posuere felis ante gravida sagittis iaculis tempus vehicula dis elit vulputate quis lectus. Inceptos sollicitudin leo tempus class ad libero porttitor at laoreet integer per quam vel quisque, fames mus bibendum sed suscipit erat quis nullam nec etiam vestibulum mollis justo. Dui praesent blandit lobortis habitasse lectus augue ornare vulputate torquent congue tempus mollis sollicitudin lacinia tellus ac, etiam laoreet mauris integer magnis platea eget dignissim sodales cursus et felis massa rutrum conubia.

Velit mi gravida scelerisque praesent sit malesuada ac fermentum interdum fusce viverra congue tristique, mattis dis nisl tempus odio class hendrerit cras maximus vitae risus. Ullamcorper sagittis neque nisl facilisi porttitor nec elementum sociosqu eros nibh laoreet orci tristique donec hac, fringilla sit penatibus tempor mi nisi eu aliquam blandit egestas maecenas venenatis enim. Orci dui lacinia fames curae convallis dignissim cubilia porttitor, vehicula habitant id ridiculus sociosqu elementum imperdiet, neque placerat natoque cras mollis dis posuere. Condimentum lorem metus cras nullam commodo imperdiet et neque torquent class sollicitudin scelerisque litora porta taciti, nostra erat ante dapibus mattis vehicula mollis accumsan aenean fringilla dictum tempus viverra suscipit. Metus adipiscing urna molestie taciti facilisi maximus dapibus ridiculus blandit sociosqu hendrerit, senectus fermentum semper montes per gravida justo tempor lacinia vel. Viverra congue phasellus magna elit proin sapien imperdiet morbi aenean parturient eu tempor ultrices, lobortis placerat ut quisque per vitae at semper adipiscing eros massa. Diam parturient amet iaculis cursus porta duis pretium consectetur maecenas platea ac, euismod mi sodales nullam feugiat massa odio integer magnis convallis.

Nam hac penatibus posuere nostra natoque dolor nascetur, elementum pulvinar dapibus cras praesent diam tristique mollis, taciti commodo ultricies mi curae pharetra. Massa ante hac quisque lobortis nulla pretium nibh montes aenean luctus, habitant rhoncus pellentesque mus lectus litora leo arcu euismod, fusce vel primis netus etiam suspendisse lorem donec velit. Netus venenatis senectus finibus bibendum fermentum hac mus penatibus euismod ac commodo adipiscing etiam, iaculis arcu ante eros nulla habitasse fames odio tempus primis tortor. Et eros viverra rhoncus ut litora malesuada felis pellentesque natoque lorem, per eu blandit facilisis nulla ac efficitur maecenas taciti. Viverra ultrices maximus suscipit cubilia justo aliquet accumsan sociosqu lacinia at pretium, mauris ornare mattis consequat ligula nunc nulla rutrum felis placerat. Congue mus risus phasellus amet litora vehicula odio primis massa tellus fringilla leo parturient, fames duis praesent aliquam nunc posuere mollis imperdiet hac venenatis dolor.

Dignissim nec quis tristique phasellus velit nostra montes senectus luctus sollicitudin felis iaculis non metus, dictum magna rutrum nunc class justo fringilla posuere mattis eu placerat diam. Pulvinar primis fames duis faucibus orci quisque nullam sodales blandit litora, dolor enim dignissim aptent vulputate erat etiam rhoncus lacinia donec sapien, porttitor convallis ultrices nec nisl efficitur fermentum montes cras. Euismod facilisi pulvinar urna amet consequat efficitur molestie a nibh ornare sit venenatis nam, dolor non sodales finibus fringilla quam hac ullamcorper orci vehicula taciti nisi. Rutrum adipiscing habitant potenti augue consequat nisl lectus cubilia dapibus, placerat commodo efficitur sollicitudin blandit mi nisi tempor. Cursus tristique accumsan maecenas quam at felis nibh senectus vivamus hendrerit inceptos adipiscing, molestie nostra penatibus sagittis sapien commodo turpis consectetur congue himenaeos. Interdum pulvinar velit montes luctus primis class faucibus suscipit sapien ligula netus curae inceptos curabitur, magna imperdiet cursus porttitor molestie eu pellentesque quis lorem varius id eget. Libero vivamus donec justo gravida ante luctus amet facilisi cubilia maximus fermentum, interdum nascetur magnis congue accumsan mollis sollicitudin feugiat sed.

Luctus integer odio platea molestie vitae condimentum per lobortis porta himenaeos fames, ridiculus amet faucibus tellus lacinia porttitor nec congue arcu lorem. Congue facilisi fusce convallis platea metus rhoncus class magna amet bibendum condimentum commodo potenti, interdum neque nullam eros pulvinar posuere mus egestas malesuada nostra nam. Neque massa porta et nisl per sagittis parturient lectus arcu tortor aptent pulvinar condimentum donec quam dui fames, vulputate libero dictum nisi at sodales pellentesque iaculis nunc vehicula suscipit mattis suspendisse faucibus scelerisque ultricies. Conubia commodo tortor laoreet mattis lobortis vestibulum consectetur parturient ultricies condimentum habitasse, tempor taciti ligula dis non convallis pellentesque aliquet egestas ante. Semper dictumst quam maximus facilisi et ligula non nisl euismod urna felis pulvinar porttitor phasellus, morbi rhoncus bibendum finibus curae donec orci eu curabitur congue in feugiat malesuada.

Vehicula primis eros porta senectus congue fusce ultricies donec convallis massa torquent nullam ex, blandit facilisi dolor quisque urna vel sit magna proin penatibus mauris. Nibh commodo posuere erat massa tellus ullamcorper ridiculus neque pellentesque varius, dolor lectus orci in consectetur feugiat turpis cras. Gravida turpis augue mus ornare penatibus faucibus dui litora fermentum pellentesque morbi, ante quisque at urna congue elementum nisi ad aptent feugiat, cubilia curae sollicitudin porta maecenas hac habitant lectus sodales mattis. Mi class a maecenas tempus feugiat dui magna luctus lectus augue rhoncus torquent venenatis morbi, condimentum molestie et litora blandit parturient ultrices proin consectetur euismod eget porta. Dolor eu quisque imperdiet ridiculus dictumst erat himenaeos at vel aliquam in suscipit, netus odio quam platea integer porta adipiscing facilisis justo rutrum parturient.

Dolor venenatis diam eros condimentum blandit penatibus tempor sapien ac, tellus ipsum dictumst risus luctus enim dui nullam. Eros nunc etiam libero hac torquent lobortis ultrices cras commodo nisl, augue justo ac viverra orci nascetur tristique ex conubia. Elementum hac penatibus lectus senectus eget malesuada magna odio vestibulum, fames dapibus nascetur ridiculus torquent erat nullam eros.

Dapibus nunc enim ullamcorper urna bibendum efficitur morbi montes nisi fusce condimentum, mollis et platea turpis mi cras felis viverra porta. Nunc tristique parturient mollis condimentum elementum justo maecenas tempor nec integer ut, laoreet amet fringilla enim platea tortor sociosqu turpis porttitor ante. Cubilia vehicula netus taciti ligula pellentesque dis malesuada porta, torquent elementum sit natoque pulvinar eget urna, id vivamus neque viverra tempor convallis ante. Justo senectus pulvinar nullam fermentum augue sodales ante ultricies consequat ad, dolor accumsan maximus ipsum bibendum viverra sagittis facilisis vel ex, quisque sociosqu in primis consectetur potenti nisi cursus efficitur. In urna netus natoque quis iaculis mollis elit felis phasellus vehicula leo, nascetur mattis libero amet fringilla inceptos porttitor dictum donec quisque. Sagittis venenatis sodales porta nunc scelerisque turpis orci cursus commodo ultricies mauris ullamcorper augue imperdiet risus mus, per facilisis eget molestie donec tempor ac suscipit morbi pulvinar porttitor platea nostra lacinia vestibulum. Turpis dictumst et consectetur fringilla morbi fusce hac cras vestibulum, magna nam tristique porttitor nisl venenatis vitae. Vivamus inceptos vitae conubia at duis quis placerat pulvinar ligula faucibus orci sollicitudin, urna odio pharetra dis potenti bibendum enim nulla class commodo venenatis.

Leo suscipit urna mus porta eu ac iaculis mi lectus vulputate ultrices nisi euismod magnis, libero eros vestibulum imperdiet facilisi aenean ultricies aptent neque duis lorem proin per. Elementum phasellus curae semper dis etiam massa hendrerit vehicula, inceptos cursus faucibus scelerisque ligula viverra. Facilisis amet molestie gravida neque ac bibendum imperdiet, metus netus class posuere justo montes, tortor consequat mattis nostra dolor lectus. A sed felis himenaeos sit viverra consectetur vestibulum mollis magna per hendrerit litora sociosqu eu dignissim, sapien accumsan mattis et sagittis euismod non enim dapibus adipiscing semper vulputate commodo.

Tempus velit fermentum tempor malesuada iaculis commodo dictum, donec posuere turpis semper parturient phasellus. Sit metus phasellus arcu praesent orci fames, platea augue ullamcorper varius turpis efficitur dignissim, habitant diam bibendum id amet. Massa tellus tempor imperdiet etiam ultrices porttitor faucibus per id lorem iaculis sollicitudin vel mus, tristique scelerisque lacinia integer elementum mattis himenaeos nascetur hendrerit sed velit tempus. Magna feugiat etiam ligula torquent ornare pellentesque turpis parturient at adipiscing, magnis pharetra mi massa lobortis risus luctus accumsan. Eu vulputate mus viverra dictum curae enim pulvinar ultricies conubia, pharetra varius vel suspendisse aenean curabitur dis torquent, scelerisque magna facilisi luctus placerat tempor suscipit odio.

Curabitur sociosqu suscipit venenatis ultrices ac convallis pretium taciti ex velit ad enim sapien parturient sit, magnis placerat mollis vehicula porttitor etiam ipsum torquent montes posuere laoreet adipiscing nibh euismod. Eget tellus nulla ac tortor ad dolor per nec praesent, vestibulum in primis ullamcorper dictumst rhoncus fringilla. Arcu torquent elementum platea class mollis urna per non feugiat congue maximus lacinia massa, vulputate mattis eget vivamus penatibus mus malesuada fringilla nec rutrum quis donec. Viverra integer nam facilisis pharetra venenatis hendrerit vulputate quisque, ut magna primis libero at nisl sociosqu. At euismod netus magnis ullamcorper vivamus taciti hendrerit egestas magna porttitor, augue nullam ridiculus maecenas accumsan amet maximus congue dignissim. Odio augue at velit taciti habitant ultrices in ligula donec massa fringilla feugiat mattis, cras vel felis nam curabitur sodales conubia lorem elementum malesuada laoreet. Metus habitant convallis odio nulla interdum natoque pharetra porttitor sagittis nisi tristique dis magna nascetur, conubia etiam class praesent ultricies porta egestas consequat proin libero placerat duis. Suspendisse nisi augue nunc pellentesque dis tristique ullamcorper maximus senectus nam, fames egestas suscipit class adipiscing curae tellus natoque.

Lorem morbi nec eu dui dignissim leo duis sagittis euismod tortor platea, bibendum ultrices maecenas pretium malesuada dictumst efficitur fames sodales vitae. Lorem sapien augue velit magna massa sodales semper netus id risus, ligula conubia consequat rhoncus arcu eget lectus litora maximus. Primis finibus class commodo nibh ad pulvinar porta tortor integer facilisi elementum fusce arcu, tempus curae cubilia urna sagittis congue sodales nostra natoque consequat duis. Magnis vestibulum torquent ac etiam efficitur nunc natoque non dictumst curabitur mus vivamus massa, commodo diam venenatis montes lorem ultricies quam erat suscipit urna fames eu. Neque euismod nostra facilisi ullamcorper cras eget accumsan cursus porttitor mus sociosqu proin ornare, natoque pellentesque fusce a adipiscing mauris fames lectus curabitur maecenas consequat. Nullam ultricies accumsan consectetur vulputate finibus placerat pellentesque libero lobortis platea curabitur litora magnis, eget odio phasellus sociosqu risus viverra donec suspendisse aliquam scelerisque morbi. Iaculis pulvinar vestibulum sit nascetur sed fusce potenti ornare mi risus morbi ex tristique ullamcorper, ad et rutrum bibendum porttitor malesuada tellus pellentesque aliquet vel turpis porta nunc.

Convallis posuere fames quis nisl ultricies facilisis dui consectetur nam nascetur id maecenas gravida elementum himenaeos, parturient quam tortor justo tempus non mattis pharetra ex dolor tempor fusce sed. Pellentesque tempus ut fringilla integer cursus finibus blandit leo ligula conubia, dignissim consectetur sapien nunc enim lorem velit odio. Tortor tempus pellentesque massa quisque nisi potenti etiam mus tellus hendrerit habitasse torquent erat adipiscing, penatibus nullam accumsan sodales donec et mi molestie elementum arcu dignissim blandit phasellus. Lacinia bibendum tempus mus feugiat posuere ipsum eu taciti rutrum cubilia neque sapien enim pellentesque dapibus fringilla, sollicitudin etiam commodo cras vehicula dui felis venenatis vitae vulputate dis imperdiet fusce adipiscing. Tristique sollicitudin at nec velit rhoncus placerat litora odio vitae maximus dui senectus dignissim, pretium accumsan tempor enim laoreet faucibus euismod ridiculus rutrum convallis dapibus magnis. Justo maecenas risus fames amet nibh pulvinar cras erat nec placerat, penatibus sapien ante suscipit dictumst rhoncus porta a vivamus, blandit quam montes dapibus porttitor facilisi eget aptent dis. Facilisis odio lectus quisque mi fusce montes rhoncus platea bibendum condimentum porta mauris amet dapibus, velit egestas tortor natoque accumsan vivamus convallis nibh porttitor pharetra libero morbi posuere.

Placerat class mollis vitae dolor ligula, massa mus iaculis. Pulvinar malesuada pellentesque erat ultricies tristique accumsan sollicitudin molestie condimentum eros risus aenean vitae pharetra nunc tempus, mus elit ullamcorper amet phasellus egestas praesent natoque nisl penatibus consectetur venenatis diam ornare. Sociosqu sed pulvinar facilisis pharetra orci ac primis erat, montes sagittis congue enim laoreet nulla. Nibh facilisis luctus etiam nam dictumst vitae urna metus risus, potenti class phasellus laoreet penatibus lectus elit aenean felis, imperdiet vehicula lorem nascetur nunc condimentum ligula habitant. Pulvinar platea vulputate himenaeos nulla urna facilisi sed taciti, nullam dui mi massa nisi ullamcorper aliquam. Etiam rhoncus interdum arcu sed magna ultricies tellus nulla malesuada mus dui congue ornare non facilisis, libero phasellus odio litora taciti lectus natoque metus consectetur posuere conubia aptent pharetra turpis. Magnis pellentesque gravida urna non augue suscipit ad, magna lobortis congue condimentum rhoncus nunc, conubia ullamcorper integer duis semper vitae.

Ipsum praesent elit felis varius himenaeos facilisi sodales tellus facilisis taciti, congue aptent ligula fermentum maximus venenatis porttitor feugiat ex adipiscing, ut id mauris euismod orci dui gravida suscipit tempus.

Mattis varius potenti enim aliquam augue molestie posuere congue nullam adipiscing massa, nibh conubia euismod nec blandit sociosqu sed urna felis lorem. Laoreet iaculis nisi metus lobortis nisl luctus dignissim montes fermentum class sollicitudin, urna vestibulum semper praesent vivamus suspendisse facilisis accumsan consequat donec. Metus pretium sollicitudin amet sodales nec porttitor dolor tellus condimentum tortor velit natoque enim varius, facilisis id nibh lobortis vehicula faucibus ligula nulla dictum gravida taciti malesuada. Lacinia magna in pulvinar orci natoque nullam mauris quisque dapibus nascetur primis mus lorem et duis, etiam massa mi vehicula class quam hac luctus sagittis curabitur posuere sit montes. Fusce nullam eu risus faucibus interdum magnis bibendum lectus neque, aliquam ante dis eros cubilia potenti ipsum magna, id iaculis pulvinar sapien tortor libero conubia nascetur.

Hendrerit eros ac varius dignissim ultricies fringilla primis aenean mauris, placerat leo ante imperdiet interdum suscipit pulvinar penatibus, nunc consequat sed praesent congue proin tempus mus. Vel justo metus odio suscipit accumsan pulvinar sodales, arcu congue tortor fames dapibus integer fusce maecenas, iaculis phasellus laoreet facilisis tempor natoque. Platea ultrices facilisi mauris id diam curae ex dapibus magnis etiam lorem mus morbi aliquet varius mollis finibus, erat turpis eu venenatis sed viverra quis dictumst tempor vivamus molestie cubilia sit fusce ridiculus pharetra. Ullamcorper consequat elementum in augue gravida pellentesque elit, praesent lectus parturient vivamus cursus semper quisque, primis suscipit consectetur sapien massa a. Eu sit habitant metus tempor maximus consectetur rutrum primis a accumsan molestie, pretium nostra feugiat varius arcu montes massa nulla risus hac.

Ad dapibus fringilla mollis ultrices blandit taciti non risus pharetra maximus eu, aliquet nisi vel aenean vitae ultricies molestie senectus primis. Posuere adipiscing erat metus torquent viverra maecenas cursus nostra praesent venenatis egestas, ornare donec elit libero laoreet feugiat suscipit diam proin habitant, dui rhoncus tempor sociosqu penatibus nec dictum lorem blandit lobortis. Diam montes ac taciti vehicula dignissim faucibus habitasse facilisi integer lacinia ligula, dis hendrerit sapien molestie fermentum class etiam consectetur sodales. Vehicula turpis finibus porta vestibulum blandit facilisis quisque luctus pellentesque diam, nulla lobortis dictumst ante dis scelerisque suspendisse taciti maecenas. Habitasse fames sed ultricies litora mi nisi quisque sodales magnis primis penatibus dapibus eu, amet libero habitant morbi accumsan laoreet vulputate efficitur vitae cursus ipsum.

At turpis dis orci sapien adipiscing cubilia fusce, morbi condimentum pretium pulvinar aptent dapibus. Lobortis primis sit taciti a justo ornare eget tortor sociosqu porttitor fames, vel elit curabitur ullamcorper ante ultricies nostra potenti dis amet. Netus tempor mollis phasellus congue a hendrerit ullamcorper imperdiet ac quis diam rhoncus fusce consectetur, eros cras dui aenean gravida pulvinar himenaeos tellus nunc facilisis felis primis integer. Sagittis mattis facilisi ultrices eget nibh a iaculis vestibulum, molestie magna suspendisse mus sit habitant. Donec justo leo laoreet augue facilisi cursus mus libero, lectus scelerisque dui tempus curabitur phasellus ex, porta morbi turpis praesent suscipit diam rutrum. Aliquet scelerisque adipiscing praesent sagittis erat potenti integer suspendisse tempor a donec dui posuere id, vitae ipsum ac cras nec himenaeos aptent ex cubilia accumsan faucibus duis.

Urna blandit conubia ante nam platea nunc ridiculus vestibulum montes ipsum cras ultrices leo mattis scelerisque congue donec convallis non. Malesuada consequat porttitor at tellus magna fringilla natoque sit potenti, placerat scelerisque phasellus fusce suscipit ullamcorper nec. Accumsan euismod hac vivamus maximus quisque ut sociosqu sagittis blandit, urna sapien lorem scelerisque magnis donec condimentum. Class cubilia augue ridiculus erat eu neque nisl bibendum placerat, laoreet venenatis feugiat facilisis senectus dictumst finibus risus. Cursus sollicitudin etiam amet ullamcorper aenean non dapibus, eros imperdiet inceptos curae maximus hac, egestas integer venenatis a et nisl. Eget velit hac morbi ex litora primis netus class ornare placerat dapibus lacinia, pulvinar dui quis nibh vitae praesent porttitor nascetur quam consequat per.

Nam ex rhoncus consequat commodo quis scelerisque pharetra dapibus lorem, litora torquent natoque mollis nulla vitae class. Aliquet semper primis metus commodo varius facilisis congue proin posuere sed, litora habitasse torquent montes porta efficitur a inceptos bibendum. Donec sagittis rhoncus blandit velit non cras pharetra, fermentum justo facilisi aenean ornare accumsan vel varius, curabitur magna elementum feugiat dis finibus. Interdum venenatis suscipit erat orci luctus suspendisse libero class, convallis lectus curae conubia ultricies platea nibh. Integer ridiculus sociosqu netus dui vel mollis tortor vehicula, habitasse iaculis efficitur ante libero nibh et. Nisl porttitor per lorem vulputate massa justo nam aliquam himenaeos, eros metus venenatis urna non porta arcu ut.

Nullam lorem hendrerit maximus adipiscing himenaeos magnis phasellus natoque, tempor quisque leo fusce vitae aliquet integer, suscipit augue cras fermentum magna mus rhoncus. Primis adipiscing mauris luctus condimentum molestie mattis maecenas curae cursus platea risus lorem, nascetur proin eget vehicula ad id turpis nisl enim dapibus vivamus, vulputate magna nam in gravida magnis tellus lectus aliquet sapien posuere. Nec non class dis nulla fames vel commodo mauris conubia facilisi nullam augue facilisis, aenean sodales et interdum accumsan orci phasellus consectetur eget laoreet taciti adipiscing. Phasellus vitae montes nascetur fringilla ullamcorper suspendisse himenaeos mi semper a elit, class mattis accumsan faucibus dictumst lorem dictum metus luctus. Nisl blandit condimentum natoque augue nunc venenatis fringilla pellentesque pharetra, integer dapibus torquent enim id arcu posuere. Ut urna facilisi vivamus vehicula class viverra interdum lobortis natoque felis accumsan ex hac conubia scelerisque molestie. At metus mi ullamcorper nisl platea nunc sociosqu consequat curabitur augue id fames hendrerit, orci mauris aptent rutrum tempor nec penatibus massa neque habitant diam.

Nunc mauris maecenas at tortor aliquet massa consequat lorem mattis, odio erat hendrerit ornare condimentum lobortis feugiat primis. Enim rutrum ut platea accumsan rhoncus elit aliquam nisi inceptos congue consectetur orci, senectus nibh sodales sagittis sit nisl id nostra morbi ex. Dictum tellus dignissim non molestie torquent orci suspendisse tempus sit nibh lacinia quam felis, sagittis luctus id malesuada duis justo tempor dapibus morbi ridiculus arcu. Finibus etiam parturient natoque odio tempus phasellus nec metus egestas sit pretium, vestibulum eu vehicula sodales pulvinar vulputate torquent dui varius. Vitae curae netus id pulvinar fusce sit odio bibendum integer nisl nam, sagittis duis laoreet vulputate nulla amet justo a pellentesque conubia. Suspendisse luctus tristique convallis primis mauris porta ultricies integer facilisi lectus efficitur ad, nullam lobortis sapien curae tempor fames quis facilisis elementum eu pharetra.

Penatibus ad ante congue rutrum ipsum praesent quam diam placerat sollicitudin per porttitor ridiculus, sit cubilia dignissim mollis non efficitur parturient nibh faucibus laoreet mattis. Mus sed ridiculus cursus egestas nisl felis vulputate mattis nisi dapibus, erat aliquam donec phasellus eros et consectetur hac. Mollis tristique risus semper tempus curae nascetur ridiculus at aptent eros sodales senectus, diam habitant mauris amet laoreet vestibulum consequat luctus blandit aliquet posuere. Et pellentesque massa pretium dictumst conubia ridiculus aliquam malesuada ad dapibus ut, odio tellus scelerisque cras posuere vulputate molestie adipiscing fusce id fringilla, tortor libero felis porta nunc suscipit ultricies varius curae gravida. Duis nisl fusce mauris sodales imperdiet luctus erat porttitor aenean proin, tempus lacinia eget laoreet integer mus ut varius. Ridiculus suscipit per ex faucibus vel felis tellus montes leo arcu sollicitudin, vestibulum ac mauris nec gravida augue integer mi id sagittis, quam imperdiet cursus senectus facilisis inceptos luctus accumsan suspendisse porttitor.

Mauris quis fames cursus pulvinar dui rhoncus montes orci duis amet maximus curabitur, mollis maecenas faucibus risus massa elit pellentesque habitasse inceptos etiam hac non, varius bibendum interdum iaculis donec taciti aliquet dis class neque ad. Integer rutrum a ullamcorper justo torquent penatibus arcu vitae aliquet mauris natoque, mattis praesent tortor mollis senectus ut quis ligula congue. Rutrum leo in placerat imperdiet facilisis pulvinar praesent nam quisque nullam, vestibulum nec montes ut dictum sagittis sed suspendisse id urna lectus, vulputate consequat condimentum primis per tempus risus nisl accumsan. Sollicitudin potenti placerat maecenas ullamcorper ante laoreet risus scelerisque per ultrices montes porttitor, posuere curae faucibus ac sapien mollis himenaeos mauris rutrum nec. Varius curae nec neque ex primis pellentesque ultricies magnis fringilla orci dolor ultrices, hac aenean consequat facilisis senectus urna vivamus ullamcorper semper mauris hendrerit

2 Likes

Just add some custom walk, idle, jump etc animations into the game as the default Animate script isn’t working

Did you find and check for any errors?

1 Like

Yes but don’t know how to fix them

:

:

Couldn’t you click play and copy the Animate script and put it in starterplayerscripts and change the urls?

We need to see the script. Char

Exactly what @bloodbonniekingnoob1 suggested. (Give him the solution if you do it)


  1. Go to avatar editor and remove all animations from your character.
  2. Play test the game inside studio
  3. Copy the Animate script located inside your character.
  4. Paste the script where you want it.

If you want to add your own animations just go down in the script directory and paste the new animation ID in their proper places.

2 Likes

i did that it the walk animation does work though

its the default Animate script with the ids changed

Just the walk anim not working

:

Could you show us the script? (Cut anything useless that has nothing to do with this)

Here is the Animate script

:

local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")
local pose = "Standing"

local UserGameSettings = UserSettings():GetService("UserGameSettings")

local userNoUpdateOnLoopSuccess, userNoUpdateOnLoopValue = pcall(function() return UserSettings():IsUserFeatureEnabled("UserNoUpdateOnLoop") end)
local userNoUpdateOnLoop = userNoUpdateOnLoopSuccess and userNoUpdateOnLoopValue

local userEmoteToRunThresholdChange do
	local success, value = pcall(function()
		return UserSettings():IsUserFeatureEnabled("UserEmoteToRunThresholdChange")
	end)
	userEmoteToRunThresholdChange = success and value
end

local userPlayEmoteByIdAnimTrackReturn do
	local success, value = pcall(function()
		return UserSettings():IsUserFeatureEnabled("UserPlayEmoteByIdAnimTrackReturn2")
	end)
	userPlayEmoteByIdAnimTrackReturn = success and value
end

local AnimationSpeedDampeningObject = script:FindFirstChild("ScaleDampeningPercent")
local HumanoidHipHeight = 2

local cachedRunningSpeed = 0 -- The most recent speed passed to onRunning().  Tiny variations from cachedRunningSpeed will not cause animation updates.
local cachedLocalDirection = Vector2.zero -- unit 2D object space direction of motion
local smallButNotZero = 0.0001 -- We want weights to be small but not so small the animation stops
local strafingDisabled = nil
local runBlendtime = 0.2
local lastLookVector = Vector3.new(0.0, 0.0, 0.0) -- used to track whether rootPart orientation is changing.

local function strafeMode()
	local result = not strafingDisabled and (Humanoid.AutoRotate == (UserGameSettings.RotationType == Enum.RotationType.CameraRelative))
	return result
end

local EMOTE_TRANSITION_TIME = 0.1

local currentAnim = ""
local currentAnimInstance = nil
local currentAnimTrack = nil
local currentAnimKeyframeHandler = nil
local currentAnimSpeed = 1.0

local runAnimTrack = nil
local runAnimKeyframeHandler = nil

local PreloadedAnims = {}

local animTable = {}
local animNames = { 
	idle = 	{
		{ id = "http://www.roblox.com/asset/?id=11146683960", weight = 10 },
		{ id = "http://www.roblox.com/asset/?id=11146683960", weight = 10 },
	},
	walk = 	{
		{ id = "http://www.roblox.com/asset/?id=11146704785", weight = 10 }
	},
	run = 	{
		{ id = "http://www.roblox.com/asset/?id=507767714", weight = 10 }
	},

	swim = 	{
		{ id = "http://www.roblox.com/asset/?id=507784897", weight = 10 }
	},
	swimidle = 	{
		{ id = "http://www.roblox.com/asset/?id=507785072", weight = 10 }
	},
	jump = 	{
		{ id = "http://www.roblox.com/asset/?id=11146701044", weight = 10 }
	},
	fall = 	{
		{ id = "http://www.roblox.com/asset/?id=507767968", weight = 10 }
	},
	climb = {
		{ id = "http://www.roblox.com/asset/?id=507765644", weight = 10 }
	},
	sit = 	{
		{ id = "http://www.roblox.com/asset/?id=2506281703", weight = 10 }
	},
	toolnone = {
		{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 }
	},
	toolslash = {
		{ id = "http://www.roblox.com/asset/?id=522635514", weight = 10 }
	},
	toollunge = {
		{ id = "http://www.roblox.com/asset/?id=522638767", weight = 10 }
	},
	wave = {
		{ id = "http://www.roblox.com/asset/?id=507770239", weight = 10 }
	},
	point = {
		{ id = "http://www.roblox.com/asset/?id=507770453", weight = 10 }
	},
	dance = {
		{ id = "http://www.roblox.com/asset/?id=507771019", weight = 10 },
		{ id = "http://www.roblox.com/asset/?id=507771955", weight = 10 },
		{ id = "http://www.roblox.com/asset/?id=507772104", weight = 10 }
	},
	dance2 = {
		{ id = "http://www.roblox.com/asset/?id=507776043", weight = 10 },
		{ id = "http://www.roblox.com/asset/?id=507776720", weight = 10 },
		{ id = "http://www.roblox.com/asset/?id=507776879", weight = 10 }
	},
	dance3 = {
		{ id = "http://www.roblox.com/asset/?id=507777268", weight = 10 },
		{ id = "http://www.roblox.com/asset/?id=507777451", weight = 10 },
		{ id = "http://www.roblox.com/asset/?id=507777623", weight = 10 }
	},
	laugh = {
		{ id = "http://www.roblox.com/asset/?id=507770818", weight = 10 }
	},
	cheer = {
		{ id = "http://www.roblox.com/asset/?id=507770677", weight = 10 }
	},
}

local locomotionMap = {}

-- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote
local emoteNames = { wave = false, point = false, dance = true, dance2 = true, dance3 = true, laugh = false, cheer = false}

math.randomseed(tick())

function findExistingAnimationInSet(set, anim)
	if set == nil or anim == nil then
		return 0
	end

	for idx = 1, set.count, 1 do
		if set[idx].anim.AnimationId == anim.AnimationId then
			return idx
		end
	end

	return 0
end

function configureAnimationSet(name, fileList)
	if (animTable[name] ~= nil) then
		for _, connection in pairs(animTable[name].connections) do
			connection:disconnect()
		end
	end
	animTable[name] = {}
	animTable[name].count = 0
	animTable[name].totalWeight = 0
	animTable[name].connections = {}

	local allowCustomAnimations = true

	local success, msg = pcall(function() allowCustomAnimations = game:GetService("StarterPlayer").AllowCustomAnimations end)
	if not success then
		allowCustomAnimations = true
	end

	-- check for config values
	local config = script:FindFirstChild(name)
	if (allowCustomAnimations and config ~= nil) then
		table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
		table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))

		local idx = 0

		for _, childPart in pairs(config:GetChildren()) do
			if (childPart:IsA("Animation")) then
				local newWeight = 1
				local weightObject = childPart:FindFirstChild("Weight")
				if (weightObject ~= nil) then
					newWeight = weightObject.Value
				end
				animTable[name].count = animTable[name].count + 1
				idx = animTable[name].count
				animTable[name][idx] = {}
				animTable[name][idx].anim = childPart
				animTable[name][idx].weight = newWeight
				animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
				table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
				table.insert(animTable[name].connections, childPart.ChildAdded:connect(function(property) configureAnimationSet(name, fileList) end))
				table.insert(animTable[name].connections, childPart.ChildRemoved:connect(function(property) configureAnimationSet(name, fileList) end))
				local lv = childPart:GetAttribute("LinearVelocity")
				if lv then
					locomotionMap[name] = {lv=lv, speed = math.sqrt(lv:Dot(lv))}
				elseif name == "run" or name == "walk" then
					-- If you don't have a linear velocity with your run or walk, you can't blend/strafe
					locomotionMap[name] = {}
					warn("Strafe blending disabled. No linear velocity information for "..'"'.."walk"..'"'.." and "..'"'.."run"..'"'..".")
					strafingDisabled = true
				end
			end
		end
	end

	-- fallback to defaults
	if (animTable[name].count <= 0) then
		for idx, anim in pairs(fileList) do
			animTable[name][idx] = {}
			animTable[name][idx].anim = Instance.new("Animation")
			animTable[name][idx].anim.Name = name
			animTable[name][idx].anim.AnimationId = anim.id
			animTable[name][idx].weight = anim.weight
			animTable[name].count = animTable[name].count + 1
			animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
		end
	end

	-- preload anims
	for i, animType in pairs(animTable) do
		for idx = 1, animType.count, 1 do
			if PreloadedAnims[animType[idx].anim.AnimationId] == nil then
				Humanoid:LoadAnimation(animType[idx].anim)
				PreloadedAnims[animType[idx].anim.AnimationId] = true
			end
		end
	end
end

------------------------------------------------------------------------------------------------------------

function configureAnimationSetOld(name, fileList)
	if (animTable[name] ~= nil) then
		for _, connection in pairs(animTable[name].connections) do
			connection:disconnect()
		end
	end
	animTable[name] = {}
	animTable[name].count = 0
	animTable[name].totalWeight = 0
	animTable[name].connections = {}

	local allowCustomAnimations = true

	local success, msg = pcall(function() allowCustomAnimations = game:GetService("StarterPlayer").AllowCustomAnimations end)
	if not success then
		allowCustomAnimations = true
	end

	-- check for config values
	local config = script:FindFirstChild(name)
	if (allowCustomAnimations and config ~= nil) then
		table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
		table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
		local idx = 1
		for _, childPart in pairs(config:GetChildren()) do
			if (childPart:IsA("Animation")) then
				table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
				animTable[name][idx] = {}
				animTable[name][idx].anim = childPart
				local weightObject = childPart:FindFirstChild("Weight")
				if (weightObject == nil) then
					animTable[name][idx].weight = 1
				else
					animTable[name][idx].weight = weightObject.Value
				end
				animTable[name].count = animTable[name].count + 1
				animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
				idx = idx + 1
			end
		end
	end

	-- fallback to defaults
	if (animTable[name].count <= 0) then
		for idx, anim in pairs(fileList) do
			animTable[name][idx] = {}
			animTable[name][idx].anim = Instance.new("Animation")
			animTable[name][idx].anim.Name = name
			animTable[name][idx].anim.AnimationId = anim.id
			animTable[name][idx].weight = anim.weight
			animTable[name].count = animTable[name].count + 1
			animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
		end
	end

	-- preload anims
	for i, animType in pairs(animTable) do
		for idx = 1, animType.count, 1 do
			Humanoid:LoadAnimation(animType[idx].anim)
		end
	end
end

-- Setup animation objects
function scriptChildModified(child)
	local fileList = animNames[child.Name]
	if (fileList ~= nil) then
		configureAnimationSet(child.Name, fileList)
	else
		if child:isA("StringValue") then
			animNames[child.Name] = {}
			configureAnimationSet(child.Name, animNames[child.Name])
		end
	end	
end

script.ChildAdded:connect(scriptChildModified)
script.ChildRemoved:connect(scriptChildModified)

-- Clear any existing animation tracks
-- Fixes issue with characters that are moved in and out of the Workspace accumulating tracks
local animator = if Humanoid then Humanoid:FindFirstChildOfClass("Animator") else nil
if animator then
	local animTracks = animator:GetPlayingAnimationTracks()
	for i,track in ipairs(animTracks) do
		track:Stop(0)
		track:Destroy()
	end
end

for name, fileList in pairs(animNames) do
	configureAnimationSet(name, fileList)
end
for child in script:GetChildren() do
	if child.isA("StringValue") and not animNames[child.name] then
		animNames[child.Name] = {}
		configureAnimationSet(child.Name, animNames[child.Name])
	end
end

-- ANIMATION

-- declarations
local toolAnim = "None"
local toolAnimTime = 0

local jumpAnimTime = 0
local jumpAnimDuration = 0.31

local toolTransitionTime = 0.1
local fallTransitionTime = 0.2

local currentlyPlayingEmote = false

-- functions

function stopAllAnimations()
	local oldAnim = currentAnim

	-- return to idle if finishing an emote
	if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
		oldAnim = "idle"
	end

	if currentlyPlayingEmote then
		oldAnim = "idle"
		currentlyPlayingEmote = false
	end

	currentAnim = ""
	currentAnimInstance = nil
	if (currentAnimKeyframeHandler ~= nil) then
		currentAnimKeyframeHandler:disconnect()
	end

	if (currentAnimTrack ~= nil) then
		currentAnimTrack:Stop()
		currentAnimTrack:Destroy()
		currentAnimTrack = nil
	end

	for _,v in pairs(locomotionMap) do
		if v.track then
			v.track:Stop()
			v.track:Destroy()
			v.track = nil
		end
	end
	if not strafeMode() then

		if (runAnimKeyframeHandler ~= nil) then
			runAnimKeyframeHandler:disconnect()
		end

	end

	return oldAnim
end

function getHeightScale()
	if Humanoid then
		if not Humanoid.AutomaticScalingEnabled then
			return 1
		end

		local scale = Humanoid.HipHeight / HumanoidHipHeight
		if AnimationSpeedDampeningObject == nil then
			AnimationSpeedDampeningObject = script:FindFirstChild("ScaleDampeningPercent")
		end
		if AnimationSpeedDampeningObject ~= nil then
			scale = 1 + (Humanoid.HipHeight - HumanoidHipHeight) * AnimationSpeedDampeningObject.Value / HumanoidHipHeight
		end
		return scale
	end
	return 1
end


local function signedAngle(a, b)
	return -math.atan2(a.x * b.y - a.y * b.x, a.x * b.x + a.y * b.y)
end

local angleWeight = 2.0
local function get2DWeight(px, p1, p2, sx, s1, s2)
	local avgLength = 0.5 * (s1 + s2)

	local p_1 = Vector2.new((sx - s1)/avgLength, (angleWeight * signedAngle(p1, px)))
	local p12 = Vector2.new((s2 - s1)/avgLength, (angleWeight * signedAngle(p1, p2)))	
	local denom = smallButNotZero + (p12.x*p12.x + p12.y*p12.y)
	local numer = p_1.x * p12.x + p_1.y * p12.y
	local r = math.clamp(1.0 - numer/denom, 0.0, 1.0)
	return r
end

local function blend2D(targetVelo, targetSpeed)
	local h = {}
	local sum = 0.0
	for n,v1 in pairs(locomotionMap) do
		if targetVelo.x * v1.lv.x < 0.0 or targetVelo.y * v1.lv.y < 0 then
			-- Require same quadrant as target
			h[n] = 0.0
			continue
		end
		h[n] = math.huge
		for j,v2 in pairs(locomotionMap) do
			if targetVelo.x * v2.lv.x < 0.0 or targetVelo.y * v2.lv.y < 0 then
				-- Require same quadrant as target
				continue
			end
			h[n] = math.min(h[n], get2DWeight(targetVelo, v1.lv, v2.lv, targetSpeed, v1.speed, v2.speed))
		end
		sum += h[n]
	end

	--truncates below 10% contribution
	local sum2 = 0.0
	local weightedVeloX = 0
	local weightedVeloY = 0
	for n,v in pairs(locomotionMap) do

		if (h[n] / sum > 0.1) then
			sum2 += h[n]
			weightedVeloX += h[n] * v.lv.x
			weightedVeloY += h[n] * v.lv.y
		else
			h[n] = 0.0
		end
	end
	local animSpeed
	local weightedSpeedSquared = weightedVeloX * weightedVeloX + weightedVeloY * weightedVeloY
	if weightedSpeedSquared > smallButNotZero then
		animSpeed = math.sqrt(targetSpeed * targetSpeed / weightedSpeedSquared)
	else
		animSpeed = 0
	end

	animSpeed = animSpeed / getHeightScale()
	local groupTimePosition = 0
	for n,v in pairs(locomotionMap) do
		if v.track.IsPlaying then
			groupTimePosition = v.track.TimePosition
			break
		end
	end
	for n,v in pairs(locomotionMap) do
		-- if not loco
		if h[n] > 0.0 then
			if not v.track.IsPlaying then 
				v.track:Play(runBlendtime)
				v.track.TimePosition = groupTimePosition
			end

			local weight = math.max(smallButNotZero, h[n] / sum2)
			v.track:AdjustWeight(weight, runBlendtime)
			v.track:AdjustSpeed(animSpeed)
		else
			v.track:Stop(runBlendtime)
		end
	end

end

local function getWalkDirection()
	local walkToPoint = Humanoid.WalkToPoint
	local walkToPart = Humanoid.WalkToPart
	if Humanoid.MoveDirection ~= Vector3.zero then
		return Humanoid.MoveDirection
	elseif walkToPart or walkToPoint ~= Vector3.zero then
		local destination
		if walkToPart then
			destination = walkToPart.CFrame:PointToWorldSpace(walkToPoint)
		else
			destination = walkToPoint
		end
		local moveVector = Vector3.zero
		if Humanoid.RootPart then
			moveVector = destination - Humanoid.RootPart.CFrame.Position
			moveVector = Vector3.new(moveVector.x, 0.0, moveVector.z)
			local mag = moveVector.Magnitude
			if mag > 0.01 then
				moveVector /= mag
			end
		end
		return moveVector
	else
		return Humanoid.MoveDirection
	end
end

local function onVelocityChanged(speed)
	if not strafeMode() then
		return
	end
	if not speed then
		-- If speed wasn't passed in, assume it hasn't changed
		speed = cachedRunningSpeed
	end
	local moveDirection = getWalkDirection()

	if not Humanoid.RootPart then
		return
	end

	local cframe = Humanoid.RootPart.CFrame
	if math.abs(cframe.UpVector.Y) < smallButNotZero or pose ~= "Running" or speed <0.001 then
		-- We are horizontal!  Do something  (turn off locomotion)
		for n,v in pairs(locomotionMap) do
			if v.track then
				v.track:AdjustWeight(smallButNotZero, runBlendtime)
				cachedRunningSpeed = 0
			end
		end
		return
	end
	local lookat = cframe.LookVector
	local direction = Vector3.new(lookat.X, 0.0, lookat.Z)
	direction = direction / direction.Magnitude --sensible upVector means this is non-zero.
	local ly = moveDirection:Dot(direction)
	if ly <= 0.0 and ly > -0.05 then
		ly = smallButNotZero -- break quadrant ties in favor of forward-friendly strafes
	end
	local lx = direction.X*moveDirection.Z - direction.Z*moveDirection.X
	local tempDir = Vector2.new(lx, ly) -- root space moveDirection
	local delta = Vector2.new(tempDir.x-cachedLocalDirection.x, tempDir.y-cachedLocalDirection.y)
	if delta.x*delta.x + delta.y*delta.y > 0.001 or math.abs(speed - cachedRunningSpeed) > 0.01 then
		cachedLocalDirection = tempDir
		cachedRunningSpeed = speed
		blend2D(cachedLocalDirection, cachedRunningSpeed)
	end 

end

local function rootMotionCompensation(speed)
	local speedScaled = speed * 1.25
	local heightScale = getHeightScale()
	local runSpeed = speedScaled / heightScale
	return runSpeed
end

local function setRunSpeed(speed)
	local normalizedWalkSpeed = 0.5 -- established empirically using current `913402848` walk animation
	local normalizedRunSpeed  = 1
	local runSpeed = rootMotionCompensation(speed)
	local walkAnimationWeight = smallButNotZero
	local runAnimationWeight = smallButNotZero
	local walkAnimationTimewarp = runSpeed/normalizedWalkSpeed
	local runAnimationTimerwarp = runSpeed/normalizedRunSpeed

	if runSpeed <= normalizedWalkSpeed then
		walkAnimationWeight = 1
	elseif runSpeed < normalizedRunSpeed then
		local fadeInRun = (runSpeed - normalizedWalkSpeed)/(normalizedRunSpeed - normalizedWalkSpeed)
		walkAnimationWeight = 1 - fadeInRun
		runAnimationWeight  = fadeInRun
		walkAnimationTimewarp = 1
		runAnimationTimerwarp = 1
	else
		runAnimationWeight = 1
	end
	currentAnimTrack:AdjustWeight(walkAnimationWeight)
	runAnimTrack:AdjustWeight(runAnimationWeight)
	currentAnimTrack:AdjustSpeed(walkAnimationTimewarp)
	runAnimTrack:AdjustSpeed(runAnimationTimerwarp)
end

function setAnimationSpeed(speed)
	if currentAnim == "walk" then
		if not strafeMode() then
			setRunSpeed(speed)
		end
	else
		if speed ~= currentAnimSpeed then
			currentAnimSpeed = speed
			currentAnimTrack:AdjustSpeed(currentAnimSpeed)
		end
	end
end

function keyFrameReachedFunc(frameName)
	if (frameName == "End") then
		if currentAnim == "walk" then
			if strafeMode() then
				for n,v in pairs(locomotionMap) do
					local track = v.track
					if not userNoUpdateOnLoop or track.Looped ~= true then
						track.timePosition = 0.0
					end
				end
			else
				if userNoUpdateOnLoop == true then
					if runAnimTrack.Looped ~= true then
						runAnimTrack.TimePosition = 0.0
					end
					if currentAnimTrack.Looped ~= true then
						currentAnimTrack.TimePosition = 0.0
					end
				else
					runAnimTrack.TimePosition = 0.0
					currentAnimTrack.TimePosition = 0.0
				end
			end
		else
			local repeatAnim = currentAnim
			-- return to idle if finishing an emote
			if (emoteNames[repeatAnim] ~= nil and emoteNames[repeatAnim] == false) then
				repeatAnim = "idle"
			end

			if currentlyPlayingEmote then
				if currentAnimTrack.Looped then
					-- Allow the emote to loop
					return
				end

				repeatAnim = "idle"
				currentlyPlayingEmote = false
			end

			local animSpeed = currentAnimSpeed
			playAnimation(repeatAnim, 0.15, Humanoid)
			setAnimationSpeed(animSpeed)
		end
	end
end

function rollAnimation(animName)
	local roll = math.random(1, animTable[animName].totalWeight)
	local origRoll = roll
	local idx = 1
	while (roll > animTable[animName][idx].weight) do
		roll = roll - animTable[animName][idx].weight
		idx = idx + 1
	end
	return idx
end

local maxVeloX, minVeloX, maxVeloY, minVeloY

local function destroyRunAnimations()
	for _,v in pairs(locomotionMap) do
		if v.track then
			v.track:Stop()
			v.track:Destroy()
			v.track = nil
		end
	end
end

local function resetVelocityBounds(velo)
	minVeloX = 0
	maxVeloX = 0
	minVeloY = 0
	maxVeloY = 0
end

local function updateVelocityBounds(velo)
	if velo then 
		if velo.x > maxVeloX then maxVeloX = velo.x end
		if velo.y > maxVeloY then maxVeloY = velo.y end
		if velo.x < minVeloX then minVeloX = velo.x end
		if velo.y < minVeloY then minVeloY = velo.y end
	end
end

local function checkVelocityBounds(velo)
	if not strafingDisabled and (maxVeloX == 0 or minVeloX == 0 or maxVeloY == 0 or minVeloY == 0) then
		warn("Strafe blending disabled.  Not all quandrants of motion represented.")
		strafingDisabled = false
	end
end

local function setupWalkAnimation(anim, animName, transitionTime, humanoid)
	resetVelocityBounds()
	-- check to see if we need to blend a walk/run animation
	for n,v in pairs(locomotionMap) do
		v.track = humanoid:LoadAnimation(animTable[n][1].anim)
		v.track.Priority = Enum.AnimationPriority.Core
		updateVelocityBounds(v.lv)
	end
	checkVelocityBounds()
	currentAnimTrack = locomotionMap["walk"].track
	runAnimTrack = locomotionMap["run"].track
	if strafeMode() then
		onVelocityChanged()
	else
		currentAnimTrack:Play(0.2)
		currentAnimTrack:AdjustWeight(smallButNotZero)
		runAnimTrack:Play(0.2)
		runAnimTrack:AdjustWeight(smallButNotZero)
		if (runAnimKeyframeHandler ~= nil) then
			runAnimKeyframeHandler:disconnect()
		end

		runAnimKeyframeHandler = runAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)

	end
end

local function switchToAnim(anim, animName, transitionTime, humanoid)
	-- switch animation		
	if (anim ~= currentAnimInstance) then

		if (currentAnimTrack ~= nil) then
			currentAnimTrack:Stop(transitionTime)
			currentAnimTrack:Destroy()
		end
		if (currentAnimKeyframeHandler ~= nil) then
			currentAnimKeyframeHandler:disconnect()
		end

		destroyRunAnimations()

		if userNoUpdateOnLoop == true then
			runAnimTrack = nil
		end

		currentAnimSpeed = 1.0

		currentAnim = animName
		currentAnimInstance = anim	

		if animName == "walk" then
			setupWalkAnimation(anim, animName, transitionTime, humanoid)
		else
			-- load it to the humanoid; get AnimationTrack
			currentAnimTrack = humanoid:LoadAnimation(anim)
			currentAnimTrack.Priority = Enum.AnimationPriority.Core

			currentAnimTrack:Play(transitionTime)		
		end

		-- set up keyframe name triggers
		currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)

	end
end

function playAnimation(animName, transitionTime, humanoid)
	local idx = rollAnimation(animName)
	local anim = animTable[animName][idx].anim

	switchToAnim(anim, animName, transitionTime, humanoid)
	currentlyPlayingEmote = false
end

function playEmote(emoteAnim, transitionTime, humanoid)
	switchToAnim(emoteAnim, emoteAnim.Name, transitionTime, humanoid)
	currentlyPlayingEmote = true
end

-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------

local toolAnimName = ""
local toolAnimTrack = nil
local toolAnimInstance = nil
local currentToolAnimKeyframeHandler = nil

function toolKeyFrameReachedFunc(frameName)
	if (frameName == "End") then
		playToolAnimation(toolAnimName, 0.0, Humanoid)
	end
end


function playToolAnimation(animName, transitionTime, humanoid, priority)
	local idx = rollAnimation(animName)
	local anim = animTable[animName][idx].anim

	if (toolAnimInstance ~= anim) then

		if (toolAnimTrack ~= nil) then
			toolAnimTrack:Stop()
			toolAnimTrack:Destroy()
			transitionTime = 0
		end

		-- load it to the humanoid; get AnimationTrack
		toolAnimTrack = humanoid:LoadAnimation(anim)
		if priority then
			toolAnimTrack.Priority = priority
		end

		-- play the animation
		toolAnimTrack:Play(transitionTime)
		toolAnimName = animName
		toolAnimInstance = anim

		currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
	end
end

function stopToolAnimations()
	local oldAnim = toolAnimName

	if (currentToolAnimKeyframeHandler ~= nil) then
		currentToolAnimKeyframeHandler:disconnect()
	end

	toolAnimName = ""
	toolAnimInstance = nil
	if (toolAnimTrack ~= nil) then
		toolAnimTrack:Stop()
		toolAnimTrack:Destroy()
		toolAnimTrack = nil
	end

	return oldAnim
end

-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
-- STATE CHANGE HANDLERS

function onRunning(speed)
	local movedDuringEmote =
		userEmoteToRunThresholdChange and currentlyPlayingEmote and Humanoid.MoveDirection == Vector3.new(0, 0, 0)
	local speedThreshold = movedDuringEmote and Humanoid.WalkSpeed or 0.75
	if speed > speedThreshold then
		local scale = 16.0
		playAnimation("walk", 0.2, Humanoid)
		setAnimationSpeed(speed / scale)
		pose = "Running"
	else
		if emoteNames[currentAnim] == nil and not currentlyPlayingEmote then
			playAnimation("idle", 0.2, Humanoid)
			pose = "Standing"
		end
	end
	if strafeMode() then
		onVelocityChanged(speed)
	else
		cachedRunningSpeed = speed
	end
end

function onDied()
	pose = "Dead"
end

function onJumping()
	playAnimation("jump", 0.1, Humanoid)
	jumpAnimTime = jumpAnimDuration
	pose = "Jumping"
end

function onClimbing(speed)
	local scale = 5.0
	playAnimation("climb", 0.1, Humanoid)
	setAnimationSpeed(speed / scale)
	pose = "Climbing"
end

function onGettingUp()
	pose = "GettingUp"
end

function onFreeFall()
	if (jumpAnimTime <= 0) then
		playAnimation("fall", fallTransitionTime, Humanoid)
	end
	pose = "FreeFall"
end

function onFallingDown()
	pose = "FallingDown"
end

function onSeated()
	pose = "Seated"
end

function onPlatformStanding()
	pose = "PlatformStanding"
end

-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------

function onSwimming(speed)
	if speed > 1.00 then
		local scale = 10.0
		playAnimation("swim", 0.4, Humanoid)
		setAnimationSpeed(speed / scale)
		pose = "Swimming"
	else
		playAnimation("swimidle", 0.4, Humanoid)
		pose = "Standing"
	end
end

function animateTool()
	if (toolAnim == "None") then
		playToolAnimation("toolnone", toolTransitionTime, Humanoid, Enum.AnimationPriority.Idle)
		return
	end

	if (toolAnim == "Slash") then
		playToolAnimation("toolslash", 0, Humanoid, Enum.AnimationPriority.Action)
		return
	end

	if (toolAnim == "Lunge") then
		playToolAnimation("toollunge", 0, Humanoid, Enum.AnimationPriority.Action)
		return
	end
end

function getToolAnim(tool)
	for _, c in ipairs(tool:GetChildren()) do
		if c.Name == "toolanim" and c.className == "StringValue" then
			return c
		end
	end
	return nil
end

local lastTick = 0

function stepAnimate(currentTime)
	local amplitude = 1
	local frequency = 1
	local deltaTime = currentTime - lastTick
	lastTick = currentTime

	local climbFudge = 0
	local setAngles = false

	if (jumpAnimTime > 0) then
		jumpAnimTime = jumpAnimTime - deltaTime
	end

	if (pose == "FreeFall" and jumpAnimTime <= 0) then
		playAnimation("fall", fallTransitionTime, Humanoid)
	elseif (pose == "Seated") then
		playAnimation("sit", 0.5, Humanoid)
		return
	elseif (pose == "Running") then
		playAnimation("walk", 0.2, Humanoid)
	elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
		stopAllAnimations()
		amplitude = 0.1
		frequency = 1
		setAngles = true
	end

	-- Tool Animation handling
	local tool = Character:FindFirstChildOfClass("Tool")
	if tool and tool:FindFirstChild("Handle") then
		local animStringValueObject = getToolAnim(tool)

		if animStringValueObject then
			toolAnim = animStringValueObject.Value
			-- message recieved, delete StringValue
			animStringValueObject.Parent = nil
			toolAnimTime = currentTime + .3
		end

		if currentTime > toolAnimTime then
			toolAnimTime = 0
			toolAnim = "None"
		end

		animateTool()
	else
		stopToolAnimations()
		toolAnim = "None"
		toolAnimInstance = nil
		toolAnimTime = 0
	end
end


local function onModeChange()
	if pose == "Running" then
		local savedSpeed = cachedRunningSpeed

		playAnimation("idle", 0.2, Humanoid)
		destroyRunAnimations()
		playAnimation("walk", 0.2, Humanoid)

		if strafeMode() then
			cachedRunningSpeed = 0
			onVelocityChanged(savedSpeed)
		else
			onRunning(savedSpeed)
		end
	end
end

-- connect events
Humanoid.Died:connect(onDied)
Humanoid.Running:connect(onRunning)
Humanoid.Jumping:connect(onJumping)
Humanoid.Climbing:connect(onClimbing)
Humanoid.GettingUp:connect(onGettingUp)
Humanoid.FreeFalling:connect(onFreeFall)
Humanoid.FallingDown:connect(onFallingDown)
Humanoid.Seated:connect(onSeated)
Humanoid.PlatformStanding:connect(onPlatformStanding)
Humanoid.Swimming:connect(onSwimming)

Humanoid:GetPropertyChangedSignal("MoveDirection"):Connect(onVelocityChanged)
Humanoid:GetPropertyChangedSignal("AutoRotate"):Connect(onModeChange)
Humanoid:GetPropertyChangedSignal("WalkToPoint"):Connect(onVelocityChanged)
Humanoid:GetPropertyChangedSignal("WalkToPart"):Connect(onVelocityChanged)
UserGameSettings:GetPropertyChangedSignal("RotationType"):Connect(onModeChange)

-- setup emote chat hook
game:GetService("Players").LocalPlayer.Chatted:connect(function(msg)
	local emote = ""
	if (string.sub(msg, 1, 3) == "/e ") then
		emote = string.sub(msg, 4)
	elseif (string.sub(msg, 1, 7) == "/emote ") then
		emote = string.sub(msg, 8)
	end

	if (pose == "Standing" and emoteNames[emote] ~= nil) then
		playAnimation(emote, EMOTE_TRANSITION_TIME, Humanoid)
	end
end)

-- emote bindable hook
script:WaitForChild("PlayEmote").OnInvoke = function(emote)
	-- Only play emotes when idling
	if pose ~= "Standing" then
		return
	end

	if emoteNames[emote] ~= nil then
		-- Default emotes
		playAnimation(emote, EMOTE_TRANSITION_TIME, Humanoid)

		if userPlayEmoteByIdAnimTrackReturn then
			return true, currentAnimTrack
		else
			return true
		end
	elseif typeof(emote) == "Instance" and emote:IsA("Animation") then
		-- Non-default emotes
		playEmote(emote, EMOTE_TRANSITION_TIME, Humanoid)

		if userPlayEmoteByIdAnimTrackReturn then
			return true, currentAnimTrack
		else
			return true
		end
	end

	-- Return false to indicate that the emote could not be played
	return false
end

if Character.Parent ~= nil then
	-- initialize to idle
	playAnimation("idle", 0.1, Humanoid)
	pose = "Standing"
end

-- loop to handle timed state transitions and tool animations
while Character.Parent ~= nil do
	local _, currentGameTime = wait(0.1)
	stepAnimate(currentGameTime)

	-- Catch the unlikely case where the character orientation is being perturbed without subsequent change to its MoveDirection
	if Humanoid.RootPart then
		local lookVector = Humanoid.RootPart.CFrame.LookVector
		if 1.0 - lookVector:Dot(lastLookVector) > 0.1 then
			lastLookVector = lookVector
			onVelocityChanged()
		end 
	end
end
1 Like

Is your animation R15 or R6? Because if it’s R15 I may have a script for that but not R6.

This is the old R15 script:

Animate.rbxm (7.0 KB)

Yep its r15 ill give it a try thanks

it does work but is a little dodgy

as seen here
:
robloxapp-20221003-1556534.wmv (1.5 MB)

I don’t really know any other fix other than this one so we might see another person with perhaps a better script idk.

have you tried the script in your own game to see if it works?

It works perfectly fine in my game

in startercharacterscripts right?