Merge branch 'Testing'
This commit is contained in:
828
control.lua
828
control.lua
File diff suppressed because one or more lines are too long
BIN
level-init.dat
BIN
level-init.dat
Binary file not shown.
@@ -1,5 +1,2 @@
|
||||
msg-intro=.نييلصألا ناكسلا نم كسفن ةيامح ىسنت الو ةياهنلا ىلإ لصتل كتقيرطب لمعأو ،رفصلا نم أدبتس .خيراوصلا عماوص حتف لجأ نم ةمدقتم ايجولونكت نع ثحبلل جاتحت فوس .ةيعانصلا رامقألاب خيراوصلا قالطإو خيراوصلا عماوص ءانب قيرط نع كلذب مايقلا عيطتست .ءاضفلل اخوراص قلطت نا يه كتمهم .Factorio ـل رحلا بعللا وه اذه
|
||||
rocket-launched-without-satellite=.هلخادب يعانصلا رمقلا عضت مل كنكلو ،خوراصلا تقلطأ
|
||||
rockets-sent=ةيعانص رامقأ قالطإ
|
||||
score=ةجيتنلا
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Гэта рэжым свабоднай гульні Factorio. Вашая мэта - запусціць ракету ў космас. Дзеля гэтага вам трэба пабудаваць ракетную шахту і саму ракету з спадарожнікам. Вы мусіце даследваць перадавыя тэхналогіі, каб навучыцца будаваць ракетную шахту. Пачынайце з малога, працуйце над аўтаматызацыяй вытворчасці, даследуйце новыя тэхналогіі і не забывайцеся на абарону ад "тутэйшых"!
|
||||
rocket-launched-without-satellite=Вы запусцілі ракету, аднак не змясцілі ў ёй спадарожнік.
|
||||
rockets-sent=Запушчана спадарожнікаў
|
||||
score=Вынік
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Това е режимът на свободна игра. Задачата ви е да изстреляте ракета в космоса. За това ще е нужно да построите ракетна шахта и изстреляте ракетата със спътник. Ще трябва да проучите развити технологии, които ще отключат ракетната шахта. Започнете с малко и постепенно автоматизирайте процеса, като не забравяте да се защитавате от местните форми на живот.
|
||||
rocket-launched-without-satellite=Изстреляхте ракетата, но не сложихте спътник.
|
||||
rockets-sent=Изстреляни спътници
|
||||
score=Резултат
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Aquest és el mode lliure del Factorio. La vostra tasca és construir un coet i enviar-lo a l'espai. Ho haureu de fer construint un centre de coets espacials i llençant un coet amb un satèl·lit. Necessitareu investigar tecnologies avançades per poder-ho fer. Aneu pas a pas, avanceu cap a l'automatització i no oblideu protegir-vos dels natius.
|
||||
rocket-launched-without-satellite=S'ha llençat el coet, però no hi heu posat un satèl·lit a dins.
|
||||
rockets-sent=Satèl·lits llançats
|
||||
score=Puntuació
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Toto je volná hra Factorio. Tvým úkolem je vypustit raketu do vesmíru. Postav raketové silo a vypusť raketu se satelitem. Pro odemknutí raketového sila budeš muset vyzkoumat pokročilé technologie. Začni v malém, postupuj s automatizací a nezapomeň se chránit před domorodci.
|
||||
rocket-launched-without-satellite=Poslal jsi raketu, ale nedal jsi dovnitř satelit.
|
||||
rockets-sent=Satelity vypuštěny
|
||||
score=Skóre
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Det her er Factorio fri leg. Din opgave er at affyre en raket for at udforske rummet. For at gøre det skal du bygge en raket silo og affyre en raket med en satellit i. Du bliver nød til at udforske avancerede teknologier for at at kunne bygge en raket silo. Start småt, og arbejd din vej op med hjælp af automatisering, glem ikke at beskytte dig fra de indfødte.
|
||||
rocket-launched-without-satellite=Du affyrede raketten, men du glemte at placere en satellit i den.
|
||||
rockets-sent=Satellitter opsendt
|
||||
score=Point
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Dies ist das freie Spiel von Factorio. Deine Aufgabe ist es, eine Rakete in den Weltraum zu starten. Dazu musst du ein Raketensilo bauen und eine Rakete mit einem Satelliten starten. Du wirst erweiterte Technologien erforschen müssen um das Raketensilo freizuschalten. Fange klein an, arbeite dich durch Automatisierung hoch und vergiss nicht, dich vor den Einheimischen zu schützen.
|
||||
rocket-launched-without-satellite=Du hast die Rakete gestartet, aber keinen Satelliten vorher eingesetzt.
|
||||
rockets-sent=Satelliten gestartet
|
||||
score=Punktestand
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Αυτό είναι το ελεύθερο παιχνίδι του Factorio. Ο στόχος σας είναι να εκτοξεύσετε έναν πύραυλο στο διάστημα. Αυτό το κάνετε με την κατασκευή ενός σιλό πυραύλων και την εκτόξευση ενός πυραύλου με δορυφόρο. Θα πρέπει να ερευνήσετε τις προηγμένες τεχνολογίες για να ξεκλειδώσετε το σιλό πυραύλων. Ξεκινήστε μικρά, δουλέψτε στο δρόμο σας επάνω με την αυτοματοποίηση και μην ξεχάσετε να προστατέψετε τον εαυτό σας από τους ντόπιους.
|
||||
rocket-launched-without-satellite=Εκτόξευσες τον πύραυλο, αλλά δεν έβαλες έναν δορυφόρο μέσα.
|
||||
rockets-sent=Οι δορυφόροι εκτοξεύτικαν
|
||||
score=Σκορ
|
||||
|
||||
|
||||
@@ -1,4 +1 @@
|
||||
msg-intro=This is the Factorio freeplay. Your task is to launch a rocket into space. Do this by constructing a Rocket Silo and launching a rocket with a satellite. You will need to research advanced technologies in order to unlock the Rocket Silo. Start small, work your way up with automation and don't forget to protect yourself from the natives.
|
||||
rocket-launched-without-satellite=You launched the rocket, but you didn't put a satellite inside.
|
||||
score=Score
|
||||
rockets-sent=Satellites launched
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Tio estas la Factorio Freeplay. Via tasko estas ĵeti raketon en spacon. Fari tiun per konstruanta Raketo Silo kaj ĵeti raketon kun satelito. Vi bezonos esplori altnivelaj teknologioj por malŝlosi la Raketo Silo. Start malgranda, labori vian vojon supren per aŭtomatigo kaj ne forgesu protekti vin mem de la indiĝenoj.
|
||||
rocket-launched-without-satellite=Vi lanĉis la raketon, sed vi ne metis sateliton ene.
|
||||
rockets-sent=Satelitoj lanĉis
|
||||
score=Partituro
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Este es el modo de juego libre de Factorio. Tu tarea es la de lanzar un cohete al espacio. Logra esto construyendo un Silo de Cohetes y lanzando un cohete con un satélite. Necesitarás investigar tecnologías avanzadas para poder desbloquear el Silo de Cohetes. Comienza poco a poco, trabaja en tu sistema de automatización y no te olvides de protegerte de los nativos.
|
||||
rocket-launched-without-satellite=Lanzaste el cohete, pero no colocaste un satélite dentro.
|
||||
rockets-sent=Satélites lanzados
|
||||
score=Puntuación
|
||||
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
msg-intro=See on Factorio vabamängumood. Sinu eesmärgiks on saata rakett avakosmosesse. Seda saad teha ehitades Raketti Silotorni ja heites rakketi koos satelliidiga. Selleks pead õppima selgeks keerukad tehnoloogiaharud, et Raketti Silotorni lahti lukustada. Alusta väikselt, tööta selle kallal automatsiooni abil ja ära unusta ennast kaitsta kohalike eluvormide eest.
|
||||
rocket-launched-without-satellite=Sa lennutasid raketi teele, aga ei pannud selle sisse satelliidi.
|
||||
score=Skoor
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Tämä on Factorion vapaapelimuoto. Tavoitteesi on lähettää satelliitti ulkoavaruuteen rakentamalla rakettisiilo ja laukaisemalla raketti. Rakettisiilon voit rakentaa vasta, kun olet kehittänyt siihen tarvittavat huipputeknologiat. Aloita pienestä ja automatisoi kaikki tarvittava, äläkä unohda suojella itseäsi alkuasukkailta.
|
||||
rocket-launched-without-satellite=Laukaisit raketin, mutta et laittanut satelliittia sen sisään.
|
||||
rockets-sent=Satelliitteja laukaistu
|
||||
score=Pistemäärä
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Il s'agit du mode de jeu libre de Factorio. Votre tâche consiste à lancer une fusée dans l'espace. Ceci en construisant un silo à fusée, et en lançant un satellite avec la fusée. Vous aurez besoin de rechercher des technologies de pointe afin de débloquer le silo. Commencez petit, évoluez en automatisant et n'oubliez pas de vous protéger contre les autochtones.
|
||||
rocket-launched-without-satellite=Vous avez lancé la fusée, mais vous n'avez pas mis de satellite à l'intérieur.
|
||||
rockets-sent=Satellites lancés
|
||||
score=Score
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=.םיימוקמה םירוציה ינפמ םכמצע לע ןגהל וחכשת לאו ,יטמוטוא ןוכימ תועצמאב םכלש הישעתה תא וביחרה ,ןטקב וליחתה .ןקתמה תיינב תא רשפאל ידכ תומדקתמ תויגולונכט רוקחל םכילע היהי .ןייוול ליכמה ליט ותועצמאב רגשלו םיליט רוגיש ןקתמ תונבל םכילע .ללחה רקחל שמשיש ליט חולשל איה םכתמישמ .ויִרֹוטְקַפ לש ישפוחה שיחרתה והז
|
||||
rocket-launched-without-satellite=.ןייוול המינפ תסנכה אל ךא ,ליטה תא תרגיש
|
||||
rockets-sent=ורגושש םיניוול
|
||||
score=דוקינ
|
||||
msg-intro=.םיימוקמה ינפמ םכמצע לע ןגהל וחכשת לאו ,יטמוטוא ןוכימ תועצמאב םכלש הישעתה תא וביחרה ,ןטקב וליחתה .ןקתמה תיינב תא רשפאל ידכ תומדקתמ תויגולונכט רוקחל םכילע היהי .ןייוול ליכמה ליט ותועצמאב רגשלו םיליט רוגיש ןקתמ תונבל םכילע .ללחה לא ליט חולשל איה םכתמישמ .ויִרֹוטְקַפ לש ישפוחה שיחרתה והז
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Ez a Factorio szabad játék módja. A feladatod az, hogy kilőj egy rakétát az űr felderítésére. Ehhez egy Rakétasilót kell építened, melyből aztán egy műholddal felszerelt rakétát kell kilőnöd. A Rakétasiló kifejlesztéséhez különféle technológiákat kell fejlesztened. Kezdj kicsiben és küzdd fel magad az automatizálásban. Ne felejts el védekezni a honos fajok ellen.
|
||||
rocket-launched-without-satellite=Kilőtted a rakétát, de nem helyeztél el benne műholdat.
|
||||
rockets-sent=Műholdak elindítva
|
||||
score=Pontszám
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Questa è la modalità libera di Factorio. Il tuo obiettivo è quello di lanciare il razzo nello spazio. Completalo costruendo un Silo per Razzi e lanciando il razzo con il satellite. Avrai bisogno di ricercare tecnologie avanzate per riuscire a sbloccare il Silo per Razzi. Inizia in piccolo, espandi con l'automazione e non dimenticare di proteggerti dai nativi.
|
||||
rocket-launched-without-satellite=Hai lanciato il razzo, ma non hai inserito il satellite al suo interno.
|
||||
rockets-sent=Satellite lanciato
|
||||
score=Punteggio
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=これは、Factorioのフリープレイです。ロケットサイロを建造し、衛星を載せたロケットを宇宙へ打ち上げるのがあなたの任務です。ロケットサイロをアンロックするためには高度な技術研究をする必要があります。小規模に始め、自動化しつつ進み、原住生物から身を守ることも忘れないでください。
|
||||
rocket-launched-without-satellite=衛星を積まずにロケットを打ち上げてしまいました。
|
||||
rockets-sent=打ち上げた衛星
|
||||
score=スコア
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Factorio 자유플레이입니다. 당신의 목표는 우주로 로켓을 발사하는 것입니다. 로켓 격납고를 건설하고 인공위성을 탑재한 로켓을 발사해서 이 목표를 달성하세요. 로켓 격납고의 잠금을 해제하기 위해 고급 기술들을 연구할 필요가 있습니다. 작은 것부터 시작해 자동화로 차근차근 발전하고, 토착 생물들로부터 자신을 보호하는 것도 잊지 마세요.
|
||||
rocket-launched-without-satellite=로켓을 발사했지만, 로켓 내부에 인공위성을 넣지 않았습니다.
|
||||
rockets-sent=발사된 인공위성
|
||||
score=점수
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Tai Factorio laisvas žaidimas. Jūsų užduotis - paleisti raketą į kosmosą. Tam reikia pastatyti Raketos šachtą ir paleisti raketą su palydovu. Reikės atrasti pažangias technologijas kad atrakintumėte Raketos šachtą. Pradėkite palengva, tobulinkite automatiką ir neužmirškite apsisaugoti nuo vietinių.
|
||||
rocket-launched-without-satellite=Paleidote raketą, bet neįdėjote palydovo į ja.
|
||||
rockets-sent=Palydovai paleisti
|
||||
score=Rezultatas
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Šis ir Factorio brīvais režīms. Tavs uzdevums ir palaist raķeti kosmosā. Lai to izdarītu, tev vajadzēs uzbūvēt palaišanas platformu un palaist raķeti ar satelītu. Tev būs jāizpēta sarežģītas tehnoloģijas, lai atbloķētu palaišanas platformu. Sāc no mazumiņa, strādā un neaizmirsti pasargāt sevi no šīs planētas iemītniekiem...
|
||||
rocket-launched-without-satellite=Tu palaidi raķeti, bet neievietoji tajā satelītu.
|
||||
rockets-sent=Satelīti palaidās
|
||||
score=Rezultāts
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Dit is Factorio vrij spel. Je taak is om een raket te lanceren in de ruimte. Bouw hiervoor een raket-silo en lanceer een raket met een satelliet. Je zult geavanceerde technologieën moeten onderzoeken om de raket-silo vrij te spelen. Begin op kleine schaal, breidt uit en automatiseer je fabriek en vergeet niet jezelf te beschermen tegen de inheemse bewoners.
|
||||
rocket-launched-without-satellite=Je hebt de raket gelanceerd, maar zonder een satelliet aan boord te brengen.
|
||||
rockets-sent=Satellieten gelanceerd
|
||||
score=Score
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Dette er Factorio frispilling. Din oppgave er å sende en rakett til verdensrommet. Bygg en rakettsilo og send opp en rakett med en satellitt på. Du blir nødt til å utforske avanserte teknologier for å få tilgang til rakettsiloen. Begynn i det små, jobb deg oppover med hjelp av automatisering og ikke glem å beskytte deg mot de innfødte.
|
||||
rocket-launched-without-satellite=Du skjøt opp raketten, men du satte ikke inn en satelitt.
|
||||
rockets-sent=Satellitter skutt ut
|
||||
score=Poengsum
|
||||
msg-intro=Dette er Factorio frispilling. Din oppgave er å sende en rakett til verdensrommet. Bygg en rakettsilo og send opp en rakett med en satellitt. Du blir nødt til å utforske avanserte teknologier for å få tilgang til rakettsiloen. Begynn i det små, jobb deg oppover med hjelp av automatisering og ikke glem å beskytte deg mot de innfødte.
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=To jest swobodna rozgrywka Factorio. Twoim zadaniem jest wysłanie rakiety w kosmos. Skonstruuj silos rakietowy i wystrzel z niego rakietę z satelitą. Żeby odblokować silos rakietowy będziesz musiał odkryć zaawansowane technologie. Rozpocznij od podstaw, rozwijaj się wykorzystując automatyzację i nie zapomnij o obronie przed rodzimymi mieszkańcami planety.
|
||||
rocket-launched-without-satellite=Wystrzeliłeś rakietę, ale nie umieściłeś w niej satelity.
|
||||
rockets-sent=Wysłane satelity
|
||||
score=Wynik
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Este é o modo livre do Factorio. Sua missão é lançar um foguete no espaço. Para fazer isso construa um centro de lançamento de foguetes e lance o foguete com um satélite. Você vai precisar pesquisar tecnologias avançadas para conseguir desbloquear um Centro de lançamento. Comece do começo, continue na automação e não se esqueça de se proteger dos nativos.
|
||||
rocket-launched-without-satellite=Você lançou o foguete, mas não colocou o satélite dentro.
|
||||
rockets-sent=Satélites lançados
|
||||
score=Pontuação
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Este é o jogo livre Factorio. A tua tarefa é lançar um foguetão para explorar o espaço. Faça isto, construindo um Silo de Foguetão e lançar um foguetão com um satélite. Tu vais precisar de pesquisar tecnologias avançadas para poderes desbloquear o Silo de Foguetão. Começa simples, trabalha e evolui com a automação e não te esqueças de proteger-te dos nativos.
|
||||
rocket-launched-without-satellite=Lançou o foguetão, mas não colocou um satélite lá dentro.
|
||||
rockets-sent=Satélites lançados
|
||||
score=Pontuação
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Acesta este modul Factorio freeplay. Sarcina ta este de a lansa o rachetă în spațiu. Fă acest lucru prin construirea unui siloz de rachete și lansarea unei rachete cu satelit. Va trebui să cercetezi tehnologiile avansate pentru a debloca silozul de rachete. Începe încet, avansează cu automatizarea și nu uita să te protejezi de inamici.
|
||||
rocket-launched-without-satellite=Ai lansat racheta, dar nu ai pus și satelitul în interior.
|
||||
rockets-sent=Sateliții au fost lansați
|
||||
score=Scor
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Это режим свободной игры Factorio. Ваша задача запустить спутник в космос. Для его запуска потребуется создать ракету и ракетную шахту. Начните с малого, работайте над автоматизацией производства, исследуйте новые технологии и не забывайте о защите от местных форм жизни.
|
||||
rocket-launched-without-satellite=Вы запустили ракету, но не поместили спутник в неё.
|
||||
rockets-sent=Спутников запущено
|
||||
score=Счёт
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Ово је Factorio freeplay. Твој задатак је да лансираш ракету са сателитом у свемир. Уради ово грађом ракетног силоса. Треба да истражиш пуно напредних технологија да би откључао ракетни силос. Почни мало, а онда напредуј са аутоматизацијом и не заборави да се заштитиш од ванземаљаца.
|
||||
rocket-launched-without-satellite=Лансирао си ракету али ниси ставио сателит унутра.
|
||||
rockets-sent=Satelit lansiran
|
||||
score=Rezultat
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Det här är Factorio frispel. Ditt uppdrag är att avfyra en raket till rymden. Gör det genom att tillverka en raket silo och avfyra en raket med en satellit. Du kommer att behöva forska fram avancerade teknologier för att låsa upp raket silon. Börja litet, jobba dig uppåt med hjälp av automatisering och glöm inte att försvara dig själv mot infödingarna.
|
||||
rocket-launched-without-satellite=Du avfyrade raketen, men du satte aldrig i en satellit.
|
||||
rockets-sent=Satelliter uppskjutna
|
||||
score=Poäng
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=นี้คือโหมดอิสระของ Factorio ภารกิจของคุณคือส่งจรวดสู่อวกาศ ซึ่งทำได้โดยการสร้างไซโลจรวดและส่งจรวดขึ้นไปพร้อมกับดาวเทียม คุณต้องวิจัยค้นคว้าเทคโนโลยีขั้นสูงเพื่อปลดล็อคไซโลจรวด เริ่มจากเล็กๆไปเรื่อยๆด้วยระบบอัตโนมัติและอย่าลืมป้องกันตัวเองจากคนพื้นเมืองด้วย
|
||||
rocket-launched-without-satellite=คุณสั่งใช้งานจรวดแล้ว แต่คุณยังไม่ได้ติดตั้งดาวเทียมภายในตัวจรวด
|
||||
rockets-sent=ส่งดาวเทียมเรียบร้อย
|
||||
score=คะแนน
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Bu Factorio'nun serbest oynanışı. Görevin roketleri uzaya yollamak. Bunu Roket Silosu yaparak ve uyduyla roket yollayarak yapacaksın. Roket Silo'sunu açmak için gelişmiş teknolojileri sırayla açmalısın. Yavaş başla, otomatikleş ve yerlilerden kendini korumayı untuma.
|
||||
rocket-launched-without-satellite=Roketi yolladın, ama içine uydu koymadın.
|
||||
rockets-sent=Uydu fırlatıldı
|
||||
score=Skor
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Це один з типів гри в Factorio - "Вільна гра". Ваше завдання - запустити ракету у космічний простір. Зробіть це, побудувавши ракетну шахту та запустивши ракету зі супутником. Вам потрібно дослідити передові технології, щоб мати змогу побудувати ракетну шахту. Починайте з малого, розвивайтеся за допомогою автоматизації, але не забувайте і про оборону!
|
||||
rocket-launched-without-satellite=Ви запустили ракету, однак не завантажили супутник всередину.
|
||||
rockets-sent=Супутники запущені
|
||||
score=Рахунок
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=Đầy là chế độ freeplay của Factorio. Nhiệm cụ của bạn là phóng một chiếc tên lửa lên vũ trụ. Hãy xây dựng một bệ phóng tên lửa để phóng một chiếc tên lửa kèm theo vệ tinh. Bạn sẽ cần phải nghiên cứu nhiều công nghệ tiên tiến để có thể xây dựng bệ phóng tên lửa. Bắt đầu từ quy mô nhỏ, phát triển dần dần bằng tự động hóa, và đừng quên bảo vệ bản thân mình khỏi những sinh vật sinh sống ở đây.
|
||||
rocket-launched-without-satellite=Bạn đã phóng tên lửa, nhưng bạn đã không đặt vệ tinh vào trong.
|
||||
rockets-sent=Vệ tinh đã phóng
|
||||
score=Điểm số
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=欢迎来到 Factorio 标准模式 (freeplay) ,您的目标是要把火箭发射到太空。为此,您需要研发一系列高等科技,解锁并修建火箭发射井,直到把携带有卫星的火箭发射出去。从小作坊生产起步,逐渐建立起属于自己的自动化大工厂吧!同时,别忘了防范异星虫子的骚扰 ...
|
||||
rocket-launched-without-satellite=您已经发射了火箭,但并未将卫星置于其中。
|
||||
rockets-sent=已发射卫星
|
||||
score=得分
|
||||
msg-intro=欢迎来到 Factorio 标准模式 (freeplay) ,你的目标是要把火箭发射到太空。为此你需要研发一系列高等科技,解锁并修建火箭发射井,直到把携带有卫星的火箭发射出去。从小作坊生产起步,逐渐建立起属于自己的自动化大工厂吧!同时,别忘了防范异星虫子的骚扰 ...
|
||||
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
msg-intro=這是異星工廠的自由模式。你的任務是發射火箭探索外太空。請建造一個火箭發射井並於攜帶衛星後發射。你會需要研究大量的進階科技以解鎖火箭發射井。從頭開始,靠著自動化的協助邁向目標的同時,也別忘了從外星住民手中保護你自己。
|
||||
rocket-launched-without-satellite=你發射了火箭,但是你沒有把衛星放在裡面。
|
||||
rockets-sent=發射衛星
|
||||
score=分數
|
||||
|
||||
|
||||
BIN
preview.png
Normal file
BIN
preview.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 649 KiB |
BIN
script.dat
BIN
script.dat
Binary file not shown.
648
source.lua
648
source.lua
@@ -1,648 +0,0 @@
|
||||
|
||||
itemRotated = {}
|
||||
entityRemoved = {}
|
||||
entityCache = {}
|
||||
guis = {frames={},buttons={}}
|
||||
|
||||
warningAllowed = nil
|
||||
timeForRegular = 180
|
||||
CHUNK_SIZE = 32
|
||||
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Remove decorations-------------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
local function removeDecorationsArea(surface, area )
|
||||
if surface.find_entities_filtered{area = area, type="decorative"} then
|
||||
for _, entity in pairs(surface.find_entities_filtered{area = area, type="decorative"}) do
|
||||
if (entity.name ~= "red-bottleneck" and entity.name ~= "yellow-bottleneck" and entity.name ~= "green-bottleneck") then
|
||||
entity.destroy()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function removeDecorations(surface, x, y, width, height )
|
||||
removeDecorationsArea(surface, {{x, y}, {x + width, y + height}})
|
||||
end
|
||||
|
||||
local function clearDecorations()
|
||||
local surface = game.surfaces["nauvis"]
|
||||
for chunk in surface.get_chunks() do
|
||||
removeDecorations(surface, chunk.x * CHUNK_SIZE, chunk.y * CHUNK_SIZE, CHUNK_SIZE - 1, CHUNK_SIZE - 1)
|
||||
end
|
||||
callAdmin("Decoratives have been removed")
|
||||
end
|
||||
|
||||
script.on_event(defines.events.on_chunk_generated, function(event)
|
||||
removeDecorationsArea( event.surface, event.area )
|
||||
end)
|
||||
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Common use functions---------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
function ticktohour (tick)
|
||||
local hour = tostring(math.floor(tick/(216000*game.speed)))
|
||||
return hour
|
||||
end
|
||||
|
||||
function ticktominutes (tick)
|
||||
local minutes = math.floor(tick/(3600*game.speed))
|
||||
return minutes
|
||||
end
|
||||
|
||||
function callAdmin(msg)
|
||||
for _, player in pairs(game.connected_players) do
|
||||
if player.admin then
|
||||
player.print(msg)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function autoMessage()
|
||||
game.print('There are '..#game.connected_players..' players online')
|
||||
game.print('This map has been on for '..ticktohour(game.tick)..' Hours and '..(ticktominutes(game.tick)-60*ticktohour(game.tick))..' Minutes')
|
||||
game.print('Please join us on:')
|
||||
game.print('Discord: https://discord.gg/RPCxzgt')
|
||||
game.print('Forum: explosivegaming.nl')
|
||||
game.print('Steam: http://steamcommunity.com/groups/tntexplosivegaming')
|
||||
game.print('To see these links again goto: Readme > Server Info')
|
||||
end
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Gui Functions------------------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
function addFrame(frame)
|
||||
guis.frames[frame] = {}
|
||||
addButton('close', function(player,element) element.parent.parent.parent.destroy() end)
|
||||
end
|
||||
|
||||
function addTab(frame, tabName, describtion, drawTab)
|
||||
guis.frames[frame][tabName] = {tabName, describtion, drawTab}
|
||||
addButton(tabName, function(player, element) openTab(player, element.parent.parent.parent.name, element.parent.parent.parent.tab, element.name) end)
|
||||
end
|
||||
|
||||
function addButton(btnName, onClick)
|
||||
guis.buttons[btnName] = {btnName, onClick}
|
||||
end
|
||||
|
||||
function drawButton(frame, btnName, caption, describtion)
|
||||
frame.add{name=btnName, type = "button", caption=caption, tooltip=describtion}
|
||||
end
|
||||
|
||||
function openTab(player, frameName, tab, tabName)
|
||||
local tabBar = player.gui.center[frameName].tabBarScroll.tabBar
|
||||
for _,t in pairs(guis.frames[frameName]) do
|
||||
if t[1] == tabName then
|
||||
tabBar[t[1]].style.font_color = {r = 255, g = 255, b = 255, a = 255}
|
||||
clearElement(tab)
|
||||
t[3](player, tab)
|
||||
else
|
||||
tabBar[t[1]].style.font_color = {r = 100, g = 100, b = 100, a = 255}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function drawFrame(player, frameName, tabName)
|
||||
if player.gui.center[frameName] then player.gui.center[frameName].destroy() end
|
||||
local frame = player.gui.center.add{name=frameName,type='frame',caption=frameName,direction='vertical'}
|
||||
local tabBarScroll = frame.add{type = "scroll-pane", name= "tabBarScroll", vertical_scroll_policy="never", horizontal_scroll_policy="always"}
|
||||
local tabBar = tabBarScroll.add{type='flow',direction='horizontal',name='tabBar'}
|
||||
local tab = frame.add{type = "scroll-pane", name= "tab", vertical_scroll_policy="auto", horizontal_scroll_policy="never"}
|
||||
for _,t in pairs(guis.frames[frameName]) do
|
||||
drawButton(tabBar, t[1], t[1], t[2])
|
||||
end
|
||||
openTab(player, frameName, tab, tabName)
|
||||
drawButton(tabBar, 'close', 'Close', 'Close this window')
|
||||
tab.style.minimal_height = 300
|
||||
tab.style.maximal_height = 300
|
||||
tab.style.minimal_width = 500
|
||||
tab.style.maximal_width = 500
|
||||
tabBarScroll.style.minimal_height = 60
|
||||
tabBarScroll.style.maximal_height = 60
|
||||
tabBarScroll.style.minimal_width = 500
|
||||
tabBarScroll.style.maximal_width = 500
|
||||
end
|
||||
|
||||
function toggleVisable(frame)
|
||||
if frame then
|
||||
if frame.style.visible == nil then
|
||||
frame.style.visible = false
|
||||
else
|
||||
frame.style.visible = not frame.style.visible
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function clearElement (elementToClear)
|
||||
if elementToClear ~= nil then
|
||||
for i, element in pairs(elementToClear.children_names) do
|
||||
elementToClear[element].destroy()
|
||||
end
|
||||
end
|
||||
end
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Player Events------------------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
script.on_event(defines.events.on_player_created, function(event)
|
||||
local player = game.players[event.player_index]
|
||||
player.insert{name="iron-plate", count=8}
|
||||
player.insert{name="pistol", count=1}
|
||||
player.insert{name="firearm-magazine", count=10}
|
||||
player.insert{name="burner-mining-drill", count = 1}
|
||||
player.insert{name="stone-furnace", count = 1}
|
||||
player.force.chart(player.surface, {{player.position.x - 200, player.position.y - 200}, {player.position.x + 200, player.position.y + 200}})
|
||||
end)
|
||||
|
||||
script.on_event(defines.events.on_player_respawned, function(event)
|
||||
local player = game.players[event.player_index]
|
||||
drawPlayerList()
|
||||
player.insert{name="pistol", count=1}
|
||||
player.insert{name="firearm-magazine", count=10}
|
||||
end)
|
||||
|
||||
script.on_event(defines.events.on_player_joined_game, function(event)
|
||||
local player = game.players[event.player_index]
|
||||
player.print({"", "Welcome"})
|
||||
if player.gui.left.PlayerList ~= nil then
|
||||
player.gui.left.PlayerList.destroy()
|
||||
end
|
||||
if player.gui.center.README ~= nil then
|
||||
player.gui.center.README.destroy()
|
||||
end
|
||||
if player.gui.top.PlayerList ~= nil then
|
||||
player.gui.top.PlayerList.destroy()
|
||||
end
|
||||
drawPlayerList()
|
||||
drawToolbar()
|
||||
local playerStringTable = encode(game.players, "players", {"name", "admin", "online_time", "connected", "index"})
|
||||
game.write_file("players.json", playerStringTable, false, 0)
|
||||
if not player.admin and ticktominutes(player.online_time) < 1 then
|
||||
drawFrame(player,'Readme','Rules')
|
||||
end
|
||||
end)
|
||||
|
||||
script.on_event(defines.events.on_player_left_game, function(event)
|
||||
local player = game.players[event.player_index]
|
||||
drawPlayerList()
|
||||
end)
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Gui Events---------------------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
script.on_event(defines.events.on_gui_click, function(event)
|
||||
local player = game.players[event.player_index]
|
||||
for _,btn in pairs(guis.buttons) do
|
||||
if btn[1] == event.element.name then
|
||||
if btn[2] then btn[2](player,event.element) else game.print('Invaid Button'..btn[1]) end
|
||||
break
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
script.on_event(defines.events.on_gui_text_changed, function(event)
|
||||
local player = game.players[event.player_index]
|
||||
if event.element.parent.parent.filterTable then
|
||||
local frame = event.element
|
||||
local filters = {}
|
||||
local commands = false
|
||||
if frame.parent.parent.parent.name == 'Admin' then commands = true filters[#filters+1] = 'online' end
|
||||
if frame.parent.parent.filterTable.status_input and not commands then
|
||||
local status_input = frame.parent.parent.filterTable.status_input.text
|
||||
if status_input == 'yes' or status_input == 'online' or status_input == 'true' or status_input == 'y' then filters[#filters+1] = 'online'
|
||||
elseif status_input ~= '' then filters[#filters+1] = 'offline' end
|
||||
end if frame.parent.parent.filterTable.hours_input then
|
||||
local hours_input = frame.parent.parent.filterTable.hours_input.text
|
||||
if tonumber(hours_input) and tonumber(hours_input) > 0 then filters[#filters+1] = tonumber(hours_input) end
|
||||
end if frame.parent.parent.filterTable.name_input then
|
||||
local name_input = frame.parent.parent.filterTable.name_input.text
|
||||
if name_input then filters[#filters+1] = name_input end
|
||||
end
|
||||
if frame.parent.parent.playerTable then frame.parent.parent.playerTable.destroy() end
|
||||
drawPlayerTable(player, frame.parent.parent, commands, filters)
|
||||
end
|
||||
end)
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Grefer Events------------------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
script.on_event(defines.events.on_marked_for_deconstruction, function(event)
|
||||
local eplayer = game.players[event.player_index]
|
||||
if not eplayer.admin and ticktominutes(eplayer.online_time) < timeForRegular then
|
||||
if event.entity.type ~= "tree" and event.entity.type ~= "simple-entity" then
|
||||
event.entity.cancel_deconstruction("player")
|
||||
eplayer.print("You are not allowed to do this yet, play for a bit longer. Try again in about: " .. math.floor((timeForRegular - ticktominutes(eplayer.online_time))) .. " minutes")
|
||||
callAdmin(eplayer.name .. " tryed to deconstruced something")
|
||||
end
|
||||
elseif event.entity.type == "tree" or event.entity.type == "simple-entity" then
|
||||
event.entity.destroy()
|
||||
end
|
||||
end)
|
||||
|
||||
script.on_event(defines.events.on_built_entity, function(event)
|
||||
local eplayer = game.players[event.player_index]
|
||||
local timeForRegular = 120
|
||||
if not eplayer.admin and ticktominutes(eplayer.online_time) < timeForRegular then
|
||||
if event.created_entity.type == "tile-ghost" then
|
||||
event.created_entity.destroy()
|
||||
eplayer.print("You are not allowed to do this yet, play for a bit longer. Try: " .. math.floor((timeForRegular - ticktominutes(eplayer.online_time))) .. " minutes")
|
||||
callAdmin(eplayer.name .. " tryed to place concrete/stone with robots")
|
||||
end
|
||||
end
|
||||
end)
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Other Events-------------------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
script.on_event(defines.events.on_rocket_launched, function(event)
|
||||
local force = event.rocket.force
|
||||
if event.rocket.get_item_count("satellite") == 0 then
|
||||
if (#game.players <= 1) then
|
||||
game.show_message_dialog{text = {"gui-rocket-silo.rocket-launched-without-satellite"}}
|
||||
else
|
||||
for index, player in pairs(force.players) do
|
||||
player.print({"gui-rocket-silo.rocket-launched-without-satellite"})
|
||||
end
|
||||
end
|
||||
return
|
||||
end
|
||||
if not global.satellite_sent then
|
||||
global.satellite_sent = {}
|
||||
end
|
||||
if global.satellite_sent[force.name] then
|
||||
global.satellite_sent[force.name] = global.satellite_sent[force.name] + 1
|
||||
else
|
||||
game.set_game_state{game_finished=true, player_won=true, can_continue=true}
|
||||
global.satellite_sent[force.name] = 1
|
||||
end
|
||||
for index, player in pairs(force.players) do
|
||||
if player.gui.left.rocket_score then
|
||||
player.gui.left.rocket_score.rocket_count.caption = tostring(global.satellite_sent[force.name])
|
||||
else
|
||||
local frame = player.gui.left.add{name = "rocket_score", type = "frame", direction = "horizontal", caption={"score"}}
|
||||
frame.add{name="rocket_count_label", type = "label", caption={"", {"rockets-sent"}, ":"}}
|
||||
frame.add{name="rocket_count", type = "label", caption=tostring(global.satellite_sent[force.name])}
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
script.on_event(defines.events.on_tick, function(event) if (game.tick/(3600*game.speed)) % 15 == 0 then autoMessage() end end)
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------IDK What There Do Functions----------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
function encode ( table, name, items )
|
||||
local encodeString
|
||||
local encodeSubString
|
||||
local encodeSubSubString
|
||||
for i, keyTable in pairs(table) do
|
||||
encodeSubSubString = nil
|
||||
for i, keyItem in pairs(items) do
|
||||
if type(keyTable[keyItem]) == "string" then
|
||||
if encodeSubSubString ~= nil then
|
||||
encodeSubSubString = encodeSubSubString .. ",\"" .. keyItem .. "\": \"" .. keyTable[keyItem] .. "\""
|
||||
else
|
||||
encodeSubSubString = "\"" .. keyItem .. "\": \"" .. keyTable[keyItem] .. "\""
|
||||
end
|
||||
elseif type(keyTable[keyItem]) == "number" then
|
||||
if encodeSubSubString ~= nil then
|
||||
encodeSubSubString = encodeSubSubString .. ",\"" .. keyItem .. "\": " .. tostring(keyTable[keyItem])
|
||||
else
|
||||
encodeSubSubString = "\"" .. keyItem .. "\": " .. tostring(keyTable[keyItem])
|
||||
end
|
||||
elseif type(keyTable[keyItem]) == "boolean" then
|
||||
if encodeSubSubString ~= nil then
|
||||
encodeSubSubString = encodeSubSubString .. ",\"" .. keyItem .. "\": " .. tostring(keyTable[keyItem])
|
||||
else
|
||||
encodeSubSubString = "\"" .. keyItem .. "\": " .. tostring(keyTable[keyItem])
|
||||
end
|
||||
end
|
||||
end
|
||||
if encodeSubSubString ~= nil and encodeSubString ~= nil then
|
||||
encodeSubString = encodeSubString .. ", {" .. encodeSubSubString .. "}"
|
||||
else
|
||||
encodeSubString = "{" .. encodeSubSubString .. "}"
|
||||
end
|
||||
end
|
||||
encodeString = "{" .. "\"" .. name .. "\": [" .. encodeSubString .. "]}"
|
||||
return encodeString
|
||||
end
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Tool Bar-----------------------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
addButton("btn_toolbar_playerList", function(player) toggleVisable(player.gui.left.PlayerList) end)
|
||||
addButton("btn_toolbar_rocket_score",function(player) toggleVisable(player.gui.left.rocket_score) end)
|
||||
addButton("btn_readme",function(player) if player.gui.center.Readme then player.gui.center.Readme.destroy() else drawFrame(player,'Readme','Rules') end end)
|
||||
addButton("btn_admin",function(player) if player.gui.center.Admin then player.gui.center.Admin.destroy() else drawFrame(player,'Admin','Modifiers') end end)
|
||||
function drawToolbar()
|
||||
for i, a in pairs(game.connected_players) do
|
||||
local frame = a.gui.top
|
||||
clearElement(frame)
|
||||
drawButton(frame,"btn_toolbar_playerList", "Playerlist", "Adds a player list to your game.")
|
||||
drawButton(frame,"btn_toolbar_rocket_score", "Rocket score", "Show the satellite launched counter if a satellite has launched.")
|
||||
drawButton(frame,"btn_readme", "Readme", "Rules, Server info, How to chat, Playerlist, Adminlist.")
|
||||
if a.tag == '[Owner]' or a.tag == '[Developer]' or a.tag == '[Com Mngr]' or a.tag == '[Admin]' then
|
||||
drawButton(frame,"btn_admin", "Admin", "All admin fuctions are here")
|
||||
end
|
||||
end
|
||||
end
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Player List--------------------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
function drawPlayerList()
|
||||
for i, a in pairs(game.connected_players) do
|
||||
if a.gui.left.PlayerList == nil then
|
||||
a.gui.left.add{type = "frame", name= "PlayerList", direction = "vertical"}
|
||||
.add{type = "scroll-pane", name= "PlayerListScroll", direction = "vertical", vertical_scroll_policy="always", horizontal_scroll_policy="never"}
|
||||
end
|
||||
clearElement(a.gui.left.PlayerList.PlayerListScroll)
|
||||
a.gui.left.PlayerList.PlayerListScroll.style.maximal_height = 200
|
||||
for i, player in pairs(game.connected_players) do
|
||||
if player.character then
|
||||
if player.tag == '[Jail]' or player.character.active == false then
|
||||
a.gui.left.PlayerList.PlayerListScroll.add{type = "label", name=player.name, style="caption_label_style", caption={"", ticktohour(player.online_time), " H - " , player.name , " - Jail"}}
|
||||
a.gui.left.PlayerList.PlayerListScroll[player.name].style.font_color = {r=50,g=50,b=50}
|
||||
player.character.active = false
|
||||
player.tag = '[Jail]'
|
||||
end
|
||||
end
|
||||
if player.admin == true and player.tag ~= '[Jail]' then
|
||||
if player.name == "badgamernl" or player.name == "BADgamerNL" then
|
||||
a.gui.left.PlayerList.PlayerListScroll.add{type = "label", name=player.name, style="caption_label_style", caption={"", ticktohour(player.online_time), " H - " , player.name , " - OWNER"}}
|
||||
a.gui.left.PlayerList.PlayerListScroll[player.name].style.font_color = {r=170,g=0,b=0}
|
||||
player.tag = "[Owner]"
|
||||
elseif player.name == "eissturm" or player.name == "PropangasEddy" then
|
||||
a.gui.left.PlayerList.PlayerListScroll.add{type = "label", name=player.name, style="caption_label_style", caption={"", ticktohour(player.online_time), " H - " , player.name , " - ADMIN"}}
|
||||
a.gui.left.PlayerList.PlayerListScroll[player.name].style.font_color = {r=170,g=41,b=170}
|
||||
player.tag = "[Admin]"
|
||||
elseif player.name == "Cooldude2606" then
|
||||
a.gui.left.PlayerList.PlayerListScroll.add{type = "label", name=player.name, style="caption_label_style", caption={"", ticktohour(player.online_time), " H - " , player.name , " - DEV"}}
|
||||
a.gui.left.PlayerList.PlayerListScroll[player.name].style.font_color = {r=179,g=125,b=46}
|
||||
player.tag = "[Developer]"
|
||||
elseif player.name == "arty714" then
|
||||
a.gui.left.PlayerList.PlayerListScroll.add{type = "label", name=player.name, style="caption_label_style", caption={"", ticktohour(player.online_time), " H - " , player.name , " - CM"}}
|
||||
a.gui.left.PlayerList.PlayerListScroll[player.name].style.font_color = {r=150,g=68,b=161}
|
||||
player.tag = "[Com Mngr]"
|
||||
else
|
||||
a.gui.left.PlayerList.PlayerListScroll.add{type = "label", name=player.name, style="caption_label_style", caption={"", ticktohour(player.online_time), " H - " , player.name , " - MOD"}}
|
||||
a.gui.left.PlayerList.PlayerListScroll[player.name].style.font_color = {r=233,g=63,b=233}
|
||||
player.tag = "[Moderator]"
|
||||
end
|
||||
end
|
||||
end
|
||||
for i, player in pairs(game.connected_players) do
|
||||
if player.admin == false and player.tag ~= '[Jail]' then
|
||||
if ticktominutes(player.online_time) >= timeForRegular then
|
||||
a.gui.left.PlayerList.PlayerListScroll.add{type = "label", name=player.name, style="caption_label_style", caption={"", ticktohour(player.online_time), " H - " , player.name}}
|
||||
a.gui.left.PlayerList.PlayerListScroll[player.name].style.font_color = {r=24,g=172,b=188}
|
||||
player.tag = "[Regular]"
|
||||
elseif player.name == "explosivegaming" then
|
||||
for i=10,1,-1 do
|
||||
a.gui.left.PlayerList.PlayerListScroll.add{type = "label", name=player.name .. i, style="caption_label_style", caption={"", ticktohour(player.online_time), " H - " , player.name , i}}
|
||||
a.gui.left.PlayerList.PlayerListScroll[player.name .. i].style.font_color = {r=24,g=172,b=188}
|
||||
player.tag = "[TEST]"
|
||||
end
|
||||
else
|
||||
a.gui.left.PlayerList.PlayerListScroll.add{type = "label", name=player.name, style="caption_label_style", caption={"", ticktohour(player.online_time), " H - " , player.name}}
|
||||
a.gui.left.PlayerList.PlayerListScroll[player.name].style.font_color = {r=255,g=159,b=27}
|
||||
player.tag = "[Guest]"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
addButton('goto',
|
||||
function(player,frame)
|
||||
local p = game.players[frame.parent.name]
|
||||
player.teleport(game.surfaces[p.surface.name].find_non_colliding_position("player", p.position, 32, 1))
|
||||
end)
|
||||
addButton('bring',
|
||||
function(player,frame)
|
||||
local p = game.players[frame.parent.name]
|
||||
p.teleport(game.surfaces[player.surface.name].find_non_colliding_position("player", player.position, 32, 1))
|
||||
end)
|
||||
addButton('jail',
|
||||
function(player,frame)
|
||||
local p = game.players[frame.parent.name]
|
||||
if p.character then
|
||||
if p.character.active then
|
||||
p.character.active = false
|
||||
p.tag = '[Jail]'
|
||||
drawPlayerList()
|
||||
else
|
||||
p.character.active = true
|
||||
p.tag = '[Guest]'
|
||||
drawPlayerList()
|
||||
end
|
||||
end
|
||||
end)
|
||||
addButton('kill',
|
||||
function(player,frame)
|
||||
local p = game.players[frame.parent.name]
|
||||
if p.character then p.character.die() end
|
||||
end)
|
||||
function drawPlayerTable(player, frame, commands, filters)
|
||||
frame.add{name='playerTable', type="table", colspan=5}
|
||||
frame.playerTable.style.minimal_width = 500
|
||||
frame.playerTable.style.maximal_width = 500
|
||||
frame.playerTable.style.horizontal_spacing = 10
|
||||
frame.playerTable.add{name="id", type="label", caption="Id "}
|
||||
frame.playerTable.add{name="name", type="label", caption="Name "}
|
||||
if not commands then frame.playerTable.add{name="status", type="label", caption="Status "} end
|
||||
frame.playerTable.add{name="online_time", type="label", caption="Online Time "}
|
||||
frame.playerTable.add{name="rank", type="label", caption="Rank "}
|
||||
if commands then frame.playerTable.add{name="commands", type="label", caption="Commands"} end
|
||||
for i, p in pairs(game.players) do
|
||||
local addPlayer = true
|
||||
for _,filter in pairs(filters) do
|
||||
if filter == 'admin' then if p.admin == false then addPlayer = false break end
|
||||
elseif filter == 'online' then if p.connected == false then addPlayer = false break end
|
||||
elseif filter == 'offline' then if p.connected == true then addPlayer = false break end
|
||||
elseif type(filter)=='number' then if filter > ticktominutes(p.online_time) then addPlayer = false break end
|
||||
elseif type(filter)=='string' then if p.name:lower():find(filter:lower()) == nil then addPlayer = false break end
|
||||
end
|
||||
end
|
||||
if addPlayer == true and player.name ~= p.name then
|
||||
if frame.playerTable[p.name] == nil then
|
||||
frame.playerTable.add{name=i .. "id", type="label", caption=i}
|
||||
frame.playerTable.add{name=p.name..'_name', type="label", caption=p.name}
|
||||
if not commands then
|
||||
if p.connected == true then
|
||||
frame.playerTable.add{name=p.name .. "Status", type="label", caption="ONLINE"}
|
||||
else
|
||||
frame.playerTable.add{name=p.name .. "Status", type="label", caption="OFFLINE"}
|
||||
end
|
||||
end
|
||||
frame.playerTable.add{name=p.name .. "Online_Time", type="label", caption=(ticktohour(p.online_time)..'H '..(ticktominutes(p.online_time)-60*ticktohour(p.online_time))..'M')}
|
||||
frame.playerTable.add{name=p.name .. "Rank", type="label", caption=p.tag}
|
||||
if commands then
|
||||
frame.playerTable.add{name=p.name, type="flow"}
|
||||
drawButton(frame.playerTable[p.name],'goto','Tp','Goto to the players location')
|
||||
drawButton(frame.playerTable[p.name],'bring','Br','Bring a player to your location')
|
||||
if p.tag == '[Owner]' or p.tag == '[Developer]' or p.tag == '[Com Mngr]' then else
|
||||
drawButton(frame.playerTable[p.name],'jail','Ja','Jail/Unjail a player')
|
||||
drawButton(frame.playerTable[p.name],'kill','Ki','Kill this player')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Read Me Gui--------------------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
addFrame('Readme')
|
||||
|
||||
addTab('Readme','Rules','The rules of the server',
|
||||
function(player,frame)
|
||||
local rules = {
|
||||
"Hacking/cheating, exploiting and abusing bugs is not allowed.",
|
||||
"Do not disrespect any player in the server (This includes staff).",
|
||||
"Do not spam, this includes stuff such as chat spam, item spam, chest spam etc.",
|
||||
"Do not laydown concrete with bots without permission.",
|
||||
"Do not use active provider chests without permission.",
|
||||
"Do not remove/move major parts of the factory without permission.",
|
||||
"Do not walk in a random direction for no reason(to save map size).",
|
||||
"Do not remove stuff just because you don't like it, tell people first.",
|
||||
"Do not make train roundabouts.",
|
||||
"Trains are Left Hand Drive (LHD) only.",
|
||||
"Do not complain about lag, low fps and low ups or other things like that.",
|
||||
"Do not ask for rank.",
|
||||
"Use common sense and what an admin says goes."}
|
||||
for i, rule in pairs(rules) do
|
||||
frame.add{name=i, type="label", caption={"", i ,". ", rule}}
|
||||
end
|
||||
end)
|
||||
addTab('Readme','Server Info','Info about the server',
|
||||
function(player,frame)
|
||||
frame.add{name=1, type="label", caption={"", "Discord voice and chat server:"}}
|
||||
frame.add{name=2, type='textfield', text='https://discord.gg/RPCxzgt'}.style.minimal_width=400
|
||||
frame.add{name=3, type="label", caption={"", "Our forum:"}}
|
||||
frame.add{name=4, type='textfield', text='https://explosivegaming.nl'}.style.minimal_width=400
|
||||
frame.add{name=5, type="label", caption={"", "Steam:"}}
|
||||
frame.add{name=6, type='textfield', text='http://steamcommunity.com/groups/tntexplosivegaming'}.style.minimal_width=400
|
||||
end)
|
||||
addTab('Readme','How to chat','Just in case you dont know how to chat',
|
||||
function(player,frame)
|
||||
local chat = {
|
||||
"Chatting for new players can be difficult because it’s different than other games!",
|
||||
"It’s very simple, the button you need to press is the “GRAVE/TILDE key”",
|
||||
"it’s located under the “ESC key”. If you would like to change the key go to your",
|
||||
"controls tab in options. The key you need to change is “Toggle Lua console”",
|
||||
"it’s located in the second column 2nd from bottom."}
|
||||
for i, line in pairs(chat) do
|
||||
frame.add{name=i, type="label", caption={"", line}}
|
||||
end
|
||||
end)
|
||||
addTab('Readme','Admins','List of all the people who can ban you :P',
|
||||
function(player,frame)
|
||||
local admins = {
|
||||
"This list contains all the people that are admin in this world. Do you want to become",
|
||||
"an admin dont ask for it! an admin will see what you've made and the time you put",
|
||||
"in the server."}
|
||||
for i, line in pairs(admins) do
|
||||
frame.add{name=i, type="label", caption={"", line}}
|
||||
end
|
||||
drawPlayerTable(player, frame, false, {'admin'})
|
||||
end)
|
||||
addTab('Readme','Players','List of all the people who have been on the server',
|
||||
function(player,frame)
|
||||
local players = {
|
||||
"These are the players who have supported us in the making of this factory. Without",
|
||||
"you the player we wouldn't have been as far as we are now."}
|
||||
for i, line in pairs(players) do
|
||||
frame.add{name=i, type="label", caption={"", line}}
|
||||
end
|
||||
frame.add{name='filterTable',type='table',colspan=3}
|
||||
frame.filterTable.add{name='name_label',type='label',caption='Name'}
|
||||
frame.filterTable.add{name='status_label',type='label',caption='Online?'}
|
||||
frame.filterTable.add{name='hours_label',type='label',caption='Online Time (minutes)'}
|
||||
frame.filterTable.add{name='name_input',type='textfield'}
|
||||
frame.filterTable.add{name='status_input',type='textfield'}
|
||||
frame.filterTable.add{name='hours_input',type='textfield'}
|
||||
drawPlayerTable(player, frame, false, {})
|
||||
end)
|
||||
----------------------------------------------------------------------------------------
|
||||
---------------------------Modifier Gui-------------------------------------------------
|
||||
----------------------------------------------------------------------------------------
|
||||
addFrame('Admin')
|
||||
|
||||
addButton('btn_toolbar_automessage',function() autoMessage() end)
|
||||
addButton('revive_dead_entitys',function(player,frame) for key, entity in pairs(game.surfaces[1].find_entities_filtered({type = "entity-ghost"})) do entity.revive() end end)
|
||||
addButton('revive_dead_entitys_range',function(player,frame) if tonumber(frame.parent.range.text) then local range = tonumber(frame.parent.range.text) for key, entity in pairs(game.surfaces[1].find_entities_filtered({area={{player.position.x-range,player.position.y-range},{player.position.x+range,player.position.y+range}},type = "entity-ghost"})) do entity.revive() end end end)
|
||||
addButton('remove_biters',function(player,frame) for key, entity in pairs(game.surfaces[1].find_entities_filtered({force='enemy'})) do entity.destroy() end end)
|
||||
addButton('tp_all',function(player,frame) for i,p in pairs(game.connected_players) do local pos = game.surfaces[player.surface.name].find_non_colliding_position("player", player.position, 32, 1) if p ~= player then p.teleport(pos) end end end)
|
||||
addButton('toggle_cheat',function(player,frame) player.cheat_mode = not player.cheat_mode end)
|
||||
addButton('add_dev_items',function(player,frame) player.insert{name="deconstruction-planner", count = 1} player.insert{name="blueprint-book", count = 1} player.insert{name="blueprint", count = 20} end)
|
||||
addButton("btn_Modifier_apply",
|
||||
function(player,frame)
|
||||
local forceModifiers = {
|
||||
"manual_mining_speed_modifier",
|
||||
"manual_crafting_speed_modifier",
|
||||
"character_running_speed_modifier",
|
||||
"worker_robots_speed_modifier",
|
||||
"worker_robots_storage_bonus",
|
||||
"character_build_distance_bonus",
|
||||
"character_item_drop_distance_bonus",
|
||||
"character_reach_distance_bonus",
|
||||
"character_resource_reach_distance_bonus",
|
||||
"character_item_pickup_distance_bonus",
|
||||
"character_loot_pickup_distance_bonus"
|
||||
}
|
||||
for i, modifier in pairs(forceModifiers) do
|
||||
local number = tonumber(( frame.parent.parent.modifierTable[modifier .. "_input"].text):match("[%d]+[.%d+]"))
|
||||
if number ~= nil then
|
||||
if number >= 0 and number < 50 and number ~= player.force[modifier] then
|
||||
player.force[modifier] = number
|
||||
player.print(modifier .. " changed to number: " .. tostring(number))
|
||||
elseif number == player.force[modifier] then
|
||||
player.print(modifier .. " Did not change")
|
||||
else
|
||||
player.print(modifier .. " needs to be a higher number or it contains an letter")
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
addTab('Admin', 'Commands', 'Random useful commands',
|
||||
function(player, frame)
|
||||
drawButton(frame,'btn_toolbar_automessage','Auto Message','Send the auto message to all online players')
|
||||
drawButton(frame,'add_dev_items','Get Blueprints','Get all the blueprints')
|
||||
drawButton(frame,'revive_dead_entitys','Revive All Entitys','Brings all dead machines back to life')
|
||||
drawButton(frame,'revive_dead_entitys_range','Revive Entitys','Brings all dead machines back to life in a range')
|
||||
frame.add{type='textfield',name='range',text='Range'}
|
||||
drawButton(frame,'remove_biters','Kill Biters','Removes all biters in map')
|
||||
drawButton(frame,'tp_all','TP All Here','Brings all players to you')
|
||||
drawButton(frame,'toggle_cheat','Toggle Cheat Mode','Toggle your cheat mode')
|
||||
end)
|
||||
addTab('Admin', 'Modifiers', 'Edit in game modifiers',
|
||||
function(player,frame)
|
||||
local forceModifiers = {
|
||||
"manual_mining_speed_modifier",
|
||||
"manual_crafting_speed_modifier",
|
||||
"character_running_speed_modifier",
|
||||
"worker_robots_speed_modifier",
|
||||
"worker_robots_storage_bonus",
|
||||
"character_build_distance_bonus",
|
||||
"character_item_drop_distance_bonus",
|
||||
"character_reach_distance_bonus",
|
||||
"character_resource_reach_distance_bonus",
|
||||
"character_item_pickup_distance_bonus",
|
||||
"character_loot_pickup_distance_bonus"
|
||||
}
|
||||
frame.add{type = "flow", name= "flowNavigation",direction = "horizontal"}
|
||||
frame.add{name="modifierTable", type="table", colspan=3}
|
||||
frame.modifierTable.add{name="name", type="label", caption="name"}
|
||||
frame.modifierTable.add{name="input", type="label", caption="input"}
|
||||
frame.modifierTable.add{name="current", type="label", caption="current"}
|
||||
for i, modifier in pairs(forceModifiers) do
|
||||
frame.modifierTable.add{name=modifier, type="label", caption=modifier}
|
||||
frame.modifierTable.add{name=modifier .. "_input", type="textfield", caption="inputTextField"}
|
||||
frame.modifierTable.add{name=modifier .. "_current", type="label", caption=tostring(player.force[modifier])}
|
||||
end
|
||||
drawButton(frame.flowNavigation,"btn_Modifier_apply","Apply","Apply the new values to the game")
|
||||
end)
|
||||
addTab('Admin', 'Player List', 'Send a message to all players',
|
||||
function(player, frame)
|
||||
frame.add{name='filterTable',type='table',colspan=2}
|
||||
frame.filterTable.add{name='name_label',type='label',caption='Name'}
|
||||
frame.filterTable.add{name='hours_label',type='label',caption='Online Time (minutes)'}
|
||||
frame.filterTable.add{name='name_input',type='textfield'}
|
||||
frame.filterTable.add{name='hours_input',type='textfield'}
|
||||
drawPlayerTable(player, frame, true, {'online'})
|
||||
end)
|
||||
Reference in New Issue
Block a user