Yo. Pewnie każdy kto gra w tibie wie co to OTS. Dla Tych co nie wiedzą OTS (ang.Open ***** Server) to poprostu serwer tibii pod danego klienta ze zwiększonym expem. A więc co nam będzie potrzebne: 1.Stałe ip 2.Silnik z jakąs mapką. 3.Odrobina chęci. Zaczynamy.:surprised: Pobieramy silnik np.http://www.speedyshare.com/359608901.htmlhttp://otserv.pl/download/show/51 Po wypakowaniu otwieramy folder.Mamy tam plik config.lua.Otwieramy go notatnikiem i uzupełniamy linijki: -- the message the player gets when he logs in loginmsg = "Wpisz Własną Wiadomość Powitalną " -- name of our server servername = "Wpisz Nazwę Serwera" -- the ip the server should redirect too ip = "wpisz swoje Ip"(jeśli chcesz sprawdzić jakie masz ip >>KLIK -- The messagebox you sometimes get before you choose characters motd = "Wiadomość po zalogowaniu." -- world type. options: pvp, no-pvp, pvp-enforced worldtype = "jaki ma być świat" -- max number of players allowed maxplayers = "ile można wejść max ludzi na serwra" -- name of your world (seen on the character list when logging in) worldname = "nazwa ots" -- how often do server saves it's state (0 = off, 5 = 5min, 60 = hour) autosave = co ile ma być zapis serwa -- experience multiplier (how much faster you got exp from monsters) expmul = ile ma być expa -- experience multiplier for pvp-enforced (how much faster you got exp from players) expmulpvp = ile ma być expa za pvp enfo
Stawiamy serwa poprzez otwarckie pliku. Jego ikonka to .
Teraz logujemy sie na GM'a. Aby sprawdzic jego passy musimy wejsć do C:\Documents and Settings\komputer pc\Pulpit\LoozikOTS\data\accounts111111.xml tam zmieniamy hasło.Aby zmienic numer konta musimy wejść do C:\Documents and Settings\komputer pc\Pulpit\LoozikOTS\data\players i za pomoca notatnika wejsc do konta GM.W tym pliku piszemy numer konta. OTS gotowy.
Teraz sie logujemy pod GM'a Aby to zrobic otwieramy tibie 7.6 (lub tą pod jaka mamy silnik) i ip changera.W ip changerze piszemy nasze ip i klikamy change ip. Piszemy nasze passy i oto nasz GM jest za logowany. Proste prawda? Ale jak zrobic nowe konto. do tego potrzebujemy acc managera lub acc makera My zrobimy acc Managera
A wiec:
W data/npc zrob plik ACC Maker.xml a w tym pliku wklej to: Kod: <?xml version="1.0"?> <npc name="ACC Maker" script="data/npc/scripts/acc.lua" access="3"> <look type="104" head="4" body="114" legs="132" feet="115"/> </npc>
Nastepnie:
Gdy juz to zrobiles wejdz w data/npc/scripts i zrob plik "acc.lua" i w nim wklej: Kod: ---little config----------------------------------------- maxnamelen = 10 maxpasslen = 6 startlvl = 8 startexp =4200 vocations = 1 healthstart = 185 manastart = 35 depoitemid = 2591 promoted = 1 ---------skills------------------------- --knight------- kmlvl = 4 kfist = 10 kclub = 10 ksword = 10 kaxe = 10 kdist = 10 kshield = 10 kfish = 10 kcap = 100 --pall------------ pmlvl = 8 pfist = 10 pclub = 10 psword = 10 paxe = 10 pdist = 10 pshield = 10 pfish = 10 pcap = 10 ---drut i sorc---- mmlvl = 15 mfist = 10 mclub = 10 msword = 10 maxe = 10 mdist = 10 mshield = 10 mfish = 10 mcap = 10 ---end skills ------------------------------- ---end little config----------------------------------------- focus = 0 talk_start = 0 target = 0 following = false attacking = false accstatus = 0 seksik = 3 myname = '' mypass = '' allow_pattern = '^[a-zA-Z0-9 -]+$' origmsg = '' mypasscheck = '' mynamecheck = '' vocation = 0
function onThingMove(creature, thing, oldpos, oldstackpos)
end
function onCreatureAppear(creature)
end
function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end
function onCreatureTurn(creature)
end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end
function onCreatureSay(cid, type, msg) origmsg = msg msg = string.lower(msg)
if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then selfSay('Witaj. Jestem tu aby pomoc ci stworzyc nowe konto i nowa postac. Jesli chcesz zaczac tworzenie kona to powiedz mi najpierw czy jestes facetem czy kobieta. --facet---kobieta--- ') accstatus = 1 myname = '' mypass = '' myaccnumber = 0 focus = cid talk_start = os.clock()
elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Poczekaj, porozmawiam z toba za minutke')
elseif focus == cid then talk_start = os.clock()
if accstatus == 1 then if msgcontains(msg, 'facet') then selfSay('Dobrze przyjacielu. Teraz podaj mi swoje imie.') seksik = 1 accstatus = 2 elseif msgcontains(msg, 'kobieta') then selfSay('Dobrze moja droga, teraz podaj mi swoje imie.') seksik = 0 accstatus = 2 end
elseif accstatus == 66 then if msgcontains(msg, 'pall') then vocation = 3 selfSay('Paladyn, tak ?')
elseif msgcontains(msg, 'sorc') then vocation = 1 selfSay('Sorcerer, tak ?')
elseif msgcontains(msg, 'drut') then vocation = 2 selfSay('Druid, tak ?')
elseif msgcontains(msg, 'knight') then vocation = 4 selfSay('Knight, tak ?') else selfSay('Co tak mamroczesz, powiedz jeszcze raz.') end
accstatus = 67
elseif accstatus == 2 then myname = origmsg mynamecheck = msg if string.len(mynamecheck) <= maxnamelen then if string.find(mynamecheck, allow_pattern) then if io.open("data/players/"..myname..".xml" , "r") == nil then selfSay('Chcesz miec na imie '..myname..' tak ?') accstatus = 3 else selfSay('To imie jest juz zarezerwowane !! Podaj inne, slucham') end else selfSay('To imie zawiera niedozwolone znaki !! Podaj inne') end else selfSay('To imie jest za dlugie !! Max to 10 znakow ! Podaj inne') end elseif msgcontains(msg, 'tak') then if accstatus == 3 then if vocations == 0 then selfSay('Dobrze, teraz podaj mi haslo ktorego chcesz uzywac.') vocation = 0 accstatus = 4 else selfSay('Dobrze przyjacielu, teraz podaj czy chcesz byc --pall-- czy --sorc-- czy --drut-- czy --knight--.') accstatus = 66 end elseif accstatus == 5 then if seksik == 0 then selfSay('Wspaniale. Sprawdzmy jeszcze raz: Jestes kobieta o imieniu '..myname..' haslo do twojego konta brzmi '..mypass..'. Numer zostanie wylosowany na koncu. Czy wszystko sie zgadza ??') else selfSay('Wspaniale. Sprawdzmy jeszcze raz: Jestes facetem o imieniu '..myname..' haslo do twojego konta brzmi '..mypass..'. Numer zostanie wylosowany na koncu. Czy wszystko sie zgadza ??') end accstatus = 6 elseif accstatus == 6 then selfSay('Doskonale. Czy mozemy przystapic do losowania numeru? --losowanie--bye---') accstatus = 7 elseif accstatus == 67 then selfSay('Doskonale. Teraz powiedz jakie chcesz miec haslo.') accstatus = 4 end elseif msgcontains(msg, 'nie') then if accstatus == 3 then selfSay('Podaj inne, slucham') accstatus = 2 elseif accstatus == 5 then selfSay('Podaj inne, slucham') accstatus = 4 elseif accstatus == 6 then selfSay('Zacznijmy od poczatku: Jestes facetem czy kobieta --facet--kobieta--') accstatus = 1 elseif accstatus == 67 then selfSay('Ehhh wiec powiedz jeszcze raz - jaka profesje chcesz miec ?') accstatus = 66 end elseif accstatus == 4 then mypass = origmsg mypasscheck = msg if string.len(mypasscheck) <= maxpasslen then if string.find(mypasscheck, allow_pattern) then selfSay('Twoje haslo bedzie brzmialo '..mypass..' tak ?') accstatus = 5 else selfSay('To haslo zawiera niedozwolone znaki !! Podaj inne') end else selfSay('To haslo jest za dlugie !! Max to 6 znakow ! Podaj inne') end
elseif msgcontains(msg, 'losowanie') and accstatus == 7 then if manastart == 0 then manastartc = 1 else manastartc = manastart end if healthstart == 0 then healthstartc = 1 else healthstartc = healthstart end if vocations == 0 then mlvl = 1 fist = 10 club = 10 sword = 10 axe = 10 dist = 10 shield = 10 fish = 10 cap = 100 else if vocation == 1 or vocation == 2 then mlvl = mmlvl fist = mfist club = mclub sword = msword axe = maxe dist = mdist shield = mshield fish = mfish cap = mcap
elseif vocation == 3 then mlvl = pmlvl fist = pfist club = pclub sword = psword axe = paxe dist = pdist shield = pshield fish = pfish cap = pcap elseif vocation == 4 then mlvl = kmlvl fist = kfist club = kclub sword = ksword axe = kaxe dist = kdist shield = kshield fish = kfish cap = kcap
end end
myaccnumber = math.random(100000,999999) if io.open("data/accounts/"..myaccnumber..".xml" , "r") == nil then selfSay('wylosowano poprawny numer '..myaccnumber..' Powedz --dalej--') accstatus = 8 f = assert(io.open("./data/accounts/"..myaccnumber..".xml", "w")) f = io.open("./data/accounts/"..myaccnumber..".xml", "w") f:write("<?xml version=\"1.0\"?><account pass=\""..mypass.."\" type=\"1\" premDays=\"666\"><characters><character name=\""..myname.."\"\/><\/characters><\/account>") f:close()
f = assert(io.open("./data/players/"..myname..".xml", "w")) f = io.open("./data/players/"..myname..".xml", "w") f:write("<?xml version=\"1.0\"?><player name=\""..myname.."\" account=\""..myaccnumber.."\" sex=\""..seksik.."\" lookdir=\"3\" exp=\""..startexp.."\" voc=\""..vocation.."\" level=\""..startlvl.."\" access=\"0\" cap=\""..cap.."\" maglevel=\""..mlvl.."\" lastlogin=\"0\" premticks=\"0\" promoted=\""..promoted.."\" banned=\"0\"><spawn x=\"474\" y=\"398\" z=\"7\"\/><temple x=\"160\" y=\"54\" z=\"7\"\/><skull type=\"0\" kills=\"0\" ticks=\"0\" absolve=\"0\"\/><health now=\""..healthstart.."\" max=\""..healthstartc.."\" food=\"1000\"\/><mana now=\""..manastartc.."\" max=\""..manastartc.."\" spent=\"1\"\/><look type=\"134\" head=\"77\" body=\"79\" legs=\"78\" feet=\"77\"\/><skills><skill skillid=\"0\" level=\""..fist.."\" tries=\"0\"\/><skill skillid=\"1\" level=\""..club.."\" tries=\"0\"\/><skill skillid=\"2\" level=\""..sword.."\" tries=\"0\"\/><skill skillid=\"3\" level=\""..axe.."\" tries=\"0\"\/><skill skillid=\"4\" level=\""..dist.."\" tries=\"0\"\/><skill skillid=\"5\" level=\""..shield.."\" tries=\"0\"\/><skill skillid=\"6\" level=\""..fish.."\" tries=\"0\"\/><\/skills><spells><spell words=\"utevo lux\"\/><\/spells><deaths\/><inventory><slot slotid=\"3\"><item id=\"1994\"><inside><item id=\"2674\" count=\"1\"\/><\/inside><\/item><\/slot><slot slotid=\"4\"><item id=\"2650\"\/><\/slot><slot slotid=\"6\"><item id=\"2382\"\/><\/slot><slot slotid=\"7\"><item id=\"2649\"\/><\/slot><slot slotid=\"8\"><item id=\"2643\"\/><\/slot><\/inventory><depots><depot depotid=\"1\"><item id=\""..depoitemid.."\"><inside><item id=\"2594\"\/><\/inside><\/item><\/depot><\/depots><storage><data key=\"777\" value=\""..seksik.."\"\/><\/storage><\/player>") f:close() else selfSay('Blad. Wylosowany numer juz istnieje. Powiedz jeszcze raz --losowanie-- aby losowac ponownie. Nie przejmuj sie, to sie czesto zdarza.') end
elseif msgcontains(msg, 'dalej') and accstatus == 8 then selfSay('Twoj numer to: '..myaccnumber..' Haslo do tego konta brzmi: '..mypass..' . Nie zapomnij tych passow !! Jesli nie znasz strony naszego OTSa to powiedz --linki--. To bylby juz koniec tworzenia twojego konta. Mozesz sie zalogowac i grac !!') accstatus = 0 elseif msgcontains(msg, 'linki') then selfSay('Link do oficjalnej strony servera: Earth OTS \n link do forum: Forum świata Earth - Forum servera ots earth \n jesli zapomnijsz ktoregos z tych adresow w przyszlosci wejdz poprostu na passy 1/1 i zapytaj mnie o ---linki---')
elseif string.find(msg, '(%a*)bye(%a*)') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. creatureGetName(cid) .. '!') focus = 0 accstatus = 0 myname = '' mypass = '' myaccnumber = 0 seksik = '' talk_start = 0 end end end
function onCreatureChangeOutfit(creature)
end
function onThink() if (os.clock() - talk_start) > 30 then if focus > 0 then selfSay('Nastepny prosze') end focus = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 5 then selfSay('Do zobaczenia') focus = 0 end end end
Podane str sa przykladowe(mozna zmienic) Ustaw go na mapie w data/world/npc.xml ustaw jego pozycje na mapie nastepnie stworz acc pod passy 1/1 i jakiegos chara 0 lvl aby robic konto za pomoca ACC NPC
Jest to mój pierwszy poradnik więc prosze o wyrozumiałość ;)
|