Jump to content

Hi There

Welcome to Klub Exile. If you happened to make your way to the site either from Lovers Lab or a Search on Google, we are glad you found us.  To unlock the entire site you will need to have a account registered.  Don't worry it is free but in the mean time you can read up on why we made the site and other little tidbits.  Feel free to join or Discord Server also if you have any more questions.  Thanks for stopping by and See You on the other side.

admin admin

cr532

Modder
  • Posts

    227
  • Joined

  • Last visited

  • Days Won

    28
  • XP

    16,818 [ Donate ]

Posts posted by cr532

  1. On 9/19/2023 at 3:21 AM, logos said:

    Доброго времени суток всем, таков вопрос есть ли способ смены языка кроме параметра ярлыка, а то у меня дестрибъют Линук и там с этим сложно...

    Заранее спасибо 

    Можно добавить строчку options.lang="ru" в Config/TK17_Config.txt. Вроде еще options.lang2 нужен для секвенсора (который, правда, все равно обычно крашится с русской локалью). В общем да, как тебе уже верно заметили, от локализации больше вреда чем пользы.

    • Agree 1
  2. 4 hours ago, Driver said:

    That's what I've been thinking. But as @ddman2 told it's pain in the ass to me that I can't change the color of cloth on the fly, so h5skin might be way to go. If this prevents the game from crashing on the launch, it'd be great, but I kinda agree to @Smoke's point of view about it from my own experience, that said even if I replaced most of the texture of a room to small transparent one, the game keep crashing on the loading time. And this is also what he keeps telling tho the crashes happen from multiple reasons so every effort could be reduce them more or less, that's the way it is now.

    By the way I think crash on the loading time greatly increased after I changed to 12th gen intel from 4th gen. Maybe the cpu speed has increased far beyond what the developers had intended and that causes the crashes? Just my imagination. 😶‍🌫️

    Well, it's a matter of taste. I rarely use color sliders in general, and when it comes to rooms, they are not needed at all.

    Smoke is right, lack of optimization is the root of most problems. Unfortunately there is no solution, so far only very few modders really care about optimizing their content.

    • Thanks 2
  3. At least from my experience, h5 actually handles textures much better than the main engine. Probably the dumbest way to greatly improve game perfomance and almost forget about crashes is just use diffuse_override (or stage1, or skin layers, depending on the object type) options in the _pass files for everything:

    example.jpg

    Haven't really tested this method with old rooms much, but I believe it also should work well

    • Like 1
  4. Well, you're lucky. There are several unoccupied param IDs that can be used, so why not:

    c_tongue.jpg

    The bad news is that there is a reason Customizer and PoseEdit almost never use the same blends. In short, PE will always reset these values.

    Here is the code if anyone needs it:

    Spoiler
    local customizer_body_path = "Scripts/Shared/Person/CcPersonDefaultBody.[bs*]"
    
    customizer_parameters = [[
    :Parameter_tonguec_tip .ParamID I32(1895);
    
    CustomParameter :Parameter_TongueOut . {
    	.ParamID I32(1896);
    	.IconID I32(6815);
    	.ParamName "TongueOut";
    	.ParamDescription "Tongue Out:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Slider;
    	.SliderDefault F32(0.5);
    	.PoseBlendNameArray [ "Person" + :person + "AnimFace:tongue_poseBlend_tongue_front" ];
    	.PoseBlendClampArray [ ( F32(-1) , F32(1) ) ];
    	.PoseBlendMulAddArray [ ( F32(2) , F32(-1) ) ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueStraight . {
    	.ParamID I32(1897);
    	.ParamName "TongueStraight";
    	.ParamDescription "Tongue Straight:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Slider;
    	.SliderDefault F32(0.5);
    	.PoseBlendNameArray [ "Person" + :person + "AnimFace:tongue_poseBlend_tongue_straight" ];
    	.PoseBlendClampArray [ ( F32(-6) , F32(6) ) ];
    	.PoseBlendMulAddArray [ ( F32(12) , F32(-6) ) ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueTipUp . {
    	.ParamID I32(1898);
    	.ParamName "TongueTipUp";
    	.ParamDescription "Tongue Tip Up:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Slider;
    	.SliderDefault F32(0.5);
    	.PoseBlendNameArray [ "Person" + :person + "AnimFace:tongue_poseBlend_tongue_tip_up" ];
    	.PoseBlendClampArray [ ( F32(-1) , F32(1) ) ];
    	.PoseBlendMulAddArray [ ( F32(2) , F32(-1) ) ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueTipDown . {
    	.ParamID I32(1899);
    	.ParamName "TongueTipDown";
    	.ParamDescription "Tongue Tip Down:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Slider;
    	.SliderDefault F32(0.5);
    	.PoseBlendNameArray [ "Person" + :person + "AnimFace:tongue_poseBlend_tongue_tip_down" ];
    	.PoseBlendClampArray [ ( F32(-1) , F32(1) ) ];
    	.PoseBlendMulAddArray [ ( F32(2) , F32(-1) ) ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueTipLeft . {
    	.ParamID I32(1900);
    	.ParamName "TongueTipLeft";
    	.ParamDescription "Tongue Tip Left:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Slider;
    	.SliderDefault F32(0.5);
    	.PoseBlendNameArray [ "Person" + :person + "AnimFace:tongue_poseBlend_tongue_tip_left" ];
    	.PoseBlendClampArray [ ( F32(-1) , F32(1) ) ];
    	.PoseBlendMulAddArray [ ( F32(2) , F32(-1) ) ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueTipRight . {
    	.ParamID I32(1901);
    	.ParamName "TongueTipRight";
    	.ParamDescription "Tongue Tip Right:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Slider;
    	.SliderDefault F32(0.5);
    	.PoseBlendNameArray [ "Person" + :person + "AnimFace:tongue_poseBlend_tongue_tip_right" ];
    	.PoseBlendClampArray [ ( F32(-1) , F32(1) ) ];
    	.PoseBlendMulAddArray [ ( F32(2) , F32(-1) ) ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueLickClean . {
    	.ParamID I32(1902);
    	.ParamName "TongueLickClean";
    	.ParamDescription "Tongue Lick Clean:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Slider;
    	.SliderDefault F32(0.5);
    	.PoseBlendNameArray [ "Person" + :person + "AnimFace:lick_clean" ];
    	.PoseBlendClampArray [ ( F32(-1) , F32(1) ) ];
    	.PoseBlendMulAddArray [ ( F32(2) , F32(-1) ) ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueStickOut . {
    	.ParamID I32(1903);
    	.ParamName "TongueStickOut";
    	.ParamDescription "Tongue Stick Out:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Slider;
    	.SliderDefault F32(0.5);
    	.PoseBlendNameArray [ "Person" + :person + "Anim:Model01:tongue_stick_out" ];
    	.PoseBlendClampArray [ ( F32(-1) , F32(1) ) ];
    	.PoseBlendMulAddArray [ ( F32(2) , F32(-1) ) ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueTwist . {
    	.ParamID I32(1904);
    	.ParamName "TongueTwist";
    	.ParamDescription "Tongue Twist:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Slider;
    	.SliderDefault F32(0.5);
    	.PoseBlendNameArray [ "Person" + :person + "AnimFace:tongue_ik_twist" ];
    	.PoseBlendClampArray [ ( F32(-1) , F32(1) ) ];
    	.PoseBlendMulAddArray [ ( F32(2) , F32(-1) ) ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueCluster05 . {
    	.ParamID I32(1905);
    	.IconID I32(8105);
    	.ParamName "TongueCluster05";
    	.ParamDescription "Tongue Cluster05 Position:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Vector3f;
    	.DefaultVector3f ( F32(0) , F32(0) , F32(0) );
    	.MinVector3f ( F32(-0.1) , F32(-0.1) , F32(-0.1) );
    	.MaxVector3f ( F32(0.1) , F32(0.1) , F32(0.1) );
    	.ObjectNameArray String [ "Person" + :person + "Anim:Model01:Stongue_clusterHandle05" ];
    	.ObjectMemberArray [ @ STransform .RotationPivotTranslation ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueCluster06 . {
    	.ParamID I32(1906);
    	.IconID I32(8105);
    	.ParamName "TongueCluster06";
    	.ParamDescription "Tongue Cluster06 Position:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Vector3f;
    	.DefaultVector3f ( F32(0) , F32(0) , F32(0) );
    	.MinVector3f ( F32(-0.1) , F32(-0.1) , F32(-0.1) );
    	.MaxVector3f ( F32(0.1) , F32(0.1) , F32(0.1) );
    	.ObjectNameArray String [ "Person" + :person + "Anim:Model01:Stongue_clusterHandle06" ];
    	.ObjectMemberArray [ @ STransform .RotationPivotTranslation ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    CustomParameter :Parameter_TongueCluster07 . {
    	.ParamID I32(1907);
    	.IconID I32(8105);
    	.ParamName "TongueCluster07";
    	.ParamDescription "Tongue Cluster07 Position:";
    	.CategoryID :Cat_Body;
    	.ParamType CustomParamType .Vector3f;
    	.DefaultVector3f ( F32(0) , F32(0) , F32(0) );
    	.MinVector3f ( F32(-0.1) , F32(-0.1) , F32(-0.1) );
    	.MaxVector3f ( F32(0.1) , F32(0.1) , F32(0.1) );
    	.ObjectNameArray String [ "Person" + :person + "Anim:Model01:Stongue_clusterHandle07" ];
    	.ObjectMemberArray [ @ STransform .RotationPivotTranslation ];
    	.LookAt "Person" + :person + "Anim:Model01:tongue_pos_group";
    	.LookAtID :LookAtMouthOpen;
    };
    
    :Parameter_Ear01 .ParamID I32(1908);
    :Parameter_Ear02 .ParamID I32(1909);
    :Parameter_earsz_earsize .ParamID I32(1910);
    :Parameter_earsz_x .ParamID I32(1911);
    ]]
    
    cb_insert(customizer_body_path,customizer_parameters,false,false)

    I personally think there should be a better solution. Maybe just standard Translation/Rotation/Scaling sliders would be enough. Tongue animation is surprisingly complex and looks like at least 2-3 modders were working on it at different times, all those sliders are implemented differently 🙂

    • Thanks 2
  5. 15 hours ago, HDiddy said:

    Oooo this is useful.  Maybe we can roll this into KE Update 2. 

    If someone can figure out collapsing sections....especially in VX Morphs that would be really really helpful

    If you mean adding a section, DressMorphs already exists in uiPoseEdit. You can uncomment and add some elements to it, but they will all be inactive:

    dm.jpg

    I think the problem with these sections is more complicated than it might seem.

  6. I don't use Room Import Mod, so haven't really tested this code, but I think it should work fine:

    local pe_dummy_path = "Scripts/Shared/GUI/uiPoseEditDummy.[bs*]"
    
    widgets = [[
    WIconButton :PoseEdit_ZPositionT_Dummy_IconButton . {
    	.Position ( I32(-128), I32(66), I32(0) );
    	.AlignmentModeY Widget .AlignmentModeEnum .AlignMin;
    	.Element :PoseEdit_Tangent_Element;
    	.IconID I32(8105);
    	.Dimension ( I32(18), I32(18), I32(0) );
    	.UserValue :uPoseEdit_FreeTranslation010;
    	.HandlerArray [ :PoseEdit_TrackManip_Handler, :PoseEdit_TrackMenu_Handler, :PoseEdit_ShowTangentMenuMiddle_Handler ];
    };
    WIconButton :PoseEdit_ZPositionR_Dummy_IconButton . {
    	.Position ( I32(-108), I32(66), I32(0) );
    	.AlignmentModeY Widget .AlignmentModeEnum .AlignMin;
    	.Element :PoseEdit_Tangent_Element;
    	.IconID I32(8106);
    	.Dimension ( I32(18), I32(18), I32(0) );
    	.UserValue :uPoseEdit_FreeRotation010;
    	.HandlerArray [ :PoseEdit_TrackManip_Handler, :PoseEdit_TrackMenu_Handler, :PoseEdit_ShowTangentMenuMiddle_Handler ];
    };
    ]]
    
    function appendWidgets()
    	local widget_array
    	for _,value in ipairs(bs_old) do
    		if (value:find("PoseEdit_EyeRAxis_Dummy_IconButton")) then
    			widget_array = true
    			add(value)
    		elseif (value:find("^%s+%];") and widget_array) then
    			add(widgets.."\n"..value)
    			widget_array = false
    		else
    			add(value)
    		end
    	end
    end
    
    cb_add(appendWidgets,nil,pe_dummy_path,true,true)
    • Thumbs Up 1
  7. On 8/8/2023 at 11:12 PM, demonv1 said:

    CollaTKane Hair modding noob question for the hair experts.

    What do I need to do to activate the hair color and strand color sliders for a hair I made?

    It's a bit complicated. Here are the steps you need in most cases:

    1. Go to %addon_folder%/Images/Q=Tex032M/Shared/Hair and create %hair_name%_hairlayer.bs script with the following content:

    GroupLayer :hair_GroupLayer;
    
    ImageLayer :hair_blond_ImageLayer . {
    	.FileObject FileObject :hair_blond_FileObject . {
    		.FileName "Shared/Hair/%hair_texture_filename%";
    	};
    };
    ImageLayer :hair_strand_ImageLayer . {
    	.FileObject FileObject :hair_strand_FileObject . {
    		.FileName "Shared/Hair/%strand_texture_filename%";
    	};
    };
    
    GroupLayer :hair_GroupLayer . {
    	.LayerArray [
    		TransformLayer :hair_transparent01_blond_TransformLayer . {
    			.ImageLayer :hair_blond_ImageLayer;
    			.CombineMode TransformLayer .CombineModeEnum .Replace;
    			.Visibility U32(0);
    		};
    		TransformLayer :hair_strand01_custom_TransformLayer . {
    			.ImageLayer :hair_strand_ImageLayer;
    			.CombineMode TransformLayer .CombineModeEnum .Blend; // here you may want to change combine mode (.Replace/.Blend/.AlphaAdd)
    			.Visibility U32(0);
    		};
    	];
    };

    2.  Open your scene file located at %addon_folder%/Scenes/Shared/Hair and find Object.Name of Texture2D (if you are using CTK, it should be something like "%hair_name%_tex2d").

    3. Go to the scene script file %addon_folder%/Scripts/Luder/Hair/Ac%hair_name%.bs and add this code to .ComponentArray:

    AppModel . {
    	.ComponentArray [
    		...
    		AppReplaceImage . {
    			.TextureName "%Texture2D_object_name%";
    			.LayerFile "Shared/Hair/%hairlayer_filename%";
    		};
    		...
    	];
    };

    4. So, finally open your dress script %addon_folder%/Scripts/Dress/DcDressVX_%hair_name%.bs and add those lines:

    DressDescription :Dress%hair_name%_Description . {
    	...
    	.CmdArray [
    		DressCmd . {
    			.IfDressArray [ I32(250) , I32(251) ];
    			.Show I32(1);
    			.Target :P + "Hair:hair_transparent01_blond_TransformLayer";
    		};
    	];
        ...
    };
    
    • Thanks 3
  8. On 7/1/2023 at 11:50 AM, HDiddy said:

    Also if it helps DP16 has a eye rotation fix in the F7 Curvy Repack based off of this lua code.  I don't really mess with Lua so maybe someone can decipher it and make it useful for regular VX.

    Already done. Just was not sure if it's worth uploading it to the Scripts section. This fix causes another issue, so people will probably have to fix many of their poses manually.

    On 4/21/2023 at 7:04 AM, cr532 said:

    Made a little script, if anyone want to test: VX.000.Scripts.AnimEyeRotationFix.zip

    Those lines added by Raistin Kane are still there, but were commented out for some reason. Perhaps because these changes sometimes just break the usual EyeLookAt animation.

    • Thanks 1
    • Thumbs Up 1
  9. You can duplicate toys in the game config. This feature just doesn't seem to be properly documented anywhere.

    Go to TK17/Config folder and create TK17_ToolChanges.txt file with the following content:

    tool_changes=[[
    	addon="%addon_filename%" multiply=4 name="%duplicate_name%";
    ]]
    • Thumbs Up 1
  10. Step by step:
    1. Import hair_group.dae from CollaTKane/Resources and your accessory into the Blender scene;
    2. Do all necessary positioning, texturing, etc.
    3. Remove mesh_head. Add empty plain axes and regroup objects like this:

    hair_group.png

    4. Export the scene. Make and run CTK script using UserHat1_Hair_Hat_VX.bat as example;
    5. Open Scripts/Dress/Items/Ac%addonname%.bs, go to AppReplaceSkeleton section and replace .TargetPath with any rotation group you want:

    2038.png

    That's all.

    Head acc rotation group list:

    Spoiler

    helmet_rotation_group :DZ_Helmet
    hat_rotation_group :DZ_Head
    horns_rotation_group :DZ_Horns
    headacc_rotation_group :DZ_HeadAcc
    crowns_rotation_group :DZ_Circlets
    headset_rotation_group :DZ_Headset
    hood_rotation_group :DZ_Hood
    eyewear_rotation_group :DZ_Glasses
    mouth_gag_rotation_group :DZ_Mouth
    mask_rotation_group :DZ_Mask

    • Thanks 2
    • Thumbs Up 1
  11. I would agree about clothes. But sometimes it seems that we just have a lot more revealing and themed clothing addons than decent quality casual ones.

    As about models. Well, to be honest, I have rarely seen models that I could really consider as "pretty", at least for my taste, the same about "natural". I think it's mostly a matter of technical limitations. In fact, not much can be done with those low-poly meshes that most people use, and it's painfully hard to make something decent looking. Maybe the future of TK17 lies with high-poly replacers, and then someday the situation will change, we'll see.

    • Like 1
  12.  The actual problem was well described once, maybe someone will find this post useful:

    Spoiler
    On 7/13/2022 at 8:43 PM, Euphie said:

    Sorry, I can't really help you myself, but I saw a solution to this problem a few years ago in R9X (which was a custom version of VX beta) invented by one guy. My hope is that this guy is here somewhere on the forum and maybe he'll come out of the shadows to explain again how he did it... 😬

    In general, there is a problem with the positioning of the eyeballs in this game, they are not symmetrical. I tried to remember how to fix it and tested different things but I have never been able to recreate it...

    If anyone is interested in investigating this, there seems to be a clue in body01.bs file (body mod doesn't matter, this piece of code is the same everywhere):

    STransform :local_498 . {
    	SSimpleTransform.Translation Vector3f( 0.002000000095, -0.001000000047, 0.0120000001 );
    	SSimpleTransform.Rotation Vector3f( -1.67386055, 1.858355403, -93.22626495 );
    	Object.Name "Seye_L_group";
    };
    
    ...
    
    STransform :local_561 . {
    	SSimpleTransform.Translation Vector3f( -0.002000000095, 0.001000000047, -0.0120000001 );
    	SSimpleTransform.Rotation Vector3f( 1.67386055, -1.858362556, 86.77373505 );
    	Object.Name "Seye_R_group";
    };

    Entire groups of the left and right eye have what appear to be asymmetrical rotation values, but modifying these values didn't work, at least for me.

     

    Hmm, maybe it's something completely different from what you're asking, but it's at least kind of related and I hope someone knows how to fix it 🙂 After all, the position of the eyeballs is saved in the body, not in the face/head file.

     

    You can also move only the irises up if you are using Hook5. In the options you have the 'Eyes' tab and inside you have the 'EyeShiftUp' parameter. However, this is, unfortunately, a global option that will change all eyes 😕

    But no, there doesn't seem to be a simple solution. I tried to fix body01 and some other scripts, to no avail. Have absolutely no idea what else can be done, except to really redo the mesh itself.

  13. 19 hours ago, adapt099 said:

    Всем привет. Наблюдаю такой эффект как полупрозрачные меши волос... Это убирается при определенных настройках в txf файле ( отключить полупрозрачный альфа-канал)...Есть ли рецепт по борьбе с этим?

    Старый движок слабо дружит с полупрозрачностью, особенно в том, что касается волос. Что к чему хорошо расписано здесь https://www.klubexile.com/tutorials/article/16-vertex-sorting-for-alphablend/

     

  14. 23 minutes ago, Slim said:

    Maybe I'm not finding this on the forums or it just doesn't exist but I'm wondering if anyone has made a full list of the 'PrimaryZone' locations (either their numbers or DZ variable names).

    I can dig through the files in the game to find them as needed but I'm just looking for a shortcut.

    Thanks,

    - Slim

    https://www.klubexile.com/tutorials/article/18-dress-zones-list/

    • Like 1
  15. On 2/11/2023 at 8:33 AM, EvilRabbit said:

    I've successfully created the hat addons before, and now want to try smth more complex with using the model skeleton. Decided to go with pasties, made an addon according to the readme in CTK folder, connected mesh to corresponding vertices in blender and weight-painted. But model just don't appear in the game dress menu, and I can't find any errors in logs for it. What am I doing wrong, and how such problems should be debugged? Blender source, dae and bat files attached.

    pasties.zip 239.86 kB · 2 downloads

    Works fine. Just change dress zone from :DZ_LatexPasties to :DZ_Pasties

    • Thumbs Up 1
×
×
  • Create New...

Important Information

WARNING! Adult Only Content You must be 18 years of age or older to enter. By accepting you agree to Klub Exile's Terms of Use and Guidelines upon creating an account.