FIRS Industry Replacement Set - Development

Discuss, get help with, or post new graphics for TTDPatch and OpenTTD, using the NewGRF system, here. Graphics for plain TTD also acceptable here.

Moderator: Graphics Moderators

User avatar
NekoMaster
Tycoon
Tycoon
Posts: 4001
Joined: 16 Aug 2008 22:26
Skype: neko-master
Location: Oshawa, Ontario, CANADA

Re: FIRS Industry Replacement Set - Development

Post by NekoMaster »

andythenorth wrote:
NekoMaster wrote:Hard mode : Industries like mines and farms need supplies and good service to produce cargo, and industries that produce supplies need cargo and service to make supplies.
Neko, hard mode doesn't sound very fun to play. I won't be including that :wink:
Then you just said that Hard Mode, which is the FIRS Default, isn't very fun lol :p
Image Proud Canadian Image
Nekomasters Projects! (Downloads available on BaNaNaS!) \(>^w^<)/
# NARS ADD-ON SET 2CC | 2cc Rapid Transit For Me! (2ccRTFM) | 2cc Wagons In NML (2ccWIN)
# NML Category System (Organize your GRFS!) <- TT-Forums Exclusive Download!
User avatar
FooBar
Tycoon
Tycoon
Posts: 6553
Joined: 21 May 2007 11:47
Location: The Netherlands
Contact:

Re: FIRS Industry Replacement Set - Development

Post by FooBar »

NekoMaster wrote:Then you just said that Hard Mode, which is the FIRS Default, isn't very fun lol :p
No, he didn't.

FIRS industries don't require the engineering/farm/survey supplies to produce. In fact if you dump anything but those three into a factory, you get something out at the other end.
User avatar
George
Tycoon
Tycoon
Posts: 4363
Joined: 16 Apr 2003 16:09
Skype: george-vb
Location: Varna, Bulgaria
Contact:

Re: FIRS Industry Replacement Set - Development

Post by George »

FooBar wrote:
NekoMaster wrote:Then you just said that Hard Mode, which is the FIRS Default, isn't very fun lol :p
No, he didn't.
FIRS industries don't require the engineering/farm/survey supplies to produce. In fact if you dump anything but those three into a factory, you get something out at the other end.
Same as ECS :roll:
Image Image Image Image
User avatar
NekoMaster
Tycoon
Tycoon
Posts: 4001
Joined: 16 Aug 2008 22:26
Skype: neko-master
Location: Oshawa, Ontario, CANADA

Re: FIRS Industry Replacement Set - Development

Post by NekoMaster »

Yeah, but when I play the industries hardly ever increase production wihtout supplise when im give the mine or farm good service.
Image Proud Canadian Image
Nekomasters Projects! (Downloads available on BaNaNaS!) \(>^w^<)/
# NARS ADD-ON SET 2CC | 2cc Rapid Transit For Me! (2ccRTFM) | 2cc Wagons In NML (2ccWIN)
# NML Category System (Organize your GRFS!) <- TT-Forums Exclusive Download!
User avatar
cmoiromain
Chief Executive
Chief Executive
Posts: 655
Joined: 15 Jan 2007 21:45
Location: FRANCE
Contact:

Re: FIRS Industry Replacement Set - Development

Post by cmoiromain »

Besides, the game would be impossible to play if I understood the idea correctly. In order to produce goods, the primary industry NEEDS some cargo, but to produce that cargo you need to transform the cargo produced by the pirmary industry. So in the end, no industry will ever start producing anything.
I am little, ugly, and nasty. How do you do?
User avatar
andythenorth
Tycoon
Tycoon
Posts: 5658
Joined: 31 Mar 2007 14:23
Location: Lost in Music

Re: FIRS Industry Replacement Set - Development

Post by andythenorth »

cmoiromain wrote:Besides, the game would be impossible to play if I understood the idea correctly...in the end, no industry will ever start producing anything.
Which is very correct, and is one reason we're not doing that idea. Lock state!! :D
Also, it wouldn't be much. Muchos important to have fun :D

But enough discussion of this I feel. Neko just misunderstood somewhere, no harm done, everyone is still friends :)
All should become clear when I've finished the production code I'm working on. But that's for tomorrow! Or soon anyway :shock:
User avatar
NekoMaster
Tycoon
Tycoon
Posts: 4001
Joined: 16 Aug 2008 22:26
Skype: neko-master
Location: Oshawa, Ontario, CANADA

Re: FIRS Industry Replacement Set - Development

Post by NekoMaster »

andythenorth wrote:
cmoiromain wrote:Besides, the game would be impossible to play if I understood the idea correctly...in the end, no industry will ever start producing anything.
Which is very correct, and is one reason we're not doing that idea. Lock state!! :D
Also, it wouldn't be much. Muchos important to have fun :D

But enough discussion of this I feel. Neko just misunderstood somewhere, no harm done, everyone is still friends :)
All should become clear when I've finished the production code I'm working on. But that's for tomorrow! Or soon anyway :shock:
Hey, I didn't misunderstood, I know that the mines and farms produce some stuff, but good service and supplies help increase cargo production, thats what I ment for the Normal Mode, as for easy mode, which i think some people would like, would just mkae it so that the industries just need good, frequent service and time like the default industries to produce more.
Image Proud Canadian Image
Nekomasters Projects! (Downloads available on BaNaNaS!) \(>^w^<)/
# NARS ADD-ON SET 2CC | 2cc Rapid Transit For Me! (2ccRTFM) | 2cc Wagons In NML (2ccWIN)
# NML Category System (Organize your GRFS!) <- TT-Forums Exclusive Download!
User avatar
andythenorth
Tycoon
Tycoon
Posts: 5658
Joined: 31 Mar 2007 14:23
Location: Lost in Music

Re: FIRS Industry Replacement Set - Development

Post by andythenorth »

NekoMaster wrote:Hey, I didn't misunderstood
Hmmm, let me explain in two steps how FIRS mines and farms work :)
1. No supplies delivered: industry uses the standard random production change, so same as the normal game.
2. Deliver supplies: the industry has a 1 in 4 chance of increasing production.

That's about it for the player. Simple. There's some other detail in the code but as a player that's all you need to know: if you don't deliver supplies, it's just normal, if you deliver supplies, production might increase.
User avatar
NekoMaster
Tycoon
Tycoon
Posts: 4001
Joined: 16 Aug 2008 22:26
Skype: neko-master
Location: Oshawa, Ontario, CANADA

Re: FIRS Industry Replacement Set - Development

Post by NekoMaster »

andythenorth wrote:
NekoMaster wrote:Hey, I didn't misunderstood
Hmmm, let me explain in two steps how FIRS mines and farms work :)
1. No supplies delivered: industry uses the standard random production change, so same as the normal game.
2. Deliver supplies: the industry has a 1 in 4 chance of increasing production.

That's about it for the player. Simple. There's some other detail in the code but as a player that's all you need to know: if you don't deliver supplies, it's just normal, if you deliver supplies, production might increase.
Hmm... Well I know that, I remeber that you said in a post awhile ago that serving a industry for a while with good service may increase production. Well... is there a way so that when the game starts the indsutries will start with higher output ( over 160 units) for things like mines and farms
Image Proud Canadian Image
Nekomasters Projects! (Downloads available on BaNaNaS!) \(>^w^<)/
# NARS ADD-ON SET 2CC | 2cc Rapid Transit For Me! (2ccRTFM) | 2cc Wagons In NML (2ccWIN)
# NML Category System (Organize your GRFS!) <- TT-Forums Exclusive Download!
User avatar
NekoMaster
Tycoon
Tycoon
Posts: 4001
Joined: 16 Aug 2008 22:26
Skype: neko-master
Location: Oshawa, Ontario, CANADA

Re: FIRS Industry Replacement Set - Development

Post by NekoMaster »

Sorry for the double post, but....

The latest nightly, r296 (Oct 23rd 09) has a bug where most Manufacturing Industries like Aluminium Plants, Furniture Factories, Textile Mills, and Meat Packers produce thousands of cargo with no input, like over 10,000, though thats nice, thats not only realistic, but it ruins the fun that some people have of transporting stuff to the industry to eventually get high output.
Attachments
O_without_I.PNG
(867.54 KiB) Downloaded 1 time
Image Proud Canadian Image
Nekomasters Projects! (Downloads available on BaNaNaS!) \(>^w^<)/
# NARS ADD-ON SET 2CC | 2cc Rapid Transit For Me! (2ccRTFM) | 2cc Wagons In NML (2ccWIN)
# NML Category System (Organize your GRFS!) <- TT-Forums Exclusive Download!
User avatar
andythenorth
Tycoon
Tycoon
Posts: 5658
Joined: 31 Mar 2007 14:23
Location: Lost in Music

Re: FIRS Industry Replacement Set - Development

Post by andythenorth »

While I nibble away at some tasty code, here's a picture to entertain you...a neat logging transfer station. Nearly everything in the picture can be found for TTD somewhere or other. The truck is in HEQS, the log train is in NARS, the swivelling log loader is in ISR, and the front loader is drawn but not used in ISR (there were enough logging things in it already).

Neko - known bug. I probably shouldn't have committed that code to the repo, but I am temporarily short on backups and I wanted to make sure I had the latest code copied somewhere.
User avatar
colossal404
Chief Executive
Chief Executive
Posts: 652
Joined: 07 Mar 2009 12:48
Location: Szeged, Hungary

Re: FIRS Industry Replacement Set - Development

Post by colossal404 »

andythenorth wrote:While I nibble away at some tasty code, here's a picture to entertain you...a neat logging transfer station. Nearly everything in the picture can be found for TTD somewhere or other. The truck is in HEQS, the log train is in NARS, the swivelling log loader is in ISR, and the front loader is drawn but not used in ISR (there were enough logging things in it already).
But AFAIK there isn't any station tiles without concrete floor... :(
Image
User avatar
andythenorth
Tycoon
Tycoon
Posts: 5658
Joined: 31 Mar 2007 14:23
Location: Lost in Music

Re: FIRS Industry Replacement Set - Development

Post by andythenorth »

colossal404 wrote:But AFAIK there isn't any station tiles without concrete floor... :(
It was planned for the wood station in ISR, but not coded in v0.8. One day there'll be a v0.9...probably.
Canadian Stations Set has a platform on just one side of the tracks (in Extras).
Dave Worley made Rusty Sidings which uses a grass base.
But now we're off-topic :)
User avatar
NekoMaster
Tycoon
Tycoon
Posts: 4001
Joined: 16 Aug 2008 22:26
Skype: neko-master
Location: Oshawa, Ontario, CANADA

Re: FIRS Industry Replacement Set - Development

Post by NekoMaster »

andythenorth wrote:
colossal404 wrote:But AFAIK there isn't any station tiles without concrete floor... :(
It was planned for the wood station in ISR, but not coded in v0.8. One day there'll be a v0.9...probably.
Canadian Stations Set has a platform on just one side of the tracks (in Extras).
Dave Worley made Rusty Sidings which uses a grass base.
But now we're off-topic :)
Theres the Empty Tile (low) that looks like concret\asphalt, in the arctic and tropical climates it looks like theres snow or sand on it when on the snow or sand tiles
Image Proud Canadian Image
Nekomasters Projects! (Downloads available on BaNaNaS!) \(>^w^<)/
# NARS ADD-ON SET 2CC | 2cc Rapid Transit For Me! (2ccRTFM) | 2cc Wagons In NML (2ccWIN)
# NML Category System (Organize your GRFS!) <- TT-Forums Exclusive Download!
User avatar
andythenorth
Tycoon
Tycoon
Posts: 5658
Joined: 31 Mar 2007 14:23
Location: Lost in Music

Re: FIRS Industry Replacement Set - Development

Post by andythenorth »

Here's some code for your entertainment. What is it for? It's production control code for the Machine Shop. How does it work? *Magic*

Code: Select all

//No action 1 for industries, as graphics are defined by the industry-tile feature.

//Action 2 industry special features


//3 input cargos
//2 output cargos
//1:1 production ratio input:output 
//50:50 distribution to output cargos C1 output = 50% total input, C1 output = 50% total input


//Production callback 
-1 * 0 02 0A A0 //-1 * 0 0A <set-id>
	01 //version
	07  08  09 //<subtract-in-1..3>
	0A  0A //<add-out-1..2>
	00 //don't repeat

-1 * 0 02 0A B9 //add up total cargo produced...for this industry output is split 50:50, so only bother setting one register
    89 // 
      7C 04 20  \dxFFFFFFFF //get stored amount for production from cargo 1
      \2+ 7C 05 20  \dxFFFFFFFF //get stored amount for production from cargo 2
      \2+ 7C 06 20  \dxFFFFFFFF //get stored amount for production from cargo 3 
      \2/ 1A 20 \d02 //divide by number of output cargos for this industry
      10 1A 20 \dx0A //store in persistent storage (for debug only, can be commented if not in use)
      \2sto 1A 00 \dx0A //store in register
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       A0 00  00 00 00 00  00 00 00 00
     A0 00 //default

-1 * 0 02 0A B8 //calculate amount of input cargo actually processed
    89 // 
      7C 06 20  \dxFFFFFFFF //get stored amount for production from cargo 3
      \2* 7C 03 20  \dxFFFFFFFF //multiply production amount by production ratio 
      10 1A 20 \dx09 //store in persistent storage (for debug only, can be commented if not in use)
      \2sto 1A 00 \dx09 //store in register
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       B9 00  00 00 00 00  00 00 00 00
     B9 00 //default

-1 * 0 02 0A B7 //calculate amount of input cargo actually processed
    89 // 
      7C 05 20  \dxFFFFFFFF //get stored amount for production from cargo 2
      \2* 7C 02 20  \dxFFFFFFFF //multiply production amount by production ratio 
      10 1A 20 \dx08 //store in persistent storage (for debug only, can be commented if not in use)
      \2sto 1A 00 \dx08 //store in register
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       B8 00  00 00 00 00  00 00 00 00
     B8 00 //default

-1 * 0 02 0A B6 //calculate amount of input cargo actually processed
    89 // 
      7C 04 20  \dxFFFFFFFF //get stored amount for production from cargo 1
      \2* 7C 01 20  \dxFFFFFFFF //multiply production amount by production ratio 
      10 1A 20 \dx07 //store in persistent storage (for debug only, can be commented if not in use)
      \2sto 1A 00 \dx07 //store in register
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       B7 00  00 00 00 00  00 00 00 00
     B7 00 //default

-1 * 0 02 0A B5 //store lower value of: (cargo waiting divided by prod ratio for cargo) or (output limit for produced cargo) 
    89 // 
      42 20  \dxFFFFFFFF // cargo waiting
      \2/ 7C 03 20  \dxFFFFFFFF //divide cargo waiting by production ratio to get calculated production value 
      \2< 7C 00 20  \dxFFFFFFFF //result = min(calculated production value, output limit for produced cargo)
      10 1A 00 \dx06 //store in persistent storage (could use ordinary register, but this is easier to debug)
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       B6 00  00 00 00 00  00 00 00 00
     B6 00 //default

-1 * 0 02 0A B4 //store lower value of: (cargo waiting divided by prod ratio for cargo) or (output limit for produced cargo) 
    89 // 
      41 20  \dxFFFFFFFF // cargo waiting 
      \2/ 7C 02 20  \dxFFFFFFFF //divide cargo waiting by production ratio to get calculated production value
      \2< 7C 00 20  \dxFFFFFFFF //result = min(calculated production value, output limit for produced cargo)
      10 1A 00 \dx05 //store in persistent storage (could use ordinary register, but this is easier to debug)
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       B5 00  00 00 00 00  00 00 00 00
     B5 00 //default

-1 * 0 02 0A B3 //store lower value of: (cargo waiting divided by prod ratio for cargo) or (output limit for produced cargo) 
    89 // 
      40 20  \dxFFFFFFFF // cargo waiting 
      \2/ 7C 01 20  \dxFFFFFFFF //divide cargo waiting by production ratio to get calculated production value 
      \2< 7C 00 20  \dxFFFFFFFF //result = min(calculated production value, output limit for produced cargo)
      10 1A 00 \dx04 //store in persistent storage (could use ordinary register, but this is easier to debug)
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       B4 00  00 00 00 00  00 00 00 00
     B4 00 //default

-1 * 0 02 0A B2 //store production ratios for cargo 3
    89 // using type 89 because register IDs are better specified as double words
      1A 20  \d1 //production ratio (number of units input to create 1 unit output)
      10  1A 00 \dx03 //store in persistent storage (could use ordinary register, but this is easier to debug)
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       B3 00  00 00 00 00  00 00 00 00
     B3 00     
       
-1 * 0 02 0A B1 //store production ratios for cargo 2
    89 // using type 89 because register IDs are better specified as double words
      1A 20  \d1 //production ratio (number of units input to create 1 unit output)    
      10  1A 00 \dx02 //store in persistent storage (could use ordinary register, but this is easier to debug)
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       B2 00  00 00 00 00  00 00 00 00
     B2 00
       
-1 * 0 02 0A B0 //store production ratios for cargo 1
    89 // using type 89 because register IDs are better specified as double words
      1A 20  \d1 //production ratio (number of units input to create 1 unit output)
      10  1A 00 \dx01 // store in persistent storage
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       B1 00  00 00 00 00  00 00 00 00
     B1 00

-1 * 0 02 0A BA //store output limit for produced cargo (as units of output cargo) to use when processing each input cargo
    89 // using type 89 because register IDs are better specified as double words
      1A 20  \dxFFFF // create a value (constant 1A anded (20) with following bytes); total production limit is FF FF per output cargo
      \2/ 1a 20 \d03 // divide by number of input cargos for this industry (exclude production-boosting cargos from input cargo count)
      10  1A 00 \dx00 // store in persistent storage
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       B0 00  00 00 00 00  00 00 00 00
     B0 00


// PROVIDE DEBUG INFO TO INDUSTRY WINDOW 
//Remember text stack is LIFO (like array.pop) - put values to render first in highest registers
-1 * 0 02 0A CE //store one values to text stack for debugging
    89 // 
      7c 00 20 \dxffffffff
      \2sto 1a 00 \dx104
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       STR_INFO_DEBUG 80  00 00 00 00  00 00 00 00
     STR_INFO_DEBUG 80 //default

-1 * 0 02 0A CD //store two values to text stack for debugging
    89 // 
      7c 0A 20 \dxffff
      \2ror 1a 20 \d16
      \2| 7c 0A 20 \dxffff
      \2sto 1a 00 \dx103
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       CE 00  00 00 00 00  00 00 00 00
     CE 00 //default

-1 * 0 02 0A CC //store two values to text stack for debugging
    89 // 
      7c 09 20 \dxffff
      \2ror 1a 20 \d16
      \2| 7c 08 20 \dxffff
      \2sto 1a 00 \dx102
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       CD 00  00 00 00 00  00 00 00 00
     CD 00 //default
     
-1 * 0 02 0A CB //store two values to text stack for debugging
    89 // 
      7c 07 20 \dxffff
      \2ror 1a 20 \d16
      \2| 7c 01 20 \dxffff
      \2sto 1a 00 \dx101
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       CC 00  00 00 00 00  00 00 00 00
     CC 00 //default

-1 * 0 02 0A CA //store two values to text stack for debugging
    89
      7c 02 20 \dxffff  
      \2ror 1a 20 \d16
      \2| 7c 03 20 \dxffff
      \2sto 1a 00 \dx100
    \b1 //range (stay out of the nvar=0 bear pit by checking one range, but returning same for both)
       CB 00  00 00 00 00  00 00 00 00
     CB 00 //default

//Callback 38 display additional text in fund window
-1 * 0 02 0A C0 //-1 * 0 0A <set-id>
	85 0C //<type> <variable> word-access callback
	00 FF FF //no shift, no mask
	\b2 //number of ranges to check
	  STR_INFO_MACHINESHOP 80   38 00   38 00 //return text-ID D0xx if cb 38 (fund window)
	  CA 00   3A 00   3A 00 // cb 3A (industry window)
	BA 00 //default


//Industry action 3 attach varaction2 chain to industry
-1 * 0 03 0A 01 IND_MACHINESHOP 00 \wxC0 //-1 * 0 03 09 <n-ids> <id> 00 <def-cid>
User avatar
NekoMaster
Tycoon
Tycoon
Posts: 4001
Joined: 16 Aug 2008 22:26
Skype: neko-master
Location: Oshawa, Ontario, CANADA

Re: FIRS Industry Replacement Set - Development

Post by NekoMaster »

The industries I said a few posts ago are still producing too much from thin air : |

Please fix this, I wanna play a normal game with firs :\
Image Proud Canadian Image
Nekomasters Projects! (Downloads available on BaNaNaS!) \(>^w^<)/
# NARS ADD-ON SET 2CC | 2cc Rapid Transit For Me! (2ccRTFM) | 2cc Wagons In NML (2ccWIN)
# NML Category System (Organize your GRFS!) <- TT-Forums Exclusive Download!
User avatar
lawton27
Tycoon
Tycoon
Posts: 1418
Joined: 03 Aug 2009 14:29
Location: Manchester

Re: FIRS Industry Replacement Set - Development

Post by lawton27 »

NekoMaster wrote:The industries I said a few posts ago are still producing too much from thin air : |

Please fix this, I wanna play a normal game with firs :\
Possibly add a parameter to set this so everyone can be happy?
User avatar
NekoMaster
Tycoon
Tycoon
Posts: 4001
Joined: 16 Aug 2008 22:26
Skype: neko-master
Location: Oshawa, Ontario, CANADA

Re: FIRS Industry Replacement Set - Development

Post by NekoMaster »

lawton27 wrote:
NekoMaster wrote:The industries I said a few posts ago are still producing too much from thin air : |

Please fix this, I wanna play a normal game with firs :\
Possibly add a parameter to set this so everyone can be happy?
This isn't a feature, its a bug, the industries are producing like, thousands of cargo with out input, this is not normal.

27,940 parts from nothing.... hmm. thats not a feature, defiantly a bug
Image Proud Canadian Image
Nekomasters Projects! (Downloads available on BaNaNaS!) \(>^w^<)/
# NARS ADD-ON SET 2CC | 2cc Rapid Transit For Me! (2ccRTFM) | 2cc Wagons In NML (2ccWIN)
# NML Category System (Organize your GRFS!) <- TT-Forums Exclusive Download!
User avatar
andythenorth
Tycoon
Tycoon
Posts: 5658
Joined: 31 Mar 2007 14:23
Location: Lost in Music

Re: FIRS Industry Replacement Set - Development

Post by andythenorth »

NekoMaster wrote:27,940 parts from nothing.... hmm. thats not a feature, defiantly a bug
Yep, it's a bug. It's a known bug. The production code is in between 'finished, old-style' and 'finished, new-style'.

The current nightly is pretty much broken. Normally I wouldn't commit things that break the nightly because it's kind of bad manners, but in this case I had good reasons to.

It will get fixed, but you'll need to be patient. Production code takes a long time to write, my house is a building site, I have leaking plumbing, flakey broadband, my electricity keeps turning off, and I have lots of real life work to do. You could always go back to an older nightly - download site is linked in the first post I believe?

EDIT: or, you could checkout the source, and take the code above and apply it to all of the industries that have the bug, then compile. It's actually quite easy :D
User avatar
FooBar
Tycoon
Tycoon
Posts: 6553
Joined: 21 May 2007 11:47
Location: The Netherlands
Contact:

Re: FIRS Industry Replacement Set - Development

Post by FooBar »

andythenorth wrote: EDIT: or, you could checkout the source, and take the code above and apply it to all of the industries that have the bug, then compile. It's actually quite easy :D
And then of course provide us with a diff :]
Post Reply

Return to “Graphics Development”

Who is online

Users browsing this forum: Ahrefs [Bot] and 71 guests