• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TheImaginedServer & TheImaginedClient (custom TFS and Client) - Updated 1/16/2015

Flatlander, what servers do u you have up and running right now? Im a huge fan of one of your older projects (8.6 Species)
 
Great ideas in this thread. I haven't messed around with TFS for a while but do you still have to edit the source in order to be able to add +damage% to equipment? If so you may want to add that, perhaps even introducing several types of "add X damage" such as physical, magical, element-specific, weapon-specific, etc.
 
Can I get an example of what Table you would need?

For Example: Need a table of players currently in an arena?
Code:
Make a function:
function getArenaPlayers()
local ducksauce = getPlayersOnline()
local example = {}
for _, tid in ipairs(ducksauce) do
if isInArena(tid) then
table.insert(example, tid)
end
end
return example
end

If you can give me a "live example" of something (anything) that CANNOT be done without having shared LUA states I will add it to the list :). Or even an example of something that would be annoying to do.
I have a ton of stuff on that list already and only want to add things that are needed (plus i'm scared shared LUA states would mess up a ton of shit)

Also for Creature AI, I was also thinking of adding Patrolling Creatures, but for that I am going to want to also Edit Remeres, so when making maps you can set up patrol routes and stuff, so when a creature spawns it will start its Patrol set up in spawns.xml. (Added to the list)
 
Last edited:
A few more ideas, pertaining to monsters and summons... some of these can already be done with lua, but it would be easier if it was done in the xml, and motivate people to use these features more.

  • Summon multiple monsters at once: There should be an ability to allow monster to summon more than one monster at a time (when it rolls the chance successfully, you should be able to set how many of that monster it summons at once).
example: Giant Spiders summon poison spiders, and instead of having it summon one at a time, it could summon X amount at once
It should look like this in the .xml :

Code:
        <summon name="Poison Spider" interval="1000" chance="30" max="5" count="5"/>

  • Monsters creating other monsters: Instead of just summoning a monster, it creates monsters. (meaning they don't belong to a master ).
Example: I imagine a monster like Legion from castlevania, that doesn't do much it self, but it creates hordes of monsters, and they are their own creature, and stick around even if legion dies, and they give exp individually.
It would be another group in a monsters xml file, looking almost like summons almost:

Code:
    <createList"> 
        <summon name="Poison Spider" interval="1000" chance="30" count="1"/>
        <summon name="Spider" interval="1000" chance="30" count="3"/>
    </creatList>
  • Summons being able to summon other summons: That was a mouth full, but a simple concept. Ferumbras can summon demons... then those demons should be able to summon fire elements.. and so fourth..

  • Life/Death Time Limits: This would be a time counter on how long a monster lives for, starting on when they are spawned/summoned, then dies. This is to just further customize monsters, and make them unique, and having their own unique characteristics. The time would be listed in seconds.
Code:
<lifetimer time="xxx" />

example: A ghost charmer monster could summon his own specters, but the specters would only live for 10 seconds (configurable) no matter how much damage it took.

example: Could be used for untargetable trap monsters, and you just have to survive the time they are alive for.
  • Flag Healable="x": Currently, all monsters are able to be healed with UH runes, this would be a flag for players not to be able to heal them (or receive any healing period)

  • Mana pool and mana/health cost for monster casts: Simply wanting monster to have their own mana pool when they spawn. And having the parameters to set a cost to monster spells/skills, and that cost could be health or mana. If the monster can't afford to cast, it would 'poof' when the chance is rolled (compared to it never rolling for it because it doesn't have enough resource). Also, monsters shouldn't kill themselves to cast a spell (if it doesnt have MORE than enough health, it wont cast it, and just poof)
This is how it would look like in the xml:
<Mana now="260" max="260"/>
<attack name="poison" mana="30" health="50" interval="2000" chance="12" range="7" min="-150" max="-310"/>

Example: A warlock should have it's own manapool, and it's spells have a mana cost, so it could cast a mana shield, and also have it's spam limited to it's mana pool.

  • Regen: Monsters should be able to restore mana and hp per tick like players do. These values could be positive or negative.
    This is what it would look like in the monsters.xml.


    Code:
        <health now="xxxx" max="xxxx" gainhpticks="xxx" gainhpamount="xxx"/>
        <mana now="xxxx" max="xxxx" gainmpticks="xxx" gainmpamount="xxx"/>
  • Monsters leaving 'trails': When a monster moves, it creates an item where it moves. Also, when the monster spawns, or is summons, it would instantly have the item it makes underneath it.
xml would look like this:
Code:
<trail id="xxxx" countmin="x" countmax="x" chance="xxxx"
Example: When a fire elemental moves, it always creates firefield (ie, a trail) in it's path.

Example:For an event, a treasure chest monster that leaves a trail of gold(a chance) as it runs away (this monster would die over time/regen negative health/use the life timer option)
 
Last edited:
Instead of "Trail" I think I just want to make sure the onWalk(cid, fromPos, toPos) creaturescript is in and works. Then you can just add whatever you want to happen when a creature walks to that script (gives it more functionality) Everything else is good and I have added to the main topic.
 
I disbanded all my current projects to work on this new version of TFS (I probably won't work on them again)
With this new TFS I will be able to do WAY better things with my servers, so i've been designing plans for a new server.

Current Projects I am working on:
New Species RPG (This is going to be incredible)
Raisa's Server (I love how her mind thinks up new ideas)

I play all my own servers, because if I don't have fun on them, I know you guys won't.
I am actually excited about BOTH of these servers.
 
About the shared lua states:
I once created a metatable containing all player values, including lots of custom ones, the table had over 50 different values and it had functions inside it.
So there would be like a classlike structure for player.
You could do stuff like:
Code:
local player = Player.get(cid)
player.setData(1,5) -- or whatever
player.setMaxLife(500)
--etc..
If this table could be used everywhere it would be really awesome.
It maybe could be done without shared lua states but that would require a shit ton of extra work.
Hope you get what I mean with this and shared lua states
 
Wouldn't that be information you'd want to have? If the server restarted you'd lose all information in your extended LUA-Table.
Plus you can do.
Code:
setPlayerStorageValue(cid, "customtable", table.serialize({[data] = {1, 5), [maxLife] = 500, etc})
I am going to test how big of a table you can store, store it to globalevents, then call upon it again, and use the table in a separate script.
 
Wow, those features seem to be simple but really great, and what TFS are you editing?

i have no ideas right now, but i always want for example, if i make an npc that don't move, it will always look to north when spawn, and their direction will change if someone say hi to them, can you add a simple tag like "direction" to set a npc look direction?, also that will works after a conversation, if someone say hi the npc will turn back him, and after they end the conversation the npc will turn back to his original position
 
Wouldn't that be information you'd want to have? If the server restarted you'd lose all information in your extended LUA-Table.
Plus you can do.
Code:
setPlayerStorageValue(cid, "customtable", table.serialize({[data] = {1, 5), [maxLife] = 500, etc})
I am going to test how big of a table you can store, store it to globalevents, then call upon it again, and use the table in a separate script.
You cannot serialize metatables that's one of the problems I encountered.
 
New update :) Made it so you can turn on/off line of sight in config.lua
Code:
seethroughwalls = false
--or
seethroughwalls = true
 
Storage name as string.
Code:
if getPlayerStorageValue(cid, "randomQuest") == 1 then
instead of
Code:
if getPlayerStorageValue(cid, 123123) == 1 then
 
Storage name as string.
Code:
if getPlayerStorageValue(cid, "randomQuest") == 1 then
instead of
Code:
if getPlayerStorageValue(cid, 123123) == 1 then

This is already working in my version of TFS, you can also store strings (text) not just numbers.
 
Right now I am working on World Light.
The features I am setting up will work in the config like this:
Code:
------------World Light----------
--Setting daytime to -1 will disable daytime and night time, and will use daylight as the default world light
daytime = 3600 -- number of seconds in a day (default 3600 for 1 hour days)
daypercent = 50 -- percentage of daytime/nighttime Example: 75% of 3600 is 2700 daytime and 900 nighttime (45 minutes/15 minutes),
daylight = 240 -- How light it is during the day (must be between 0-255)
nightlight = 40 -- How light it is during the night (must be between 0-255)

I will also have the following LUA Function:
Code:
setWorldLight(lightlevel)

Is there anything else you guys want me to do with World Light?
 
Well, the light items give off is in the Items.otb.

The light creatures give off is a condition that can already be changed.

World Light is the base light of the world. (Currently it goes from 240 during tibia day, to 40 during tibia night)
The above is to customize day and night time cycles, how bright it is during the day or night, and allow you to turn off the day and nighttime cycles so you can use the LUA function to set the light.
 
I can think of an addition to the light system

Based off of what floor(Z) you are, you have different coloured light.

If that isn't possible, then there is one other thing I do know is possible, and that is changing the colour of light in underground.
 
Back
Top