Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by fLUnKnhaXYU

  1. for the sake of less experienced interested reader (like me) , I would suggest that you study the relationship between player::oncollision (scripts/server/player.cs)and shapeBase::Pickup (scripts/server/inventory.cs) , player on pickup is written in the engine c++ while onInventory , onPickup are "invoked" in the torqueScript scripting code .
  2. Thanks for your art , Duion , and for clarifying a bit more what the halo issue is . And do you not feel that "for personal use" feels a little restrictive ? Ive had that program for a while and never installed it because of that being in the license aggreement . So , considering that they give the nice program away for free is more than generous , however that small stipulation sorta feels a little restrictive and as you're an artist Im sure you understand how that might affect the enjoyment of your work . .
  3. departing for tall builings in the distance arriving
  4. more showing off as Kork wins the wheaties cup .
  5. This is no postFX , notice the ultra dramatic boost in frameses . I used GIMPs fuzzy select and set the threshhold to where i left out the alpha affected pixels on the edge and in the material editor I left transparency unchecked and set the alpha threshhold slider until the edges looked ok . but yes , Duion is correct , I zoomed way in and saw the alpha affected pixels . Steve_Yorkshire I did a quick search for spaceKork and didnt see anything . ForgeGuy is the new T3D soldier yes? HOW did I leave that out ? Geez . THX.
  6. Sir_Skurpsalot , THX engine/source/t3d/player.cpp is where you will find the footprint stuff, around line 3949.
  7. Duion , I don't think there's a halo problem as with the alpha , I think Ill just stick with using GIMP . Actually I'm not happy at all with the appearance without the postFx because I'm using it to mask bad art . I'm stepping back , turning off the post FX and try to adjust the textures for realism first . I know , maybe should've already taken that approach instead of messing things up first . anyhow here's my way cool picture . I think that's all of them except for a couple material variants , and the Buggy! . Hope you like the pic . Anybody have any tips on importing those old structures ? Cool!:)
  8. theres interesting stuff in "engine/source/t3d/components/animation/animationcomponents.cpp" . look for onAnimationTrigger maybe Itll help understand . I havent tried it but i guess I will soon . This at least makes me think Ill need a onAnimationTrigger callback (is call back the right word?)
  9. Thanks Duion , I have that little program . might try it on a file that I edited to a lighter color which left a white egde on the image , though , its an image with multiple colors so it probably wont work well and Ill need GIMP , its tree foliage , you cant see it unless youre very close
  10. OH! YEA! the whole crew then . Im sure youre wondering and yes theyre all scripted playerData or however you say it spawned as AiPlayers . .
  11. Duion , this time I did focused a little on appearance and considered some things I could change . I guess the colors looked a little over saturated so I lowered the saturation of some textures wih Gimps Hue/Saturation tool and lightened or darkened some textures with brightnss-Contrast , basic things like that until I liked the appearance and it seemed a little more realistic to me . Also I had to delete the old imposter files because they weren't being re-generated after the editing had been done on the images . after removing/renamimg whatever they were automatically generated . Plus , a little fiddling with the detail sizes in the shape editor and a little extra color shift with the postFx editor . I thinks thats about it , just some simple basic stuff , Im gonna try some more . thx
  12. RETURN OF HERO 1 ! or whatever his name is . Here he is in ver 3.9 . The green guy is the player the other 2 are AiPlayers . I guess its been a while since hes been shown off . If anyones wondering , it was imported into the shape editor and the dsq's added in the shape editor as well , the animations are really nice and the color texture is the original 256 . but i did run it through GIMP/insane bump to see what kind of normal i'd get .
  13. thx Duion , Id like to ask if you know what became of this https://forums.torque3d.org/viewtopic.php?f=10&t=1422&hilit=openal
  14. ]you might try this . The only thing weird is when I check the object "audioAmbienceUnderWater" , using , audioAmbienceUnderWater.dump() , its soundtrack field was empty so i added the the soundTest track in the Audioambiences file then executed the file in the console , rechecked and it then showed soundTest in the field But , when I exit the game and restart it the field is again empty and I have to exec() the file again . ?? Anyhow this worked for the audioAmbience for a waterPlane usind ver 3.10 [code2=BBCODE40_TORQUESCRIPT]//art/datablocks/audioProfiles.cs datablock SFXProfile(SoundTest) // ------OOPS edit I'd put in TestSound { filename = "art/sound/envrionment/amb.ogg";// ---------or whatever file you have description = AudioLoop2D; preload = true; }; //-------------------------------------------------- //scripts/client/audioambiences.cs singleton SFXAmbience( AudioAmbienceUnderwater ) { environment = AudioEnvUnderwater; soundtrack = "soundTest";//---------------------------Add a track to this file+++++++++++++++++ states[ 0 ] = AudioLocationUnderwater; };[/code2
  15. Im not more familiar than others , sry , but , if you suspect that it could be an asset you can comment out things in art/datablovks/datablockExec.cs , also , there is even some reference in the art/datablocks/environments.CS concerning a problem causing a crash which at the time appears to not have been resolved . Of course you can also comment out things in the scripts/client/init.cs , but to check the assets Id start with the datablock execs . Maybe you can just comment out everything , I think Id be more concerned with the physics shapes and maybe the postFx but IDK .
  16. I tried looking in the source for things . Its a bit complicated for me . No real blaring straight-forward heres where you save the .ml . There are a couple references to the .ml file and they are associated with the mission filename . In addition to the couple of files referenced below ,you might also find scenePersist.cpp of interest . //------------------------------- gameConnesction.cpp //------------------------------- line# 995 stream->writeString(Con::getVariable("$Client::MissionFile")); 1078 Con::setVariable("$Client::MissionFile",buf); 2160 DefineEngineMethod( GameConnection, setMissionCRC, void, (S32 CRC),, "@brief On the server, transmits the mission file's CRC value to the client.\n\n" "Typically, during the standard mission start phase 1, the mission file's CRC value " "on the server is send to the client. This allows the client to determine if the mission " "has changed since the last time it downloaded this mission and act appropriately, such as " "rebuilt cached lightmaps.\n\n" 2299 // After demo has loaded, execute the scene re-light the scene //SceneLighting::lightScene(0, 0); GameConnection::smPlayingDemo.trigger(); //----------------------------------------------------------------------------- / //----------------------------------------------------------------------------- / //---------------------- sceneLighting.cpp //---------------------- 461 void SceneLighting::getMLName(const char* misName, const U32 missionCRC, const U32 buffSize, char* filenameBuffer) { dSprintf(filenameBuffer, buffSize, "%s_%x.ml", misName, missionCRC); } 927 void SceneLighting::processCache() { // get size in kb S32 quota = Con::getIntVariable("$sceneLighting::cacheSize", -1); Vector files; Vector fileNames; Torque::FS::FindByPattern(Torque::Path(Platform::getMainDotCsDir()), "*.ml", true, fileNames); S32 curCacheSize = 0; for(S32 i = 0;i < fileNames.size();++i) { if(! Torque::FS::IsFile(fileNames)) continue; Torque::FS::FileNodeRef fileNode = Torque::FS::GetFileNode(fileNames); if(fileNode == NULL) continue; if(dStrstr(fileNames, mFileName) == 0) { // Don't allow the current file to be removed CacheEntry entry; entry.mFileObject = fileNode; entry.mFileName = StringTable->insert(fileNames); files.push_back(entry); } else curCacheSize += fileNode->getSize(); } // remove old files for(S32 i = files.size() - 1; i >= 0; i--) { FileStream *stream; if((stream = FileStream::createAndOpen( files.mFileObject->getName(), Torque::FS::File::Read )) == NULL) continue; // read in the version U32 version; bool ok = (stream->read(&version) && (version == PersistInfo::smFileVersion)); delete stream; // ok? if(ok) continue; // no sneaky names if(!dStrstr(files.mFileName, "..")) { Con::warnf("Removing old lighting file '%s'.", files.mFileName); dFileDelete(files.mFileName); } files.pop_back(); } // no size restriction? if(quota == -1 || !files.size()) return; for(U32 i = 0; i < files.size(); i++) curCacheSize += files.mFileObject->getSize(); // need to remove? if(quota > (curCacheSize >> 10)) return; // sort the entries by the correct method const char * purgeMethod = Con::getVariable("$sceneLighting::purgeMethod"); if(!purgeMethod) purgeMethod = ""; // determine the method (default to least recently used) if(!dStricmp(purgeMethod, "minSize")) dQsort(files.address(), files.size(), sizeof(CacheEntry), minSizeSort); else if(!dStricmp(purgeMethod, "maxSize")) dQsort(files.address(), files.size(), sizeof(CacheEntry), maxSizeSort); else if(!dStricmp(purgeMethod, "lastCreated")) dQsort(files.address(), files.size(), sizeof(CacheEntry), lastCreatedSort); else dQsort(files.address(), files.size(), sizeof(CacheEntry), lastModifiedSort); // go through and remove the best candidate first (sorted reverse) while(((curCacheSize >> 10) > quota) && files.size()) { CacheEntry& lastFile = files.last(); curCacheSize -= lastFile.mFileObject->getSize(); // no sneaky names if (!dStrstr(lastFile.mFileName, "..")) { Con::warnf("Removing lighting file '%s'.", lastFile.mFileName); dFileDelete(lastFile.mFileName); } files.pop_back(); } }
  17. Is it possible that since its edited that you have changed the name of the mission file (.mis) and it is not corresponding via the network with the the .ml file(the mission lighting file probably associated with the original level) ?
  18. Are you familiar with the speed-o-meter hud ? If not then you should search for the code used for the speedometer hud schedule . perhaps someone can help you find it or can post a nice example of the speedometer scheduling code .
  19. Sry I dont have any advice . Id like to ask you , what does setting generictrigger3 to true accomplish ? What is what is your desired effect here ?
  20. Im just wondering , have you loaded the heghtmap successfully yet ? As for the textures , first check the file directory and affirm the path to your images . If things seem correct but arent working correctly then check your .TER file . Its compiled and encrypted but you can open it with notepad then search for your terrain texture file names Youll see a path , check against those paths , they are where your searching for the textures and something could be wrong . You can also edit the paths in the word processor . lastly try putting the textures in the data/terrains and any subfolder you wish or just leave them in the data/terrains folder . go back to the editor and window > texture painter > add/change and go through the folders to where they should be .
  21. you can use vectorAdd in the case that you might want to add a large item and make it appear above the prize box .
  22. I just search for armor resource on the main forum page . I remembered some recent interest in the same resource .. I think there may something interesting concerning tanks or the like . https://forums.torque3d.org/viewtopic.php?f=12&t=1785&hilit=armor+resource https://forums.torque3d.org/viewtopic.php?f=12&t=1243&p=9754&hilit=armor+resource#p9754 https://forums.torque3d.org/viewtopic.php?f=12&t=740&p=6162&hilit=armor+resource#p6162
  23. Thats a brilliant suggestion . The following is just copied from the engine/source of the dev folder namely from the guiCrossahirHud.cpp Its is using ray cast but confined to a rectangle which of course is editable through scripting , Im sure that it should be possible to activate the rectangle with and/or only with a button press and perhaps deactivated if the camera angle/rotation what have you change is excessive . Or delay the appearance of items found beneath the cursor a second or so . Also it seems that there should be a way of knowing what objects are within an area of the scene such as the small rectangle without a raycast probing for them . //========================================================================================== guiCrosshairHud.cpp //----------------------------------------------------------------------------- / // Vary basic cross hair hud. / // Uses the base bitmap control to render a bitmap, and decides whether / // to draw or not depending on the current control object and it's state. / // If there is ShapeBase object under the cross hair and it's named, / // then a small health bar is displayed. //----------------------------------------------------------------------------- / void GuiCrossHairHud::onRender(Point2I offset, const RectI &updateRect) { // Must have a connection and player control object GameConnection* conn = GameConnection::getConnectionToServer(); if (!conn) return; GameBase* control = dynamic_cast(conn->getCameraObject()); if (!control || !(control->getTypeMask() & ObjectMask) || !conn->isFirstPerson()) return; // Parent render. Parent::onRender(offset,updateRect); // Get control camera info MatrixF cam; Point3F camPos; conn->getControlCameraTransform(0,&cam); cam.getColumn(3, &camPos); // Extend the camera vector to create an endpoint for our ray Point3F endPos; cam.getColumn(1, &endPos); endPos *= gClientSceneGraph->getVisibleDistance(); endPos += camPos; // Collision info. We're going to be running LOS tests and we // don't want to collide with the control object. static U32 losMask = TerrainObjectType | ShapeBaseObjectType; control->disableCollision(); RayInfo info; if (gClientContainer.castRay(camPos, endPos, losMask, &info)) { // Hit something... but we'll only display health for named // ShapeBase objects. Could mask against the object type here // and do a static cast if it's a ShapeBaseObjectType, but this // isn't a performance situation, so I'll just use dynamic_cast. if (ShapeBase* obj = dynamic_cast(info.object)) if (obj->getShapeName()) { offset.x = updateRect.point.x + updateRect.extent.x / 2; offset.y = updateRect.point.y + updateRect.extent.y / 2; drawDamage(offset + mDamageOffset, obj->getDamageValue(), 1); } } // Restore control object collision control->enableCollision(); } //----------------------------------------------------------------------------- / //----------------------------------------------------------------------------- /
  24. Karpatios18 , I dont use discord . Nothing personal , I just don't bother . The guys around here and there a far more capable .
  25. I think schedule might be what you're looking for in your read the docs check the bottom index page 941 and see simObject::schedule . Also just search for schedule and you'll see a few examples also search file contents of your torque3d demo script files for examples . you'll need to look into starting , pausing , cancelling a schedule as well , things like that . If I'm not mistaken a schedule will be given an ID number which you can use . It'll probably be worth your time to master the use of schedule .
  • Create New...