[Mod] Mobs Redo [1.61] [mobs]
Re: [Mod] Mobs Redo [1.12] [mobs]
The attack code uses minetest's line of sight command which only seems to work in air, not through water... but punching a mob underwater will make it attack you...
Changing a mob to an npc (say for turtles) will make sharks attack them and vice versa, but the line of sight bug in minetest may cause that to fail underwater... Will check into it more...
Changing a mob to an npc (say for turtles) will make sharks attack them and vice versa, but the line of sight bug in minetest may cause that to fail underwater... Will check into it more...
- Wuzzy
- Member
- Posts: 4804
- Joined: Mon Sep 24, 2012 15:01
- GitHub: Wuzzy2
- IRC: Wuzzy
- In-game: Wuzzy
- Contact:
Re: [Mod] Mobs Redo [1.12] [mobs]
Oh, that's nice. I'll need to check this mod out then, sooner or later.TenPlus1 wrote:The Mobs Redo modpack does make it easier to disable the mobs you dont want to appear in a world, and easier to drop in a new mod with the 'mobs' dependency inside the modpack itself which keeps everything together in one place...
-
- Member
- Posts: 4290
- Joined: Sun Sep 09, 2012 17:31
- GitHub: Sokomine
- IRC: Sokomine
- In-game: Sokomine
Re: [Mod] Mobs Redo [1.12] [mobs]
Modpacks do indeed have some disadvantages. If each mob gets to be a mod on its own, the list of mods installed gets quite long and unreadable for players wishing to see what's installed. I'd much prefer to have groups of mobs (grouped by author?) together in one mod - with the api beeing a seperate mod and shipped with minetest_game.sofar wrote: I actually do not like modpacks, at all.
Thus, what I wish for now is the following: A modpack with one mod "mobs" which contains the api - plus another mod "mobs_redo" which contains all the mobs.
The core mobs mod then needs to have a nice chat command for the server admin (or people with high enough privs) so that spawning of particular mobs can be turned on or off, similar to sapiers animals modpack. The disadvantage of this approach is that people need to know that there's such a command in the first place, and of course the initial stage of a new mob (will it be spawned or not?) has to be decided on. Maybe the configuration menu could just pop up when soneone with the appropriate privs joins a server (or, in case of singleplayer, that very singleplayer) and there's mobs registered where the core mobs mod doesn't yet know weather to spawn them or not. Such an approach could be a lot easier for the players - the list of mods gets less confusing, and the question "do you want to spawn this mob?" gets asked when the mob has been added to the world for the first time. A small picture showing the mob and a short description of what it does might be optional when registering a mob. Such information could be useful for a small guide on "creatures found on this server" that could enlighten new players as to what they might encounter.
Then there's cleanup that needs to take place in the mobs mod. All those diffrent implementations of mobs out there have to be compared and - as far as possible - merged into one. The goal is to get one mobs api placed into minetest_game.
Hmm. The mobs in the modpack version do come with a diffrent name for their entities, don't they? I.e. "kitten:kitten" vs. "mobs:kitten"? To my knowledge, there are no aliases for entities, thus switching between the versions might not be a good idea for an existing world. Maybe you ought to take the "mobs" namespace for your mobs and use "mobs_core" for the implementation of the mobs and api then.TenPlus1 wrote: I offer both types of mod because the first is the actively developed one and the modpack is for those looking to enable.disable specific mobs for their worlds... If more users wish the modpack as the default then please say and I'll change it...
Maintaining two versions (one modular, one not) would be a nightmare in short run, so please don't run two versions alongside longer than necessary to switch from one to the other.
Turtles are not known for their aggressive behaviour. Animals the size of those spawned by mods can be considered adults. Those have a solid enough shell and not too many enemies. There's no reason for them to attack a player - unless the player looks eadible.blert2112 wrote: It seems that sea-faring creatures ("fly in water") won't attack. You can swim right in front of them and they won't care one bit. If I spawn one on land it will immediately attack, if I then spawn one in the water it won't notice me at all and will go about it's happy way.
A list of my mods can be found here.
- Wuzzy
- Member
- Posts: 4804
- Joined: Mon Sep 24, 2012 15:01
- GitHub: Wuzzy2
- IRC: Wuzzy
- In-game: Wuzzy
- Contact:
Re: [Mod] Mobs Redo [1.12] [mobs]
TenPlus1, I have now made a first look in the modpack version of your mod. I noticed early that the “mobs” mod is NOT a pure API, it registers some stuff and items. I suggest that you move these registrations into a seperate mod.
Sokomine, your entire argument against a modpack is based soley on the fact that Minetest's UI is not very good. But this is a problem with Minetest's UI and not with this mod (or modpack). Just wait until the UI has improved and the problem vanishes. Currently, the mod manager already has problems with large number of mods, something like a search feature would help (for example). I have a huge number of mods installed, one modpack more or less won't change much for me.
Also, have you forgotten the checkbox for hiding modpack contents? :P
But I would be absolutely not happy if its true what you are saying, that the modpack version is de facto incompatible with the single mod version. This should clearly not be the case.
Now I even more strongly opine that there should be only one version (modpack or single mod), and I still strongly prefer a modpack.
Also, I don't like your proposed “2 mod” solution with every mob in just one mod, because this is an all-or-nothing approach. You either have to use all mobs, or none of them, but no intermediate way would be possible. I bet this could be circumvented with config files and stuff, but this is WAY less convenient, but it does not need to be.
Also, aliases would probably need to be defined as well to avoid breaking existing worlds.
Mobs is a recurring topic on GitHub, but some of them are conflicting. Some want a Lua-based mob API, some others want to have it in the engine. I suppose the discussions are not really resolved yet. :-(
Sokomine, your entire argument against a modpack is based soley on the fact that Minetest's UI is not very good. But this is a problem with Minetest's UI and not with this mod (or modpack). Just wait until the UI has improved and the problem vanishes. Currently, the mod manager already has problems with large number of mods, something like a search feature would help (for example). I have a huge number of mods installed, one modpack more or less won't change much for me.
Also, have you forgotten the checkbox for hiding modpack contents? :P
But I would be absolutely not happy if its true what you are saying, that the modpack version is de facto incompatible with the single mod version. This should clearly not be the case.
Now I even more strongly opine that there should be only one version (modpack or single mod), and I still strongly prefer a modpack.
Also, I don't like your proposed “2 mod” solution with every mob in just one mod, because this is an all-or-nothing approach. You either have to use all mobs, or none of them, but no intermediate way would be possible. I bet this could be circumvented with config files and stuff, but this is WAY less convenient, but it does not need to be.
Also, aliases would probably need to be defined as well to avoid breaking existing worlds.
Really? Is this supported by the developers? I am not sure about this.The goal is to get one mobs api placed into minetest_game.
Mobs is a recurring topic on GitHub, but some of them are conflicting. Some want a Lua-based mob API, some others want to have it in the engine. I suppose the discussions are not really resolved yet. :-(
Re: [Mod] Mobs Redo [1.12] [mobs]
Sokomine: the modpack has aliases registered for mobs so that kitten is mobs:kitten etc. to make it easier to spawn or give...
Re: [Mod] Mobs Redo [1.12] [mobs]
LOL! I think you misunderstand... Not trying to make angry attack turtles. I was talking about the sharks and crocs.Sokomine wrote:Turtles are not known for their aggressive behaviour. Animals the size of those spawned by mods can be considered adults. Those have a solid enough shell and not too many enemies. There's no reason for them to attack a player - unless the player looks eadible.
- Wuzzy
- Member
- Posts: 4804
- Joined: Mon Sep 24, 2012 15:01
- GitHub: Wuzzy2
- IRC: Wuzzy
- In-game: Wuzzy
- Contact:
Re: [Mod] Mobs Redo [1.12] [mobs]
TenPlus1, assuming I would “fix” all the “flaws” I have constantly complained about recently (especially about this mod not being “generic” and “API-ish” enough), how likely would it be to get them merged? And which “fixes” would you reject?
Re: [Mod] Mobs Redo [1.12] [mobs]
It depends what the flaws you are talking about and ideas you present... I'm always open to updating this mod...
Re: [Mod] Mobs Redo [1.12] [mobs]
It would be nice if you could tame rats by giving them 3 cheese wedges, so they turn into a (tamed) rat, or hamster. You could use some textures (As in the pelt) for the hamsters/rats.
Rainbows Rainbows! Rainbows!! Rainbows!!! Rainbows!!!! Rainbows!!!!! Rainbows!!!!!!
Re: [Mod] Mobs Redo [1.12] [mobs]
I see only "unknown item" on the air and ground.
07:05:56: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:05:56: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:10: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:26: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:32: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:34: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:34: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:38: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:38: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:41: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:46: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:50: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:58: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:07:04: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:07:10: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:07:11: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:05:56: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:05:56: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:10: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:26: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:32: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:34: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:34: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:38: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:38: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:41: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:46: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:50: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:58: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:07:04: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:07:10: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:07:11: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
- mahmutelmas06
- Member
- Posts: 367
- Joined: Mon Mar 02, 2015 13:10
- GitHub: mahmutelmas06
- IRC: mahmutelmas06
- In-game: masum
Re: [Mod] Mobs Redo [1.12] [mobs]
amadin wrote:I see only "unknown item" on the air and ground.
07:05:56: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:05:56: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:10: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:26: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:32: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:34: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:34: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:38: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:38: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:41: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:46: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:06:50: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:06:58: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:07:04: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
07:07:10: ERROR[ServerThread]: LuaEntity name "animal_rat:rat" not defined
07:07:11: ERROR[ServerThread]: LuaEntity name "adv_spawning:spawn_seed" not defined
Because you have installed animals_modpack by sapier and deleted it.
Its not related to this mod.
Re: [Mod] Mobs Redo [1.12] [mobs]
Exactly... those are all elements from a different mod entirely, but if you type:
/clearobjects
...during the game it will get rid of them all for you...
/clearobjects
...during the game it will get rid of them all for you...
-
- Member
- Posts: 37
- Joined: Sun Jun 28, 2015 19:20
- In-game: Danny
Re: [Mod] Mobs Redo [1.13] [mobs]
Thanks for this cool Mod, i had a scary and Epic battle the first day i installed it with a Dungeon Master deep underground, after diging for quite a while i finally found some Gold and Diamond Ore however a Dungeon Master did not let me just take it, fireballs flying around left and right my face with a cool sound effect, i barely survived the battle but i won and took the Gold and Diamonds, my skills and Diamond Sword were no match for that evil creature ^_^
Re: [Mod] Mobs Redo [1.13] [mobs]
Hehehe, not something you want to stumble upon in a hurry, although you should see the Dungeon Lord in Xanadu server, *scary*...
Re: [Mod] Mobs Redo [1.12] [mobs]
Thanks, 2-nd day mob mods not worked, but now working.TenPlus1 wrote:Exactly... those are all elements from a different mod entirely, but if you type:
/clearobjects
...during the game it will get rid of them all for you...
Re: [Mod] Mobs Redo [1.13] [mobs]
Prompt please, where i can increase the number of monsters undeground (caves)? I find this for mese monster "mobs:register_spawn("mobs:mese_monster", {"default:stone"}, 5, 0, 5000, 1, -20)", but i don't know what do this numbers.
Re: [Mod] Mobs Redo [1.13] [mobs]
-- mobs:register_spawn(name, {nodes to spawn above}, max light, min light, chance of spawning [lower=more], max objects in area, max height to spawn)
mobs:register_spawn("mobs:mese_monster", {"default:stone"}, 5, 0, 5000, 1, -20)
mobs:register_spawn("mobs:mese_monster", {"default:stone"}, 5, 0, 5000, 1, -20)
Re: [Mod] Mobs Redo [1.13] [mobs]
Thanks, i find your instruction about all parameters and place here for other peoples - http://github.com/tenplus1/mobs/wiki/Mob-Api
Code: Select all
Mob API
The mob api is a function that can be called on by other mods to add new animals or monsters into minetest.
mobs:register_mob(name, definition)
This functions registers a new mob as a Minetest entity.
name is the name of the mob (e.g. "mobs:dirt_monster")
definition is a table with the following fields
type the type of the mob ("monster" or "animal")
passive will mob defend itself, set to false to attack
attacks_monsters usually for npc's to attack monsters in area
group_attack true to defend same kind of mobs from attack in area
hp_min minimum health
hp_max maximum health (mob health is randomly selected between both)
physical same is in minetest.register_entity()
collisionbox same is in minetest.register_entity()
visual same is in minetest.register_entity()
visual_size same is in minetest.register_entity()
textures same is in minetest.register_entity()
although you can add multiple lines for random textures {{"texture1.png"},{"texture2.png"}},
gotten_texture alt. texture for when self.gotten value is set to true (used for shearing sheep)
child_texture texture of mod for when self.child is set to true
mesh same is in minetest.register_entity()
gotten_mesh alternative mesh for when self.gotten is true (used for sheep)
makes_footstep_sound: same is in minetest.register_entity()
follow item when held will cause mob to follow player
view_range the range in that the monster will see the playerand follow him
walk_chance chance of mob walking around
jump_chance chance of mob jumping around, set above to 0 for jumping mob only
walk_velocity the velocity when the monster is walking around
run_velocity the velocity when the monster is attacking a player
stepheight minimum node height mob can walk onto without jumping (default: 0.6)
jump can mob jump, true or false
jump_height height mob can jump, default is 6
fly can mob fly, true or false (used for swimming mobs also)
fly_in node name that mob flys inside, e.g "air", "default:water_source" for fish
damage the damage per second
recovery_time how much time from when mob is hit to recovery (default: 0.5)
knock_back strength of knock-back when mob hit (default: 3)
blood_amount number of droplets that appear when hit
blood_texture texture of blood droplets (default: "mobs_blood.png")
drops is list of tables with the following fields:
name itemname
chance the inverted chance (same as in abm) to get the item
min the minimum number of items
max the maximum number of items
armor the armor (integer)(3=lowest; 1=highest)(fleshy group is used)
drawtype "front" or "side" (DEPRECATED, replaced with below)
rotate set mob rotation, 0=front, 1.5=side, 3=back, 4.5=other side
water_damage the damage per second if the mob is in water
lava_damage the damage per second if the mob is in lava
light_damage the damage per second if the mob is in light
fall_damage will mob be hurt when falling from height
fall_speed speed mob falls (default: -10 and has to be lower than -2)
on_die a function that is called when the mob is killed
the parameters are (self, pos)
floats 1 to float in water, 0 to sink
on_rightclick its same as in minetest.register_entity()
attack_type the attack type of a monster ("dogfight", "shoot", "explode")
arrow if the attack_type="shoot" needed: the entity name of the arrow
shoot_interval the minimum shoot interval
shoot_offset +/- value to position arrow/fireball when fired
sounds this is a table with sounds of the mob
random random sounds during gameplay
war_cry sound when starting to attack player
attack sound when attacking player
damage sound when being hit
death sound when killed
jump sound when jumping
explode sound when exploding
distance maximum distance sounds are heard from (default is 10)
animation a table with the animation ranges and speed of the model
stand_start
stand_end
walk_start
walk_end
run_start
run_end
punch_start
punch_end
speed_normal
speed_run used when mob runs behind player to make animation faster
replace_what group if items to replace e.g. {"farming:wheat_8", "farming:carrot_8"}
replace_with replace with what e.g. "air" or in chickens case "mobs:egg"
replace_rate how many seconds to wait until next check
replace_offset +/- value to check specific node to replace
The mob api also has some preset variables and functions that it will remember for each mob
self.gotten this is used for obtaining milk from cow and wool from sheep
self.horny when animal fed enough it is set to true and animal can breed with same animal
self.child used for when breeding animals have child, will use child_texture and be half size
self.owner string used to set owner of npc mobs, typically used for dogs
self.order set to "follow" or "stand" so that npc will follow owner or stand it's ground
on_die a function that is called when mob is killed
do_custom a custom function that is called every second while mob is active
mobs:register_spawn(name, nodes, max_light, min_light, chance, active_object_count, max_height)
mobs:space_specfic(name, nodes, neighbors, min_light, max_light, interval, chance, active_object_count, min_height, max_height)
These functions register a spawn algorithm for the mob. Without this function the call the mobs won't spawn.
name is the name of the animal/monster
nodes is a list of nodenames on that the animal/monster can spawn on top of
neighbors is a list of nodenames on that the animal/monster will spawn beside (default is {"air"} for mobs:register_spawn)
max_light is the maximum of light
min_light is the minimum of light
interval is same as in register_abm() (default is 30 for mobs:register_spawn)
chance is same as in register_abm()
active_object_count mob is only spawned if active_object_count_wider of ABM is <= this
min_height is the maximum height the mob can spawn
max_height is the maximum height the mob can spawn
For each mob that spawns with this function is a field in mobs.spawning_mobs. It tells if the mob should spawn or not. Default is true. So other mods can only use the API of this mod by disabling the spawning of the default mobs in this mod.
mobs:register_arrow(name, definition)
This function registers a arrow for mobs with the attack type shoot.
name is the name of the arrow
definition is a table with the following values:
visual same is in minetest.register_entity()
visual_size same is in minetest.register_entity()
textures same is in minetest.register_entity()
velocity the velocity of the arrow
drop if set to true any arrows hitting a node will drop as item
hit_player a function that is called when the arrow hits a player; this function should hurt the player
the parameters are (self, player)
hit_mob a function that is called when the arrow hits a mob; this function should hurt the mob
the parameters are (self, player)
hit_node a function that is called when the arrow hits a node
the parameters are (self, pos, node)
mobs:register_egg(name, description, background, addegg)
This function registers a spawn egg which can be used by admin to properly spawn in a mob.
name this is the name of your new mob to spawn e.g. "mob:sheep"
description the name of the new egg you are creating e.g. "Spawn Sheep"
background the texture displayed for the egg in inventory
addegg would you like an egg image in front of your texture (1=yes, 0=no)
mobs:explosion(pos, radius, fire, smoke)
This function generates an explosion which removes nodes in a specific radius and replace them with fire or air. Protection nodes, obsidian and locked chests will not be destroyed although a normal chest will drop it's contents.
pos centre position of explosion
radius radius of explosion (typically set to 3)
fire should fire appear in explosion (1=yes, 0=no)
smoke should smoke appear in explosion (1=yes, 0=no)
sound sound played when mob explodes
mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, force_take, replacewith)
This function is generally called inside the on_rightclick section of the mob api code, it provides a chance of capturing the mob by hand, using the net or magic lasso items, and can also have the player take the mob by force if tamed and replace with another item entirely.
self mob information
clicker player information
chance_hand chance of capturing mob by hand (1 to 100) 0 to disable
chance_net chance of capturing mob using net (1 to 100) 0 to disable
chance_lasso chance of capturing mob using magic lasso (1 to 100) 0 to disable
force_take take mob by force, even if tamed (true or false)
replacewith once captured replace mob with this item instead
Re: [Mod] Mobs Redo [1.13] [mobs]
TenPlus1, enjoying your mod it's the best. I poked around and I noticed there was a missing png for the tribute. Any chance of getting one for that?
Re: [Mod] Mobs Redo [1.13] [mobs]
tribute ???
Re: [Mod] Mobs Redo [1.13] [mobs]
Line 74 in the rabbit.lua file. There isn't a png that goes with it in the textures folder. I did a /giveme for the lava orb, and a /spawnentity right clicked and the darn thing almost killed me XD
Now all we need is a Holy Hand Grenade:)
Now all we need is a Holy Hand Grenade:)
- ExeterDad
- Member
- Posts: 1717
- Joined: Sun Jun 01, 2014 20:00
- In-game: ExeterDad
- Location: New Hampshire U.S.A
Re: [Mod] Mobs Redo [1.13] [mobs]
Evil Bunny! Love it TenPlus1 :P
HOMETOWN -Our little server. Keep the HOMETOWN chatter @ http://hometownserver.com - Our server map: http://media.hometownserver.com
Re: [Mod] Mobs Redo [1.13] [mobs]
Exeter bunny!
Many of my mods are now a part of Minetest-mods. A place where you know they are maintained!
A list of my mods can be found here
A list of my mods can be found here
Re: [Mod] Mobs Redo [1.13] [mobs]
Hi,
I have been playing with creating coloured sheep for mobs_redo. I can get this to work fine (changing mob picture, dropping coloured wool etc) but I can't get the colour of the sheep to be saved (all sheep are white on reloading game). The colour is stored in an attribute called self.colour
Can you tell me how to adjust what is saved?
Many thanks.
I have been playing with creating coloured sheep for mobs_redo. I can get this to work fine (changing mob picture, dropping coloured wool etc) but I can't get the colour of the sheep to be saved (all sheep are white on reloading game). The colour is stored in an attribute called self.colour
Can you tell me how to adjust what is saved?
Many thanks.
Who is online
Users browsing this forum: Ahrefs [Bot], Google [Bot] and 30 guests