- Ots City http://www.otscity.pun.pl/index.php - Poradniki http://www.otscity.pun.pl/viewforum.php?id=12 - Poradnik do ots http://www.otscity.pun.pl/viewtopic.php?id=8 |
Zoren - 2010-07-10 18:06:53 |
Witam Tu wam napisze jak zrobić swojego 1 ots (skrypt nie jest mój) Kod:Spoiler: ---------------------------- OTServ configuration ------------------------------ -- datadir datadir = "data/" -- sets what map to load map = "data/world/test.otbm" <------ Â?cieżka do mapy. Przy zmienieniu jej na mapę o nazwie ,,moja" wystarczy zmienić ,,test" na ,,moja". -- OTBM for binary, SQL for SQL map, XML for OTX maps mapkind = "OTBM" <------ To zostawiamy. -- SQL for acc/player info from SQL, XML for acc/player info from XML sourcedata = "XML" <------ To zostawiamy. -- the message the player gets when he logs in loginmsg = "Witam na SiwekOTS" <------ Napis, który pojawia się po zalogowaniu do gry na kanale Default. -- the port otserv listens on * port = "7171" <------ Port Servera. Najlepiej zostawić taki jaki jest. -- name of our server servername = "SiwekOTS" <------ Nazwa servera. -- name of the owner of our server ownername = "GM Misjonarz" <------ Posiadacz servera. -- email of the owner of our server owneremail = "" <------ E-mail posiadacza servera. -- the url for more server info url = "" <------ Strona servera. Nie jest konieczna -- the location of the server location = "Poland" <------ To raczej zostawiamy :-) -- the ip the server should redirect too * ip = "86.63.99.152" <------ Nasze IP. Aby je sprawdzić wchodzimy na http://www.whatismyip.com/ -- The messagebox you sometimes get before you choose characters * motd = "Witamy na SiwekOTS :-)" <------ Tekst, który pojawia się przed listą postaci. motdnum="0" -- use md5 passwords for accounts, yes/no md5passwords = "no" -- world type. options: pvp, no-pvp, pvp-enforced * worldtype = "pvp" <------ Typ świata. Krótki opis ,,PvP- Można się zabijać" ,,PvP-Enforced- Za zabicie gracza dostaje się doświadczenie" ,,No-PvP- Nie można się zabijać. -- max number of players allowed * maxplayers = "40" <------ Maksymalna ilość osób na serverze. -- exhausted time in ms (1000 = 1sec) * exhausted = 1000 <------ Jak szybko można strzelać z runek. Poniżej 1000 można strzelać z macro =P -- exhaustion time for healing spells (1000 = 1sec) exhaustedheal = 1000 <------ Jak szybko można się leczyć czarami spontaniczymi (exura, exura gran, exura vita) -- how many ms to add if the player is already exhausted and tries to cast a spell (1000 = 1sec) exhaustedadd = 300 -- how long does the player has to stay out of fight to get pz unlocked in ms (1000 = 1sec) pzlocked = 10*1000 -- allow multiple logins of the same char allowclones = 0 <------ Ile osób może grać 1 charem. Przydatne do PvP :-) -- vocation names vocations = {"a sorcerer", "a druid", "a paladin", "a knight"} <------ Najlepiej zostawić promoted_vocations = {"a master sorcerer", "an elder druid", "a royal paladin", "an elite knight"} <------ Też najlepiej zostawić --- SQL part sql_host = "localhost" sql_user = "root" sql_pass = "" sql_db = "otserv" --- SQL MAP part sqlmap = "test_map" map_host = "localhost" map_user = "root" map_pass = "" map_db = "" ------------------------- YurOTS basic configuration --------------------------- -- name of your world (seen on the character list when logging in) worldname = "Siwek OTS" <------ Nazwa Servera -- how often do server saves it's state (0 = off, 5 = 5min, 60 = hour) autosave = 10 <------ Co jaki czas ma następować zapis servera. -- do you want to enable cap system? (yes/no) capsystem = "no" <------ Czy ma być cap system?? -- do you want players to learn spells before they can use them? (yes/no) * learnspells = "no" <------ Czy trzeba uczyć się czarów?? -- do you want to give premium account to all players? (yes/no) freepremmy = "no" <------ Czy gracze mają zaczynać z Premium Account -- do you want premium players to wait in queue as others? (yes/no) queuepremmy = "yes" -- how much % of {exp, mana, skill, eq, bp} do you lose when dying diepercent = {"7", "7", "7", "7", "100"} <------ Jakie są szanse na stratę doświadczenia, m lvl, skilli, eq lub backpacka -- how many summons player can have maxsummons = 2 <------ Maksymalna ilość summonów. -- do you want to give summons for all vocations? (yes/no) summonsallvoc = "no" <------ Czy wszystkie profesje mogą tworzyć summona (Knight biega z 2 ds'ami?:-P) -- chance of losing a spear when shot (0 - none lost, 100000 - all lost) spearlosechance = 50 <------ Po ilu uderzeniach spear ma ulec zniszczeniu -- anti-afk - maximum idle time to kick player (1 = 1min) kicktime = 15 <------ Po ilu minutach po nie oddawaniu oznak życia gracz ma zostać wyrzucony z gry -- maximum number of items player can keep in his/her depot maxdepotitems = 10000 <------ Maksymalna ilość itemów w depo -- maximum number of items on a house tile (including those in containers) maxhousetileitems = 20 <------ Maksymalna ilość itemów na jednej kratce domku -- how much death entries are saved in players file (old are deleted) maxdeathentries = 10 -- mana consumend by {snakebite, moonlight, volcanic, quagmire, tempest} rod rodmana = {"2", "3", "5", "8", "13"} <------ Najlepiej to i 3 poniższe zostawić. -- mana consumed by wand of {vortex, dragonbreath, plague, cosmic energy, inferno} wandmana = {"2", "3", "5", "8", "13"} <------ Najlepiej to i 2 poniższe zostawić. -- shooting range of {snakebite, moonlight, volcanic, quagmire, tempest} rod rodrange = {"4", "3", "2", "1", "3"} <------ Najlepiej to i 1 poniższy zostawić. -- shooting range of wand of {vortex, dragonbreath, plague, cosmic energy, inferno} wandrange = {"4", "3", "2", "1", "3"} <------ Najlepiej to zostawić. -- damage of burst arrows blast -- default is from (1*lvl+5*mlvl)*0.24 to (1*lvl+5*mlvl)*0.55 <------ Obrażenia od burst arrow burstarrowdmg = {"1.0", "5.0", "0.24", "0.55"} <------ Obrażenia od burst arrow --------------------------- Multipliers and gains ------------------------------ -- experience multiplier (how much faster you got exp from monsters) * expmul = 4 <------ Mnożnik expa. -- experience multiplier for pvp-enforced (how much faster you got exp from players) expmulpvp = 2 <------ Przy PvP-Enforced po zabiciu gracza dostajemy jego doświadczenie. Tutaj jest mnożnik tego doświadczenia ;-) -- skill multipliers: 1 - rl tibia, 10 - ten times faster etc. {no-voc, sorcerer, druid, paladin, knight} weaponmul = {"5", "5", "5", "5", "40"} <------ Jak szybko mają rosnąć skille: fist, sword, axe i club figting distmul = {"1", "1", "1", "40", "1"} <------ Jak szyko ma rosnąć distance shieldmul = {"5", "5", "5", "20", "30"} <------ Jak szybko ma rosnąć shielding manamul = {"1", "3", "3", "2", "2"} <------ Jak szybko ma rosnąć magic level -- how much points of life,mana,cap do you get when advancing {no-voc, sorcerer, druid, paladin, knight} capgain = {"10", "10", "10", "20", "25"} <------ Ile co level dana profesja ma otrzymywać capa managain = {"5", "30", "30", "15", "5"} <------ Ile co level dana profesja ma otrzymywać many hpgain = {"5", "5", "5", "10", "15"} <------ Ile co level dana profesja ma otrzymywać życia -- how much faster do you recovery life,mana after eating food (1 - rl tibia) healthtickmul = 10 <------ O ile razy szybciej ma rosnąć życie niż w rl tibii manatickmul = 10 <------ O ile razy szybciej ma rosnąć mana niż w rl tibii -------------------------------- Skull system ---------------------------------- -- how many unjustified kills to get a red skull redunjust = 3 <------ Po ilu zabiciach mamy otrzymać red skulla (tylko w PvP) -- how many unjustified kills to get banned banunjust = 6 <------ Po ilu zabiciach mamy otrzymać automatycznego bana -- how long do you have white skull after attacking player (1 = 1min) hittime = 1 -- how long do you have white skull after killing player (1 = 1min) whitetime = 15 <------ Czas trwania white skulla -- how long do you have red skull (1 = 1min) redtime = 6*60 <------ Czas trwania red skulla. Im więcej osób tutaj zabijemy tym dłużej mamy. Po zabiciu 3 osób czekamy 3h, po 4 graczach 4h itd. -- how long do you have to wait to lose 1 unjustified kill (1 = 1min) fragtime = 12*60 ------------------------------ GM access rights -------------------------------- To już zostawimy :-) -- access to walk into houses and open house doors accesshouse = 3 -- access to login without waiting in the queue or when server is closed accessenter = 3 -- access to ignore damage, exhaustion, cap limit and be ignored by monsters accessprotect = 3 -- access to broadcast messages and talk in colors (#c blabla - in public channels) accesstalk = 3 -- access to move distant items from/to distant locations accessremote = 3 -- access to see id and position of the item you are looking at accesslook = 3 Tak więc po uzupełnieniu tych ważnych i mniej ważnych pól mamy właściwie OTS gotowego. Kod:Spoiler: elseif msgcontains(msg, 'hmm') then buy(cid,2311,100,40) Tekst, który gracz musi wypowiedzieć, aby kupić daną runę. Kod:Spoiler: <? //---------------------------- OTS directories -------------------------------- $diraccount = 'C:\\Downloads\\OTS3\YurOTS_094b\\ots\\data\\accounts'; <----- Tutaj podajemy ścieżke do pliku account przy OTS. Zróbcie to na obecnym wzorze i pamiętajcie o 2 kreskac ,,\\" $dirplayer = 'C:\\Downloads\\OTS3\YurOTS_094b\\ots\\data\\players'; <----- Tutaj to co powyżej tylko ścieżke do folderu players $dirvip = 'C:\\Downloads\\OTS3\YurOTS_094b\\ots\\data\\vip'; <----- A tutaj do folderu vip //----------------------------- All vocations ---------------------------------- $lvl = '20'; // initial level <---- Tutaj wpisujemy z jakim lvl ma zaczynać każda postać $exp = '98800'; // initial exp (must be correct with level) <---- Tutaj podajemy ilość expa. Uwaga!! Musi być taka jaka jest potrzebna na dany lvl!!! $cap = '300'; // initial capacity <---- Tutaj podajemy ile postać ma posiadać capa jak zaczyna. Nie potrzebne jeżeli mamy wyłączony system capacity. // spawn place $spawnx = '160'; <---- Współrzędna ,,x" gdzie mamy zacząć na mapie. Najlepiej temple. $spawny = '54'; <---- Współrzędna ,,y" gdzie mamy zacząć na mapie. $spawnz = '7'; <---- Współrzędna ,,z" gdzie mamy zacząć na mapie. // temple $templex = '160'; <---- Współrzędna ,,x" temple, w którym każdy gracz zaczyna po śmierci $templey = '54'; <---- Współrzędna ,,y" temple. $templez = '7'; <---- Współrzędna ,,z" temple. // do not change! if (!defined('MALE')) define('MALE', 1); if (!defined('FEMALE')) define('FEMALE', 0); if (!defined('SORC')) define('SORC', 1); if (!defined('DRUID')) define('DRUID', 2); if (!defined('PALADIN')) define('PALADIN', 3); if (!defined('KNIGHT')) define('KNIGHT', 4); //-------------------------------- Sorcerer ------------------------------------ // Looks $look[SORC][MALE] = '9'; <---- Tutaj ustawiamy wygląd chłopaka (dobrze zostawić, ale można się pobawić. Jeżeli chcecie mogę wam opisać jak zrobić, żeby zacząć np. z wyglądem Hero, $look[SORC][FEMALE] = '58'; <----- To co powyżej, tylko że wygląd dziewczyny // HP, mana, magic level $health[SORC] = '295'; <------ Ile sorc ma mieć życia jak zacznie gre $mana[SORC] = '395'; <------ Ile sorc ma mieć many jak zacznie gre $mlvl[SORC] = '45'; <------ Jaki sorc ma mieć magic level jak zacznie gre // Skills: fist,club,sword,axe,dist,shld,fish $skill[SORC] = array(10, 10, 10, 10, 10, 15, 10); <---- Skille z jakimi zaczyna sorc // Eq: helm, amul, bp, armor, rght, left, legs, boot, ring, ammo $equip[SORC] = array(2490, 2129, 1988, 2463, 2423, 2525, 2468, 2643, 2164, 0); <--- Ekwipunek z jakim zaczyna sorcerer // Backpack: $bp[SORC] = '<item id="2152" count="50"/><item id="2311" count="100"/>'; <----- Co ma mieć sorcer w backpacku po zaczęciu gry. Tutaj wpisujmy ID itemu, który ma mieć sorcer w backpacku. W tym wypadku są tutaj platynki, a 2 item to hmm Kod:Spoiler: <? //---------------------------- OTS directories -------------------------------- $diraccount = 'c:\\YurOTS\\data\\accounts'; <---- Tak jak przy powyższym acc makerze podajemy ścieżke do folderu account $dirplayer = 'c:\\YurOTS\\data\\players'; <---- Tutaj ścieżke do folderu players $dirvip = 'c:\\YurOTS\\data\\vip'; <---- I tutaj do VIP //-------------------------------- Rookie -------------------------------------- // spawn place $spawnx = '85'; <---- Współrzędna ,,x" spawnu. Najlepiej temple na rooku. $spawny = '211'; <---- Współrzędna ,,y" spawnu. Najlepiej temple na rooku. $spawnz = '7'; <---- Współrzędna ,,z" spawnu. Najlepiej temple na rooku. // temple $templex = '85'; <---- Współrzędna ,,x" temple na rooku. $templey = '211'; <---- Współrzędna ,,y" temple na rooku. $templez = '7'; <---- Współrzędna ,,z" temple na rooku. // Looks (male, female) $look[1] = '130'; <----- Wygląd chłopaka. $look[0] = '138'; <----- Wygląd dziewczyny. // Eq: helm, amul, bp, armor, rght, left, legs, boot, ring, ammo $equip = array( 0, 0, 1988, 2467, 0, 2382, 0, 0, 0, 0); <------ Początkowy ekwipunek. // Backpack: $bp = '<item id="2674" count="1"/>'; <------ Itemy w backpacku. W tym przypadku 1 jabłko. ?> Ręczne tworzenie postaci Kod:Spoiler: <?xml version="1.0"?> Teraz ustalamy jaki ma być dolny kod postaci. Kod:Spoiler: <account pass="lolek" Tutaj można ustawić ile ma się mieć dni pacc'a. Kod:Spoiler: type="1" premDays="15"> Teraz doklejamy to najważniejsze. W miejscu ,,Azorea" wpisujemy nick postaci, która chcemy zrobić. Kod:Spoiler: <characters> <character name="Azorea"/> </characters> Jeżeli chcemy mieć 2 postacie na koncie doklejamy przed </characters> to i w miejscu ,,Misjonarz" Wpisujemy nick 2 postaci. Kod:Spoiler: <character name="Misjonarz"/> I dodajemy ostatnią linijkę, w której nic nie zmieniamy. Kod:Spoiler: </account> Całość powinna wyglądać wtedy tak: Kod:Spoiler: <?xml version="1.0"?> <account pass="lolek" type="1" premDays="15"> <characters> <character name="Misjonarz" /> <character name="Azorea"/> </characters> </account> Teraz należy to napisać w formacie *.xml Kod:Spoiler: <?xml version="1.0"?> Teraz dopisujemy to i w miejscu z nickiem Azorea wpisujemy nick postaci, która podaliśmy w poprzednim pliku z kontem Kod:Spoiler: <player name="Azorea" Teraz dodajemy to i w miejscu 159786 wpisujemy górny kod czyli nazwę poprzedniego pliku. Kod:Spoiler: account="159786" Tutaj ustawiamy płeć postaci. 0 to kobieta, a natomiast 1 mężczyzna. Kod:Spoiler: sex="1" Dodajemy to. Kod:Spoiler: lookdir="1" Teraz wpisujemy exp jaki ma mieć stworzona przez nas postać. Kod:Spoiler: exp="98800" Tutaj ustalamy profesje postaci. 1- Sorcerer, 2- Druid, 3- Paladin i 4- Knight Kod:Spoiler: voc="1" Tu natomiasto podajemy lvl zgodny z podanym wcześniej doświadczeniem (exp) postaci. Kod:Spoiler: level="20" Tutaj ustawiamy kim ma być postać. 0- Zwykły gracz, 1- Tutor, 2-Counsoller (chyba :-P), 3- GameMaster Kod:Spoiler: access="0" Teraz ustawiamy ilość posiadanego capa przez postać. Kod:Spoiler: cap="300" Poziom magiczny postaci. Kod:Spoiler: maglevel="45" Spoiler: <account pass="lolek" Tutaj można ustawić ile ma się mieć dni pacc'a. Kod:Spoiler: type="1" premDays="15"> Teraz doklejamy to najważniejsze. W miejscu ,,Azorea" wpisujemy nick postaci, która chcemy zrobić. Kod:Spoiler: <characters> <character name="Azorea"/> </characters> Jeżeli chcemy mieć 2 postacie na koncie doklejamy przed </characters> to i w miejscu ,,Misjonarz" Wpisujemy nick 2 postaci. Kod:Spoiler: <character name="Misjonarz"/> I dodajemy ostatnią linijkę, w której nic nie zmieniamy. Kod:Spoiler: </account> Całość powinna wyglądać wtedy tak: Kod:Spoiler: <?xml version="1.0"?> <account pass="lolek" type="1" premDays="15"> <characters> <character name="Misjonarz" /> <character name="Azorea"/> </characters> </account> Teraz należy to napisać w formacie *.xml Kod:Spoiler: <?xml version="1.0"?> Teraz dopisujemy to i w miejscu z nickiem Azorea wpisujemy nick postaci, która podaliśmy w poprzednim pliku z kontem Kod:Spoiler: <player name="Azorea" Teraz dodajemy to i w miejscu 159786 wpisujemy górny kod czyli nazwę poprzedniego pliku. Kod:Spoiler: account="159786" Tutaj ustawiamy płeć postaci. 0 to kobieta, a natomiast 1 mężczyzna. Kod:Spoiler: sex="1" Dodajemy to. Kod:Spoiler: lookdir="1" Teraz wpisujemy exp jaki ma mieć stworzona przez nas postać. Kod:Spoiler: exp="98800" Tutaj ustalamy profesje postaci. 1- Sorcerer, 2- Druid, 3- Paladin i 4- Knight Kod:Spoiler: voc="1" Tu natomiasto podajemy lvl zgodny z podanym wcześniej doświadczeniem (exp) postaci. Kod:Spoiler: level="20" Tutaj ustawiamy kim ma być postać. 0- Zwykły gracz, 1- Tutor, 2-Counsoller (chyba :-P), 3- GameMaster Kod:Spoiler: access="0" Teraz ustawiamy ilość posiadanego capa przez postać. Kod:Spoiler: cap="300" Poziom magiczny postaci. Kod:Spoiler: maglevel="45" I dopisujemy to. Tutaj nic nie zmieniamy, ponieważ to po zalogowaniu samo się uzupełni, a dotyczy tego, kiedy ostatnio postać była zalogowana. Kod:Spoiler: lastlogin="0"> Teraz ujmę to jako 1. Tutaj wpisujemy współrzędne spawnu, czyli gdzie ma się po zalogowaniu postać pojawić i temple, czyli miejsca gdzie postać odradza się po śmierci. Kod:Spoiler: <spawn x="160" y="54" z="7"/> <temple x="160" y="54" z="7"/> <health now="295" max="295" food="0"/> <mana now="395" max="395" spent="0"/> Tutaj możemy ustawić wygląd postaci, jednak najlepiej jest to zostawić, ale przy potworach istnieją podobne linijki, każdą można zamienić i będziemy wyglądać inaczej ;-) To raczej dla trochę bardziej wtajemniczonych, ponieważ newbie mogą się w tym nie połapać, ale mogę później o tym napisać :-) Kod:Spoiler: <look type="9" head="20" body="30" legs="40" feet="50"/> Teraz ustalamy skille postaci. 0- Fist Fighting, 1- Club Fighting, 2- Sword Fighting, 3- Axe Fighting, 4- Distance Figting, 5- Shielding, 6- Fishing. Kod:Spoiler: <skills> <skill skillid="0" level="10" tries="0"/> <skill skillid="1" level="10" tries="0"/> <skill skillid="2" level="10" tries="0"/> <skill skillid="3" level="10" tries="0"/> <skill skillid="4" level="10" tries="0"/> <skill skillid="5" level="15" tries="0"/> <skill skillid="6" level="10" tries="0"/> </skills> Teraz podajemy ID skrzynki w depo (tej szarej) pod 7.6 jest to ID 2490, a pod 7.5 najlepiej sprawdzić w Map Editorze. Kod:Spoiler: <inventory><slot slotid="1"><item id="2490"/></slot> </inventory> Teraz podajemy ID szkrzynki depo (tej brązowej) Są tutaj podane pod 7.6 więc sprawdzić w Map Editorze ;-) Kod:Spoiler: <depots><depot depotid="1"><item id="2590"><inside><item id="2594"/></inside></item></depot></depots> I kończymy tymi 2 linijkami. Kod:Spoiler: <storage/> </player> Poprawnie zrobiona całość powinna wyglądać tak: Kod:Spoiler: <?xml version="1.0"?> <player name="Azorea" account="159786" sex="1" lookdir="1" exp="98800" voc="1" level="20" access="0" cap="300" maglevel="45" lastlogin="0"> <spawn x="160" y="54" z="7"/> <temple x="160" y="54" z="7"/> <health now="295" max="295" food="0"/> <mana now="395" max="395" spent="0"/> <look type="9" head="20" body="30" legs="40" feet="50"/> <skills> <skill skillid="0" level="10" tries="0"/> <skill skillid="1" level="10" tries="0"/> <skill skillid="2" level="10" tries="0"/> <skill skillid="3" level="10" tries="0"/> <skill skillid="4" level="10" tries="0"/> <skill skillid="5" level="15" tries="0"/> <skill skillid="6" level="10" tries="0"/> </skills> <inventory><slot slotid="1"><item id="2490"/></slot> </inventory> <depots><depot depotid="1"><item id="2590"><inside><item id="2594"/></inside></item></depot></depots> <storage/> </player> No to mam nadzieje, że już każdy zrozumiał o co biega w OTS. To oczywicie nie są wszystkie funkcje jakie są na OTS ale o tym już sami się dowiecie gdy bardziej zapuścicie się w tajniki OTS'ów. |