• 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!
  • If you're using Gesior 2012 or MyAAC, please review this thread for information about a serious security vulnerability and a fix.

Shadow’s Free scripting services

Shadow_

Veteran OT User
Joined
Jun 2, 2018
Messages
1,016
Solutions
31
Reaction score
429
Hello everybody,
Last week words are spreading that im not capable of scripting/programming where its absolutely not the case, ppl loves interacting with drama even tho they don’t understand shit, so i decided to do free scripts For anybody willing to use this opportunity, to request a script you need to understand the following :

1) your request should be direct.

2) don’t include actionids or itemids for the code i will implement the logic and you will implement it into your server

3) All codes are OTBR/TFS supported

4) you need you explain as clear as possible
and as small paragraph as possible too

5) requesting a script doesn’t mean i agreed to write it

6) finally, all requests will be shared in thread in resources and links will be sent on this post.

Cheers! It looks like a good day start :)
 

Leesne

i r peekay
Joined
Dec 4, 2017
Messages
368
Solutions
35
Reaction score
222
Location
UK
You are continuing the "drama", by bringing the "drama" back up and saying people don't "know shit".

Why turn something positive (free services for people) into a negative by talking about drama which ended like a week ago?

If someone was dissing me as a programmer, I wouldn't go out of my way to prove myself.
Take a leaf out of my book, I couldn't give two shits what people think about me and my skills.
The people who need to know what I can do, know. Much less drama in my life from the day I stopped caring (many years ago) xD

I hope some good requests come out of this.
All the best.
 

Madusa

Member
Joined
Sep 8, 2022
Messages
51
Reaction score
10
Location
Egypt
1-I want a script to upgrade items including weapons because most scripts are on otland for sources above tfs 1.2 and some weapons don't work and I can't upgrade stick strikes{ tibia 8.0}
2-I want npc and monster taks and the player can choose the mission he wants and if he finishes the mission he gets the reward automatically, he doesn't have to go back to the npc to get the reward
3- You don't have to do everything I ask, but I asked for what I wanted, and someone else might ask for something I like and I use. Also, I love people who help others. I wish you success
 

peteralto

Member
Joined
Nov 1, 2020
Messages
65
Solutions
1
Reaction score
13
A prison system to punish player.

You would send them to prison for talkactions, setting a penalty X (storage). (/prison nick, 600)

They would be teleported to a prison, in this location there would be a mine with some rock piles, which would receive an actionID.

The player must mine these rocks to collect a certain item, with an X% chance of finding that item.

When collecting the item he must take it to a wagon, with another actionID, which will count these items.

Reaching an X value the player would be released (thrown to the temple)
 

Nokturno

Not a human
Joined
Aug 7, 2009
Messages
532
Solutions
2
Reaction score
375
what about an !invite, !join party talkaction,
where player invites people via talkaction !invite player_x2 and the 2nd player recive a mesage like " player_XX has invite you to a party, to accept the invitation type !join player_xx"
:)
 

Extrodus

|| Blazera.net ||
Premium User
Joined
Dec 22, 2008
Messages
2,636
Solutions
7
Reaction score
441
Location
Canada
Before my post; I just want to say you are more than knowledgeable when it comes to coding and you are also trustworthy. I have even sent you files; then didnt end up needing the service and you didn't release files or even get upset. You understood, accepted, and we still talk to this day. However, like you mentioned; people here love drama. Anyways; here is a concept I wrote up the other day to try to include bestiary in 8.6; would be super simple to just add a tracker but wanted to make it more advanced with a reward system.

Script Concept:
Track individual monster kills, when player reaches 1000 kills they unlock access to boss portal.
Enter portal if kills 1000+ player enters room and boss is automatically spawned based on tier of monster killed.

For monsters HP is 15000+ spawn random boss from legendary tier, 5000+ epic, 1000+ uncommon, 0-1000 common.

Kill 1000~ rotworms (65hp) = Common Boss
Kill 1000~ demons (8200hp) = Epic Boss

Basically when the player kills 1000, it will add a storage to the player of the tier.
Player kills 1000 rotworms "Congratulations, you've killed 1000 rotworms and unlocked the common boss teleporter"

Boss Tiers:
Legendary
= Orshabaal, etc
Epic = Rare deco + outfit item bosses
Uncommon = Killing In The Name Of Bosses
Common = Scrapper Arena Bosses, Grynch Clan Goblin Mass Attack, Small Mini Raids of Common Mobs.
 

ralke

(҂ ͠❛ ෴ ͡❛)ᕤ
Joined
Dec 17, 2011
Messages
1,202
Solutions
27
Reaction score
669
Location
Santiago - Chile
GitHub
ralke23
Twitch
ralke23
Before my post; I just want to say you are more than knowledgeable when it comes to coding and you are also trustworthy. I have even sent you files; then didnt end up needing the service and you didn't release files or even get upset. You understood, accepted, and we still talk to this day. However, like you mentioned; people here love drama. Anyways; here is a concept I wrote up the other day to try to include bestiary in 8.6; would be super simple to just add a tracker but wanted to make it more advanced with a reward system.

Script Concept:
Track individual monster kills, when player reaches 1000 kills they unlock access to boss portal.
Enter portal if kills 1000+ player enters room and boss is automatically spawned based on tier of monster killed.

For monsters HP is 15000+ spawn random boss from legendary tier, 5000+ epic, 1000+ uncommon, 0-1000 common.

Kill 1000~ rotworms (65hp) = Common Boss
Kill 1000~ demons (8200hp) = Epic Boss

Basically when the player kills 1000, it will add a storage to the player of the tier.
Player kills 1000 rotworms "Congratulations, you've killed 1000 rotworms and unlocked the common boss teleporter"

Boss Tiers:
Legendary
= Orshabaal, etc
Epic = Rare deco + outfit item bosses
Uncommon = Killing In The Name Of Bosses
Common = Scrapper Arena Bosses, Grynch Clan Goblin Mass Attack, Small Mini Raids of Common Mobs.

This idea is great! Anyways I feel that using experience instead of HP to track the kills would be more accurate, since experience defines better which creatures are harder or not.

@onTopic

If it's possible I would like to request a complement for this

Basically what is needed it the following:
  • Use a GM command to mark season end, example: /s1end
  • Store the current player level, or their highscore rank in a storage/table/etc
  • Show season level/rank on look (depending of which one is used). Example: (S1: 257).
  • Create a door/tile/etc that asks if season level/rank is >, <, or =
  • Somehow, keep the season level/rank, on player account, even if their data is reset by query.
In advance, thanks!
Regards :)
 
OP
OP
Shadow_

Shadow_

Veteran OT User
Joined
Jun 2, 2018
Messages
1,016
Solutions
31
Reaction score
429
1.
Casting spells from actions without a caster and on given position.

2.
Npc walking on waypoints.
If i can ask what do you mean with without a caster?
because im pretty sure combat takes place based on player as a parameter which be using its data for position, DMG calculation [Formula]..etc
OR what kind of spells do you mean something like this ?

pos:customNonPlayerSpell(1) -- 1 is the first item in table customSpells
so we can now call it something different like castCustomSpell()

local customSpells = {
name = Greens,--false to not cast names
random = true, -- false will create same effect for whole spell [if true next 2 variable must have atleast 2 effectIds
distanceEffect = {56,54,34}
effect = {64,65,42}
area = {
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 1, 0, 3, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0}
}, OR createCombatArea(AREA_SQUARE1X1)

function on castCustomSpell(id)
local realArea = createCombatArea(customSpells[id]
--------- and so on if you agree on the concept i would like to create it ^^



NPC walking on waypoint[when specific thing happens or 24/7 following those waypoints?]
Post automatically merged:

1-I want a script to upgrade items including weapons because most scripts are on otland for sources above tfs 1.2 and some weapons don't work and I can't upgrade stick strikes{ tibia 8.0}
2-I want npc and monster taks and the player can choose the mission he wants and if he finishes the mission he gets the reward automatically, he doesn't have to go back to the npc to get the reward
3- You don't have to do everything I ask, but I asked for what I wanted, and someone else might ask for something I like and I use. Also, I love people who help others. I wish you success
Sorry i mentioned all codes are TFS and OTBR supported which means revscripts version atleast
Post automatically merged:

A prison system to punish player.

You would send them to prison for talkactions, setting a penalty X (storage). (/prison nick, 600)

They would be teleported to a prison, in this location there would be a mine with some rock piles, which would receive an actionID.

The player must mine these rocks to collect a certain item, with an X% chance of finding that item.

When collecting the item he must take it to a wagon, with another actionID, which will count these items.

Reaching an X value the player would be released (thrown to the temple)
I would like to see this system in my upcoming server too, i guess i will start with it
Post automatically merged:

what about an !invite, !join party talkaction,
where player invites people via talkaction !invite player_x2 and the 2nd player recive a mesage like " player_XX has invite you to a party, to accept the invitation type !join player_xx"
:)
Sure !
Post automatically merged:

Before my post; I just want to say you are more than knowledgeable when it comes to coding and you are also trustworthy. I have even sent you files; then didnt end up needing the service and you didn't release files or even get upset. You understood, accepted, and we still talk to this day. However, like you mentioned; people here love drama. Anyways; here is a concept I wrote up the other day to try to include bestiary in 8.6; would be super simple to just add a tracker but wanted to make it more advanced with a reward system.

Script Concept:
Track individual monster kills, when player reaches 1000 kills they unlock access to boss portal.
Enter portal if kills 1000+ player enters room and boss is automatically spawned based on tier of monster killed.

For monsters HP is 15000+ spawn random boss from legendary tier, 5000+ epic, 1000+ uncommon, 0-1000 common.

Kill 1000~ rotworms (65hp) = Common Boss
Kill 1000~ demons (8200hp) = Epic Boss

Basically when the player kills 1000, it will add a storage to the player of the tier.
Player kills 1000 rotworms "Congratulations, you've killed 1000 rotworms and unlocked the common boss teleporter"

Boss Tiers:
Legendary
= Orshabaal, etc
Epic = Rare deco + outfit item bosses
Uncommon = Killing In The Name Of Bosses
Common = Scrapper Arena Bosses, Grynch Clan Goblin Mass Attack, Small Mini Raids of Common Mobs.
I can do it but you will be filling the tables with bosses names like


legendaryBosses = {"Orshabaal","ghazbaran","ushriel",...etc) and so on for all tables that needs data
Post automatically merged:

This idea is great! Anyways I feel that using experience instead of HP to track the kills would be more accurate, since experience defines better which creatures are harder or not.

@onTopic

If it's possible I would like to request a complement for this

Basically what is needed it the following:
  • Use a GM command to mark season end, example: /s1end
  • Store the current player level, or their highscore rank in a storage/table/etc
  • Show season level/rank on look (depending of which one is used). Example: (S1: 257).
  • Create a door/tile/etc that asks if season level/rank is >, <, or =
  • Somehow, keep the season level/rank, on player account, even if their data is reset by query.
In advance, thanks!
Regards :)
I Agree to write it based on gesior changes in the database
 
Last edited:

Extrodus

|| Blazera.net ||
Premium User
Joined
Dec 22, 2008
Messages
2,636
Solutions
7
Reaction score
441
Location
Canada
Most certainly; that's no problem! I assume most people would want different settings anyways :)
 
OP
OP
Shadow_

Shadow_

Veteran OT User
Joined
Jun 2, 2018
Messages
1,016
Solutions
31
Reaction score
429
@Shadow_
1. Simply, instead of reading info from creature provide raw information in parameters.
2. 24/7
Sorry dami i have to reject the first one since its kinda long.
2.


Lua:
local Path = {
    Position(1057, 784, 7),
    Position(1061, 784, 7),
    Position(1061, 793, 7),
    Position(1052, 793, 7),
    Position(1052, 799, 7),
    Position(1063, 799, 7),
    Position(1063, 804, 7),
    Position(1068, 804, 7),
    Position(1068, 799, 7),
    Position(1075, 799, 7),
    Position(1075, 787, 7),
    Position(1072, 787, 7),
    Position(1072, 783, 7)
}

-- for better performance add multiple position in Path close to eachother

local function creature::WalkTo(cid, fromPos, toPos, flag) -- Limos
    local tpFlag = toPos[flag]
    if not tpFlag then
        return false
    end
 
    if fromPos.y == tpFlag.y then
        fromPos.x = fromPos.x > tpFlag.x and fromPos.x - 1 or (fromPos.x < tpFlag.x and fromPos.x + 1 or fromPos.x)
         else
        fromPos.y = fromPos.y > tpFlag.y and fromPos.y - 1 or (fromPos.y < tpFlag.y and fromPos.y + 1 or fromPos.y)
         end
        local creature = Creature(cid)
         creature:teleportTo(fromPos, true)
         if fromPos.x == tpFlag.x and fromPos.y == tpFlag.y then
             flag = flag + 1
         end
 
    local speed = creature:getSpeed()
    if not speed then
        speed = 0
    end
 
         addEvent(creatureWalkTo, 1000 - speed, cid, fromPos, toPos, flag)
end

    --Add this function on the NPC by creating him onStartup script [Should be simple let me know if you can't write it]
        creature:WalkTo(creatureWalkTo:getId(), creature:getPosition(), Path, 1)
Post automatically merged:

A prison system to punish player.

You would send them to prison for talkactions, setting a penalty X (storage). (/prison nick, 600)

They would be teleported to a prison, in this location there would be a mine with some rock piles, which would receive an actionID.

The player must mine these rocks to collect a certain item, with an X% chance of finding that item.

When collecting the item he must take it to a wagon, with another actionID, which will count these items.

Reaching an X value the player would be released (thrown to the temple)
 
Last edited:

kaincer

New Member
Joined
Jun 28, 2010
Messages
27
Reaction score
2
if possible for tfs 0.4 (8.6)

1.- a portal that appears in "A" position, that sends you to a "b" position and after 5 minutes it is removed. with this typical event function


Lua:
    ["Monday"] = {"13:00","18:00","20:00","22:00"},
    ["Tuesday"] = {"12:41","18:00","20:00","22:00"},
    ["Wednesday"] = {"00:56","18:00","20:00","22:00"},
    ["Thursday"] = {"13:00","18:00","20:00","22:00"},
    ["Friday"] = {"13:00","18:00","20:00","22:00"},
    ["Saturday"] = {"13:00","18:00","20:00","22:00"},
    ["Sunday"] = {"13:00","18:00","20:00","22:00"}

2.- A Spells of a monster in area that the damage is half of life to the opponent

Thank you
 
Last edited:

Felipe93

Ghost Member
Joined
Mar 21, 2015
Messages
1,819
Solutions
9
Reaction score
298
Location
Chile
Hey can you make a working script for tfs 1.5?

i have modified my door script so it push players in front of the door even if there is an item in front of it this work good for verticals doors but not for horizontal doors player are being pushed to the east instead of the south so @pink_panther gave me this script but it's not working
Lua:
--local verticalDoors = {
    --[1210] = 1211,
  --  [1213] = 1214,
--}

local horizontalDoors = {
    [1213] = 1214,
   -- [1210] = 1211
}
print("Door onStepOut")
function onStepOut(creature, item, fromPosition, toPosition)
    --local door = verticalDoors[item:getId()]
    --if door then
        --doRelocate(item:getPosition(), item:getPosition():moveRel(1, 0, 0))
        --item:transform(door)
       -- item:decay()
     --   return true
   -- end
    
    local door = horizontalDoors[item:getId()]
    if door then
       -- doRelocate(item:getPosition(), item:getPosition():moveRel(0, 1, 0))
       doRelocate(item:getPosition(), item:getPosition():moveRel(1, 0, 0))
        item:transform(door)
        item:decay()
        return true
    end
end
Code:
    <!-- horizontal doors -->
        <movevent event="StepOut" itemid="1213" script="vertical_horizontal_doors.lua"/>
    <movevent event="StepOut" itemid="1214" script="vertical_horizontal_doors.lua"/>
i converted it to revscript but is not working either
Code:
local verticalHorizontalDoors = MoveEvent()
verticalHorizontalDoors:type("stepout")
local verticalDoors = {
    [1210] = 1211,
}

local horizontalDoors = {
    [1213] = 1214,
}

--function onStepOut(creature, item, fromPosition, toPosition)
function verticalHorizontalDoors.onStepOut(creature, item, position, fromPosition)
    local door = verticalDoors[item:getId()]
    if door then
        doRelocate(item:getPosition(), item:getPosition():moveRel(1, 0, 0))
        item:transform(door)
        item:decay()
        return true
    end
    
    door = horizontalDoors[item:getId()]
    if door then
        doRelocate(item:getPosition(), item:getPosition():moveRel(0, 1, 0))
        item:transform(door)
        item:decay()
        return true
    end
end

verticalHorizontalDoors:register()

could you make a working script to fix this problem please?
 
Top