www.tibiafans.fora.pl

Forum o Tibii

Forum www.tibiafans.fora.pl Strona Główna -> OTsy -> Poradnik By Orzech! (bardzo Dobry)
Napisz nowy temat  Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat 
Poradnik By Orzech! (bardzo Dobry)
PostWysłany: Pią 7:37, 07 Paź 2005
kubas
administrator

 
Dołączył: 26 Cze 2005
Posty: 204
Przeczytał: 0 tematów

Ostrzeżeń: 0/20
Skąd: Wloclawek





Spis tresci:
1. Jak przystosować komputer do odpalenia OTSa.
2. Tworzenie, kopiowanie mapy wraz z respami, teleporty oraz łużka w których można spać.
3. NPC- opis jak zrobic żeby npc nam sprzedawał\kupował: itemy, runy, czary, teleportował, itp.
4. Domki jak robic domki z Save oraz ustawianie osób mogących wejsć)
5. Edyctowanie potwórków (zmiana expa,loot, ataku itp.)
6. Dzwi lev i na kluczyk.(Key system) {Key system mojego autorstwa}
7. Actions.xml i pliki lua w folderze scripts.
------- anihilator.lua
------- bush.lua
------- fishing.lua
------- fluids.lua
------- food.lua
------- gold.lua (platinum.lua nie będe opisiwał ponieważ jest idedntycznym skryptem co gold.lua tylko że są inne dane zmienne).
------- machete.lua
------- pick.lua
------- rope.lua
------- rwitems.lua
------- shovel.lua
8. Signs - Napisy na tabliczkach. (Drakonia)
9. Switch system {mojego autorstwa}
10. Items.xml
11. Spells.xml
12. Accounts i Players.
13. Config.lua.
14. Comands.
15. ACC Maker
16. Signs system -nie trzeba w nim wpisywać wspułżędnych tabliczki do przeczytania !!! {mojego autorstwa}
17. Jak podłączyć sie pod OTSy: 7.4, 7.41, 7.5


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Pią 7:40, 07 Paź 2005
kubas
administrator

 
Dołączył: 26 Cze 2005
Posty: 204
Przeczytał: 0 tematów

Ostrzeżeń: 0/20
Skąd: Wloclawek





Ad1.
Poradnik by Killavus jak przystosować kompa do tego żeby ktoś inny mógł wbić na nasz serwer znajdziesz TU
Poradnik dla wszystkich co mają zmienie IP by Zbanowany znajdziecie TU
Można także ustawić priorytet na nasz OTS wciskając skrót "Alt+Ctrl+Del" i wybieramy zakładke procesy nastepnie odnajdujemy tam proces "Drakonia74.exe" (zależy jakiego sie OTSa używa) klikamy prawym przyciskiem myszy na niego i ustawiamy pryiorytet według naszej potrzeby [Niski, Poniżej normalnego, Normalny, Powyrzej Normalnego (tak jest standardowo), Wysoki, Czasu rzeczywistego]

Trzeba także pamietac o wyłączeniu opcji "Ukryj komputer w sieci". żeby to zrobic wchodzimy do panelu sterowania wybieramy "Połączenia sieciowe i internetowe" poczym wybieramy "Moje miejsca sieciowe" (Lewy górny róg) potem klikamy na "wyswietl połączenia sieciowe" i twoim oczom ukażą sie twoje polączenia sieciowe (jeśli jestes połączony z inym komputerem sieciowo) oraz twoje połączenie internetowe albo Start/Połacz z/"Neostrada TP" lub ina nazwa twojego połaczenia, prawym kliknięciem myszki na swoim połączeniu internetowym wybierasz "właściwosci" i tam masz 5 zakładeki:
1) Ogólne --- to nas nie interesuje.
2) Opcje i tu możesz podrasować połączenie tak by uruchamiało się bez twojej wiedzy w tle wraz z uruchomieniem kompa.(Dla tych co mają neo jest to dobre rozwiązanie, zamiast łaczyć sie za pomocą programu TP SA i miec na pasku zadan stan połączenia internetowego więc najpierw chcąc sie łaczyć wybierz Start/Połacz z/Neostrada TP i pokaże sie twoim oczom okienko w którym wpisujesz nazwe połączenia internetowego [zazwyczaj jest wpisana] i hasło połaczenia internetowego, pamiętaj musi być zaznaczone zapamietaj hasło i klikasz na wybierz numer a nastepnie po połączeniu z netem rozłanczasz i klikasz na własciwosci połączenia Neostrada TP)<niezapomnij utworzyć skrót twojego połączenia do autostu lub do operacji uruchamiających sie wraz ze startem systemu>
A) Wszystkie opcje wybierania numeru odznacz
B) Próby ponownego wybierania numeru ja mam na "99"
C) Czas pomiędzy kolejnymi próbami wybierania numeru mam na "1 sec".
D) Czas bezczynosci przed rozłączeniam powino być domyślnie "Nigdy"
E) Zaznacz to by po 24h przy rozłączeniu ponownie sie sam połączył w tle bez twojej wiedzy) "Wybierz numer ponownie po przerwaniu połączenia"
3) Zabezpieczenia zostawiamy domyślnie
4) Sieć także zostawiamy jak jest
5) Zawansowane i tu własnie odznaczamy "Chron mój komputer w sieci..."

Teraz pozostaje jeszcze nasz Firewall którego ja mam Kerio personal Firewall i w nim trzeba wejsc w konfiguracje i odblokowac wszystko co z OTS (nawt zezwolenie na wprowadzanie zmian w inych plikach)sie tyczy oraz ustawic filter tak by mozna było sie połaczyć z naszym kompem w celu grania) (niektóre anty wirki mają wbudowany firewall ale radze używac Anty vira jako tylko anty vira oraz Firewalla), ja sam mam Kacperski Anty Virus jest on darmowy dla użytkowników domowych i niezle sie sprawdza a jesli o płatne chodzi to polecam tylko AVK 2005 bo jest najlebszy
Jesli chodzi o ine Firewalle to w każdym jest to podobnie, trzeba odblokować port 7171 oraz dostęp danego programu do neta na przychodzące i wychodzące połączenia.
Gdy mamy neo ważne jest też odblokować No-ip oraz Web serwer nawet gdy mamy wbudowany program No-ip do Web serwera (można tylko zainstalować No-ip jesli się nie używa ACC makera.

Ad2.
Poradnik by Killavus do tworzenia Mapy w raz z respami potworków w edytorze OTMap Editor 0.437 znajdziesz TU
Gdy robisz mape pamietaj że nieważne jak jest duża i ile ma respów tylko ważne jest jak to wykończysz, bo liczy sie jakość a nie ilość.Większosć map jest robiona na opak i nawet nie chce sie w nie dłużej grac niz kilka dni.Nie próbuj plagiatować globalowej mapy tibi tylko wymyśl własne krainy i niepozostan na tylko trawie i raz na jakis czas dzewie tylko dopracuje ze wszelkimi szczegółami.

Kopiowanie oraz przenoszenie kawałka mapy.
Gdy chcemy skopiowac kawałek mapy i wkleic ją w inym miejscu lub w innej mapie to klikamy "r" i zaznaczamy kawałek który nas interesuje i albo go kopiujemy skrótem "Ctrl+c" albo wycinamy skrótem "Ctrl+x" i wklejamy w inne miejsce skrótem "Ctrl+v", gdy chcemy wyciety lub zkopiowany kawałek mapy wkleic w inną mape to po prosty włanczmy jeszce raz nasz edytor i trza pamietac ze tam też musi być aktywne "Selection tool" które aktywujemy skrótem "r".
Kopiując kawałek mapy z inej mapki wliczając multilevel musisz sobie zaznaczyć punkt odniesienia tak jak to ja pokazuje na Screnach.
a) stawiam tak mój punkt odniesienia by był jedynym najwyżej wysuniętym oraz stawiam go na prosej lini z rope place lub dziurą które mają wspulne wspułżędne (u mnie na screnach jest to [444/319]) i muszą sie nakładać.(Q i W przybliżasz i odalasz)punkt odniesienia stawiasz na obu pietrach o tych samych wspułżędnych x/y.

b) dolne pietro z punktem odniesienia

c) zaznaczasz tak jak ja na screnie by punkt odniesienia był jedynym najwyżej elementem mapy do skopiowania i wklejenia niżej

d) i wklejasz go tak jak ja, pamietaj ze jesli skopiowales tak jak to na screnach pokazałem to punkt odniesiania który skopiowałes bedzie przy wklejaniu tam gdzie bedziesz trzymał kursor myszki.Zresztą zobacz screna nastepnego.

Tak samo robi się przy kopiowaniu z inej mapy tylko pamietaj ze w edytorze w który chcesz wkleic mape musi byc aktywne "selection tool"

Teleporty
Więc stawiająć teleport id [1387] na mapie po czym edytujemy jego właściwości i wpisujemy wspułżędne gdzie maja być teleportowani gracze po wejsciu na niego.

Łużka w których można spać i mana rośnie.
Łużka się nie dodaje w edytorze tylko w pliku <../Data/World/beds.xml>, wpisuje sie tam wspułżędne poduszki łużka oraz id łuzka.Są 4 łużka do wyboru:
1). ID: 1754 - łużko z niebieską kołdrą pionowo postawione.
2). ID: 1760 - łużko z niebieską kołdrą poziomo postawione.
3). ID: 1758 - łużko bez kołdry pionowo postawione.
4). ID: 1756 - łużko bez kołdry poziomo postawione.
Łużka pionowe maja u góry poduszke a łużka poziome z lewej strony, tylko łuzka będące w Protect Zone (skrót "p" w edytorze) będą działały jak należy i jeszcze raz przypominam nie stawia sie łużek w Edytorze map !!! (no chyba że ozdobne)
A o to i przykład:

<?xml version="1.0"?>
<beds>
<bed x="0" y="0" z="0" id="1754" name="Nobody"/>
</beds>

* tu wpisujemy pozycje x (ta pozycja odpowiada za szerokość, znaczy w poziomie)
* tu wpisujemy pozycje y (ta pozycja odpowiada za długość, znaczy w pionie)
* tu wpisujemy pozycje z (ta pozycja odpowiada za piętro)
* tu jest napis jaki bedzie widac na łużku gdy wezniemy look.

Respawny NPC znajdują się w <../data/World/npc.xml> a wyglądają następująco:

<?xml version="1.0"?>
<npclist>
<npc name ="Dark Rodo" x="63" y="9" z="7"/>
<npc name ="Darkensia" x="63" y="17" z="6"/>
</npclist>

* tu wpisujemy imię naszego npc (wiecej ifo w rozdziale 3).
* tu wpisujemy wspułżedne gdzie ma być nasz NPC (tak jak przy łużkach)

Ad3.
Ważne !!! >>> pod żadnym pozorem nie używajcie polskich znaków.

Oto edytowany plik NPC Darkor.xml < ../data/npc/Darkor.xml> (plik ten się edytuje w normalnym notatnikU).

<?xml version="1.0"?>

<npc name="Darkor" script="data/npc/scripts/sorcerer.lua" access="3" monster="1" speed="50" lookdir="3" pushable="0" level="100">
<health now="1" max="1"/>
<look type="130" head="11" body="1" legs="4" feet="114"/>
</npc>

* tu jest imie npc.
* tu jest ścieżka dostępu do skryptu do którego się ten npc bedzie odwoływać (może być kilku NPC robiących to samo ale nazywających sie ineczej odwołujących sie do tego samego skryptu).
* tu jest typ postaci, "3" oznacza GM i niemożna go zabić "0" oznacza normalnego gracza którego można zabic wiec radze miec ustawione tu "3".
* tu jest prędkośc naszego NPC.
* to odpowiada za to czy naszego NPC będzie można sobie popychac czy bedzie on stał niewzruszony. ("0" oznacza że możesz go sobie popychać a "1" że jesli mu kołek w dupe wsadzisz to go to nie ruszy )
* to odpowiada za level jaki ma nasz NPC.
* to odpowiada za to le nasz NPC ma teraz pkt życia a ile ma macxymalnie.
* to odpowiada napewno za wygląd naszego NPC (można ustawic że nasz NPC bedzie wyglądał np: jak monk lub dwarf).

Oto Edytowany skrypt sorcerer.lua <../Data/NPC/Scripts/sorcerer.lua> do którego sie odwoływał plik Darkor.xml (plik ten się edytuje w normalnym notatnikU)
{wyciete kawałki w celu pokazania przykładu}

* to odpowiada za tworzenie potworka jeżeli nasz npc miałby taką możliwość.

Kod:

summons = 0 summons2 = 0



* to jest odpowiedzialne a to czy nasz NPC ma sam zaczynać gadać.

Kod:

talk_start = 0



* to odpowiada za to czy nasz NPC może za kimś isć.(true- tak, false-nie)

Kod:

following = false



* to odpowiada za to czy nasz NPC może atakować.

Kod:

attacking = false



* tu możemy wstawic słowo kluczowe które ma zaczynać naszą konwersacje z NPC, standardowo jest "hi" ale mozna ustawic inne słowo np: "siema" i zpolszczyć naszego NPC.Po wypoiedzeniu słowa "hi" nasz NPC odpowie "Greetings,<tu pojawi sie imie osoby która powie hi>"

function onCreatureSay(cid, type, msg)
msg = string.lower(msg)
if ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 3 then
selfSay('Greetings, ' .. creatureGetName(cid) .. '.')

* to odpowiada za to że jeżeli powiemy "job" to npc odpowie nam "I am mystic"

if msgcontains(msg, 'job') and focus == cid then
selfSay('I am mystic.')

Taki przykład możemy wykorzystać na wiele sposóbów np: jesi powiemy "oferta" NPC odpowie nam "sprzedeje stringi (typ spadochrony) za 2 zeta oraz kondony po przejsciach po 50 groszy za sztuke"
a tak to bedzie wyglądało w skrypcie:

if msgcontains(msg, 'oferta') and focus == cid then
selfSay('sprzedeje stringi (typ spadochrony) za 2 zeta oraz kondony po przejsciach po 50 groszy za sztuke')

* tu mamy przykład na sprzedawanie itemów i inych rzeczy przez npc gdzie:
- jeżeli powiemy "buy lifefluid" to nasz NPC zamieni jeden item w danej ilości na 2 item w danej ilości
- to ID formy płatnosci [2148] w tym przypadku jest to gold coins.
- to ilość jaką pobierze od nas NPC [60] w tym przypadku damy 60 gp.
- to ID tego co dostaniemy w zamian [2006] w tym przypadku jest to life fluid
- to ilość tego co dostajemy w zamian [10] w tym przypadku jest to 10 lifef luidów.

if msgcontains(msg, 'buy lifefluid') and focus == cid then
sell(cid,2148,60,2006,10)

Jak da się zauważyć jeżeli za rzecz dawaną NPC ustawimy "lifefluid" [2006], ilosc rzeczy dawanych ustawimy na "10", otrzymywaną rzecz ustawimy "gold coins" oraz ilosc otrzymywanych rzeczy na "60" to uzyskamy efekt odwrotny i to my bedziemy mogli sprzedać NPC 10 lifefluidów za 60 gp zmieniając także słowo kluczowe na"sell lifefluid" i w ten sposób mamy skrypt na skupującego NPC który tak będzie wyglądał:

if msgcontains(msg, 'sell lifefluid') and focus == cid then
sell(cid,2006,10,2148,60)

* Tu widzimy że nasz NPC sprzedaje czar o nazwie "light healing"
- czar jaki dostaniemy "exura"
- ilosc pobierana [100] (czary są w jednostkach "gold coins" automatycznie NPC rozmienia platynki oraz crystal coinsy)
- ta wartość sie nie zmienia i zawsze jest "1" gdyż nie da sie mieć podwujnie ten sam czar.
- mlv jaki musi miec kupujący

if msgcontains(msg, 'light healing') and focus == cid then
sellSpell(cid,"exura",100,1,0)

w częsci dalszej jeżeli nie dzieje sie nic ciekawego k to w tedy NPC zidentyfikuje swoją pozycje <np: x=3 y= 6 z=7> i będzie sobie chodził po okolicy.A tak to wygląda w skrypcie:

Kod:

if focus == 0 then cx, cy, cz = selfGetPosition() randmove = math.random(1,50) if randmove == 1 then nx = cx + 1 end if randmove == 2 then nx = cx - 1 end if randmove == 3 then ny = cy + 1 end moveToPosition(nx, ny, cz)



Jesli chcecie zobaczyc skrypt w całości to sciagnijcie go i edytujcie w notatniku.

Teraz NPC który będzie przenosił jeżeli bedziemy mieli wymagany level w dane miejsce ustawiając jednoczesnie "sawn temple" (to tam gzie sie odradzasz po smierci) i nadaje ci "vocation" (profesje: Sorcerer, paladin, druid lub knight)

* Tu widzimy skrypt z słowem kluczowym rozpoczynającym rozmowe tlko że został on w tym NPC podwujnie wpisany z inym kluczem wywoławczym "hi" albo "hello" (można w ten sposób zrobic NPC 2 jezycznego np: polski i angielski) natomiast NPC odpowie nam " Are you ready for face your destiny?"


function onCreatureSay(cid, type, msg)
msg = string.lower(msg)
if ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 3 then
selfSay('Hello, ' .. creatureGetName(cid) .. ' Are you ready for face your destiny?')

if ((string.find(msg, '(%a*)hello(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 3 then
selfSay('Hello, ' .. creatureGetName(cid) .. ' Are you ready for face your destiny?')

* Tu widzimy iż NPC na słowo "yes" rozpoczyna sprawdzanie czy mamy "8" lub wiekszy level(">= 8"-oznacza wiekszy od 8 {w tej sytuacji lev od 8 włącznie w zwyż mogą skorzystac}, "< 8" mniejszy od 8 {tylko mniejsze levele od 8 i z nim włacznie mogą uzywać}, "=8"- równy 8 level {tylko 8 level może skorzystac, żaden iny nie może} (można wstawic jaki sie chce wymagany level) po tej czynności NPC pyta nas o "vocation" (profesje) podając ich nazwy (są to słowa kluczowe do następnych akcji jakich NPC dokona po wypowiedzeniu któregoś z tych słów)

if ((string.find(msg, '(%a*)yes(%a*)')) and (focus == cid)) and prepared == 1 and creatureGetLevel(cid) >= 8 then
selfSay('Ok, ' .. creatureGetName(cid) .. ' What vocation do you want? Sorcerer, Druid, Paladin or Knight?')


* Teraz widzimy skrypt który ma odwrotne wymagania co do poprzedniego a jest on nastempstwem niespełnienia wymagań w wyżej zaprezentowanym przykładzie i jesli do tego skryptu zostaną spełnione wymagania to NPC wypowie nastę pujący tekst "Sorry, '<tu bedzie nick gracza>' You need level 8 or more. Come back when you be prepared."

if ((string.find(msg, '(%a*)yes(%a*)')) and (focus == cid)) and prepared == 1 and creatureGetLevel(cid) < 8 then
selfSay('Sorry, ' .. creatureGetName(cid) .. ' You need level 8 or more. Come back when you be prepared.')


* Tu widzimy że następstwem spełnienia warunku ">=8" i wypowiedzieniu słowa kluczowego "sorcerer" jest tekst "Ok, <nick gracza> Are you sure do you want Sorcerer?" (tu możemy ustawic jaką tak naprawde da profesje poprzez wstawienie tu "vocat = 1" na liczbe od 1 do 4 {1=sorcerer, 2=druid, 3=palladin, 4=knight})

if ((string.find(msg, '(%a*)sorcerer(%a*)')) and (focus == cid)) and prepared == 2 then
selfSay('Ok, ' .. creatureGetName(cid) .. ' Are you sure do you want Sorcerer?')
cost = 0
focus = cid
prepared = 3
vocat = 1
* Tu po powiedzeniu słowa kluczowego "yes" zmienia "vocation" na "1" oraz teleportuje nas do x=256 y=256 z=7 jednoczesnie zapisując te wspułżędne jako temple gdzie bedziemy się pojawiac po smierci.Mozna także ustawic cene tego teleportu (cid,cost,256,256,7,"Good Luck!") wstawiając za cost liczbe, można tego NPC przerobic na NPC stojącego na statku i teleportującego nas za kase do kilku zdefiniowanych miejsc jakims kluczem <np: "senja"> (oczywiscie trza by było wyciąc ta linie skryptu "selfSay('/u ' .. creatureGetName(cid))" a także tą "selfSay('/S ' .. creatureGetName(cid))" gdyż niechcielibysmy miec ustawione "spawn temple" na pomoscie do senji.
Taki NPC by łaczył w sobie kilka lvl teleportów

if ((string.find(msg, '(%a*)yes(%a*)')) and (focus == cid)) and prepared == 3 and vocat == 1 then
selfSay('/u ' .. creatureGetName(cid))
selfSay('/S ' .. creatureGetName(cid))
teleport(cid,cost,256,256,7,"Good Luck!"

Jesli chcecie zobaczyć cały skrypt tego NPC to go sciągnijcie.
__________________
Poradnik dla początkujących by Orzech a w nim:Key system, Switch system, Signs
Skrypt do runa dającego mane
Edytor Map do Tibi 7.5 gotowy do pracy
Rozwiazanie błędu YourOTS przy wczytywaniu Hauses
OTServ actionscript manual v1.0 by GriZzm0.
Konwertery Map
Key System pod OTS 7.5
Forum mojego OTSa. Jest to RPG serwer !!!
Last edited by orzech : 29-08-2005 at 03:37 PM.
orzech is offline Add to orzech's Reputation Report Bad Post Reply With Quote
orzech
View Public Profile
Wyślij Prywatną Wiadomość do orzech
Find More Posts by orzech
Dodaj orzech do Listy Kumpli
Stary 27-08-2005, 07:56 AM #3
orzech
Gaduła+

orzech's Avatar

Data rejestracji: Jun 2004
Położenie: Urzędów
Posty: 205
Ostrzeżenia: 2
orzech został przez kogoś doceniony

Lightbulb Ad4. Ad5. Ad6.

Ad4.
Poradnik by Skiter związany z Save hause jest TU

A jesli chodzi o osoby które mogą wejsć do domku to pokaże to na przykładzie:

<owners>
<house name = "Test" x="234" y="272" z="7" owner="GM MiKe2K1" invited="lokator" invited2="">
</house>
</owners>

* Nazwa domu
* wspułżędne dzwi do domu
* nick osoby która jest włascicielem (bedzie wyswietlany pszy użuciu "look" na dzwiach)
* osoba zaproszona mogąca wchodzic i otwierać dzwi (tak zwany lokator)
Osób zaproszonych z tego co wiem może byc tyle ile ci hata pomiesci
Ważne !!! >>> Jesli ci się dzwi nieotwierają znaczy to że podałes złe wspułżędne lub użyłeś dzwi które już śą zadedykowane kluczom więc w tym celu sprawdz w <../data/Actions/Scripts/door.lua oraz key.lua czy czasem dzwi których używasz nie są przypisane jakiemus kluczowi.(muszą być one free, jesli w w pliku action.xml przy id dzwi niema informacji czy są one dla każdego dostępne do otwierania i macie podstawowy plik action.xml to w dziale 6 znajdziesz wiecej informacji)

Ad5.
Opisze tu co do czego służy na potstawie <../data/Monsters/Demon.xml>

* tu jest imie potworka jakie widzimy w grze, level potworka (ma wpływ na moc czaru), magic level (ma wpływ na moc czaru),exp jaki nam daje za zabicie go, jego prędkosc, czy można go przepychać ("0"- nie lub "1"-tak)

<monster name="Demon" level="70" maglevel="60" experience="6000" speed="250" monster="1" pushable="0">

* tu jest ilosc HP jaką ma potworek teraz oraz hp ile może mieć na maxa.

<health now="8200" max="8200"/>


* tu jest jaki ma wygląd nasz potworek za życia i po smierci.

<look type="35" head="20" body="30" legs="40" feet="50" corpse="2916"/>

* tu jest dystans z jakiego może bic ("1" oznacza że musi stac koło ciebie) oraz przy ilu HP ma zaczynać uciekać.

<combat targetdistance="1" runonhealth="0"/>

* tu są ataki jakimi dysponuje nasz potworek.
- Są tu typy ataków: male -atak fizyczny, instant -czar pisany, Rune -czar z runu.
- to odpowiada za to ile nasz potworek zada najwięcej
- to odpowiada za to jakie jest prawdopodobiensto użycia tego ataku.
- to odpowiada za to jak często może uzywac tego ataku.
- tu jest czar jakiego użyje potworek

<attacks>
<attack type="melee" maxdamage="450" cycleticks="2000" probability="100"/>
<attack type="instant" name="exura" cycleticks="5000" probability="50"/>
<attack type="instant" name="exevo gran vis lux" exhaustion="500" cycleticks="8000" probability="40"/>
<attack type="rune" name="great fireball" exhaustion="500" cycleticks="6000" probability="100"/>
<attack type="rune" name="firefield" exhaustion="500" cycleticks="8000" probability="100"/>
</attacks>

* tu mamy odporności jakie posiada potworek.Naszego potworka nie można zranić energią, ogniem, zatruć, zparaliżować oraz upić.

<defenses>
<defense immunity="energy"/>
<defense immunity="fire"/>
<defense immunity="poison"/>
<defense immunity="paralyze"/>
<defense immunity="drunk"/>
</defenses>

* to odpowiada za minimalną obronę, maxymalną obronę, minimalny armor, maxymalny armor.(można to pozmieniac gdy chcemy żeby potworek był mniej lub bardziej odporny na ataki fizyczne)

<defense>
<defense defensemin="40" defensemax="80" armormin="20" armormax="30"/>
</defense>

* to odpowiada za to co nasz potworek mówi, na jaki zasięg i jaka jest prawdopodobność wypowiedzenia danej wiadomośći

<voices>
<voice sentence="Your soul will be mine!" cycleticks="5000" probability="40"/>
<voice sentence="MWA HA HA HA HA HA HA HA" cycleticks="5000" probability="50"/>
<voice sentence="I SMELL FEAR" cycleticks="5000" probability="60"/>
<voice sentence="CHAMEK UTHUL URAK!" cycleticks="5000" probability="55"/>
</voices>

* to odpowiada za itemy wypadające z naszego potworka.
- tu mamy ID itemu wypadajacego
- tu mamy ilosć
- tu mamy prawdopodobiensto wypadniecia itemu

<loot>
<item id="2148" countmax="100" chance1="100000" chancemax="0"/>
<item id="2148" countmax="25" chance1="100000" chancemax="0"/>
<item id="2393" chance="1000"/>
<item id="2514" chance="500"/>
<item id="2671" countmax="4" chance1="80000" chancemax="0"/>
<item id="2432" chance="1538"/>
<item id="2472" chance="333"/>
</loot>

Ad6.
>>Dzwi leveleowe ustawia sie w <../data/doors/doors.xml> a tu zaprezentuje przykład

* współżędne dzwi oraz level wymagany
<?xml version="1.0"?>
<doors>
<doors x="0" y="0" z="7" lv="2"/>
</doors>

>> Dzwi: zamykane i otwierane kluczmi lub itemami magicznymi napisane przezemnie na potrzeby mojejego OTSa który ukaże sie niedługo (brak hostera, więc musze czekać aż do nowego miesiąca bo w tym zaliczyłem limit pobierania w Neostradzie :/ ).

1. Pink key [id: 2086] otwiera dzwi [id: 1239]
2. Black key [id: 2087] otwiera dzwi [id: 1237]
3. Grey Key [id: 2088] otwiera dzwi [id: 1221]
4. Orange key [id: 2089] otwiera dzwi [id:1223]
5. Blue key [id: 2090] otwiera dzwi [id: 1257]
6. Golden key [id: 2091] otwiera dzwi [id: 1255]
7. White Key [id: 2092] otwiera dzwi [id: 1219]
8. mysterious fetish [id: 2194] otwiera dzwi [id: 1225] <---- dzwi do wyjscia na skróty z Hell Gate.
9. ankh [id: 2193] otwiera dzwi [id: 1243] <---- dzwi do 2 częsci qestu z Faraonem.
10. holy scarab [id: 2140] otwiera dzwi [id: 1241] <---- dzwi do 3 częsci qestu z Faraonem.

1. najpierw musimy edytować w notatniku plik <../data/actions.actions.xml> i wkleic w nim to:
Kod:

-- Key system By Orzech -- <action itemid="2086" script="purplekey.lua" /> --Purple key <action itemid="2087" script="woodenkey.lua" /> --Wooden key <action itemid="2088" script="silverkey.lua" /> --Silver key <action itemid="2089" script="orangekey.lua" /> --Orange key <action itemid="2090" script="crystalkey.lua" /> --Crystal key <action itemid="2091" script="goldenkey.lua" /> --Golden key <action itemid="2092" script="bonekey.lua" /> --Bone key <action itemid="2194" script="mysteriousfetish.lua" /> -- dzwi do wyjscia na skroty z Hell Gate <action itemid="2327" script="ankh2.lua" /> -- dzwi do 3 czesci qestu z Faraonem <action itemid="2193" script="ankh.lua" /> -- dzwi do 2 czesci qestu z Faraonem -- end Key system By Orzech --


oraz to:
Kod:

-- Doors By Orzech -- <action itemid="1209" script="door.lua" /> Free door <action itemid="1212" script="door.lua" /> Free door <action itemid="1231" script="door.lua" /> Free door <action itemid="1234" script="door.lua" /> Free door <action itemid="1249" script="door.lua" /> Free door <action itemid="1252" script="door.lua" /> Free door <action itemid="1539" script="door.lua" /> Free door <action itemid="1540" script="door.lua" /> Free door <action itemid="1210" script="door.lua" /> Free door <action itemid="1213" script="door.lua" /> Free door <action itemid="1227" script="door.lua" /> Free door <action itemid="1229" script="door.lua" /> Free door <action itemid="1232" script="door.lua" /> Free door <action itemid="1235" script="door.lua" /> Free door <action itemid="1245" script="door.lua" /> Free door <action itemid="1247" script="door.lua" /> Free door <action itemid="1250" script="door.lua" /> Free door <action itemid="1253" script="door.lua" /> Free door <action itemid="1259" script="door.lua" /> Free door <action itemid="1261" script="door.lua" /> Free door <action itemid="1211" script="door.lua" /> Free door <action itemid="1214" script="door.lua" /> Free door <action itemid="1233" script="door.lua" /> Free door <action itemid="1236" script="door.lua" /> Free door <action itemid="1251" script="door.lua" /> Free door <action itemid="1254" script="door.lua" /> Free door <action itemid="1541" script="door.lua" /> Free door <action itemid="1542" script="door.lua" /> Free door <action itemid="1228" script="door.lua" /> Free door <action itemid="1230" script="door.lua" /> Free door <action itemid="1246" script="door.lua" /> Free door <action itemid="1248" script="door.lua" /> Free door <action itemid="1260" script="door.lua" /> Free door <action itemid="1262" script="door.lua" /> Free door <action itemid="1634" script="door.lua" /> Free door <action itemid="1635" script="door.lua" /> Free door <action itemid="1636" script="door.lua" /> Free door <action itemid="1637" script="door.lua" /> Free door <action itemid="1638" script="door.lua" /> Free door <action itemid="1639" script="door.lua" /> Free door <action itemid="1640" script="door.lua" /> Free door <action itemid="1641" script="door.lua" /> Free door <action itemid="1495" script="door.lua" /> Free door <action itemid="1497" script="door.lua" /> Free door <action itemid="1219" script="door.lua" /> locked door <action itemid="1221" script="door.lua" /> locked door <action itemid="1237" script="door.lua" /> locked door <action itemid="1239" script="door.lua" /> locked door <action itemid="1255" script="door.lua" /> locked door <action itemid="1257" script="door.lua" /> locked door <action itemid="1223" script="door.lua" /> locked door <action itemid="1224" script="door.lua" /> locked door <action itemid="1220" script="door.lua" /> locked door <action itemid="1222" script="door.lua" /> locked door <action itemid="1238" script="door.lua" /> locked door <action itemid="1240" script="door.lua" /> locked door <action itemid="1256" script="door.lua" /> locked door <action itemid="1258" script="door.lua" /> locked door <action itemid="1225" script="door.lua" /> special door _ <action itemid="1241" script="door.lua" /> special door I <action itemid="1243" script="door.lua" /> special door _ <action itemid="1255" script="door.lua" /> special door _ <action itemid="1226" script="door.lua" /> special door _ <action itemid="1242" script="door.lua" /> special door I <action itemid="1244" script="door.lua" /> special door _ <action itemid="1256" script="door.lua" /> special door _ -- end Doors By Orzech --


id nie może sie powtarzać więc wykasujcie wszystkie linijki jakie macie odwołuwujące sie do door.lua i key.lua jakie mieliscie dotychczas w pliku action.xml.

Następnie ściagnijcie i wklejcie te pliki tu <../Data/Actions/Scripts/>
Dla tych co pragną szczegułów (być może zrobicie lebszy skrypt lub inny dla inych czynnosci na tych podstawach jakie wam podaje):

* tu wpisujesz id itemu oraz nazwe skryptu do którego się ten item będzie odwoływał
<action itemid="2086" script="purplekey.lua" /> --Purple key

* tu wpisujesz uniqe id które ustawiasz dla jednej rzeczy w edytorze map oraz podajesz pełną nazwe skryptu do którego będzie sie on odwoływał (może być to sciana, posąg, klucz, naszyjnik...)
<action uniqueid="3000" script="annik.lua" />

* tu wpisujesz id dzwi a takrze wiadomosci jakie dostanie gracz gdy spróbuje otworzyć dzwi do których trzeba klucz.

if item.itemid == 1219 then
doPlayerSendTextMessage(cid,22,"It is locked.")
doPlayerSendTextMessage(cid,22,"You need Bone key for open this door")

* tu definiujesz grupe dzwi (wpisujesz id kazdych dzwi) którą konczy słowo "then" po którym w nastepnej lini piszemy w co mają sie zamienić ("item.itemid+2" znaczy że dzwi po kliknieciu na nich zmienią swoje ide o 2 wyżej)
A tak to wygloda w formie łatwo przysfajalnego algorytmu "Jęzeli item wprawiony w akcje jest równy A lub B lub C lub.... to wykonaj akcję zmieniającą wartosć itemu wprowadzonego w akcje o +2" tak pisałem key system oraz w switch system, najpierw taki algorytm potem taki)
elseif item.itemid == 1209 or item.itemid == 1212 or item.itemid == 1231 or item.itemid == 1234 or item.itemid == 1249 or item.itemid == 1252 or item.itemid == 1495 then
doTransformItem(item.uid,item.itemid+2)

* tu jest owiele wiecej ponieważ nasze dzwi zamykając się muszą przesunąc natrenta stojącego w nich.
Zaczyna on sie tak jak wyżej od zdefiniowania warunków do zaczecia akcji, jesli warunki zostaną spełnione to w nastepstwie system OTSa sprawdzi wspułżedne dzwi, zdefinije słowo "getplayer" a następnie sprawdzi czy gracz jest na wspułżędnych dzwi to teleportuje gracza do zdefinowanych wspułżędnych dodając +1 do wspułżędnej x co oznacza że to śą dzwi poziome, następnie zmieni wartość id dzwi o -2.
elseif item.itemid == 1211 or item.itemid == 1233 or item.itemid == 1251 or item.itemid == 1497 then
doorpos = {x=frompos.x, y=frompos.y, z=frompos.z, stackpos=253}
getplayer = getThingfromPos(doorpos)
if getplayer.itemid > 0 then
npos = {x=frompos.x+1, y=frompos.y, z=frompos.z}
doTeleportThing(getplayer.uid,npos)
doTransformItem(item.uid,item.itemid-2)


* tu wpisujemy id dzwi które wczesniej w door.lua zdefiniowalismy jako zamknięte, dzwi zmienią wartośc id o +1.Tu mamy insteukcje warunkowową jest wartośc id, jeżeli warunki zostaną spełnione zmieni sie wartość id o -1 a nastepnie widzimy instrukcje warunkową która sprawdza czy gracz dzwi które próbował otwierać mają wiekszą wartość id od dzwi zdefiniowanych do tego klucza oraz czy miejszą wartosć id, jezeli mają większa lub mniejszą to zostanie wysłana wiadomość taka do gracza.
--Key system made by Orzech--
function onUse(cid, item, frompos, item2, topos)
if item.actionid == item2.actionid then
if item2.itemid == 1255 then
doTransformItem(item2.uid,item2.itemid+1)
elseif item2.itemid == 1256 then
doTransformItem(item2.uid,item2.itemid-1)
elseif item2.itemid >= 1209 and item2.itemid <= 1262 then
doPlayerSendTextMessage(cid,22,"The key does not match.To nie te dzwi baranie !!!")
__________________
Poradnik dla początkujących by Orzech a w nim:Key system, Switch system, Signs
Skrypt do runa dającego mane
Edytor Map do Tibi 7.5 gotowy do pracy
Rozwiazanie błędu YourOTS przy wczytywaniu Hauses
OTServ actionscript manual v1.0 by GriZzm0.
Konwertery Map
Key System pod OTS 7.5
Forum mojego OTSa. Jest to RPG serwer !!!
Last edited by orzech : 28-08-2005 at 05:48 PM.
orzech is offline Add to orzech's Reputation Report Bad Post Reply With Quote
orzech
View Public Profile
Wyślij Prywatną Wiadomość do orzech
Find More Posts by orzech
Dodaj orzech do Listy Kumpli
Stary 27-08-2005, 09:04 AM #4
orzech
Gaduła+

orzech's Avatar

Data rejestracji: Jun 2004
Położenie: Urzędów
Posty: 205
Ostrzeżenia: 2
orzech został przez kogoś doceniony

Lightbulb Ad7.

Ad7.
Plik <../data/Actions/Action.xml> zawiera odnosniki id (rzeczy lub unikalnego przypisu) do skryptów a wygląda to tak w edycji:

* tak się zaczyna ten plik
<?xml version="1.0"?>
<actions>

* tu jest podane id itemu wprawionego w akcje oraz jego odnosnik do skryptu lua.
<action itemid="2148" script="gold.lua" />

* tu jest podane id unikalnego przypisu oraz jego odnosnik do skryptu lua.
<action uniqueid="5000" script="anihilator.lua" />

*tak się konczy ten plik
</actions>

Dalsze wpisy wyglądają podobnie tylko zmieniają sie dane w nie wpisane (id akcji oraz odnosnik do skryptu)

Traz opisze szczegułowo skrypty lua w folderze <../data/actions/skripts/***.lua> a zrobie to alfabetycznie.

Anihilator.lua Ten skrypt jest odnosnie Qestu Anihilator i działa w 99% jak powinien.

* tu są zdefiniowane warunki do zaczęcia akcji takie jak uniqe id oraz id itemu wprawionego w akcje (w tej sytuacji jest to switch)
if item.uid == 5000 then
if item.itemid == 1945 then

* tu definiujemy wspułżedne na jakich mają stac gracze oraz definiujemy słowo "player1", "player2", "player3", "player4"
player1pos = {x=224, y=207, z=7, stackpos=253}
player1 = getThingfromPos(player1pos)

player2pos = {x=223, y=207, z=7, stackpos=253}
player2 = getThingfromPos(player2pos)

player3pos = {x=222, y=207, z=7, stackpos=253}
player3 = getThingfromPos(player3pos)

player4pos = {x=221, y=207, z=7, stackpos=253}
player4 = getThingfromPos(player4pos)

* tu jest instrukcja warunkowa sprawdzająca czy jest coś na polach wyżej zdefiniowanych.Jeżeli jest tak to dalej zostanie zdefinowany level graczy stojących na polach wczesniej zdefinowanych (tu możesz wpisać level wymagany)
if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then
player1level = getPlayerLevel(player1.uid)
player2level = getPlayerLevel(player2.uid)
player3level = getPlayerLevel(player3.uid)
player4level = getPlayerLevel(player4.uid)

questlevel = 100

* tu jest instukcja warunkowa która sprawdza czy masz wymagany level do zrobienia qesta.Jeżeli spełniasz wymagania to dalej zostanie zdefinowane czy robiłeś qesta.
if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then
queststatus1 = getPlayerStorageValue(player1.uid,5000)
queststatus2 = getPlayerStorageValue(player2.uid,5000)
queststatus3 = getPlayerStorageValue(player3.uid,5000)
queststatus4 = getPlayerStorageValue(player4.uid,5000)

* tu mamy instrukcje warunkową sprawdzającą czy robiłeś qesta z wczesniej zdefinowanych danych.Jeżeli spełniasz warunki to zostaną zdefiniowane wspułżędne demonów ( tu wpisz wspułżędne demonów) a następnie zostaną one zrespaunowane w zdefinowanych wspułżędnych oraz w następstwie zostaną zdefinowane wspułżedne w które maja być teleportowani gracze (dla każdego gracza inna wartość wspułżędnych).

if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then
demon1pos = {x=243, y=205, z=7}
demon2pos = {x=245, y=205, z=7}
demon3pos = {x=244, y=209, z=7}
demon4pos = {x=246, y=209, z=7}
demon5pos = {x=247, y=207, z=7}
demon6pos = {x=248, y=207, z=7}

doSummonCreature("Demon", demon1pos)
doSummonCreature("Demon", demon2pos)
doSummonCreature("Demon", demon3pos)
doSummonCreature("Demon", demon4pos)
doSummonCreature("Demon", demon5pos)
doSummonCreature("Demon", demon6pos)

nplayer1pos = {x=246, y=207, z=7}
nplayer2pos = {x=245, y=207, z=7}
nplayer3pos = {x=244, y=207, z=7}
nplayer4pos = {x=243, y=207, z=7}

* teraz zostaje wysłana tak zwana animacja w miejsca z którego zostaną gracze teleportowani oraz następuje teleportowanie graczy w wczesniej zdefiniowanych wspułżednych a nastepnie zostanie wysłana tak zwana animacja w miejsca w które gracze zostali teleportowani.
doSendMagicEffect(player1pos,2)
doSendMagicEffect(player2pos,2)
doSendMagicEffect(player3pos,2)
doSendMagicEffect(player4pos,2)

doTeleportThing(player1.uid,nplayer1pos)
doTeleportThing(player2.uid,nplayer2pos)
doTeleportThing(player3.uid,nplayer3pos)
doTeleportThing(player4.uid,nplayer4pos)

doSendMagicEffect(nplayer1pos,10)
doSendMagicEffect(nplayer2pos,10)
doSendMagicEffect(nplayer3pos,10)
doSendMagicEffect(nplayer4pos,10)

* to odpowiada za transformacje itemu (w tej sytuacji swicha) do wartosci +1
doTransformItem(item.uid,item.itemid+1)

* to odpowiada za to jeżeli gracze nie spełnili wymagań zostanie wysłany do nich taki tekst
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end

* tu widzimy instrukcje warunkowe której warunkiami są wartość id oraz acces o wartosci 3 (GM ma acces o wartosci "3" a normalny gracz o wartosci 0), więc tylko GM może przekrecic switch spowrotem by można było jeczsze raz isc na anihilator przed resetem serwa (jest to spowodowane tym iż przy nastepnym wejsciu gracze by mieli 6 nowych Demonów + te których niezabili wczesniej prubujący,a znając klimat anichilatora oznaczało by to że gracze by sie teleportowali na demony gdyż poprzednie miejsca są zajete przez inne demony i FE) następnie po spełnieniu warunków wartość id itemu transformuje się o -1.
elseif item.itemid == 1946 then
if getPlayerAccess(cid) == 3 then
doTransformItem(item.uid,item.itemid-1)

* tu mamy instrukcje warunkową wymagającą akcji na itemie o wartosci uniqe id. Jeżeli zostaną spełnione wymagania to skrypt zdefiniuje czy robiony był qest.
elseif item.uid == 5001 then
queststatus = getPlayerStorageValue(cid,5000)

* tu jest instrukcja warunkowa sprawdzająca czy robiony był qest na podstawie wczesniej zdefinowanych informacji.Jeżeli warunki zostaną spełnione to do osoby wywołujacej akcje zostanie wysłany tekst, dany mu item o wartosci id a nastepnie zostaje dokonany zapis że zrobiłes już tego qesta w <../data/players/***.xml>(nazwa gracza wywołującego akcję).Jeżeli nie spełniłes wymagań instrukcji warunkowej to zostanie wysłany tekst do gracza wywołującego akcje.
if queststatus == -1 then
doPlayerSendTextMessage(cid,22,"You have found a demon armor.")
doPlayerAddItem(cid,2494,1)
setPlayerStorageValue(cid,5000,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end


Uniqe id użyte do chestów (skrzynek) i Swicha
-- 5000 = The switch.
-- 5001 = Chest z Demon Armor chest.
-- 5002 = Chest z Magic Sword chest.
-- 5003 = Chest z Stonecutter Axe chest.
-- 5004 = Chest z Present chest.

a oto zapis jaki powinicie miec w <./data/actions/action.xml>
<action uniqueid="5000" script="annihilator.lua" />
<action uniqueid="5001" script="annihilator.lua" />
<action uniqueid="5002" script="annihilator.lua" />
<action uniqueid="5003" script="annihilator.lua" />


Jesli chcielibyscie ten skrypt cały to można go pobrac TU.

Bush.lua Jest to skrypt który odwołuje się do krzaka na którym są jagóedki które możemy zebrać

* tu widzimy instrukcję warunkową gdzie warunkiem jest item o wartośi id, jeżeli akcja spełnia warunek to id temu w zostanie zmienione do następującej wartosci id i gracz wywołujący akcję dostanie jagody.(id itemu jaki dostaniemy oraz ilość)
function onUse(cid, item, frompos, item2, topos)
if item.itemid == 2785 then
doTransformItem(item.uid,2786)
doPlayerAddItem(cid,2677,5)
end
return 1
end

Fishing.lua Tan skrypt odpowiada za łowienie ryb oraz dodawanie Skill tray (punkty skila, jest wymagana jakaś ilosć do zdobycia skila na wyższy level) oraz zdefinowana ilosć skil tray do zdobycia danego levelu skila a także zdefinowano tu częstotliwość udania złowienia ryby na danym levelu skilu łowienia.

* Widzymy instrukcję warunkową która wymaga wartości id, gdy warunek zostanie spełniony, zostanie zdefinowany skil fishing jaki posiada gracz, zostanie zdefiniowana losowa liczba a następnie wysłana animacja w miejsce akcji.
if item2.itemid == 490 then
skill_level = getPlayerSkill(cid,6)
random_number = math.random(1,(100+skill_level/10))
doSendMagicEffect(topos,1)

* Widzimy tu instrukcję warunkową która sprawdza czy zdefinwana wczesniej losowa liczba jest mniejsza lub równa skilowi. Jeżeli warunek zostanie spełnioany to gracz wywołujący akcje dostanie item o wartości id i ilosci takiej oraz zostanie wykonany wpis do pkilu gracza powiekszający wartoś tray skill.
if random_number<=skill_level then
doPlayerAddItem(cid,2667,1)
end
doPlayerAddSkillTry(cid,6,1)

fluids.lua Jest to skrypt odpowiadający za picie: mana fluidów, wina, krwi....

* Widzimy tu instrukcje warunkową która wymaga wartości id ,gdy zostanie spełniony warunek widzimy następną instrukcję warunkową która wymaga wartosci id, jesli warunek zostanie spełniony zostanie wysłana wiadomość.
if item2.itemid == 1 then
if item.type == 0 then
doPlayerSendCancel(cid,"It is empty.")
else

* widzimy instrukcję warunkową której warunkiem jest wartość id i następstwem jej spełnienia będzie wymuszenie powiedzenia przez gracza wywołującego akcje takiego textu a następnie zostanie nadany magiczny efekt o wartości.
elseif item.type == 4 then
doPlayerSay(cid,"it was slime!!",16)
doSendMagicEffect(topos,

* tu widzimy instrukcję warunkową wartość id type.Jeżeli spełnimy warunek zostanie nam dodane HP o wartosci oraz nadany magic efekt.(to ilość hp dodanych)
elseif item.type == 10 then
doPlayerAddHealth(cid,70)
doSendMagicEffect(topos,12)

* tu widzimy instrukcję warunkową wartość id type.Jeżeli spełnimy warunek zostanie nam dodana Mana o wartosci, nadany magic efekt (to ilość many dodanej) oraz zostanie wymuszone wypowiedzenie textu przez osobe wywołującą akcje.
elseif item.type == 7 then
doPlayerAddMana(cid,70)
doSendMagicEffect(topos,12)
doPlayerSay(cid,"Aaaaah...",1)
__________________
Poradnik dla początkujących by Orzech a w nim:Key system, Switch system, Signs
Skrypt do runa dającego mane
Edytor Map do Tibi 7.5 gotowy do pracy
Rozwiazanie błędu YourOTS przy wczytywaniu Hauses
OTServ actionscript manual v1.0 by GriZzm0.
Konwertery Map
Key System pod OTS 7.5
Forum mojego OTSa. Jest to RPG serwer !!!
Last edited by orzech : 28-08-2005 at 06:00 PM.
orzech is offline Add to orzech's Reputation Report Bad Post Reply With Quote
orzech
View Public Profile
Wyślij Prywatną Wiadomość do orzech
Find More Posts by orzech
Dodaj orzech do Listy Kumpli
Stary 27-08-2005, 09:41 AM #5
orzech
Gaduła+

orzech's Avatar

Data rejestracji: Jun 2004
Położenie: Urzędów
Posty: 205
Ostrzeżenia: 2
orzech został przez kogoś doceniony

Post Ad7. kontynuacja

food.lua Jest to skrypt odpowiadający za jedzenie.(jest to scisle powiązane z uzupełnianiem nię HP oraz many)

* to odpowiada za to a jakia wartość najedzenie jest maxymalna.
Kod:

*MAX_FOOD = 300



* tu definiujemy wartość jaką daje jedna sztuka zjedzonego jedzenia.
Kod:

-- Get food value depending on item.itemid food = 60



* To odpowiada za to że zostaje pobrana informacja na temat naszego najedzenia z pliku <../data/players/***.xml> (***.xml to nazwa gracza z rozszeżeniem xml wywołującego akcje) a następnie jesli warunek zostanie spełniony (wartość najedzenia musi być większa niż ja zdefinowano) to zostanie wysłana wiadomość i zakonczona akcja.Jeżeli warunek nie zostanie spełniony to w pliku gracza wywołującego akcję zostanie zwiększona wartość najedzenia o wczesniej zdefiniowaną wartość (60) i usunięty item który został wprowadzony w akcje.

if (getPlayerFood(cid) + food > MAX_FOOD) then
doPlayerSendCancel(cid,"You are full.")
return 1
end

doPlayerFeed(cid,food)
doRemoveItem(item.uid,1)

gold.lua Jest to skrypt odpowiadający za gold coins.

* widzimy instrukcję warunkową gdzie warukami są: wartość id itemu oraz wartość type. Jeżeli waruneki zostaną spełnione to zostanie usunięty item o warosći id i nadany graczowi wywołującemu akcje item o wartości id o ilości takiej.
if item.itemid == 2148 and item.type == 100 then
--doRemoveItem(item.uid,item.type)
--doPlayerAddItem(cid,2152,1)

* to odpowiada za usunięcie gold coins w ilości 99 oraz danie itemu o wartości id graczowi wywołującemu akcje.
doRemoveItem(item.uid,99)
doTransformItem(item.uid,2152)

* ta informacja jest wysyłana gdy zajdzie akcja
Kod:

doPlayerSendTextMessage(cid,22,"You have changed 100 gp to 1 platnium coin")



* widzimy instrukcje warunkową gdzie warunkiami są: wartość id oraz wartośći type(ilości) mniejszej od 100. Jeżeli warunek niezostanie spełniony do gracza wywołującego akcję zostanie wysłana wiadomość i zostanie zakonczona akcja.
elseif item.itemid == 2148 and item.type < 100 then
doPlayerSendTextMessage(cid,22,"You have to got 100 gp's to change for platinum coin")
end
end

machete.lua Ten skrypt odpowiada za użycie machety do wycięcia krzaków.

* widzimy instrukcję warunkową po której spełnieniu item2 wartość id oraz
amienia wartość id item2.
if item2.itemid == 2782 then
doTransformItem(item2.uid,2781)


Pick.lua Ten skrypt odpowiada za to iż możemy zmienić jakis item o jakiejś wartości id a następnie po jakimś czasie on powruci do swojej pierwszej wartośći.

* Widzimy instrukcję warunkową po której spełnieniu konczy się akcjia
Kod:

if item2.itemid == 0 then return 0 end



* Widzimy instrukję warunkową gdzie warunkiem jest item2 o wartości id. Jeżeli warunek zostanie spełniony item2 zostanie dransformowany do itemu o wartosći id.
if item2.itemid == 711 then
doTransformItem(item2.uid,462)

Dalej się powtarza ten sam ciąg tylko z innymi zmiennymi.To odpowiada za to że dziura zakopie się po jakimś czasie.

else
return 0
end
doDecayItem(item2.uid)

return 1
end

W tym skrypcie można zdefiniowac własne itemy które możemy odkopać kilofem, wsystarczy przypisac temy skryptowi itemy używane na twoim OTSie do tego celu.W ten sposóburozmaicisz serwer przez tajemne przejscia które domyślni tylko zanajdą.


rope.lua Jest to skrypt odpowiadający za ropanie siebie i innych.

* Widzimy definowane wspułżedne rope place ( miejsca w którym można sie ropnąć) oraz instrukcję warunkową gdzie warunkiem jest wartość id itemu na któremu została podana akcja w wyniku użycia itemu zdefiniowanego axtion.xml odwołanego do tego skryptu (prosto mówiać jest to lina ).Gdy warunek zostanie spełniony to akcja zakonczy się.
npos = {x=topos.x, y=topos.y, z=topos.z}
if item2.itemid == 0 then
return 0
end

* tu widzimy instrukcje warunkową gdzie warunkiem jest item2 o wartosci id. Gdy warunek zostanie spełniony to osoba wywołująca akcję zostanie teleporowana do pozycji wczesniej zdefiniowanej wartosci +1y oraz -z.
if item2.itemid == 384 then
npos.y = npos.y + 1
npos.z = npos.z - 1
doTeleportThing(cid,npos)

* widzimy instrukjcę warunkową gdzie warunkiem jest wartość id item2 po której spełnieniu zostania zdefinowane wspułżedne osoby na którą akcja bedzie wykorzystana i po spełnieniu następnego warunku (sprawdza czy jest co ropać) zostanie teleportowany według wczesniej zdefiniowanych wspułżednych i akcja zakonczy się.
elseif item2.itemid == 469 then
npos.y = npos.y + 1
downpos = {x=topos.x, y=topos.y, z=topos.z+1, stackpos=255}
downitem = getThingfromPos(downpos)
if downitem.itemid > 0 then
doTeleportThing(downitem.uid,npos)
end

Reszta wierszów powtarza się z inymi zmienymi.

rwitems.lua Ten skrypt odpowiada za edytowanie specjalnych itemów i wpisywanie tam swojego textu (np: list)

* Widzimy tu definiowanie słowa rw
Kod:

rw = getItemRWInfo(item.uid)



* Widzimy tu instrukcję warunkową po której spełnieniu kończy się akcja. Jeżeli nie spełni się warunek to następna instrukcja warunkowa postawi nam warunek po którym spełnieniu ukaże nam się okno tekstowe i skończy się akcja.

if rw and 1 then
if rw and 2 then
doShowTextWindow(item.uid,100,1)


* tu widzimy następną instrukcję warunkową gdzie warunkiem jest wartość id itemu a po spełnieniu warunku pokaże nam sie text window gdzie możemy wpisywac tekst.
if item.itemid == 2598 then
doShowTextWindow(item.uid,0,0)


shovel.lua odpowiada za rozkopywanie dziur które po jakimś czasie się same zakopują

* Tu widzimy instrukcję warunkową po której spełnieniu akcja się konczy.
Kod:

if item2.itemid == 0 then return 0 end



* Tu widzimy instrukcję warunkową gdzie warunkiem jest item2 o wartosci id. Jesli warunek zostanie to item2 zostaje transformowany do wartości id.
if item2.itemid == 468 then
doTransformItem(item2.uid,469)




__________________
Poradnik dla początkujących by Orzech a w nim:Key system, Switch system, Signs
Skrypt do runa dającego mane
Edytor Map do Tibi 7.5 gotowy do pracy
Rozwiazanie błędu YourOTS przy wczytywaniu Hauses
OTServ actionscript manual v1.0 by GriZzm0.
Konwertery Map
Key System pod OTS 7.5
Forum mojego OTSa. Jest to RPG serwer !!!
Last edited by orzech : 28-08-2005 at 05:39 PM.
orzech is offline Add to orzech's Reputation Report Bad Post Reply With Quote
orzech
View Public Profile
Wyślij Prywatną Wiadomość do orzech
Find More Posts by orzech
Dodaj orzech do Listy Kumpli
Stary 28-08-2005, 12:31 PM #6
orzech
Gaduła+

orzech's Avatar

Data rejestracji: Jun 2004
Położenie: Urzędów
Posty: 205
Ostrzeżenia: 2
orzech został przez kogoś doceniony

Lightbulb Ad8. & Ad9. & Ad10. & Ad11. Ad12.

Ad8.
W Drakoni Napisy na tabliczkach zostały uproszczone do wpisania tylko wspułżędnych oraz tekstu jaki ma by wyświetlany, a wpisuje sie to w pliku <../data/Sings/Sings.xml>

* tak wygłąda edytowany plik w notatniku.
Tu wpisujemy wspułżędne oraz napis jaki ma się pojawić na tabliczce
<?xml version="1.0"?>
<readables>
<readable x="0" y="0" z="7" type="test sign" text="test sign text."/>
</readables>

Ad9.
Switch system został napisany przezemnie i działa w 100 %. Działa on w ten sposób że gdy użyjemy swicza o danym Uid to zmienia on nam item o danych wspułżednych oraz o danej wartości id.

* tu widzimy instrukcję warunkową gdzie warunkiem jest wartość id (jest to swich).Jeżeli warunek zostanie spełniony to dalej zostaną zdefiniowane wspułżedne itemów do przemiany (mogą to być sciany lub podłogi wliczjąc w to schodki na duł) oraz zdefinowane słowa: soad, soad1, soad2, soad3, soad4.
if item.itemid == 1946 then
switch = {x=54, y=37, z=7}
soad = getThingfromPos(switch)
switch2 = {x=54, y=38, z=7}
soad2 = getThingfromPos(switch2)
switch3 = {x=54, y=39, z=7}
soad3 = getThingfromPos(switch3)
switch4 = {x=54, y=40, z=7}
soad4 = getThingfromPos(switch4)

* Tu widzimy instrukcję warunkową gdzie warunkami są itemy do przemiany o wartości id, gdzie soad, soad2, soad3, soad4 to wczesniej zdefinowane wspułżedne. Jeżeli warunki zostaną spełnione to zdefinowane wczesniej itemy o wartościach id i zdefinowanych wczesniej wspułżednych przetranformują się w itemy o innych wartościach oraz wprawiony w ruch switch także sie transformuje do wartości id jednakże nie zmieni wartośći Uniqe id.Jak widzimy na koncu jest są dwia wiersze z napisem "end" a to dlatego że każda instrukcja "if" musi być zamknięta.
if soad.itemid == 407 and soad2.itemid == 406 and soad3.itemid == 407 and soad4.itemid == 406 then

doTransformItem(soad.uid,406)
doTransformItem(soad2.uid,407)
doTransformItem(soad3.uid,406)
doTransformItem(soad4.uid,407)
doTransformItem(item.uid,1945)


end
end

Chcąc urozmaicic naszą mape o switche w edytorze map stawiająć switcha musimy go edetować i nadać mu jakąś wartość uniqe id a następnie w actions wpisać taki wpis:
Kod:

-- Swich system By Orzech -- <action uniqueid="4000" script="switch4000.lua" /> <action uniqueid="4001" script="switch4001.lua" /> <action uniqueid="4002" script="switch4002.lua" /> <action uniqueid="4003" script="switch4003.lua" /> <action uniqueid="4004" script="switch4004.lua" /> <action uniqueid="4005" script="switch4005.lua" /> <action uniqueid="4006" script="switch4006.lua" /> <action uniqueid="4007" script="switch4007.lua" /> <action uniqueid="4008" script="switch4008.lua" /> <action uniqueid="4009" script="switch4009.lua" /> <action uniqueid="4010" script="switch4010.lua" /> <action uniqueid="4011" script="switch4011.lua" /> <action uniqueid="4012" script="switch4012.lua" /> <action uniqueid="4013" script="switch4013.lua" /> <action uniqueid="4999" script="switch4999.lua" /> -- end Swich system By Orzech --


gdzie to jest wartość unique id a to jest nazwa skryptu do którego będzie system gry odsyłany gdydany switch zostanie wprawiony w akcje.
Plik do pobrania w całości.

Ad10.
W pliku <../data/items/items.xml> znajdziecie spis wszystkich itemów jakie są w grze wraz z ich szczegułami takimi jak: type (jakiego jest typu item, może to być bron, jedzenie itp.) ,position (pozycja itemu, znaczy gdzie będzie go można zakładać), maxitems (ile będzie miał miejsca na itemy-- to w przypadku packpack, bag, chest, itp), weight (waga itemu), attack (ilę będzie item dawał nam ataku), defence (ile item będzie dawał nam obrony), arm (ile item będzie dawał nam armora).

* tu jest: wartość id itemu, nazwa itemu, typ (w tym przypadku to item w który możemy coś wsadzić), pozycja (w tym przypadku można ten item wsadzać tam gdzie backpack),maksymalna ilość pól do wykożystania na wsadzenie itemu, waga itemu (otuż nasza postac ma ograniczony levelowo udzwig który można wykorzystać)
<item id="1988" name="backpack" type="container" position="backpack" maxitems="20" weight="18.0" />

* tu jest: wartość id itemu, nazwa itemu, typ (w tym przypadku to item nakładany dla armora), pozycja (w tym przypadkuto item można sadzić na na głowe),atak (ile będzie dawał ataku), obrona (ile będzie dodawał obrony) waga itemu (otuż nasza postac ma ograniczony levelowo udzwig który można wykorzystać), to ilość ile item będzie dawał nam armora.
<item id="2496" name="horned helmet" type="armor" position="helmet" attack="0" defence="0" weight="51.0" arm="11"/>

Ad11.
Są takie typy ataków (potworki mają odpornośći na niektóre typy ataków):
ATTACK_PHYSICAL
ATTACK_POISON
ATTACK_ENERGY
ATTACK_FIRE
ATTACK_NONE
NM_ME_BLOCKHIT

Spele w Tibi zostały podzielone na 2 grupy:

1. Instant
W folderze <../data/spells/instant/***.lua> znajdziecie pliki lua w których zostały zdefinowane wszystkie czary pisane.Są 2 rodzaje czaru pisanego:

a) taki który z blanka runa

* widzimy definiowanie litery "n" gdzie to jest wartość id runu jaki nam powstanie a to jest ilość użyć zrobionego przez nas runu.To odpowiada za zrobienie runu i zakończenie akcji.
function onCast(cid, creaturePos, level, maglv, var)
n = makeRune(cid,2268,1);
return n
end

b) taki który zadaje obrażeia, leczy, zatrówa, zwiększa prędkość itp.

* tu definiujemy jakie ma miec pole rażenia nasz czar gdzie srodek to zawsze miejsce gdzie my stoimy (1- to miejsce gdzie czar działa)
Kod:

area = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, }



* tu definiujemy jakiego typu jest atak.
Kod:

attackType = ATTACK_PHYSICAL



* tu definiujemy jaką ma mieć animacje nasz czar (jesli chcemy zmienić animacjena taka którą widzielismy przy inym czarze wystarczy edytować tamten czar, skopiować nazwe animacji i zastapić nia obecną)
Kod:

animationEffect = NM_ANI_NONE



* tu definiujemy efekt hita, efekt obrażeń, kolor na jaki nam sie pokażą obrażenia, czy czar jest ofensywny oraz czy osoba na którą czar zostanie rzucony bedzie bluzgać krwią.
hitEffect = NM_ME_EXPLOSION_DAMAGE
damageEffect = NM_ME_DRAW_BLOOD
animationColor = RED
offensive = true
drawblood = true

* tu definiuje się centrum czaru (standardowo jest to pozycja rzucajacego czar)
Kod:

centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z}



* tu jest definiowana litera "n"
Kod:

n = tonumber(var) -- try to convert it to a number



* tu widzimy instrukcję warunkową po której spełnieniu zostanie wykonany czar z danymi parametrami.
Kod:

if n ~= nil then -- bugged -- ultimateExplosionObject.minDmg = var+0 -- UltimateExplosionObject.maxDmg = var+0 UltimateExplosionObject.minDmg = 0 UltimateExplosionObject.maxDmg = 0 else



* tu widzimy czar jaki zostanie wykonany o danych parametrach takich jak minimalne obrażenie i maxymalne obrażenie. Jest tu podana formuła z której zostaną naliczone obrażenia (level rzucającego czar razy 2 plus magiczny level razy 3 i to wszystko wymnożone będzie o wartość jaką zdeklarujemy i w przypadku minimal damage zostaje jeszce na koniec od tego wszystkiego odjęta jakas liczba)
UltimateExplosionObject.minDmg = (level * 2 + maglv * 3) * 3 - 30
UltimateExplosionObject.maxDmg = (level * 2 + maglv * 3) * 3.6
end

* Tu widzimy wiersz odpowiedzialny za wykonanie czaru
r
Kod:

eturn doAreaMagic(cid, centerpos, needDirection, areaEffect, area, UltimateExplosionObject:ordered()) end




2. Runes
W folderze <../data/spells/runes/***.lua> znajdziecie pliki lua w których zostały zdefinowane wszystkie czary używane poprzez użycie runa.

* tu definiujemy jakiego typu jest atak.
Kod:

attackType = ATTACK_PHYSICAL



* tu definiujemy jaką ma mieć animacje nasz czar (jesli chcemy zmienić animacjena taka którą widzielismy przy inym czarze wystarczy edytować tamten czar, skopiować nazwe animacji i zastapić nia obecną)
Kod:

animationEffect = NM_ANI_SUDDENDEATH



* tu definiujemy efekt hita, efekt obrażeń, kolor na jaki nam sie pokażą obrażenia, czy czar jest ofensywny oraz czy osoba na którą czar zostanie rzucony bedzie bluzgać krwią.
hitEffect = NM_ME_MORT_AREA
damageEffect = NM_ME_DRAW_BLOOD
animationColor = RED
offensive = true
drawblood = true

* tu definiuje się wspułżędne użycia czaru.
Kod:

centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z}



* tu widzimy czar jaki zostanie wykonany o danych parametrach takich jak minimalne obrażenie i maksymalne obrażenie. Jest tu podana formuła z której zostaną naliczone obrażenia (level rzucającego czar razy 2 plus magiczny level razy 3 i to wszystko wymnożone będzie o wartość jaką zdeklarujemy i w przypadku minimal damage zostaje jeszce na koniec od tego wszystkiego odjęta jakas liczba)
SuddenDeathObject.minDmg = (level * 2 + maglv *3) * 1.5 - 30
SuddenDeathObject.maxDmg = (level * 2 + maglv *3) * 1.8

* Tu widzimy wiersz odpowiedzialny za wykonanie czaru i zakonczenie akcji.
Kod:

return doTargetMagic(cid, centerpos, SuddenDeathObject:ordered()) end



Ad12.
Konta można tworzyć poprzez strone internetową dzieki takiemu udogodnieniu jak ACC maker ale o tym więcej w 14 dziale ponieważ tu opisze pliki w folderach <../data/accounts/***.xml> oraz <../data/players/***.xml>

1. Accounts edytujemy w notatniku (pamiętajmy że nazwa tego pliku to numer konta).

* tu mamy hasło konta, czas prenium account jaki nam został
Kod:

<account pass="2" type="1" premDays="1337">



* tu mamy liste charakterów jakie posiada konto, tu wpisujemy nazwe gracza (tak musi nazywać się także plik gracza w <../data/players/GM MiKe2K1.xml>)
<characters>
<character name="GM MiKe2K1" />
</characters>

2. Players edytujemy w notatniku.Są tu zawarte wszystkie dane o tej postaci.

* imię gracza które widać w grze.
Kod:

name="GM MiKe2K1"



* nazwa konta na którym jest postać.
Kod:

account="2"



* płeć postaci (1- facet, 0- kura domowa)
Kod:

sex="1"



* jest to wartość jaką ilość experience posiada nasza postać.
Kod:

exp="1088211"



* jest to profesja jaką posiada postać (1-sorcer, 2-druid, 3-paladin, 4-knight)
Kod:

voc="1"



* level jaki posiada nasza postać
Kod:

level="42"



* acces jaki posiada nasza postać (3 to GM, 0 to normalny gracz)
Kod:

access="3"



* udzwig jaki posiada nasza postać.
Kod:

cap="30000"



* magiczny level jaki posiada nasza postać
Kod:

maglevel="50"



* czas jaki został do zniknięcia pk.
Kod:

pktime="0"



* czas bana
Kod:

ban="0"



* miasto w jakim jest zameldowana postać (numer miasta, temle miaste definiuje sie w config.lua))
Kod:

city="0"



* tu mamy czy gracz jest w party.(0-nie, 1-tak)
Kod:

party="0"



* czas skula
Kod:

SkullStat="0"



* tu zapisuje się czy postać zrobiła już qesta1 (0-nie, 1-tak).
Kod:

q1="0"



* tu zapisuje się czy postać zrobiła już Annihilator qesta (0-nie, 1-tak).
Kod:

aniq="0"



* tu mamy wspułżędne gdzie ostatnio był gracz przy save serwer lub pgdzie się wylogował
Kod:

<spawn x="62" y="52" z="7"/>



* tu mamy wspułżędne gdzie gracz będzie się pojawiał po smierci.
Kod:

<temple x="51" y="14" z="6"/>



* tu mamy ilość skuli jaką posiada gracz oraz ilość ludzi zabitych na skula.
Kod:

<skull white="0" red="0" unjustkills="0"/>



* tu mamy status gildi (0- nie jest w żadnej gildi, 1- jest w gildi), nazwa gildi, ranga w gildi.
<guild status="1" name="Darkonia Server" rank="Gamemaster"/>

* tu mamy ile nasza postać posiada teraz życia, ile może posiadać najwięcej, wartość najedzenia.
<health now="820" max="820" food="0"/>

* tu mamy ile nasza postać posiada teraz many, ile może posiadać najwięcej.
<mana now="920" max="920" spent="0"/>

* to odpowiada za wygląd naszej postaci.
Kod:

<look type="75" head="25" body="35" legs="45" feet="55"/>


* to odpowiada za skil gdzie: to jest numer skila (0-fist fighting, 1-club fighting, 2-sword fighting, 3-axe fighting, 4-distanse fighting, 5-shielding, 6-fishing), to jest poziom skila, to jest ilość tray points (dla zdobycia każdego levele skila jest potrzebna jakaś ilość tray points)
<skill skillid="0" level="10" tries="6"/>

* to odpowiada za to co nasza postać ma w inventory gdzie to jest nr slota gdzie znajduje się item a to jest jego wartość id itemu.
Nr id slotów są takie:
[1]-jest to slot przeznaczony na helmets,
[2]-jest to slot przeznaczony na amulets,
[3]-jest to slot przeznaczony na backpack,
[4]-jest to slot przeznaczony na armor,
[5]-jest to slot przeznaczony na lewą reke,
[6]-jest to slot przeznaczony na prawą reke,
[7]-jest to slot przeznaczony na spodnie,
[8]-jest to slot przeznaczony na buty,
[9]-jest to slot przeznaczony na ring,
[10]-jest to slot przeznaczony na strzały.
<slotslotid="1"><item id="2496"/>

* tu znajduje się wszystko co ma gracz w depo
Kod:

</depot>



__________________
Poradnik dla początkujących by Orzech a w nim:Key system, Switch system, Signs
Skrypt do runa dającego mane
Edytor Map do Tibi 7.5 gotowy do pracy
Rozwiazanie błędu YourOTS przy wczytywaniu Hauses
OTServ actionscript manual v1.0 by GriZzm0.
Konwertery Map
Key System pod OTS 7.5
Forum mojego OTSa. Jest to RPG serwer !!!
Last edited by orzech : 29-08-2005 at 06:26 PM.
orzech is offline Add to orzech's Reputation Report Bad Post Reply With Quote
orzech
View Public Profile
Wyślij Prywatną Wiadomość do orzech
Find More Posts by orzech
Dodaj orzech do Listy Kumpli
Stary 28-08-2005, 12:51 PM #7
orzech
Gaduła+

orzech's Avatar

Data rejestracji: Jun 2004
Położenie: Urzędów
Posty: 205
Ostrzeżenia: 2
orzech został przez kogoś doceniony

Exclamation Ad13 & Ad14. & Ad15. & Ad16 & Ad17. & Info końcowe

Ad13.
w config.lua są ustawienia naszego serwera i znajduje sie on w głównym folderze naszego OTSa.Opisze teraz ten plik z Drakonia 2.11 w edytowany w notatniku.

* tu się wpisuje nazwe folderu w którym znajduja się pliki serwerowe.(najlepiej nieruszać)
Kod:

datadir = "data/"



* tu jest scieżka i nazwa mapy jaką ma Otwierać OTS.
Kod:

mapfile = "data/world/test.xml2"



* tu jest scieżka i nazwa pliku z respawnami potworków jaki ma Otwierać OTS.
Kod:

spawnfile = "data/world/spawn-map.xml"



* tu wpisuje sie jaka ma być wiadomość powitalna przy wlogowaniu do serwera.
Kod:

loginmsg = "Welcome to Darkonia RPG Server."



* tu wpisujemy z jakiego portu ma kożystać OTS
Kod:

port = "7171"



* tu wpisujemy nazwę naszego serwera.
Kod:

servername = "Darkonia RPG"



* tu wpisujemy informację jaka pokaże się po złym wpisaniu loginu lub hasła.
Kod:

info = "Make your account at\nhttp://darkonia.sytes.net\n\nThanks for Play."



* tu definiujemy czas bana (86400- jest to cały dzień)
Kod:

bantimes = 86400



* jest to % utraty expa po smierci.
Kod:

losedie = 70



* tu wpisujemy ile maja nam dawac potworki expa bazując na normalnym expie potworków (w testach jakie zrobiłem 100 oznacza 100% expa-czyli normalnie a nastepne 200 to nastepne 100%, czyli jesli tam wpiszemy 300 to potworki będą nam dawac 200% expa co normalnie dają [np snake zamiast 10 da 20 expa])
Kod:

xpadd = 100



* tu definiujemy czy zezwalamy na używanie mc (0-oznacz że można używać mc, 1-oznacza że nie można uzywać mc)
Kod:

antimc = 1



* tu wpisujemy Nick osoby która stawia serwer.
Kod:

ownername = "MiKe2K1"



* tu wpisujemy adres e-mail kontaktowy.
Kod:

owneremail = "darkonia23@hotmail.com"



* tu wpisujemy adres strony naszego serwera.
Kod:

url = "http://darkonia.sytes.net"



* tu wpisujemy Kraj w jakim został postawiony serwer
Kod:

location = "Spain"



* tu wpisujemy ip serwera. (jesli niewiesz jakie masz ip wejdz TU, jesli masz problemy z ip to wejdz TU)
K


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Nie 14:36, 30 Paź 2005
Stanley
Gadula

 
Dołączył: 30 Paź 2005
Posty: 82
Przeczytał: 0 tematów

Ostrzeżeń: 5/20





Dobre przeczytalem kawałek:D


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Pon 9:43, 31 Paź 2005
Pasztecik
Gadula

 
Dołączył: 30 Paź 2005
Posty: 61
Przeczytał: 0 tematów

Ostrzeżeń: 5/20





hehe a ja jakies 1/4 tekstu Very Happy


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Pon 9:44, 31 Paź 2005
kubas
administrator

 
Dołączył: 26 Cze 2005
Posty: 204
Przeczytał: 0 tematów

Ostrzeżeń: 0/20
Skąd: Wloclawek





Nie trac dnia nie czytaaj :PPPP


Post został pochwalony 0 razy
Zobacz profil autora
8)
PostWysłany: Czw 12:40, 01 Gru 2005
Hawk1511
Newbie

 
Dołączył: 23 Lis 2005
Posty: 6
Przeczytał: 0 tematów

Ostrzeżeń: 0/20
Skąd: Gdina:))





Confused prawie nic z tego nie rozumiem ale
jest spox!


Post został pochwalony 0 razy
Zobacz profil autora
Re: 8)
PostWysłany: Czw 16:24, 08 Gru 2005
zora
Newbie

 
Dołączył: 08 Gru 2005
Posty: 1
Przeczytał: 0 tematów

Ostrzeżeń: 0/20
Skąd: Koszalin





Pomocy nie umiem zakladac OTS Nic z tego nie rozumiem Kto pomorze PLz Crying or Very sad


Post został pochwalony 0 razy
Zobacz profil autora
Poradnik By Orzech! (bardzo Dobry)
Forum www.tibiafans.fora.pl Strona Główna -> OTsy
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Wszystkie czasy w strefie EET (Europa)  
Strona 1 z 1  

  
  
 Napisz nowy temat  Odpowiedz do tematu  


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001-2003 phpBB Group
Theme created by Vjacheslav Trushkin
Regulamin