Revscriptsys - rewolucja w ?wiecie Open Tibia!

Status
Zamknięty.

Deaven

Advanced User
Zarejestrowany
Dołączył
Marzec 25, 2009
Posty
422
Liczba reakcji
76
Spis tre?ci:
1. Co to w og?le jest?
2. Co to znaczy dla nas, u?ytkownik?w?
3. Gdzie jest ten system?
4. Przyk?adowe skrypty.


Na pocz?tek wyjasnie mo?e co to w og?le jest revscriptsys:

1.Co to w og?le jest?

Revscriptsys jest ga??zi? OTServ, jego celem jest poprawienie mo?liwo?ci pisania skrypt?w. Jedna z wa?niejszych zmian jest to, ?e wszystkie funkcje lua przedstawione s? w jako klasy, a nie wolne funkcje. Dzi?ki temu struktura bardziej logiczna.

1.1. Obiekty.
W reverscriptsys przedmioty, pod?o?a, gracze itp. przedstawione s? jako obiekty:
Kod:
 item = createItem(2543) -- Tworzenie przedmiotu
item:setCount(88) -- zmiana ilo?ci powyzszego przedmiotu
Obiekty mog? by? tworzone w skrypcie (patrz wy?ej), albo pobierane z wydarze? lub funkcji get.
Przyk?ad pobierania najwy?ej po?o?onego przedmiotu z pod?o?a o danej pozycji:

Kod:
tile = map:getTile(1024, 1024, 7) -- pobieranie pod?o?a z pozycji 1024, 1024, 7
item = tile:getTopItem() -- oraz najwy?ej po?o?onego przedmiotu
Obiekty s? trwa?e, oznacza to, ?e je?eli masz odniesienie do nich, to mo?esz je przechowywa? i modyfikowa? na 'wieki wiek?w' (do czasu zniszczenia przez powody naturalne). Wyj?tki to:
  • nak?adanieprzedmiot?w: gdy na?o?one zostan? dwie kupy ;p przedmiot?w (np. 2 razy 10 sztuk monet w jedna kupe 20 sztuk) to jeden z obiektow zostanie zniszczony (ten kt?ry nie zosta? okre?lony)


  • wylogowanie gracza: Gdy gracz robi relog, to wszystkie rzeczy jakie nosi trac? odniesienie.
Aby wywo?a? obiekt u?ywamy operat?w:
  • "." - np. Player.addMoney(player, 100) - dodaje pieni?dze dla gracza; Player to obiekt, a player to gracz kt?ry kas? otrzyma.

  • ":" - np. player:addMoney(100) - jak wy?ej, tym razem player to gracz, kt?ry otrzyma kas?.
1.2. Eventy
Revscriptsys posiada zaawansowany system event?w, pozwala to na powi?zanie(?) event?w na starcie i modyfikacji ich parametr?w.
Event'y powi?zane s? za pomoc? funkcji rejestracji. Przyjmuj? one kilka parametr?w, kt?re okre?laj? jak 'the listener works' (wybaczcie, nie wiem jak to przet?umaczy? ;/) i funkcja zwrotna, kt?ra zostanie wywo?ana gdy wyst?pi okre?lone zdarzenie.

Kod:
 function testCallback(event)
  -- Zrobi co? gdy gracz powie "test event"
end
 
-- Argumenty s? w porz?dku, typ dopasowania (w dowolnym miejscu w wiadomo?ci)
-- cAsE sensitivity, the string to look for and the callback function (tu tak?e wybaczcie)
registerGenericOnSayListener("substring", false, "test event", testCallback)
1.3. Spis funkcji i event?w.
No dobrze, teraz wiemy ju? na czym stoimy. Dla ciekawskich zamieszczam spis funkcji, event?w:
Spis funkcji:
List of Lua Functions/revscriptsys - OpenTibia Fans
Spis event?w:
List of Lua Events - OpenTibia Fans

2. Co to znaczy dla nas, u?ytkownik?w?

Zaczn? od prawdopodobnie najgorszej wie?ci:
Remere napisał:
Oh, and revscriptsys will break backwards compatibility. So be ready for it!
wink.gif
Jak widzicie pisania skrypt?w drastycznie si? zmieni, s?owa Elfa idealnie oddadz? sytuacj? ma?o zaawansowanych skrypter?w:
Elf napisał:
Obawiam si? przez to, gdy w ?ycie wejdzie revscriptsys odpadnie 98% potencjalnych pseudoskrypter?w i zostanie tylko garstka ludzi, kt?ra tak naprawd? co? umia?a i b?dzie umie?.
Pewnie zadajecie sobie pytanie: "Czy s? dobre strony tego systemu?".
Ot?? pozwol? sobie wyrazi? moj? opini? na ten temat. Przede wszystkim rola skryptera na OTSie jest najwa?niejsza, wi?c osoby na tym stanowisku s? bardzo po??dane. Jak wida?, coraz cz??ciej na to stanowisko zg?aszaj? si? ludzie m?odzi, posiadaj?cy znikom? wiedz? na ten temat. Dzi?ki nowemu systemowi, skrypter b?dzie jeszcze bardziej warto?ciow? osob? w dru?ynie, na co jak najbardziej zas?uguje. Oczywi?cie dzi?ki revscriptsys mo?liwo?ci b?d? o wiele wi?ksze, co na pewno wyjdzie na dobre. Ok, nie przed?u?ajmy.

3. Gdzie ten system?

Pewne jest to, ?e znajdzie si? w silniku OTServ w wesji 0.7.0.
Prawdopodobnie b?dzie w najnowszym TFSie (0.4).
Mo?na go tak?e ?ci?gn?? z tej strony:
SourceForge.net Repository - [opentibia] Index of /otserv/branches/revscriptsys2
Te? uwa?acie, ?e skan jest niepotrzebny? =)

4. Przyk?adowe skrypty.
Skrypt talkactions napisany 'normalnie':
Kod:
function onSay(cid, words, param, channel)
--- words = "/emote"
local text_color = TEXTCOLOR_DARKYELLOW
local separator = "*"
local pos = getCreaturePosition(cid) 

    if(param ~= '') then
        doSendAnimatedText(pos, separator..param..separator, text_color, cid) -- pos
    end
    return true
end
oraz w nowym systemie:
Kod:
local separator = "*"
local function emoteTxt(event)
    local param = event.text:sub(7)
    if param then
        sendAnimatedText(event.creature:getPosition(), separator..param..separator, TEXTCOLOR_DARKYELLOW)
    end
end
registerOnSay("beginning", false, "/emote", emoteTxt)
Eot.

To ju? koniec mojego tematu, mam nadziej?, ?e zyskali?cie dzi?ki niemu troch? wiadomo?ci. Trzeba si? przygotowa? na now? epok? w ?wiecie Open Tibia. Mam tak?e kilka pyta? do [USER]Elf[/USER]a:

  • Czy nawi?zali?cie wsp??prac? (z otfans)nad tym systemem?
  • Zak?adaj?c, ?e w TFS 0.4 b?dzie nowy system, to czy starsze wersji (0.3/0.2) b?d? dalej rozwijane?
  • Uwa?asz, ?e jest to milowy krok dla OTS?w?
  • otservlist.org na otlandzie? WTF?

Dzi?kuj? za uwag? i pozdrawiam,
Deaven.

Credits:
Autor: Deaven
Zr?d?o: OTFans.net
Zabraniam kopiowania na inne fora. Temat za?o?ony specjalnie dla tibia.net.pl!


PS popracuje nad efektem wizualnym :)
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Fajnie,albo i nie
To utrudni robienie ots.
Tylko kilka server?w b?dzie sie rozwija?o.Ci kt?rzy b?d? posiadali do?wiadczonego skryptera.
Padnie przez to i tak s?abe pod forum z gotowymi skryptami.
Pomys? utrudni ?ycie(chyba ?e stare skrypty b?d? dzia?a?y).

To tyle odemnie
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Pomys? utrudni ?ycie(chyba ?e stare skrypty b?d? dzia?a?y)
Remere napisał:
Oh, and revscriptsys will break backwards compatibility. So be ready for it!
wink.gif
Wi?c to wszystko wyja?nia.

Tylko kilka server?w b?dzie sie rozwija?o.
Tylko te najlepsze utrzymaj? si? i to jest wg. mnie du?y plus.

Kod:
Padnie przez to i tak s?abe pod forum z gotowymi skryptami.
S?dz?, ?e takie proste skrypty nadal b?d? dosy? ?atwe do zrobienia. Jednak teraz pozycja skryptera b?dzie bardziej ceniona i nauka b?dzie bardziej pop?aca?a.
Dodatkowo jak wspomnia?em chcia?bym dowiedzie? si?, czy wersje 0.2 i 0.3 b?d? dalej rozwijane, ale nie s?dz?...
 
Ostatnia edycja:
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

A mi link nie dzia?a m?g?by? zreupladowa? to?
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Moim zdaniem ten system najlepiej si? uczy? na spelach, poniewa? ich konstrukcja jest bardzo czytelna ni? wcze?niejszych wersjach, ma?y pokaz.
PHP:
local energyWave = Spell:new("Energy Wave")

energyWave.words       = "exevo mort hur"
energyWave.vocation    = {"Sorcerer", "Master Sorcerer"}
energyWave.damageType  = COMBAT_ENERGYDAMAGE
energyWave.level       = 38
energyWave.magicLevel  = 40
energyWave.mana        = 170
energyWave.aggressive  = true
energyWave.areaEffect  = MAGIC_EFFECT_ENERGY_AREA

energyWave.area        =
	{
		{" ", " ", " ", " ", "n", "n", "n", " ", " ", " ", " "},
		{" ", " ", " ", " ", "n", "n", "n", " ", " ", " ", " "},
		{" ", " ", " ", " ", "n", "n", "n", " ", " ", " ", " "},
		{" ", " ", " ", " ", " ", "n", " ", " ", " ", " ", " "},
		{"w", "w", "w", " ", " ", "n", " ", " ", "e", "e", "e"},
		{"w", "w", "w", "w", "w", " ", "e", "e", "e", "e", "e"},
		{"w", "w", "w", " ", " ", "s", " ", " ", "e", "e", "e"},
		{" ", " ", " ", " ", " ", "s", " ", " ", " ", " ", " "},
		{" ", " ", " ", " ", "s", "s", "s", " ", " ", " ", " "},
		{" ", " ", " ", " ", "s", "s", "s", " ", " ", " ", " "},
		{" ", " ", " ", " ", "s", "s", "s", " ", " ", " ", " "},
	}
	
energyWave.formula = formulaLevelMagic(0, 4.5, 0, 9.0)

energyWave:register()
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

To co ja s?dz? na ten temat to jedno: chc? si? pozby? konkurencji, bo aktualnie wszystko jest udost?pnione (pliki, mapy) - OTSy gotowe do odpalenia kt?re zarabiaj? kup? forsy.
Ja na szcz??cie nie jestem Skrypterem, co prawda zacz??em si? uczy? podstawowych rzeczy aby samemu postawi? OTSa, a to wszystko poniewa? wi?kszo?? dobrych skrypter?w to bardzo ma?a garstka os?b. Zmniejsz? j? jeszcze to nic ju? nie pozostanie... Ewentualnie serwery os?b typu: ELF, gdzie b?dzie gra?o tyle os?b ?e zaczn? si? kolejki. W ko?cu uzyskaj? to co zamierzali.
Ciekawe jak to zaowocuje w przysz?o?ci...
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

@GarQet
Nie s?dz?, aby zale?a?o im na pozbyciu si? konkurencji, a na pewno nie w taki spos?b. Pami?tasz co zrobili tw?rcy TFSa, aby u?ytkownicy nie mogli wstawia? swojego OTSa na otservlist.org? Gdyby nie interwencja ze strony otfansu to ?aden silnik TFS nie by?by na tej li?cie, wi?c w?tpi?, ?e pracuj? miesi?cami w tym celu. Tak jak pisa?em, teraz mo?liwo?ci pisania skrypt?w b?d? o wiele wi?ksze. Pewnie nie ka?dy to zauwa?y, bo nie ograniczy si? to do napisania jakiej? manaruny/czaru czy innej pierdo?y.

OTSy gotowe do odpalenia kt?re zarabiaj? kup? forsy.
Gdyby nie genialny pomys? G?siora z dodaniem sms shopu, to nie by?oby takiej plagi, niestety, nie zawsze wszystko wychodzi po naszej my?li, jednak jestem zdania, ?e takie co? by?o do przewidzenia i mo?na by?o temu zapobiec.

Ewentualnie serwery os?b typu: ELF, gdzie b?dzie gra?o tyle os?b ?e zaczn? si? kolejki. W ko?cu uzyskaj? to co zamierzali.
A co zamierzali? Co do kolejek, to jest kasa s? serwery, wi?c przy dobrym zarz?dzaniu to nie problem.
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Ruszaj?c ten watek stawiam, ?e wi?kszo?? serwer?w stanie na poziomie, kto si? na uczy przepisywa? stare skrypty na nowy system ma szanse na wybicie si?, ale je?li si? tak nie stanie to te wszystkie harpagany (?e pozwol? sobie tak to nazwa?) na kas? ludzi nie b?d? mieli co szuka? w nowych wersjach silnik?w, a co za tym idzie wi?kszo?? projekt?w typu rl mapa przestaj? istnie? i chwa?a cz?owiekowi kt?ry wymy?li? ten system, ja osobiscie mam si? zamiar na uczy? tego systemu, nawet nie wiem ile mi zejdzie, ale si? na ucz?.
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Chwa?a Elfowi, Chwa?a b?ogos?awionemu miastu P?ock dzi?ki, ?e w moim mie?cie s? tacy ludzie ;)
Dzis pisa?em z Qmplem na ten temat i doszli?my do wniosku nast?puj?cego:
to jest pi?kne wreszcie wszystkie nooby p?jd? do lamusa zostanie tylko elita
bardzo fajne i zgadzam sie w 100% z geliem zmienia si? tylko konstrukcja zasady s? podobne jeszcze raz pi?kna sprawa ?ci?gam i zaczynam skillowa? xd

Pozdrawiam,
Miziak ;)
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

hmph sry za double posta ale mam pytanie skompilowa? kto? te source jak tak to jakim kompilatorem bo mam TFS Dev-C++ v2.5 i w kite nie idzie czekam na odpowied? z g?ry thx ;)
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

?wietnie si? zapowiada, u?ycie klas bardzo mi si? podoba. Wbrew pozorom teraz b?dzie bardzo prosto pisa? skrypty :) To troszk? podobne do luowskiego "method" i tabel ;x
Chyba nawet wr?c? troch? do zabawami przy otsach ;)
Powiem Wam, ?e pierwszy raz o tym, ?e taki system wyjdzie zobaczy?em w prezentacji Elfa i by?em ciekawy

Wiesz... w sumie ja tak samo ;x

@Xart

Tak b?dzie wygl?da?y czary? Bomba ;)

@Miziak

Dev-cpp ssie :x
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Hmm, nic nowego ten system ju? jest naprawd? d?ugo opracowywany. Co do samego systemu to jest on przyjemny, bo co jest pi?kniejszego w programowaniu jak nie orientacja na obiektach? Oczywi?cie przy tym zyskuje sp?jno?? logiczn? takowy skrypt. Chocia? naprawd? my?l?c o niekt?rych rzeczach kt?re mam napisane w starym systemie, przera?a mnie fakt przepisywania ich :P
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Wed?ug mnie jest to bardzo dobry pomys?, sko?czy si? przez jaki? czas noob'stwo na forach itd, zg?aszanie si? do teamu podaj?c si? jako 'skrypter' a naprawde jest 'Copy Man' co nie umie napisa? w?asnego skryptu tylko kopiuje go z innych ?r?de? podaj?c ?e jest on jego autorstwa. Gratulacje pomys?odawcom i wykonawcom za taki pomys? :). Mam nadzieje ?e wejdzie w ?ycie jak najszybciej. :)

Pozdrawiam Arkam Shadow
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Je?li kto? by si? bardziej interesowa? w tym temacie to w moje r?ce dosta?y si? kilka nowych skrypt?w npc, moim zdaniem troch? system pisaniach tych npc do trade b?dzie do?? ?atwy, ale co innego ju? z systemem questowym, ale naj?atwiej b?dzie jak poka?e je.

PHP:
-- NPC TYPE : Quest & Food

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, sell=3};
    {"Ham", id=2671, buy=8};
    {"Bread", id=2689, buy=4};
}
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Dzi?ki skryptowi NPC, kt?ry pokaza? nam Xart, wida?, ?e nie b?dzie ju? pieprzenia si? z plikami xml. Mam te? ciekaw? wypowied?:
Od siebie tak?e dodam ciekaw? wypowied?:
Remere napisał:
No XML files. All events will use the same folder (not that the folder matters...).
Interesuj?ce, nieprawda??

Dodatkowo 'pet system':
Kod:
[LEFT][FONT=monospace][COLOR=Black]local summonPet = Spell:new("Summon Pet")
local pets = {}

summonPet.words = "utevo res pet"
summonPet.mana = 100

local function onPetDie(event)
  local player = event.creature:getMaster()
  pets[player:getID()] = nil
end

function summonPet.onFinishCast(event)
  local player = event.player

  local pet = createCreature("Demon")
  pet:setMaster(player)

  pets[player:getID()] = pet
  
  registerOnCreatureDie(pet, onPetDie)
end

summonPet:register()[/COLOR][/FONT]
[/LEFT]
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Fajnie si? zapowiada ten pomys?, teraz zaw?d skryptera b?dzie bardziej ceniony i dostrzegany.Nowy system b?dzie o wiele lepszy od starego.
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

No to ?adnie pojechali z tym :)
Rzeczywi?cie spadnie ilo?? ots, tzn. ilo?ci nowych wersji ots'?w.
Patrz? na ten nowy system i na prawd? ci??ki on jest.

Trzeba zabra? si? za nauk?.. gotowce do internetu tak trafi? tylko nie b?d? rozwijane.

Pozdrawiam i podzi?kowania i repucik za ten temat lec?.
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Noo, nowych wersji b?dzie garstka, tam gdzie s? dobrzy skrypterzy i ogarn? temat, albo tam gdzie b?d? cwaniaczki i skopiuj? wi?kszo?? skrypt?w :D
No i RL Mapki Cya :)
 
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Nareszcie prosty system zamiast setek funkcji do wszystkiego. Trzeba si? tego nauczy?, ale to nadal lua i nie b?dzie to trudniejsze. Ciekawe jak si? tworzy takie funkcje w C++. Skoro nie b?dzie XML?w to co z np. items.xml? Przecie? nie napisz? chyba tego wszystkiego w lua... A mo?e items.xml b?dzie wygl?da? tak:
Kod:
local items = {
[2520] = {article = "a", name = "demon shield", description = "This powerful shield seems to be as light as air.", weight = 2600, defense = 35, weaponType = "shield"}
}
zamiast:
Kod:
<items>
<item id="2520" article="a" name="demon shield">
<attribute key="description" value="This powerful shield seems to be as light as air."/>
<attribute key="weight" value="2600"/>
<attribute key="defense" value="35"/>
<attribute key="weaponType" value="shield"/>
</item>
</items>
Wa?na sprawa - czy kto? wie jak to wp?ynie na pr?dko?? i stabilno?? OTS?
Wreszcie OTSy maj? szans? by? dynamiczne! Znaczy to, ?e mo?na by w takim systemie napisa? skrypt na np. tworzenie czar?w albo item?w przez graczy, a nie jak to jest teraz, ?e wszystko jest ?adowane przy starcie i tylko w?a?ciciel mo?e dodawa? nowe rzeczy albo edytowa? map?.

@edit
Changed const.h into const.lua and exported some of the enums to lua scripts.
Zamieniono const.h w const.lua i przeniesiono cz??? wylicze? (enum) do skrypt?w lua.

Przepisuj? cz??? silnika do skrypt?w.
PS. "how the listener works" mo?e oznacza? "jak nas?uchiwacz [event?w] dzia?a", czyli "jak wydarzenie (event) b?dzie wykrywane"
a "cAsE sensitivity, the string to look for and the callback function" to "czy uwzgl?dnia? wielko?? liter, napis kt?rego szuka? i funkcja zwrotna" (chodzi o 2, 3 i 4 argument)
 
Ostatnia edycja:
Odp: Revscriptsys - rewolucja w ?wiecie Open Tibia!

Nie kt?re rzeczy zosta?y nie zmienione tak jak np. items.xml nadal b?d? w pisane w pliku *.xml.
 
Status
Zamknięty.
Back
Do góry