Leaderboard
Popular Content
Showing content with the highest reputation on 05/02/2023 in all areas
-
Hello! I have a somewhat boring update today, but it's still a big deal! I recently discovered that the game automatically loads .dll files that start with 'lang' in the name (which is not new to anyone here, I’m just a dumb dumb). This solved my biggest problem. I don't need to patch the exe file for this API to work. I just need to write my own DLL (hopefully, it stays that way!). Typically, games don't allow dynamically-linked libraries from strangers to start up, so it takes more effort to convince a game to let you in, but I guess Blue Fang is just friendly like that. In the future, if any mods use this API, the only requirement will be to drop this DLL file into the ZT1 folder, just like anyone ever has. The DLL I created is currently named lang-TekToolkit, but that may change. I'm not sure how the game's limit on the number of 'lang' files it can load works, but I hope it's fine since mine is created from scratch and interfaces with the game differently. It doesn't load anything, only translates the low-level code stored inside of zoo.exe. In any case, the API now works, and my first function is completely reverse-engineered: addToBudget(). Whenever a guest pays for admission, my API intercepts the request, diverts it to my DLL file, and executes the identical function I've written that the original game requires. It then returns the correct budget update back to the player. Now that the API is inside the game's process, I can begin reverse-engineering other functions. So it goes from this (zoo.exe): mov eax,dword ptr ss:[esp+4] add ecx,8 push eax call zoo.4B5F30 fld st(0),dword ptr ss:[esp+4] fadd st(0),dword ptr ds:[ecx] fstp dword ptr ds:[ecx],st(0) ret 4 To this (lang-TekToolkit.dll): // deposit = admission fee paid by guest DWORD __stdcall addToBudget(float deposit) { Memory<DWORD> r; // read Memory<float> w; // write Zoo::Process p; // initiate process data DWORD ptr = r.readMemory((void*)(p.base + 0x00186628)) + 0x08; // grab address to budget float* budget = (float*)(ptr); // store current budget w.writeMemory((void*)ptr, *budget + deposit); // update budget return __addToBudget(deposit); // return to location in zoo.exe } So now a modder only needs to do this if they want to play with the budget in future mods: deposit = <any number>; addToBudget(deposit); Stretch Goals Short term in order of priority: Translate the first two functions I found into C++ (almost done!) Create a .dll wrapper that will allow my API to hook onto the zoo.exe file when it runs Discover more functions Main thread vs new thread Test, test, test. Any volunteers? Highly recommend a virtual machine setup. I can show you how. Start pushing code to Github and share repository with community Long term: Figure out why there are ID limitations for some objects/buildings. Is there a way to expand capacity? Create functionality in my dll that looks for a separate mod folder from the usual one in Zoo Tycoon. That way mods that use the API are separate. I changed my short term goals a bit. Right now the API is kind of useless because only the budget function is accessible and that's already possible through the game files. My plan now is to find the main game thread or make my own. A thread is basically where all of the action is happening and if I find it, that's where modders can really take control of the game logic and do cool stuff; I think I gave an example of what that might look like a few comments up, but I hope I can give a real one in the coming weeks. The next update will be about thread control, and hopefully I've reverse-engineered some more easy functions. P.S.: Still looking for testers!3 points
-
2 points
-
Version 1.0.0
42 downloads
This pack contains foliage common to Israel to help you celebrate Jewish heritage. Contents: Balm Of Gilead Flower Balm Of Gilead Flower Patch Blood Of The Maccabees Flower Carnation Flower Hyssop Flower Jerusalem Artichoke Flower Mandrake Flower Nard Flower Poppy Anemone Flower Poppy Anemone Flower Patch Blue Star Of Bethlehem Flower Orange Star Of Bethlehem Flower Pink Star Of Bethlehem Flower Purple Star Of Bethlehem Flower White Star Of Bethlehem Flower Yellow Star Of Bethlehem Flower Aleppo Oak Tree Aleppo Pine Tree Almond Tree Bay Laurel Tree Carob Tree Cypress Oak Tree Doum Palm Tree Fig Tree Gharqad Tree Hackberry Tree Holly Oak Tree Judas Tree Juniper Tree Lebanon Cedar Tree Mount Tabor Oak Tree Mulberry Tree Olive Tree Plane Tree Pomegranate Tree Stone Pine Tree Sycamore Tree Syrian Ash Tree Syrian Maple Tree Terebinth Tree Twisted Acacia Tree Twisted Juniper Tree Downloadable file contains a combined .ztd file and a folder of all the single .ztd files. If you use the combined file, you don't need the singles.1 point -
1 point
-
Version 1.0.0
23 downloads
Brighten your zoo with items from this Morning Glory Pack! Contents: Morning Glory Cafe (sells chicken combo meal) Morning Glory Gift Shop (sells flower seeds and potted plants) Morning Glory Lamp Morning Glory Path Artwork by Devona. Programming and matching path by Cricket. Requires the latest versions of these .dll files: LANG--fern-Tek ... You can find it here. LANG--Jane ... You can find it here. Downloadable file contains a combined .ztd file and a folder of all the single .ztd files. If you use the combined file, you don't need the singles.1 point -
View File Jewish Pack by ChirpyNytowl (Cricket and nana_nytowl_beth) Decorate the Jewish area of your zoo with this little pack! Contents: Matzo Meal Cafe (sells Kosher combo meal) Matzo Fence Matzo Observation Area Matzo Path Gelt For Gifts Gift Shop (sells combo gelt gifts) Star Of David Fence Jewish Flag Jewish Flag Observation Area Jewish Flag Path Menorah Lamp Blue And White Planter Poppy Anemone Menorah Planter Requires the latest versions of these .dll files: LANG--fern-Tek ... You can find it here. LANG--ZooTek ... You can find it here. Downloadable file contains a combined .ztd file and a folder of all the single .ztd files. If you use the combined file, you don't need the singles. Submitter Cricket Submitted 05/02/2023 Category Themed Packs1 point
-
View File ZZ Rocks - Large Fluorite Boulder by Z.Z. ZZ Rocks - Large Fluorite Boulder by Z.Z. Purchase a Large Fluorite Boulder to beautify your zoo! Submitter Cricket Submitted 05/02/2023 Category Rocks1 point
-
View File Medieval Castle by Z.Z. ZZ B Medieval Castle Your guests will enjoy being KING FOR A DAY in the Medieval Castle! They will eat, drink and be merry while they rest on their throne! They may even use the privy on their way out! The Medieval Castle is part of the Medieval Buildings, which includes the Medieval Dinner Theater, Medieval Armory Souvenirs and the Medieval Privy. Enjoy! :D Submitter Cricket Submitted 05/02/2023 Category Admin Temp Holding1 point
-
Version 1.0.0
59 downloads
ZZ B Medieval Castle Your guests will enjoy being KING FOR A DAY in the Medieval Castle! They will eat, drink and be merry while they rest on their throne! They may even use the privy on their way out! The Medieval Castle is part of the Medieval Buildings, which includes the Medieval Dinner Theater, Medieval Armory Souvenirs and the Medieval Privy. Enjoy! :D Requires the latest version of the LANG--ZooTek .dll file. You can find it here.1 point -
View File Foliage Of Israel Pack by ChirpyNytowl (Cricket and nana_nytowl_beth) This pack contains foliage common to Israel to help you celebrate Jewish heritage. Contents: Balm Of Gilead Flower Balm Of Gilead Flower Patch Blood Of The Maccabees Flower Carnation Flower Hyssop Flower Jerusalem Artichoke Flower Mandrake Flower Nard Flower Poppy Anemone Flower Poppy Anemone Flower Patch Blue Star Of Bethlehem Flower Orange Star Of Bethlehem Flower Pink Star Of Bethlehem Flower Purple Star Of Bethlehem Flower White Star Of Bethlehem Flower Yellow Star Of Bethlehem Flower Aleppo Oak Tree Aleppo Pine Tree Almond Tree Bay Laurel Tree Carob Tree Cypress Oak Tree Doum Palm Tree Fig Tree Gharqad Tree Hackberry Tree Holly Oak Tree Judas Tree Juniper Tree Lebanon Cedar Tree Mount Tabor Oak Tree Mulberry Tree Olive Tree Plane Tree Pomegranate Tree Stone Pine Tree Sycamore Tree Syrian Ash Tree Syrian Maple Tree Terebinth Tree Twisted Acacia Tree Twisted Juniper Tree Downloadable file contains a combined .ztd file and a folder of all the single .ztd files. If you use the combined file, you don't need the singles. Submitter Cricket Submitted 05/02/2023 Category Foliage1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point