Re: 3d Models, animation importer - FatImporter
Posted: Sun Jun 02, 2013 7:03 pm
sweet update!
Call of Solum maybe? Where can we find this game, anybody know?fatduck wrote: - YS Online: The Call of sodum
If you google around you can find an old CB game client (i dlded it a few weeks ago), around 2 GB~Nazaroff wrote:Call of Solum maybe? Where can we find this game, anybody know?fatduck wrote: - YS Online: The Call of sodum
trying in 3ds max 2009 and 2010---------------------------
-- Runtime error: array index must be positive number, got: -1672745836
How u can unpack the .dp files? i cant found .bms or something.wolfen wrote:hello i have a error with plugin
download/file.php?mode=view&id=6024
Code: Select all
rollout MainRoll "Carpe Diem" (fn a5ff801d f c3f8964b fscale = (e5ff12a0 = #();b3ed996a = #();d2884eab = #();c9eed647 = #();a44b593e = #();ib376025 = readlong f;f38eb60a = readlong f;fseek f 16 #seek_cur;for i = 1 to ib376025 do (vx = readfloat f; vy = readfloat f; vz = readfloat f;append e5ff12a0 ([vx,vy,vz]*fscale);vx = readfloat f; vy = readfloat f; vz = readfloat f;append b3ed996a [vx,vy,vz];vx = readfloat f; vy = readfloat f;append d2884eab [vx,(1-vy),0]);hb84005a = #();for i = 1 to ib376025 do (f47e885b = readlong f;if (finditem hb84005a f47e885b)== 0 then append hb84005a f47e885b;a44b593e[i] = #(#(f47e885b+1),#(1.0));try (g4e6da02 = (transMatrix e5ff12a0[i]) * c3f8964b[(f47e885b+1)].transform;e5ff12a0[i] = g4e6da02.pos) catch (););for i = 1 to f38eb60a do (f1 = readshort f;f2 = readshort f;f3 = readshort f;if c3f8964b == undefined then append c9eed647 ([f1,f2,f3]+1) else append c9eed647 ([f3,f2,f1]+1));a8d6e5fc = mesh vertices:e5ff12a0 faces:c9eed647;a8d6e5fc.numTVerts = d2884eab.count;buildTVFaces a8d6e5fc;for j = 1 to d2884eab.count do setTVert a8d6e5fc j d2884eab[j];for j = 1 to c9eed647.count do setTVFace a8d6e5fc j c9eed647[j];for j = 1 to b3ed996a.count do setNormal a8d6e5fc j b3ed996a[j];if c3f8964b != undefined then AutoskinMeshNT a8d6e5fc c3f8964b a44b593e;return a8d6e5fc);fn b4738ef0 f e9e026ac fscale c3f8964b bde864e5 = (d74a55c3 = $'AnimData';a854ed63 = 0;c3e76d5a = 0;if d74a55c3==undefined then (d74a55c3 = dummy name:"AnimData" boxsize:([1,1,1]*fscale);c3f8964b = #();) else (d74a55c3.transform = matrix3 1;a854ed63 = getUserProp d74a55c3 "ACnt";if a854ed63 != undefined then c3e76d5a = getUserProp d74a55c3 ("A"+(a854ed63 as string)+"ED")+1 else a854ed63 = 0);animationRange = (interval 0f 100f);SliderTime = 0f;b7b5688d = readlong f;he3224f9 = readlong f;if (c3f8964b.count>0)AND(c3f8964b.count!=he3224f9) then return c3f8964b;for j = 1 to he3224f9 do (f47e885b = readlong f;gb809647 = readMTX44 f fscale;if a854ed63==0 then (ef84606e = dummy boxsize:[.1,.1,.1] showLinks:true showLinksOnly:true wirecolor:yellow;ef84606e.transform = gb809647;setUserProp ef84606e "BoneID" f47e885b;ef84606e.name = "Bone";if j <= 10 then ef84606e.name +="0";ef84606e.name += f47e885b as string;append c3f8964b ef84606e) else ef84606e = c3f8964b[j];for i = 1 to b7b5688d do (qx = readfloat f; qy = readfloat f;qz = readfloat f; qw = readfloat f;px = readfloat f; py = readfloat f; pz = readfloat f;with Animate on at Time (((i-1)*e9e026ac)+c3e76d5a) (ef84606e.rotation = (quat qx qy qz qw);ef84606e.position = ([px,py,pz]*fscale));if i==1 then (f47e885b = numkeys ef84606e.position.controller.X_Position.controller;if f47e885b>0 then (ef84606e.pos.controller.X_Position.controller.keys[f47e885b].inTangentType = #step;ef84606e.pos.controller.Y_Position.controller.keys[f47e885b].inTangentType = #step;ef84606e.pos.controller.Z_Position.controller.keys[f47e885b].inTangentType = #step)));f47e885b = numkeys ef84606e.position.controller.X_Position.controller;ef84606e.pos.controller.X_Position.controller.keys[f47e885b].outTangentType = #step;ef84606e.pos.controller.Y_Position.controller.keys[f47e885b].outTangentType = #step;ef84606e.pos.controller.Z_Position.controller.keys[f47e885b].outTangentType = #step);a854ed63 += 1;SetUserProp d74a55c3 ("A"+(a854ed63 as string)+"NE") (filenameFromPath bde864e5);SetUserProp d74a55c3 ("A"+(a854ed63 as string)+"ST") c3e76d5a;SetUserProp d74a55c3 ("A"+(a854ed63 as string)+"ED") (b7b5688d*e9e026ac+c3e76d5a-1);SetUserProp d74a55c3 "ACnt" a854ed63;AnimationRange = interval 0 ((b7b5688d-1)*e9e026ac);return c3f8964b);fn ce860b22 f f3ed944a fscale = (f3ed944a += "data\\";fseek f 0x3C #seek_set;i22ed89a = readlong f;be864d3a = #();c4ee802a = #();d90aff72 = #();for i = 1 to i22ed89a do (he39025e = (readlong f) as string;for j = 1 to (4-he39025e.count) do he39025e = "0" + he39025e;he39025e = f3ed944a + he39025e + ".msh";readlong f;ga4756f0 = readlong f;append be864d3a (ga4756f0+1);fseek f 0x48 #seek_cur;if (doesFileExist he39025e)==true then (mf = fopen he39025e "rb";a8d6e5fc = a5ff801d mf undefined fscale;a8d6e5fc.name = filenameFromPath he39025e;a8d6e5fc.transform = a8d6e5fc.transform * (matrix3 [1,0,0] [0,0,1] [0,1,0] [0,0,0]);fclose mf;d90aff72[i] = a8d6e5fc) else messagebox (he39025e + " Not found!"));g90e580c = readlong f;for i = 1 to g90e580c do (fb4d354b = (readlong f) as string;for j = 1 to (4-fb4d354b.count) do fb4d354b = "0" + fb4d354b;e4dfd20e = standardmaterial name:("mtl_"+fb4d354b) twosided:true;d3fb464a=f3ed944a + fb4d354b + ".dds";e4dfd20e.diffusemap = bitmapTexture name:("tex_"+fb4d354b) filename:d3fb464a;e4dfd20e.diffusemap.monoOutput = 1;e4dfd20e.diffusemap.alphaSource = 2;ShowTextureMap e4dfd20e e4dfd20e.diffusemap on;append c4ee802a e4dfd20e);for i = 1 to d90aff72.count do (if d90aff72[i]!=undefined then d90aff72[i].material = c4ee802a[(be864d3a[i])]));fn e8005f6d f i9f4ee57 e9e026ac fscale = (f3ed944a = (getFilenamePath i9f4ee57);fseek f 0 #seek_end;a5663ef1 = ftell f;fseek f 0x38 #seek_set;fb4a8783 = #();c3f8964b = #();for kk = 1 to 90 do (d48e565c = (readlong f);if d48e565c >= 0 then (a66ed904 = finditem fb4a8783 d48e565c;if a66ed904==0 then (append fb4a8783 d48e565c;d48e565c = d48e565c as string;for j = 1 to (4-d48e565c.count) do d48e565c = "0" + d48e565c;d48e565c = f3ed944a + "ani\\" + d48e565c + ".ani";af = fopen d48e565c "rb";if af!=undefined then (c3f8964b = b4738ef0 af e9e026ac fscale c3f8964b d48e565c;fclose af))));if c3f8964b != undefined then (b4ff4682 = $'AnimData';for b in c3f8964b do b.parent = b4ff4682;b4ff4682.transform = (matrix3 [1,0,0] [0,0,1] [0,1,0] [0,0,0]));if a5663ef1 > 0x4E8 then fseek f 0x4E8 #seek_set else fseek f 0x1A0 #seek_set;i5efd347 = readlong f;for i = 1 to i5efd347 do (hb399f51 = (readlong f) as string;for j = 1 to (4-hb399f51.count) do hb399f51 = "0" + hb399f51;hb399f51 = f3ed944a + hb399f51 + ".brv_itm";if (doesFileExist hb399f51)==true then (ff = fopen hb399f51 "rb";ef398653 = (readlong ff) as string;for j = 1 to (4-ef398653.count) do ef398653 = "0" + ef398653;ef398653 = f3ed944a + "data\\" + ef398653 + ".msh";fseek ff -8 #seek_end;ga4756f0 = (readlong ff) as string;for j = 1 to (4-ga4756f0.count) do ga4756f0 = "0" + ga4756f0;d3fb464a=f3ed944a + "data\\" + ga4756f0 + ".dds";fclose ff;if (doesFileExist ef398653)==true then (mf = fopen ef398653 "rb";a8d6e5fc = a5ff801d mf c3f8964b fscale;fclose mf;a8d6e5fc.name = filenameFromPath ef398653;a8d6e5fc.material = standardmaterial name:("mtl_"+(getfilenamefile d3fb464a));a8d6e5fc.material.diffusemap = bitmapTexture name:("tex_"+ga4756f0) filename:d3fb464a;a8d6e5fc.material.diffusemap.monoOutput = 1;a8d6e5fc.material.diffusemap.alphaSource = 2;ShowTextureMap a8d6e5fc.material a8d6e5fc.material.diffusemap on) else messagebox (ef398653 + " Not Found!")) else messagebox (hb399f51 + " Not Found!")));button opnRes images:#(FatImage,undefined,10,ImgIdx,ImgIdx,ImgIdx,ImgIdx) width:200 Height:150 align:#center tooltip:"Import Carpe Diem File";on opnRes pressed do (bde864e5 = getOpenFileName caption:"Open Carpe DiemFile" types:"Carpe Diem Character (*.brv_chr)|*.brv_chr|Carpe Diem Object (*.brv_obj)|*.brv_obj|All File (*.*)|*.*|";if bde864e5 != undefined then (f = fopen bde864e5 "rb";c47fbb50 = GetFilenameType bde864e5;if c47fbb50==".brv_chr" then e8005f6d f bde864e5 1 fscale else if c47fbb50==".brv_obj" then ce860b22 f (getFilenamePath bde864e5) fscale else Messagebox "Unsupported file!";fclose f)))
Code: Select all
GameInfo = undefined;GameStg=#();cfg = fopen (scriptsPath + "FatImporter\\FatImporter.cfg") "rb";if cfg==undefined then (messagebox "Configuration file not found")else( nGames=readshort cfg #unsigned;GameInfo=for j=1 to nGames collect #((readstring cfg),(readstring cfg),(readstring cfg),(readbyte cfg #unsigned));fclose cfg);if GameInfo != undefined then (GameStg = for j in GameInfo collect j[1];sort GameStg);global fscale = 1;global TexExt = ".tga";global FatImage = scriptsPath + "FatImporter\\Fatbar01.jpg";global ImgIdx = 1;global GameTitle = "";fn readMTX44 fstream fscale=(m11=readfloat fstream;m12=readfloat fstream;m13=readfloat fstream;m14=readfloat fstream;m21=readfloat fstream;m22=readfloat fstream;m23=readfloat fstream;m24=readfloat fstream;m31=readfloat fstream;m32=readfloat fstream;m33=readfloat fstream;m34=readfloat fstream;m41=readfloat fstream;m42=readfloat fstream;m43=readfloat fstream;m44=readfloat fstream;mtx=matrix3 [m11,m12,m13] [m21,m22,m23] [m31,m32,m33] ([m41,m42,m43]*fscale);return mtx);fn readFixedString fstream nChar=(txt="";Null=false;for j=1 to nChar do (chr = readByte fstream #unsigned;if chr==0 then Null=true;if Null==true then continue;txt+=bit.intAschar(chr));return txt);fn AutoskinMeshNT msh BNary SKary=(DisableSceneRedraw();skn=skin();addmodifier msh skn;select msh;max modify mode;for b in BNary do(skinops.addbone skn b 1);select msh;for i=1 to msh.numVerts do skinops.ReplaceVertexWeights skn i SKary[i][1] SKary[i][2];max select none;EnableSceneRedraw());fn StripName txt=(rst=""; ss=txt as stringstream;while ((eof ss) != true) do (c=readchar ss; if c==" " then rst+="_" else rst+=c);return rst);rollout MainRoll "" ( );rollout AnimRoll "Fatduck Animation Viewer" (button ResetAmn "Reset" width:60 align:#left offset:[-5,0] across:2;Spinner Arange "Animation: " fieldwidth:45 type:#integer range:[1,100,1] align:#right offset:[5,3];button listAnim "List Animation" height:25 width:190 align:#center;label lbl "" align:#center;on ResetAmn pressed do (stopAnimation immediateReturn:true;animationRange = interval 0f 100f;sliderTime = 0);on listAnim pressed do (dmy = $'AnimData';if dmy != undefined then (try (numAnim = getUserProp dmy "ACnt";clearlistener();format "No. of Animation: %\n" numAnim;for i = 1 to numAnim do format "%>\t%\t[%,%]\n" i (getUserProp dmy ("A"+(i as string)+"NE")) (getUserProp dmy ("A"+(i as string)+"ST")) (getUserProp dmy ("A"+(i as string)+"ED"));Arange.range.y = numAnim) catch (messagebox "Animation Data not correct!" title:"")) else messagebox "Animation Data not found!" title:"");on Arange changed val do (dmy = $'AnimData';if dmy != undefined then (try (numAnim = getUserProp dmy "ACnt";Arange.range.y = numAnim;if val > numAnim then val = numAnim;st = getUserProp dmy ("A"+(val as string)+"ST");ed = getUserProp dmy ("A"+(val as string)+"ED");try ( lbl.text = ">> " + (getUserProp dmy ("A"+(val as string)+"NE")) + " <<" ) catch (lbl.text = "");if ed == st then ed+=1;stopAnimation immediateReturn:true;AnimationRange = interval st ed;SliderTime = st;playAnimation immediateReturn:true) catch (messagebox "Animation Data not correct!" title:"")) else messagebox "Animation Data not found!" title:""));if FatImpGUI != undefined then closeRolloutFloater FatImpGUI;FatImpGUI = newRolloutFloater "Fat Importer V1.5" 220 480 10 70;rollout GeneralRoll "General Setting" (dropdownlist GameList "Game List: " height:16 items:GameStg;group "Texture type" (radiobuttons TexType "" labels:#("tga","jpg","bmp","dds") columns:4 offset:[0,-3]);spinner VTscale "Import Scale : " range:[0.00001,100000,1] fieldwidth:60 align:#right;checkbutton AnimView "Fatduck Animation Viewer" height:25 width:190 align:#center;button HLP "?" height:17 width:17 pos:[180,5] tooltip:"About FatImporter";on HLP pressed do (rollout FatHelp "" (label lbl1 "FatImporter v1.5";label lbl2 "by";label lbl3 "Fatduck";label lbl4 "20 July, 2012";label lbl5 "";label lbl6 "If you like this Importer, you are welcome " align:#left;label lbl7 "to make some donation to support me!" align:#left;label lbl8 "";label lbl9 "For any feed back please go to my Forum" align:#left;hyperLink GRF "Game Research Chinese Forum" color:blue address:"http://gameresearch.5d6d.com" align:#left;label lbla "alternatively, find me on " align:#left across:2;hyperLink XTF "Xentax Forum" color:blue address:"http://forum.xentax.com/" align:#right;button ClHelp images:#((scriptsPath+"FatImporter\\FatIcon.jpg"),undefined,1,1,1,1,1) width:75 Height:75 align:#center;on ClHelp pressed do DestroyDialog FatHelp);createDialog FatHelp 220 300);on GameList selected idx do (if AnimView.state==true then (removeRollout AnimRoll FatImpGUI;AnimView.checked=false);removeRollout MainRoll FatImpGUI;GC();for g in GameInfo where g[1]==GameList.selected do (GameTitle = g[1];if g[4]>128 then filein(scriptsPath + "FatImporter\\"+g[2]+".mse") else filein(scriptsPath + "FatImporter\\"+g[2]+".ms");FatImage = scriptsPath+"FatImporter\\"+g[3]+".jpg";ImgIdx = bit.and g[4] 127;exit);addRollout MainRoll FatImpGUI);on VTscale changed val do fscale = val;on TexType changed state do (TexExt = case TexType.state of (1: ".tga";2: ".jpg";3: ".bmp";4: ".dds"););on AnimView changed state do (if state==true then addRollout AnimRoll FatImpGUI else removeRollout AnimRoll FatImpGUI));addRollout GeneralRoll FatImpGUI