Valmista komentoa moiseen ei löydy, mutta ei tuota mahdotonta ole itse toteuttaa. Yksinkertaisin purkkaratkaisu jonka keksin on tallentaa tämänhetkinen rivi muuttujaan ja lähteä lyhentämään sitä sana kerrallaan kunnes se mahtuu kokonaisuudessaan ruudulle, jolloin kyseinen pätkä tulostetaan ja poistetaan rivin alusta ja tätä jatketaan kunnes koko tekstinpätkä on tulostettu. Koodiksi ajatus kääntyy esimerkiksi seuraavasti:
'make window bigger as otherwise the text won't fit
SCREEN 580,420,16,cbwindowed
'open the file
f=OpenToRead("license.txt")
textline=0
'print the whole file to the screen
While Not EOF(f)
txt$ = ReadLine(f)
Repeat
curln$ = txt
While TextWidth(curln)>ScreenWidth()//toistetaan kunnes tämänhetkinen pätkä mahtuu ruudulle
lastlen = 1+Len(GetWord(curln,Int(CountWords(curln))))//lasketaan viimeisen sanan ja sen vieressä olevan välilyönnin pituus
curln = StrRemove(curln,Len(curln)+1-lastlen,lastlen)//poistetaan kyseinen sana ja välilöynti rivin lopusta
Wend
Text 0,textline,trim(curln)
txt = StrRemove(txt,1,Len(curln))//poistetaan jo tulostettu pätkä rivin alusta ja siirrytään seuraavaan
textline=textline+12
Until txt=""
Wend
'show the screen
DrawScreen
'don't forget this!
CloseFile f
WaitKey
Miten saisin tekstin pysymään ruudulla vaikka 5 sekunttia jonka jälkeen se poistettaisiin? Olen tuolla Timer hommalla yrittänyt jotain, mutta en ymmärrä miten sen sillä saisi.
Siis yritän tehdä niin että kun joku muuttuja on esim. 1 silloin näytettäisi teksti joka näkyisi ruudulla 5 sekunttia.
Repeat
If KeyHit(cbkeyreturn) Then
aika=Timer()
EndIf
If Timer()<aika+5000 Then
sek=(aika+5000-Timer()-((aika+5000-Timer()) Mod 1000))/1000
Text 100,100,"Tämä katoaa "+sek+" sekunnin kuluessa."
EndIf
DrawScreen
Forever
Elikkä olisko mahdollista suojata coolbasic ohjelma jollain "rekisteröintikoodilla" ja millä komennoilla se onnistuisi... ja mielellään selkeästi selitettynä
ja btw en tarkota mitään encryptaamista vaan että sun pitäis tavallaan "rekisteröidä" se ohjelma että pääset käyttään sitä.
EnOsaaMitään wrote:Elikkä olisko mahdollista suojata coolbasic ohjelma jollain "rekisteröintikoodilla" ja millä komennoilla se onnistuisi... ja mielellään selkeästi selitettynä
ja btw en tarkota mitään encryptaamista vaan että sun pitäis tavallaan "rekisteröidä" se ohjelma että pääset käyttään sitä.
Noh... Onhan se mahdollista, esim. tallentaa jonkun hashin avaimesta ohjelmaan ja sitten syötetty rekisteröinti koodi hashattaisiin ja verrattaisiin tallennetun kanssa. Mutta vähän epäilen, tarvitsetko oikeasti rekisteröintikoodia ohjelmaasi.
EnOsaaMitään wrote:Elikkä olisko mahdollista suojata coolbasic ohjelma jollain "rekisteröintikoodilla" ja millä komennoilla se onnistuisi... ja mielellään selkeästi selitettynä
ja btw en tarkota mitään encryptaamista vaan että sun pitäis tavallaan "rekisteröidä" se ohjelma että pääset käyttään sitä.
Noh... Onhan se mahdollista, esim. tallentaa jonkun hashin avaimesta ohjelmaan ja sitten syötetty rekisteröinti koodi hashattaisiin ja verrattaisiin tallennetun kanssa. Mutta vähän epäilen, tarvitsetko oikeasti rekisteröintikoodia ohjelmaasi.
No siis perjaattessa en mutta oisin tarvinnut sitä varten että oisin voinut sitten sen crackata D mutta perjaattessa tarkotin sellasta että sulla on yksi tai muutama ennalta määrätty salasana jolla voisit ohjelmaa käyttää...
oikea$="1234"
Repeat
Locate 10,30
l:
Serial$=Input("Serial: ","")
DrawScreen
Text -20,-20,GetWord (Serial$,1)
If Serial$ = oikea$ Then Goto a
DrawScreen
Until EscapeKey()
a:
CloseInput
AddText "Tuote Rekisteröity!"
Goto loop
e:
CloseInput
Text 10,20,"Väärä Rekisteröintikoodi!"
Goto l
loop:
AddText "Ohjelmasi on nyt rekisteröity"
Repeat
DrawScreen
Forever
mutta miten saisin tohon lisättyä vielä että jos kirjottaa väärän niin se menee tohon e:hen?
Last edited by Jare on Sun Aug 21, 2011 7:55 am, edited 1 time in total.
Reason:Laitoin koodin laatikkoon
oikea$="1234"
Repeat
Locate 10,30
l:
Serial$=Input("Serial: ","")
DrawScreen
Text -20,-20,GetWord (Serial$,1)
If Serial$ = oikea$ Then Goto a
DrawScreen
Until EscapeKey()
a:
CloseInput
AddText "Tuote Rekisteröity!"
Goto loop
e:
CloseInput
Text 10,20,"Väärä Rekisteröintikoodi!"
Goto l
loop:
AddText "Ohjelmasi on nyt rekisteröity"
Repeat
DrawScreen
Forever
mutta miten saisin tohon lisättyä vielä että jos kirjottaa väärän niin se menee tohon e:hen?
Lukemalla manuaalista IF -lausekkeesta. Ja käytä code tageja.
oikea$="1234"
Repeat
Locate 10,30
l:
Serial$=Input("Serial: ","")
DrawScreen
Text -20,-20,GetWord (Serial$,1)
If Serial$ = oikea$ Then Goto a
DrawScreen
Until EscapeKey()
a:
CloseInput
AddText "Tuote Rekisteröity!"
Goto loop
e:
CloseInput
Text 10,20,"Väärä Rekisteröintikoodi!"
Goto l
loop:
AddText "Ohjelmasi on nyt rekisteröity"
Repeat
DrawScreen
Forever
mutta miten saisin tohon lisättyä vielä että jos kirjottaa väärän niin se menee tohon e:hen?
Lukemalla manuaalista IF -lausekkeesta. Ja käytä code tageja.
ja [ /code] (Ilman väliä)
Edit: Eikä tuollasia turhaa rivittämistä sitten.[/quote]
okei... siis kokeilin tota "if [] then [] else []" niin se heittää heti sen tonne e:hen että miten saisin sen odottamaan että jotain nelinumeroista koodia yritetään?
salasana1$="1234"
salasana2$="4321"
Repeat
If state=0 Then
txt$=Input("Salasana:")
If KeyHit(28) Then state=1 : CloseInput()
ElseIf state=1 Then
If txt=salasana1 Or txt=salasana2 Then
Exit
Else
Text 0,0,"Salasana väärin"
If KeyHit(28) Then state=0
EndIf
EndIf
DrawScreen
Forever
//ohjelma tähän
salasana1$="1234"
salasana2$="4321"
Repeat
If state=0 Then
txt$=Input("Salasana:")
If KeyHit(28) Then state=1 : CloseInput()
ElseIf state=1 Then
If txt=salasana1 Or txt=salasana2 Then
Exit
Else
Text 0,0,"Salasana väärin"
If KeyHit(28) Then state=0
EndIf
EndIf
DrawScreen
Forever
//ohjelma tähän
Tuossa lähestymistavassa on vain sellainen heikkous, että se oikea salasana lukee selkokielisenä siellä exe:ssä eikä sen lukeminen vaadi kovinkaan paljoa taitoa. Sen takia Latexi95:n ehdottama hashin tallentaminen selkokielisen salasanan sijaan on erittäin suositeltavaa. Myös esim. käyttöjärjestelmien salasanat on tallennettu hasheina.
Dimple wrote:Tuossa lähestymistavassa on vain sellainen heikkous, että se oikea salasana lukee selkokielisenä siellä exe:ssä eikä sen lukeminen vaadi kovinkaan paljoa taitoa.
Ei ne merkkijonot siellä exessä selkokielisenä lue, kaikki CB:n exejen merkkijonot salataan exen sisällä. Mutta kun ne voi sieltä silti purkaa...
...jonka takia onkin järkevämpää tallentaa juurikin ne hashit.
Veikkaisin, että tiedostopolut ovat väärin. Onko samassa kansiossa, missä koodisi on, kansio "omattiedostot" ja siellä tuo kartta ja tileset? Veikkaisin, että ei ole. Suosittelen, että teet projektillesi kansion, jossa koodi on, ja sinne kansioon kansion nimeltään "Media" ja laitat sinnen kaikki kuvat ja kartat. Sitten vain lataat kaiken tiedostopolulla "Media\...".
esim. pongiskartta=LoadMap("Media\pongiskartta.til","Media\pongistausta.png")
Miten olisi mahdollista tehdä "fps" peli cb:llä niinkuin mitä esim. Wolfenstein 3d(2.5d) oli?
Ja miten siis pääsisin alkuun jos haluaisin alkaa sellaista peliä tekemään?