SRL Archive - First Scripts

Artisan Smelter - First Script EVAR


cbrems

2015-02-07 18:32:29

Finally got tired of waiting for someone to do this, so I gave it a whirl. Great idea for use in conjunction with Mayor's west bank miner and ironmen. :)

Okay boys, attached below in Simba code will be my artisan smelter script.
All I was able to do is thanks to @The Mayor and his excellent beginner guide :)

The script is very sketchy in my opinion, and would probably be considered shotty work, I'm looking for ideas to improve it majorly before releasing it outside of this forum.

Current issues I'm aware of:
-Is 100% dependent on Tboxes/mouse boxes. Meaning if somehow I get off the path the script will fail.
-There is a lack of failsafe -Added in ability to close script if it fails a certain number of times to perform an action.
-No DTM for anvil due to lack of ability to distinguish color in this area … I'd really love to fix this if you have any ideas.
-Not able to relog after 6. I purposefully didn't put code in it because the script needs to be started with an empty inventory, odds are it wont be empty upon relog.
-Lag would potentially very easily break the script due to using wait functions to move on to the next steps.
-Camera angle needs to remain at the setting the script sets at default. –Adjust on start to ensure it can find bar colors
-Progress Report to be included eventually

Obviously this needs quite a lot of love, I'd be more than happy to give anyone credit who is able to help. :) The script will follow the main loop, I've tested multiple inventories with it.



program ArtisanSmelter;

{$DEFINE SMART} // Always have this to load smart
{$I SRL-6/SRL.simba} // To load the SRL include files

procedure declarePlayers();
begin
setLength(players, 1);
with players[0] do
begin
loginName := 'Username';
password := 'password';
isActive := true;
isMember := true;
world := -0; //Leave at -0 for random world.
end
currentPlayer := 0;
end;


//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//
////////////////////////////////////////////////////////////////////////////////
///////////////////Everything below here is Script Settings!////////////////////
///////////////////Only Edit if you know what you're doing!!////////////////////
////////////////////////////////////////////////////////////////////////////////
// //
////Credit to "The Mayor" and for his work in providing a great tutorial!!!!////
// //
// //
// Contributers: meep152 for removal of tboxes / adding in color recognition //
// Contributers: MasterXehanort - will use his script for future DTM addition//
//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~//
var
loadsDone: integer; XP, XPH, startingExperience: extended;
timer: TTimeMarker;

procedure withdrawIngots();
var
x, y, i: integer;
count: integer;
begin
count = 0;
if not isLoggedIn() then
exit;
writeLn ('Finding "Withdraw-Ingots" Option')
repeat
mainscreen.findObject(x, y, 8162405, 11, colorSetting(2, 0.04, 0.23),mainscreen.playerPoint,20,30,7,['ithdraw-ingots'], MOUSE_LEFT); //Find purple-ish bar to click on to pull up production screen
wait(randomRange(1300, 2000));
inc(count);
if(count > 10) then
TerminateScript(); //If script fails to find withdraw option 10 times, it will terminate
until productionScreen.isOpen;

if productionScreen.isOpen then
productionScreen.clickStart();
end;

procedure findAnvil();
var
x, y, i: integer;
count: integer;
begin
count = 0;
if not isLoggedIn() then
exit;
writeLn ('Searching for Anvil')
repeat
mainscreen.findObject(x, y, 4742750, 10, colorSetting(2, 0.39, 0.09),mainscreen.playerPoint,20,30,7,['nvil'], MOUSE_LEFT); //looks for white outline on the western edge of North Anvil
wait(randomRange(3000, 4000));
inc(count);
if(count > 10) then
TerminateScript(); //If script fails to find an anvil 10 times, it will terminate
until productionScreen.isOpen;

if productionScreen.isOpen then
begin
repeat
productionScreen.clickStart();
wait(randomRange(3000, 4000));
until not (productionScreen.isOpen);
end;
end;

procedure waitToSmith();
begin
writeLn('Waiting for progress screen to close!');
repeat
wait(7000);
until (not progressScreen.isOpen()); //Repeats 7 second wait until progress screen closes
end;

procedure depositArmour();
var
x, y : integer;
count: integer;
begin
count = 0;
repeat
mainscreen.findObject(x, y, 1118482, 2, colorSetting(0, 0, 0), mainscreen.playerPoint, 25, 15, 30, ['eposit-armour'], MOUSE_LEFT);
wait(randomRange(2000,3000));
until tabBackpack.count() < 10;
inc(LoadsDone);
inc(count);
if(count > 10) then
TerminateScript(); //Terminates script if fail to find deposit chute 10 times

end;

//Ashaman Progress Report - modified from Taric's Cosher Script
procedure progressReport();
var
ingotsSmithed, xp, XPH: integer;
begin
ClearDebug;

ingotsSmithed := (LoadsDone * 28);
XP := (ChatBox.getXPBar - Round(StartingExperience));
XPH := Round(XP * (3600.0 / (GetTimeRunning / 1000.0)));

writeLn('=-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-=');
writeLn('==== Artisan Smelter Conglomeration ');
writeLn('=== Time Ran: ' + timeRunning );
writeLn('== Ingots Smithed: ' + intToStr(ingotsSmithed));
writeLn('== Loads Done: ' + intToStr(loadsDone));
writeLn('=== Smithing Experience Gained: ' + intToStr(xp));
writeLn('==== Smithing Experience Per Hour: ' + intToStr(XPH));
writeLn('=-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-=');
end;


begin //main loop
clearDebug(); // Clear the debug box
smartEnableDrawing := true; // So we can draw on SMART
setupSRL(); // Load the SRL include files
declarePlayers(); // Set up your username/pass

repeat
if not isLoggedIn() then // If player isn't logged in then
begin
players[currentPlayer].login(); // Log them in
exitTreasure(); // Exit treasure hunter
minimap.setAngle(MM_DIRECTION_NORTH); // Make compass north and angle high
mainScreen.setAngle(MS_ANGLE_HIGH);
end;

withdrawIngots();
findAnvil();
waitToSmith();
depositArmour();
progressReport();
until(false);
end





-I'd really like for you guys to be able to give it a shot if you wish. Currently to start the script you can be either logged in or out, but your inventory needs to be completely empty, ore needs to be predeposited in the smelter and you must stand on the south side of the deposit chute, directly on the west side of the anvil. Check production screen to be on (it uses it for the wait procedure). It is set up only for Iron Ingot i, I have no intentions of making it capable of more at this point in time.

Let me know what you all think. :)

edit: fixing simba code
edit: don't believe antiban code is working. I will leave it in for now, but I don't think the "randomCameraAngle" movement is good to have because it may break the script.

The Mayor

2015-02-07 20:16:18

We have another pro scripter up in here :p

How much XP/h is this? Do you need to put your own ore in there?

ignorant

2015-02-07 20:27:44

Nice :D

I was thinking about attempting this too but it looks like theres one now xd

cbrems

2015-02-07 23:07:51

From: The Mayor
We have another pro scripter up in here :p

How much XP/h is this? Do you need to put your own ore in there?


If you do it perfectly then 40k an hour.

With the script I'd expect around 32-35k maybe. I know there will be room in the future if I'm able to perfect the movements between actions instead of using wait(randomRange) and guessing how long I need to wait until the next action. If I were to make the script even better it would switch which type of armor it's making as the call switches for the 10% bonus xp. However, that would mean taking the text in the top corner then having the bot click the anvil and choosing the appropriate option then smithing that. Probably can be done, I'm not there yet lol

You do need to put your own ore in. It can hold 4k noted iron, just deposit it beforehand and you'll be set for a long time.
4000 ore / 28 per inventory = 142.8 inventories.
1 inventory = 252 seconds.
143 (rounded up) inventories * 252 secs = 600 minutes worth of actual smithing time before you need to refill.

The Mayor

2015-02-08 01:24:48

From: cbrems
If you do it perfectly then 40k an hour.

With the script I'd expect around 32-35k maybe. I know there will be room in the future if I'm able to perfect the movements between actions instead of using wait(randomRange) and guessing how long I need to wait until the next action. If I were to make the script even better it would switch which type of armor it's making as the call switches for the 10% bonus xp. However, that would mean taking the text in the top corner then having the bot click the anvil and choosing the appropriate option then smithing that. Probably can be done, I'm not there yet lol

You do need to put your own ore in. It can hold 4k noted iron, just deposit it beforehand and you'll be set for a long time.
4000 ore / 28 per inventory = 142.8 inventories.
1 inventory = 252 seconds.
143 (rounded up) inventories * 252 secs = 600 minutes worth of actual smithing time before you need to refill.


That is actually pretty good. Do you just need iron, or do you have to put other stuff in there too?

Enigmatic

2015-02-08 03:06:05

From: The Mayor
That is actually pretty good. Do you just need iron, or do you have to put other stuff in there too?


You can put three types of ore in it, Iron, Steel and Mithril (?).
And three types of tiers from the ore one to three, three being the best xp/h.

I was going to do an Artisian Bot but for the steel tracks, I had same problems as you sometimes it would totally screw up if there was even a tiny bit of lag. Hopefully you get to finish the script.

cbrems

2015-02-08 03:09:16

From: The Mayor
That is actually pretty good. Do you just need iron, or do you have to put other stuff in there too?


Only iron =D
It's really odd actually because the 1 iron bar when mined is around 40 xp? no idea, just tossing a number
The iron bar is then translated into either 100 or 110 xp based on if you're smithing the one that has the bonus.

After letting the script run for a few more hours, it has failed and ends up walking me to other spots around Fally.
The script has had partial done inventories so that tells me it messed up in the waiting period for some reason. I would make sure to keep some what of an eye on it at this point. I erased the antiban() portion of the main loop and deleted the procedure completely from the script I edit, maybe that is messing up my waiting procedure some how.

TL;DR - Yes, only put in iron. also I need to add fail safes ASAP. Will try my best to tweak it tomorrow.

cbrems

2015-02-08 03:13:23

From: Enigmatic
You can put three types of ore in it, Iron, Steel and Mithril (?).
And three types of tiers from the ore one to three, three being the best xp/h.

I was going to do an Artisian Bot but for the steel tracks, I had same problems as you sometimes it would totally screw up if there was even a tiny bit of lag. Hopefully you get to finish the script.


I currently made this for iron. But, I'm sure with minimal tweaking you could allow it to do other ores. Artisan's does up to rune, but I'm making this script for the sake of my ironman atm. I think if I get the hang of it I'd like to add it other things so I can learn some more about the scripting, but not currently in the plans.


He is right in saying it goes up to tier three, it is the best xp per hour but generally it is very expensive, iron i is the most efficient in terms of gp/xp, and the xp is decent for ironmen.

I will finish the script :) Probably gunna perfect it and apply with it for members maybe … lotta learning to do tho

Enigmatic

2015-02-08 04:54:12

From: cbrems
I currently made this for iron. But, I'm sure with minimal tweaking you could allow it to do other ores. Artisan's does up to rune, but I'm making this script for the sake of my ironman atm. I think if I get the hang of it I'd like to add it other things so I can learn some more about the scripting, but not currently in the plans.


He is right in saying it goes up to tier three, it is the best xp per hour but generally it is very expensive, iron i is the most efficient in terms of gp/xp, and the xp is decent for ironmen.

I will finish the script :) Probably gunna perfect it and apply with it for members maybe … lotta learning to do tho


I would recommend you to read the guide in the quick links tab on how to make a script that is good enough for members application.
At the moment this script is a bit to simple to make it into members but who knows it might get accepted.

Try it out and you might find yourself in the members group, good luck to you!

Also
@The Mayor Sorry for my language, still getting used to the rules.

cbrems

2015-02-12 18:27:42

Small update:

I want to get away from using TBoxes, they seem unreliable to me, I want to be able to add in antiban that would most likely involve rotating the screen.

Anyways, the only update for this is that I changed the Withdraw() procedure to be based off the color of the purple ingot on the south side.

I would love ideas to tweak and improve the script.

meep152

2015-02-20 01:41:15

So here's a minor proggy before double exp weekend:
This script ran flawlessly for 2 hours, before I manually stopped it, and I got 63k smithing exp. I did make a few color finding changes, so that the script would no longer have to use TBoxes.

program ArtisanSmelter;

{$DEFINE SMART} // Always have this to load smart
{$I SRL-6/SRL.simba} // To load the SRL include files

procedure declarePlayers();
begin
setLength(players, 1);
with players[0] do
begin
loginName := 'username';
password := 'password';
isActive := true;
isMember := false;
world := 8;
end
currentPlayer := 0;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////Everything below here is Script Settings!////////////////////
///////////////////Only Edit if you know what you're doing!!////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//All credit to "The Mayor" and for his work in providing a great tutorial!!!!//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////


procedure withdrawIngots();
var
x, y, i: integer;
begin
if not isLoggedIn() then
exit;
writeLn ('Finding "Withdraw-Ingots" Option')
repeat
mainscreen.findObject(x, y, 6110034, 14, colorSetting(2, 0.06, 0.04),mainscreen.playerPoint,20,30,7,['ithdraw-ingots'], MOUSE_LEFT); //Find purple-ish bar to click on to pull up production screen
wait(randomRange(1300, 2000));
inc(i);
until productionScreen.isOpen or (i >= 10);

if productionScreen.isOpen then
productionScreen.clickStart();
end;

procedure findAnvil();
var
x, y, i: integer;
begin
if not isLoggedIn() then
exit;
writeLn ('Searching for Anvil')
repeat
mainscreen.findObject(x, y, 4742750, 10, colorSetting(2, 0.39, 0.09),mainscreen.playerPoint,20,30,7,['nvil'], MOUSE_LEFT); //looks for white outline on the western edge of North Anvil
wait(randomRange(3000, 4000));
inc(i);
until productionScreen.isOpen or (i >= 10);

if productionScreen.isOpen then
begin
repeat
productionScreen.clickStart();
wait(randomRange(3000, 4000));
until not (productionScreen.isOpen);
end;
end;


procedure waitToSmith();
begin
writeLn('Waiting for progress screen to close!');
repeat
wait(7000);
until (not progressScreen.isOpen()); //Repeats 7 second wait until progress screen closes
end;

procedure depositArmour();
var
x, y : integer;
begin
repeat
mainscreen.findObject(x, y, 1645344, 2, colorSetting(2, 1.49, 1.52), mainscreen.playerPoint, 25, 15, 30, ['eposit-armour'], MOUSE_LEFT);
wait(randomRange(2000,3000));
until tabBackpack.count() < 10;
end;


begin //main loop
clearDebug(); // Clear the debug box
smartEnableDrawing := true; // So we can draw on SMART
setupSRL(); // Load the SRL include files
declarePlayers(); // Set up your username/pass

repeat
if not isLoggedIn() then // If player isn't logged in then
begin
players[currentPlayer].login(); // Log them in
exitTreasure(); // Exit treasure hunter
minimap.setAngle(MM_DIRECTION_NORTH); // Make compass north and angle high
mainScreen.setAngle(MS_ANGLE_HIGH);
end;

withdrawIngots();
findAnvil();
waitToSmith();
depositArmour();
until(false);
end.
Since the colors are kind of sensitive, they may have to be tweaked if you go to a different world.

Overall, I found your script to be very good; my only concern was that sometimes the script does not recognize the progress screen as being open (causing inventories to only be partially completed), because the "Current Instructions" interface blocks part of the progress screen. However, this may be an issue with simba itself, and a quick fix is to simply move the production screen over the chatbox, where it is better recognized.

As for other suggestions, maybe some kind of sps failsafe to walk back to the workshop if the player accidentally leaves? Or maybe a few mouse movements while the player is smithing. Just throwing ideas… but great script overall!

elaatl

2015-02-20 02:45:33

Looks nice would maybe use this if it wasent for the portable furnace things :p

cbrems

2015-02-20 07:40:47

From: meep152
So here's a minor proggy before double exp weekend:
This script ran flawlessly for 2 hours, before I manually stopped it, and I got 63k smithing exp. I did make a few color finding changes, so that the script would no longer have to use TBoxes.

program ArtisanSmelter;

{$DEFINE SMART} // Always have this to load smart
{$I SRL-6/SRL.simba} // To load the SRL include files

procedure declarePlayers();
begin
setLength(players, 1);
with players[0] do
begin
loginName := 'username';
password := 'password';
isActive := true;
isMember := false;
world := 8;
end
currentPlayer := 0;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////Everything below here is Script Settings!////////////////////
///////////////////Only Edit if you know what you're doing!!////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//All credit to "The Mayor" and for his work in providing a great tutorial!!!!//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////


procedure withdrawIngots();
var
x, y, i: integer;
begin
if not isLoggedIn() then
exit;
writeLn ('Finding "Withdraw-Ingots" Option')
repeat
mainscreen.findObject(x, y, 6110034, 14, colorSetting(2, 0.06, 0.04),mainscreen.playerPoint,20,30,7,['ithdraw-ingots'], MOUSE_LEFT); //Find purple-ish bar to click on to pull up production screen
wait(randomRange(1300, 2000));
inc(i);
until productionScreen.isOpen or (i >= 10);

if productionScreen.isOpen then
productionScreen.clickStart();
end;

procedure findAnvil();
var
x, y, i: integer;
begin
if not isLoggedIn() then
exit;
writeLn ('Searching for Anvil')
repeat
mainscreen.findObject(x, y, 4742750, 10, colorSetting(2, 0.39, 0.09),mainscreen.playerPoint,20,30,7,['nvil'], MOUSE_LEFT); //looks for white outline on the western edge of North Anvil
wait(randomRange(3000, 4000));
inc(i);
until productionScreen.isOpen or (i >= 10);

if productionScreen.isOpen then
begin
repeat
productionScreen.clickStart();
wait(randomRange(3000, 4000));
until not (productionScreen.isOpen);
end;
end;


procedure waitToSmith();
begin
writeLn('Waiting for progress screen to close!');
repeat
wait(7000);
until (not progressScreen.isOpen()); //Repeats 7 second wait until progress screen closes
end;

procedure depositArmour();
var
x, y : integer;
begin
repeat
mainscreen.findObject(x, y, 1645344, 2, colorSetting(2, 1.49, 1.52), mainscreen.playerPoint, 25, 15, 30, ['eposit-armour'], MOUSE_LEFT);
wait(randomRange(2000,3000));
until tabBackpack.count() < 10;
end;


begin //main loop
clearDebug(); // Clear the debug box
smartEnableDrawing := true; // So we can draw on SMART
setupSRL(); // Load the SRL include files
declarePlayers(); // Set up your username/pass

repeat
if not isLoggedIn() then // If player isn't logged in then
begin
players[currentPlayer].login(); // Log them in
exitTreasure(); // Exit treasure hunter
minimap.setAngle(MM_DIRECTION_NORTH); // Make compass north and angle high
mainScreen.setAngle(MS_ANGLE_HIGH);
end;

withdrawIngots();
findAnvil();
waitToSmith();
depositArmour();
until(false);
end.
Since the colors are kind of sensitive, they may have to be tweaked if you go to a different world.

Overall, I found your script to be very good; my only concern was that sometimes the script does not recognize the progress screen as being open (causing inventories to only be partially completed), because the "Current Instructions" interface blocks part of the progress screen. However, this may be an issue with simba itself, and a quick fix is to simply move the production screen over the chatbox, where it is better recognized.

As for other suggestions, maybe some kind of sps failsafe to walk back to the workshop if the player accidentally leaves? Or maybe a few mouse movements while the player is smithing. Just throwing ideas… but great script overall!


Thank you so much for your feedback and the time you took to edit the script!!!
Today is my birthday and so I'm going out with my friends at a different college so I wont be able to test the script or look into the ideas you put forth. I think they are great ideas and I will try to implement them. I will also give you the appropriate credit in the script of course :)

Again, thank you so much!

MasterXehanort

2015-02-20 10:33:45

From: cbrems
Small update:

I want to get away from using TBoxes, they seem unreliable to me, I want to be able to add in antiban that would most likely involve rotating the screen.

Anyways, the only update for this is that I changed the Withdraw() procedure to be based off the color of the purple ingot on the south side.

I would love ideas to tweak and improve the script.


Did a quick 30 minute build of my own artisan script. Still used mouse boxes as it was a fast draft, but I think you would like the procedures I used to find out what item will give us 10% extra xp. Also, the fixed wait time and included antiban.
Also, I shifted the main in-game production box down a little to be able to see the instructions while the production box is up.

E: Fixed up the script a little. Incorporates DTM's to find the anvil, withdraw box, deposit chute. Mousebox contained to only clicking on the production selection screen and clicking away from the anvil to exit the smithing animation when a new instruction is called out. The attached image is how my production selection screen looks after I moved it. It has to be here to use the mousebox procedures of choosing what we're making. I placed it here so the "Current Instructions" are still visible for Simba to read the text. You can move it down however far you want, so as long as the entire blue box containing the instructions is visible. Before running the script, I suggest assuring the mousebox procedures for selecting the item we're making align with the actual boxes we are meant to click.

Short Proggy:


========================================================
Master Xehanorts Artisan Smithy
Time Ran: 5 Minutes and 2 Seconds
Ingots Smithed: 28
Loads Done: 1
Smithing Experience Gainzzzz: 3108
Smithing Experience Per Hour: 37011
========================================================

cbrems

2015-02-20 14:00:46

From: MasterXehanort
Did a quick 30 minute build of my own artisan script. Still used mouse boxes as it was a fast draft, but I think you would like the procedures I used to find out what item will give us 10% extra xp. Also, the fixed wait time and included antiban.
Also, I shifted the main in-game production box down a little to be able to see the instructions while the production box is up.

E: Fixed up the script a little. Incorporates DTM's to find the anvil, withdraw box, deposit chute. Mousebox contained to only clicking on the production selection screen and clicking away from the anvil to exit the smithing animation when a new instruction is called out. The attached image is how my production selection screen looks after I moved it. It has to be here to use the mousebox procedures of choosing what we're making. I placed it here so the "Current Instructions" are still visible for Simba to read the text. You can move it down however far you want, so as long as the entire blue box containing the instructions is visible. Before running the script, I suggest assuring the mousebox procedures for selecting the item we're making align with the actual boxes we are meant to click.

Short Proggy:


========================================================
Master Xehanorts Artisan Smithy
Time Ran: 5 Minutes and 2 Seconds
Ingots Smithed: 28
Loads Done: 1
Smithing Experience Gainzzzz: 3108
Smithing Experience Per Hour: 37011
========================================================



Very nice, I'm pretty new to the scripting thing and I've been so busy (senior year nursing student) so I haven't been able to put much time into researching all of this!
It sounds like you were able to fix most the issues I haven't gotten around to. If you were to release this I'd probably go ahead and start a new script :P Nice work!

MasterXehanort

2015-02-20 15:34:18

From: cbrems
Very nice, I'm pretty new to the scripting thing and I've been so busy (senior year nursing student) so I haven't been able to put much time into researching all of this!
It sounds like you were able to fix most the issues I haven't gotten around to. If you were to release this I'd probably go ahead and start a new script :P Nice work!


Mine still has A LOT of little kinks that can be fixed. Failsafes to add, better DTM's to use etc. No releases though, it was just so you had some ideas to add to yours. If anything i may leave mine as is for 99 smithing for ironman. Also, goodluck finishing out nursing.

Theron

2015-02-22 16:19:38

From: MasterXehanort
Mine still has A LOT of little kinks that can be fixed. Failsafes to add, better DTM's to use etc. No releases though, it was just so you had some ideas to add to yours. If anything i may leave mine as is for 99 smithing for ironman. Also, goodluck finishing out nursing.


your version is stable? I'm looking for a good way to get 99 smithing on my ironman lmao

the bank

2015-02-23 10:27:06

Glad to see you made it, I've been insanely busy as of late and couldn't justify making it, especially since I'm already 99 smith.

cbrems

2015-02-23 20:37:02

I'm leaving the current script code here in case anyone wants to contribute more, for now it will be released to the public.

@meep152, @MasterXehanort - If you feel you deserve more credit in the script, I will do so. I will simply be the one to release the script with no single person's name because I feel the three of us contributed quite a bit. I will be putting Master's code in to change the type of smithing in the future to allow slightly better xp/hour (not a priority). Not currently using DTM's, as I feel the color is working for now, will look into changing if issues arrive.

If I feel too many people are downloading the script without contributing (proggies / change ideas / code changes) I will remove the script and allow only to Jr. Mem+ because the idea of the site is for people to contribute as a community.

Thanks to any contributors / testers, it is greatly appreciated. :)

MasterXehanort

2015-02-24 19:39:34

From: Theron
your version is stable? I'm looking for a good way to get 99 smithing on my ironman lmao


Was stable when I was running it :o DTM's might need to be fixed though running it again. Was a quick build.

EDIT:


========================================================
Master Xehanorts Artisan Smithy
Time Ran: 3 Hours, 42 Minutes and 53 Seconds
Ingots Smithed: 1260
Loads Done: 45
Smithing Experience Gainzzzz: 139860
Smithing Experience Per Hour: 37650
========================================================

cbrems

2015-02-24 22:07:26

From: MasterXehanort
Was stable when I was running it :o DTM's might need to be fixed though running it again. Was a quick build.


I was just finishing the final touches on what the script is right now that I have released when I was looking back at the script you provided for me and it was right then I found out why the DTM didn't work for me. I never put the code in to initialize it or whatever the terminology was. So I was like screw it, I'll do it this weekend or something :)

MasterXehanort

2015-02-24 23:34:44

From: cbrems
I was just finishing the final touches on what the script is right now that I have released when I was looking back at the script you provided for me and it was right then I found out why the DTM didn't work for me. I never put the code in to initialize it or whatever the terminology was. So I was like screw it, I'll do it this weekend or something :)


The procedure initializeDTM is just to setup the DTM's being used (letting simba know what the actual DTM looks like); without it, you'll just get compile errors. The DTM's are represented as variable integers in simba. Because it is a variable, we must assign it a value. This is where the initialize/setup comes in. You're defining what the DTM is.

I always put it at the top of my scripts in case the script doesn't work, I can easily modify DTM's to see if those are the reason errors are caused. Also, this prevents unnecessary memory takeup on your computer. Each time you assign a value to a DTM, it is stored as data on your computer. If a certain procedure you're using is in the main loop (that gets repeated) contains the coding that defines a DTM variable, that's a lot of storage on your computer that will be eaten up. However, by initializing/setting them up only once, a very minute amount of data is used. If you look at my main loop (not the mainLoop() procedure, but the actual repeated loop. I only call initializeDTM once outside of the repeat.

Alternatively, you can just use freeDTM(your_DTM_Name) if you want to have the DTM's in separate procedures.

Do be careful when creating DTM's the spacing between points and tolerance of the points make or break the DTM's usefulness.