Thomads Skrevet Juli 11, 2017 Del Skrevet Juli 11, 2017 Hey! Jeg er ved at udarbejde en blacklist til min gunshop, hvori det skal kunne være muligt at tilføje / fjerne spillere fra den ved hjælp af kommandoerne !fjern & !tilføj. Blacklisten skulle gerne være permanent, dvs. de samme SteamID'er som bliver tilføjet, skal være der næste gang E2-Chippen bliver spawnet. Jeg har derfor arbejdet med funktionerne File, heriblandt FileWrite(), FileLoad() mm. MEN, jeg kan simpelthen ikke få det til at fungere... Det der sker: Den kan gemme (bruge Filewrite()) et par gange, hvorefter fileCanWrite() bliver ugyldig, og mit script kan ikke længere indlæse eller skrive i .txt filen? Jeg bliver nødt til at hoppe ud og ind af serveren for at kunne bruge FileWrite() igen.. Jeg indsætter den kode jeg har skrevet indtil videre, og håber på, at nogle af jer kloge hoveder kan lede mig i den rigtige retning Spoiler @name FileWrite_Test2 @inputs @outputs @persist Blacklist:array @trigger if(first()){ runOnFile(1) runOnChat(1) if(fileCanLoad()) { fileLoad("blacklist2.txt") } else{print("Filen kunne ikke indl" + ae() + "ses")} if(( !fileLoading())){ IML = fileRead() for(I=1,vonDecode(IML):count()) { Blacklist[I,string] = (vonDecode(IML)[I,string]) } } timer("save",10000) } if(chatClk() & chatClk(owner())){ A = owner():lastSaid():lower():explode(" ") if(A[1,string]=="!tilf" + oe() + "j"){ hideChat(1) B = findPlayerByName(A[2,string]) if(B:isPlayer()) { Blacklist:pushString(B:steamID()) }else{print("Kunne ikke finde spiller")} }elseif(A[1,string]=="!fjern"){ B = findPlayerByName(A[2,string]) if(B:isPlayer()) { for(I=0,Blacklist:count()) { if(B:steamID()==Blacklist[I,string]){ print("Fjernede " + Blacklist[I,string] + " fra blacklisten") Blacklist:removeString(I) } } }else{print("Kunne ikke finde spiller")} } } if(clk("save")) { timer("save",10000) if(fileCanWrite()){ fileWrite("blacklist2.txt",vonEncode(Blacklist)) print(vonEncode(Blacklist)) print("Filen blev gemt.") }else{print("fileCanWrite(!)"), reset()} } Link til kommentar Del på andre sites More sharing options...
SimoN Besvaret Juli 11, 2017 Del Besvaret Juli 11, 2017 Mads Madsen har vidst en gammel tråd hvor han ville hjælpe folk. @DetBareMads Link til kommentar Del på andre sites More sharing options...
DetBareMads Besvaret Juli 11, 2017 Del Besvaret Juli 11, 2017 Du er ude i noget som ikke er helt simpelt, men vil gerne hjælpe dig. Jeg har prøvet at beholde meget er din kode, så du vil forstå det jeg skrev. Dog har jeg lavet en hel del om, som burde gøre at det virker. Som du kan se næsten i starten, så vælger jeg at forsinke din load med 1 sekund. Det gør jeg af den grund, at når du lukke E2´en, eller reloader den, så gemmer den også. I det du gør det, kan der ske en fejl, hvor du loader før du saver, og derfor kommer til at slette alt der er derinde. Når den så loader, så gør den endelig ikke noget specielt. Den burde gøre som normalt, og prøve igen efter 10 sekunder hvis den af en eller anden grund skulle fejle. Efter det vil den automatisk tjekke når filen er loadet, hvilket sker lige efter. Det gør jeg ved at bruge fileClk(S) som endelig bare gøre som en normal clk(S), som aktivere hvis en specifik fil bliver loadet. I stedet for at tilføje hver enkelt som du gjorde, så laver jeg endelig bare array'et "Blacklist" om som du har oprettet i starten, til den array som bliver loadet. Ikke noget fancy der, som du ellers var ude i. Nu til det sidste hvor du gemmer. Der har jeg valgt at indsætte både din timer, men også last() som endelig bare gør, at den vil gemme hvis du enten sletter, eller reloader den. Er lidt i tvivl som den gemmer hvis den crasher, men er næsten sikker på den gør. I stedet for at den gemmer med en konstant timer, så vil den gemme til sidst når du lukker E2'en, og når du enten tilføjer eller fjerner folk fra blacklisten. Det vil gøre så den ikke bliver kørt unødvendigt. Her har du hele koden som burde virker. Har ikke ligefrem testet den, men lad os håbe :D @name FileWrite_Test2 @inputs @outputs @persist Blacklist:array @trigger if(first()){ runOnFile(1) runOnChat(1) timer("LoadFile",1000) } if(chatClk() & chatClk(owner())){ A = owner():lastSaid():lower():explode(" ") if(A[1,string]=="!tilf" + oe() + "j"){ hideChat(1) B = findPlayerByName(A[2,string]) if(B:isPlayer()){ Blacklist:pushString(B:steamID()) timer("FileSave",500) }else{printColor(vec(255,215,0),"[BLACKLIST] ",vec(255,255,255),"Kunne ikke finde spiller")} }elseif(A[1,string]=="!fjern"){ B = findPlayerByName(A[2,string]) if(B:isPlayer()) { for(I=0,Blacklist:count()) { if(B:steamID()==Blacklist[I,string]){ printColor(vec(255,215,0),"[BLACKLIST] ",vec(255,255,255),"Fjernede " + Blacklist[I,string] + " fra blacklisten") Blacklist:removeString(I) timer("FileSave",500) } } }else{printColor(vec(255,215,0),"[BLACKLIST] ",vec(255,255,255),"Kunne ikke finde spiller")} } } if(clk("LoadFile")){ if(fileCanLoad()){ fileLoad("blacklist2.txt") } else{ printColor(vec(255,215,0),"[LOG] ",vec(255,255,255),"Filen kunne ikke indl" + ae() + "ses. Pr"+oe()+"ver igen om 10 sekunder.") timer("LoadFile",10000) } } if(fileClk("blacklist2.txt")){ local Tbl = fileRead() if(Tbl){ Blacklist = vonDecode(Tbl) printColor(vec(255,215,0),"[BLACKLIST] ",vec(255,255,255),"Indl"+ae()+"sning gennemf"+oe()+"rt.") printColor(vec(255,215,0),"[BLACKLIST] ",vec(255,255,255),+Blacklist:count()+" spillere er indl"+ae()+"st.") } } if(last()|clk("FileSave")){ fileWrite("blacklist2.txt",vonEncode(Blacklist)) if(!clk("File_Save")){ printColor(vec(255,215,0),"[GUNSHOP] ",vec(255,255,255),+Blacklist:count()+" spillere er gemt.") } } Link til kommentar Del på andre sites More sharing options...
Thomads Besvaret Juli 11, 2017 Forfatter Del Besvaret Juli 11, 2017 Tusinde tak, Mads! Scriptet blev også lidt kringlet til sidst, idet jeg prøvede alle mulige hacky muligheder for at løse mit problem. Jeg har ikke mulighed for at teste scriptet før i morgen tidlig, men jeg skal nok lige vende tilbage med et resultat :). TAK! Link til kommentar Del på andre sites More sharing options...
DetBareMads Besvaret Juli 11, 2017 Del Besvaret Juli 11, 2017 2 minutes ago, Thomads said: Tusinde tak, Mads! Scriptet blev også lidt kringlet til sidst, idet jeg prøvede alle mulige hacky muligheder for at løse mit problem. Jeg har ikke mulighed for at teste scriptet før i morgen tidlig, men jeg skal nok lige vende tilbage med et resultat :). TAK! Du har været på rette vej, og var faktisk ikke så langt fra :D Vil med glæde hjælpe dig med andet, da du faktisk kan forklare hvad fanden der er galt, og ikke skal have lavet alt :D Link til kommentar Del på andre sites More sharing options...
Thomads Besvaret Juli 11, 2017 Forfatter Del Besvaret Juli 11, 2017 39 minutes ago, DetBareMads said: Du har været på rette vej, og var faktisk ikke så langt fra :D Vil med glæde hjælpe dig med andet, da du faktisk kan forklare hvad fanden der er galt, og ikke skal have lavet alt :D Haha, tænkte også det var nødvendigt med en forklaring på det rodet stykke kode Link til kommentar Del på andre sites More sharing options...
Zenoxxi Besvaret Juli 12, 2017 Del Besvaret Juli 12, 2017 www.MadsGuides.dk Link til kommentar Del på andre sites More sharing options...
TheBeast Besvaret Juli 21, 2017 Del Besvaret Juli 21, 2017 hvor skal man gemme filen blacklist2.txt for at den skal kunne findes af e2en? Link til kommentar Del på andre sites More sharing options...
Zenoxxi Besvaret Juli 21, 2017 Del Besvaret Juli 21, 2017 1 hour ago, Jannikrouthe said: hvor skal man gemme filen blacklist2.txt for at den skal kunne findes af e2en? steam/steamapps/common/Garrysmod/garrysmod/data/e2files Link til kommentar Del på andre sites More sharing options...
Thomads Besvaret Juli 21, 2017 Forfatter Del Besvaret Juli 21, 2017 6 hours ago, Jannikrouthe said: hvor skal man gemme filen blacklist2.txt for at den skal kunne findes af e2en? 5 hours ago, CasperDK / ZeNoxXi said: steam/steamapps/common/Garrysmod/garrysmod/data/e2files Det burde dog være irrelevant, idet E2'en automatisk er sat til at søge i det directory. Link til kommentar Del på andre sites More sharing options...
Zenoxxi Besvaret Juli 21, 2017 Del Besvaret Juli 21, 2017 12 minutes ago, Thomads said: Det burde dog være irrelevant, idet E2'en automatisk er sat til at søge i det directory. Han spurgte, jeg svarede. Link til kommentar Del på andre sites More sharing options...
Thomads Besvaret Juli 21, 2017 Forfatter Del Besvaret Juli 21, 2017 Just now, CasperDK / ZeNoxXi said: Han spurgte, jeg svarede. Det var også blot en reflektering over hans spørgsmål :b Link til kommentar Del på andre sites More sharing options...
Casper Hede Besvaret Juli 21, 2017 Del Besvaret Juli 21, 2017 Hvordan duer e2'en Link til kommentar Del på andre sites More sharing options...
Thomads Besvaret Juli 21, 2017 Forfatter Del Besvaret Juli 21, 2017 9 hours ago, Casper Hede said: Hvordan duer e2'en !Tilføj [spiller] !Fjern [spiller] Den gemmer en .txt fil i din lokale data mappe med et krypteret array, hvilket gør det muligt at gemme en blacklist med personer på tværs af genstart af spillet osv. Koden er dog eksperimentel, og på trods af Mads' hjælp, oplevede jeg alligevel upålidelige krypteringer og fejlbare skrivninger / indlæsninger af filen, hvilket er derfor jeg droppede projektet. Du skal være velkommen til at gøre brug af koden, hvis du vil! Link til kommentar Del på andre sites More sharing options...
Zenoxxi Besvaret Juli 21, 2017 Del Besvaret Juli 21, 2017 53 minutes ago, Thomads said: !Tilføj [spiller] !Fjern [spiller] Den gemmer en .txt fil i din lokale data mappe med et krypteret array, hvilket gør det muligt at gemme en blacklist med personer på tværs af genstart af spillet osv. Koden er dog eksperimentel, og på trods af ZeNoxXi's hjælp, oplevede jeg alligevel upålidelige krypteringer og fejlbare skrivninger / indlæsninger af filen, hvilket er derfor jeg droppede projektet. Du skal være velkommen til at gøre brug af koden, hvis du vil! Du mener vel Mads' Link til kommentar Del på andre sites More sharing options...
Thomads Besvaret Juli 22, 2017 Forfatter Del Besvaret Juli 22, 2017 8 hours ago, CasperDK / ZeNoxXi said: Du mener vel Mads' Ja.... Link til kommentar Del på andre sites More sharing options...
Recommended Posts
Arkiveret
Dette emne er nu arkiveret og er lukket for yderligere svar