• 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!

Revscriptsys

I support this idea. In my opinion revscriptsys is better than the current one.
 
I like it very much. It's much better than the previous system but I don't like the lack of backward compatibility with the old system since I've got a lot of scripts I rather want to slowly rewrite.
 
Revscriptsys? Humm. It seems to be easier, but now every script must be rewritten and Lua scripters must learn this system, 'cause they must rewrite their scripts :<

Thats just one 'bad' thing about it.
This is so much better, you can do things you would have needed a source edit for before.

I never took the time to learn the old system but I'll probably learn this as it looks a look clearer :p
 
It's actually going to be really easy but time consuming, that's why we want people to actually start learning revscriptsys so we can get all the scripts done faster.

Here's conjure arrow:
Code:
local conjure_arrows = Spell:new("Conjure Arrows")
 
conjure_arrows.words       = "exevo con"
conjure_arrows.vocation    = "any"
conjure_arrows.level       = 8
conjure_arrows.mana        = 30
conjure_arrows.health      = 3
 
conjure_arrows.effect = CONST_ME_MAGIC_BLUE
 
conjure_arrows.product.id    = 2544
conjure_arrows.product.count = 15
 
conjure_arrows:register()

See? very simple.

looks a bit like visual basic :eek:
 
Here is a example I made, first LUA script ever actually :p
I'm not sure if it works but I think it should ^^


Code:
local A_Old_Man = NPC:new("A Old Man")
A_Old_Man.outfit = { type = 153,  head = 38, body =114, legs = 39, feet = 39}

A_Old_Man.greeting = "Hello there!"
A_Old_Man.farewell = "Good bye my friend."


A_Old_Man.dialog = {
    ["travel"] = "I have been traveling for a very long time.";
    ["war"] = "I have fought in many wars but now I can barely stand.";
	["friends"] = "I don't got many friends anymore, most of them died when the orcs attacked the village.";
	["edna"] = "Edna is a very old friend of mine.";
	["orcs"] = "The orcs killed my family, I wish I could avenge them..";
    ["avenge"] = "I'm too old to avenge anyone.";
    ["help"] = function(self)
	local player = self.focus
	if player.getStorageValue(3399) == 1 and Player.getStorageValue(3401) ~= 1 then
	     self:say("Welcome back!, so.. did you kill him?")
        	-- 1886 = orc trophy
	         if containsAgreement(self:listen()) and Player.getInventoryItem(1886) >= 1 then 
	             self.focus:removeitem(1886, 0, 1)
	             self:say("Thank you! Finally I'll be able to sleep at night, I don't got anything to give you but tell Edna in Xenia that I sent you for the Arhkul.")
	            -- to get the reward at Edna ^^
				player.setStorageValue(3400, 1)
				player.setStorageValue(3401, 1)
		   else 
			     self:say("I want the head as proof!")
			 end if
	-----------------------------------------------------------------------------------
	else
	
	      local LEVEL_REQ = 50
	      self:say("Would you like to help me avenge my family?")
	    if player.getLevel() >= LEVEL_REQ and  containsAgreement(self:listen()) then
	           self:say("Ok, the orcs live to the north east in the mountains, the one that killed my family is called Ok'rur. Are you sure you want	to do this?")
                    if containsAgreement(self:listen()) then
	                   self:say("Ok, head to the north east into the mountains, he lives on the top. Bring hes head back as proof. Take care."
	                   player.setStorageValue(3399, 1)
	                end if
	    else
	       self:say("Sorry but you are too young, come back when you have growed up.")
	   end if
end;
}

Edna, the npc you get the reward at:

Code:
local Edna = NPC:new("Edna")
Edna.outfit = { type = 153,  head = 0, body =58, legs = 20, feet = 39}

Edna.greeting = "Hello there!"
Edna.farewell = "Goodbye."


Edna.dialog = {
    ["magic"] = "I used to own mighty powers but the gods took them away.";
    ["gods"] = "I have 2 gods, Arhes and Aculpus.";
	["xenia"] = "This is a little town surounded by the sea.";
	["old man"] = "A old man?.. ah you must be talking about Henry, he was a great man but I haven't heard of him on a while.";
	["orcs"] = "The orcs live in the mountains north east of here, they attacked our village years ago, a lot of people died.";
    ["attack"] = "The orcs killed almost everyone in the village, I was lucky to survive as I had Henry I don't know what I would have done without him."
    ["gift"] = function(self)
	local player = self.focus
	if player.getStorageValue(3400) == 1 then
	     self:say("So henry sent you to get a reward.. would you like to have it now?")
	         if containsAgreement(self:listen()) then 
	              self:say("Here is your reward, I've been saving this..")
			       -- give the player a fire sword
			      player:addItem(createItem(2392))
				  player.setStorageValue(3400, 0)
			  else
                   self:say("Ok, you can come and get it at any time.")
			  end if	 
			  
    elseif player.getStorageValue(3401) == 1 then
	       self:say("You already got your reward.")
	else
	       self:say("A gift? I don't even know who you are.")
    end if
end;
}
 
Last edited:
Yeah :p

And whats the problem if it would be easy?..
 
well i have to say I love the new npc coding. Much better. Looking forward to it, should take a few days to get it all down. but long as its still Lua. I love the new creatureevents. Theres so many options.
 
Maybe Talaturen would be so PWNAGE and make a backwards compatibility.
 
That will not happen :p

Why do you even need backward compatibility? Stick with 8.42 until you have all your scripts updated to the new system.. I don't see the problem o_O
 
That will not happen :p

Why do you even need backward compatibility? Stick with 8.42 until you have all your scripts updated to the new system.. I don't see the problem o_O

Is the new update going to be revscripts? I thought this wasn't being done until later
 
0.4 won't be for awhile.
The OTserv team isn't even done with Revscriptsys.
 
As I'm using revscriptsys for Customia I'll post what I got ^^
Not 100% if they'll work, haven't had a chance to test (couldn't compile it >.<)
Food seller
Code:
-- NPC TYPE : Food
-- Written in Revscriptsys
-- Author: Zisly

local Thaldo = NPC:new("Thaldo")
Thaldo.outfit = { type = 273,  head = 124, body = 114, legs = 114, feet = 114}

Thaldo.greeting = "Hello $name , I offer meat and freashly baked bread."
Thaldo.farewell = "Goodbye $name , hope you come back."

Thaldo.dialog = {
 ["offer"] = "I offer food and freashly baked bread.";
 ["demon|demons"] = "Demons are big evil things who live deep under earth.";
 ["bread"] = "The bread is always fresh here.";
}


Thaldo.trade = {
    {"Meat", id=2666, buy=5};
	{"Ham", id=2671, buy=8};
	{"Bread", id=2689, buy=4};
}

Smith:
Code:
-- NPC TYPE : Smith
-- Written in Revscriptsys
-- Author: Zisly

local Smich = NPC:new("Smich")
Smich.outfit = { type = 128,  head = 58, body = 69, legs = 50, feet = 58}
-- NOTE -- Might need outfit change

Smich.greeting = "Hello there $name"
Smich.farewell = "Good bye $name"


Smich.dialog = {
 ["offer"] = "I sell and buy weapons and equipment.";
 ["saraker"] = "I've heard stories about Saraker, the leader of the demonic aliance. We all hope he doesn't decide to attack us.";
 ["demonic aliance"] = "The demonic aliance is the most feared thing here on earth, they could kill all of us if they decided to attack.";
-- NOTE -- QUEST SHOULD BE ADDED
 }

Smich.trade = {
-- The items are sorted by time and if they are shitty items or not
-- So it's easy to remove the shitty items ^^

-- Swords  (Good -- Bad items)
{'giant sword', id=2393, sell=17000};
{'ice rapier', id=2396, sell=1000};
{'fire sword', id=2392, sell=4000};
{'bright sword', id=2407, sell=10000};
--
{"sword", id=2398, buy=75, sell=25};
{'two handed sword', id=2377, sell=500};
{'sabre', id=2385, sell=10};
{'katana', id=2412, sell=30};
{'longsword', id=2397, sell=55};
{'scimitar', id=2419, sell=80};
{'serpent sword', id=2409, sell=200};
{'spike sword', id=2383, sell=700};
{'broad sword', id=2413, sell=200};

-- Axes  (Good -- Bad items)
{'dragon lance', id=2414, sell=9000};
{'fire axe', id=2432, sell=8000};
{'guardian halberd', id=2427, sell=10000};
{'naginata', id=2426, sell=1000};
{'obsidian lance', id=2425, sell=500};
{'knight axe', id=2430, sell=4000};
--
{'double axe', id=2387, sell=300};
{'battle axe', id=2378, sell=150};
{'halberd', id=2381, sell=500};
{'axe', id=2386, sell=10};
{'barbarian axe', id=2429, sell=200};
{'orcish axe', id=2428, sell=100};
{'hatchet', id=2388, sell=25};

-- Clubs  (Good -- Bad items)
{'war hammer', id=2391, sell=1200};
{'skull staff', id=2436, sell=6000};
{'dragon hammer', id=2434, sell=2000};
--
{'clerical mace', id=2423, sell=200};
{'battle hammer', id=2417, sell=150};
{'morning star', id=2394, sell=120};
{'staff', id=2401, sell=100};
{"mace", id=2398, buy=90, sell=30};

-- Helmets  (Good -- Bad items)
{'amazon helmet', id=2499, sell=29000};
{'royal helmet', id=2498, sell=30000};
{'warrior helmet', id=2475, sell=5000};
{'crown helmet', id=2491, sell=2500};
{'devil helmet', id=2462, sell=1000};
--
{'strange helmet', id=2479, sell=500};
{'mystic turban', id=2663, sell=500};
{'dark helmet', id=2490, sell=300};
{'chain helmet', id=2458, sell=25};
{'iron helmet', id=2459, sell=150};
{'soldier helmet', id=2481, sell=60};
{'steel helmet', id=2457, sell=300};
{'viking helmet', id=2473, sell=40};
{'brass helmet', 'hots', id=2460, sell=30};
{'legion helmet', id=2480, sell=20};

-- Armors  (Good -- Bad items)
{'dragon scale mail|dsm', id=2492, sell=40000};
{'magic plate armor|mpa', id=2472, sell=70000};
{'amazon armor', id=2500, sell=12000};
{'golden armor', id=2466, sell=15000};
{'crown armor', id=2487, sell=12000};
{'knight armor', id=2476, sell=5000};
{'blue robe', id=2656, sell=15000};
--
{'dark armor', id=2489, sell=1000};
{'plate armor', id=2463, sell=600};
{'brass armor', id=2465, sell=100};
{'studded armor', id=2484, sell=30};
{'scale armor', id=2483, sell=150};
{'chain armor', id=2464, sell=70};

-- Boots  (Good -- Bad items)
{'steel boots', id=2645, sell=40000};
{'boots of haste|boh', id=2195, sell=30000};
--
{'leather boots', id=2643, sell=10};

-- Legs  (Good -- Bad items)
{'crown legs', id=2488, sell=12000};
{'golden legs', id=2470, sell=50000};
{'knight legs', id=2477, sell=5000};
--
{'plate legs', id=2647, sell=800};
{'brass legs', id=2478, sell=100};
{'chain legs', id=2648, sell=50};
{'studded legs', id=2468, sell=20};

-- Shields  (Good -- Bad items)
{'demon shield', id=2520, sell=25000};
{'vampire shield', id=2534, sell=15000};
{'medusa shield', id=2536, sell=9000};
{'crown shield', id=2519, sell=8000};
{'tower shield', id=2528, sell=8000};
{'dragon shield', id=2516, sell=4000};
{'guardian shield', id=2515, sell=2000};
{'beholder shield', id=2518, sell=1000};
{'amazon shield', id=2537, sell=15000};
{'mastermind shield|mms', id=2514, sell=50000};
--
{'battle shield', id=2513, sell=100};
{'dwarven shield', id=2525, sell=150};
{'plate shield', id=2510, sell=30};
{'brass shield', id=2511, sell=10};
{'copper shield', id=2530, sell=50};
{'steel shield', id=2509, sell=70};

-- Amulets
{'platinum amulet', id=2171, sell=3000};
{'ruby necklace', id=2133, sell=3000};

-- Rings
{'golden ring', id=2179, sell=1500};
{'ring of the sky', id=2123, sell=30000};
} -- END TRADE

A Old Man (quest)
Code:
-- NPC TYPE : Quest
-- Written in Revscriptsys
-- Author: Zisly

local A_Old_Man = NPC:new("A Old Man")
A_Old_Man.outfit = { type = 153,  head = 38, body =114, legs = 39, feet = 39}

A_Old_Man.greeting = "Hello there!"
A_Old_Man.farewell = "Good bye my friend."


A_Old_Man.dialog = {
    ["travel"] = "I have been traveling for a very long time.";
    ["war"] = "I have fought in many wars but now I can barely stand.";
    ["friends"] = "I don't got many friends anymore, most of them died when the orcs attacked the village.";
    ["edna"] = "Edna is a very old friend of mine.";
    ["orcs"] = "The orcs killed my family, I wish I could avenge them..";
    ["avenge"] = "I'm too old to avenge anyone.";
    ["help"] = function(self)
    local player = self.focus
    if player.getStorageValue(3399) == 1 and Player.getStorageValue(3401) ~= 1 then
         self:say("Welcome back!, so.. did you kill him?")
-- NOTE --   1886 = orc trophy, SHOULD BE CHANGED TO A CUSTOM ITEM ID
             if containsAgreement(self:listen()) and Player.getInventoryItem(1886) >= 1 then
                 self.focus:removeitem(1886, 0, 1)
                 self:say("Thank you! Finally I'll be able to sleep at night, I don't got anything to give you but tell Edna in Xenia that I sent you for the Arhkul.")
				 -- To be used with Edna
                player.setStorageValue(3400, 1)
                player.setStorageValue(3401, 1)
           else
                 self:say("I want the head as proof!")
             end
    -----------------------------------------------------------------------------------
    else
          local LEVEL_REQ = 50
          self:say("Would you like to help me avenge my family?")
        if player.getLevel() >= LEVEL_REQ and  containsAgreement(self:listen()) then
               self:say("Ok, the orcs live to the north east in the mountains, the one that killed my family is called Ok'rur. Are you sure you want    to do this?")
                    if containsAgreement(self:listen()) then
                       self:say("Ok, head to the north east into the mountains, he lives on the top. Bring hes head back as proof. Take care."
                       player.setStorageValue(3399, 1)
                    end
        else
           self:say("Sorry but you are too young, come back when you have growed up.")
       end
end;
}

Edna Quest & Food
Code:
-- NPC TYPE : Quest & Food
-- Written in Revscriptsys
-- Author: Zisly

local Edna = NPC:new("Edna")
Edna.outfit = { type = 142,  head = 114, body = 0, legs = 95, feet = 114}

Edna.greeting = "Hello there!"
Edna.farewell = "Goodbye."

Edna.dialog = {
    ["magic"] = "I used to own mighty powers but the gods took them away.";
    ["gods"] = "I have 2 gods, Arhes and Aculpus.";
    ["xenia"] = "This is a little town surounded by the sea.";
    ["old man"] = "A old man?.. ah you must be talking about Henry, he was a great man but I haven't heard of him on a while.";
    ["orcs"] = "The orcs live in the mountains north east of here, they attacked our village years ago, a lot of people died.";
    ["attack"] = "The orcs killed almost everyone in the village, I was lucky to survive as I had Henry I don't know what I would have done without him."
    ["gift"] = function(self)
    local player = self.focus
    if player.getStorageValue(3400) == 1 then
         self:say("So henry sent you to get a reward.. would you like to have it now?")
             if containsAgreement(self:listen()) then
                  self:say("Here is your reward, I've been saving this..")
-- NOTE --  give the player a fire sword, CHANGE TO A BETTER FITTING ITEM
                  player:addItem(createItem(2392))
                  player.setStorageValue(3400, 0)
              else
                   self:say("Ok, you can come and get it at any time.")
              end    
    elseif player.getStorageValue(3401) == 1 then
           self:say("You already got your reward.")
    else
           self:say("A gift? I don't even know who you are.")
    end
end;
}

Edna.trade = {
    {"Meat", id=2666, buy=5};
	{"Ham", id=2671, buy=8};
	{"Bread", id=2689, buy=4};
}
 
Back
Top