Status della richiesta: Non risolto
Stai vedendo 25 articoli - dal 26 a 50 (di 56 totali)
  • Autore
    Articoli
  • #182666

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    te l’ho indicato prima.

    Oggetto moneta:

    -Poperty: propMoneta, bool, true;

    -sens: near(propPly) –> and —> act: end object

    Oggetto Pplayer:

    – Property: propPlayer, bool, true;

    – Porperty: numMonete, int, 0;

    – sens: near(propMoneta) –> and –>act: prop( add 1 a numeMonete)

    – sens: prop(chang numMonete) –> python di salvataggio.

    Così fino al salvataggio funziona tutto correttamente.

    Quindi accade che, quando sei vicino abbastanza ad una moneta, si attivano i due sensori near (uno della moneta e uno del player). quello della moneta fa sparire se stessa, quello del player incrementa di 1 il numero delle monete e, l’incremento del num delle monete attiva il changed che fa partire il pthon che salva il numero delle monete nel file di salvataggio.

    #182667

    Dr.Frank
    Partecipante
    • Blenderista
    • Post sul Forum 42

    non va… sempre il problema del -1… ti faccio vedere come ho impostato lo script

    Code:
    import GameLogic as G

    # Prendo l’oggetto che contiene TUTTE le property, quindi l’oggetto contiene prop Vita, prop Monete e così via
    obj = G.getCurrentScene().objects[‘OBCube.222’]
    obj2 = G.getCurrentScene().objects[‘OBCube.189’]
    # apro il file in modalità  scrittura
    mioFile = open(“Salvataggio.txt”, “w”)

    # scrivo nel file il valore delle property
    mioFile.write(obj[‘NumeroMonete’])
    mioFile.write(obj[‘moneta’])

    # chiudo il file
    mioFile.close

    caricamento

    Code:
    import GameLogic as G

    # Prendo l’oggetto che contiene TUTTE le property
    obj = G.getCurrentScene().objects[‘OBCube.222’]
    obj2 = G.getCurrentScene().objects[‘OBCube.189’]

    # apro il file in modalità  lettura
    mioFile = open(“Salvataggio.txt”, “r”)

    #recupero il valore della property e la inserisco nella property nell’ordine di salvataggio
    obj[‘NumeroMonete’] = mioFile.readline()
    obj2[‘moneta’] = mioFile.readline()

    # chiudo il file
    mioFile.close

    #182668

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    obj = G.getCurrentScene().objects

    OBCube.222 suppongo siano una moneta.

    Stai bagliando. Lo scripst non va perchè l’oggetto che devi prendere tu non è la moneta ma è il player. Quindi un solo obj = G.getCurrentScene().objects do ve Player non è la moneta ma il personaggio che devi far passare vicino alla moneta, e quindi come ho scritto nel ommento del codice: qull’oggetto che contiene tutte le prop monete, vita ecc…

    è chiaro ora?

    #182669

    Dr.Frank
    Partecipante
    • Blenderista
    • Post sul Forum 42

    in realtà  il player è il cube.222 quindi levo il cube.189, poi per caricare carica, ma in modo negativo e inoltre la moneta non scompare 🙁

    #182670

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    non puoi caricare degli screenshot o il file. …

    oppure scrivi a mo di schemo come quelli che ho fatto io in modo che riesca a capire dov’è il problema?

    puoi mettere anche i nomi originale degli oggetti prima di scrivere proprietà  e logicbrick così è di più facile lettura ?

    #182671

    Qwerty
    Partecipante
    • Veterano
    • ★★
    • Post sul Forum 447

    Ho una domanda a proposito del salvataggio.

    Con lo script posso salvare il salvataggio con qualsiasi estensione, perfino .jpg, .exe etc.

    Ma il giocatore dal bloc notes può aprirlo comunque e cambiare dei dati.

    Ho pensato che per proteggere il file dovrei inserire delle frasi qui e là  che, se cambiate, annullano il caricamento del salvataggio e magari ne cancellano il contenuto… e magari sostituire a parti tipo “Score = …” una sequenza numerica che non faccia capire di cosa si tratta.

    Ma con un po’ di pazienza un utente più astuto della media potrebbe capire la dinamica e decidere lui stesso punteggio, vita etc.

    C’è un modo meno macchinoso e più sicuro per rendere sicuri i salvataggi?

    #182672

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    c’è il metodo di scrittura in binario.

    Ma qui entriamo di più in ambito informatico-programmazione.

    Se apri un file binario con blocconote ottieni scritte stranissime, ma non è semplice scrivere e leggere in binario.

    Bisogna capire la logica per usarlo correttamente, altrimenti pure se si sbagli adi un byte succede un casino.

    Io li uso con c/c++.

    Con python non ho mai provato.

    #182673

    raffaelenapoli
    Partecipante
    • Blenderista
    • Post sul Forum 10

    raga ho anche io lo stesso problema..kmq cercando di capire il perchè ho visto che quando salvo il file txt è vuoto cioè non contiene nessun numero..penso che l’errore sta nello script di salvataggio

    #182674

    raffaelenapoli
    Partecipante
    • Blenderista
    • Post sul Forum 10
    raffaelenapoli wrote:
    raga ho anche io lo stesso problema..kmq cercando di capire il perchè ho visto che quando salvo il file txt è vuoto cioè non contiene nessun numero..penso che l’errore sta nello script di salvataggio

    raga quando salvo va tutto bene inftt nel file txt leggo gli oggetti presi..pero quando carico mi dà  l’errore inftt mi dà  -1…come faccio?

    #182675

    raffaelenapoli
    Partecipante
    • Blenderista
    • Post sul Forum 10
    raffaelenapoli wrote:
    raffaelenapoli wrote:
    raga ho anche io lo stesso problema..kmq cercando di capire il perchè ho visto che quando salvo il file txt è vuoto cioè non contiene nessun numero..penso che l’errore sta nello script di salvataggio

    raga quando salvo va tutto bene inftt nel file txt leggo gli oggetti presi..pero quando carico mi dà  l’errore inftt mi dà  -1…come faccio?

    cmq il problema ho capito…lo script legge e scrive solo variabili di tipo stringa no di tipo integer…qnd bisogna scrivere nello script del salvataggio mioFile.write(str(obj[“monete”]))

    mentre ora cerco di trovare un modo anche per il caricamento

    #182676

    raffaelenapoli
    Partecipante
    • Blenderista
    • Post sul Forum 10
    raffaelenapoli wrote:
    raffaelenapoli wrote:
    raffaelenapoli wrote:
    raga ho anche io lo stesso problema..kmq cercando di capire il perchè ho visto che quando salvo il file txt è vuoto cioè non contiene nessun numero..penso che l’errore sta nello script di salvataggio

    raga quando salvo va tutto bene inftt nel file txt leggo gli oggetti presi..pero quando carico mi dà  l’errore inftt mi dà  -1…come faccio?

    cmq il problema ho capito…lo script legge e scrive solo variabili di tipo stringa no di tipo integer…qnd bisogna scrivere nello script del salvataggio mioFile.write(str(obj[“monete”]))

    mentre ora cerco di trovare un modo anche per il caricamento

    ekko trovato anche per il caricamento

    da stringa a integer

    obj[“monete”] = int(mioFile.readline())

    ho perso un po di tempo a capirlo..però..ne è valsa la pena..hehehe

    #182677

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    http://www.pasteall.org/blend/4472

    Qui c’è la soluzione al problema di fondo.

    Scusate le imperfezioni ma l’ho dovuto fare di fretta 😀

    Negli scrpti leggete l’info prima

    #182678

    raffaelenapoli
    Partecipante
    • Blenderista
    • Post sul Forum 10
    ccddxxff wrote:
    http://www.pasteall.org/blend/4472

    Qui c’è la soluzione al problema di fondo.

    Scusate le imperfezioni ma l’ho dovuto fare di fretta 😀

    Negli scrpti leggete l’info prima

    kmq la soluzione l ho scritta io sopra se l hai letta XD

    #182679

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    non ci ho fatto caso 😆 , l’avremo postato insieme.. 😀

    #182680

    IzE_Design
    Partecipante
    • Blenderista
    • Post sul Forum 202

    io ho sempre usato un formato di sistema per salvare i dati… non mi son mai fasciato la testa, primo perche non sò nemmeno quante persone poi scaricheranno il mio gioco, e secondo chi è che si mette ad aprire tutti i file del gioco col block notes per modificare il salvataggio? neanche mi chiamassi Ubisoft o Electronics Art… e poi dipende da cosa scrivi, io di solito non faccio altro che mettere una serie di numeri che è impossibile capire a cosa servono se non sai la sequenza…

    #182681

    Dr.Frank
    Partecipante
    • Blenderista
    • Post sul Forum 42

    Grazie mille! Scusate se rispondo in ritardo.

    Ma come poteva concludersi tutto senza un problema? XD

    Lo script va benissimo, ho sostituito i TAG ecc ma il problema sta nelle monete (Ho usato lo script della stella come esperimento)

    Avete presente che in alcuni giochi, quando termini un livello e prendi le monete queste si eliminano e se poi si ha salvato il gioco esse non ritornano più?

    Bene, pensavo di cavarmela con il modificare lo script del salvataggio un po’ così:

    Code:
    import GameLogic as G

    # QUI STA L’OGGETTO STELLa
    scene = G.getCurrentScene()
    star = scene.objects[“OBCube.001”]

    # SCRIVO IL FILE
    mioFile = open(“c:\salvataggio4.txt”,”w”)

    #SCRIVO QUI LE PROPERTY E LE CONVERTO IN STR

    mioFile.write(str(star[‘WOW’]))

    # CHIUDO IL FILE
    mioFile.close()

    Caricamento:

    Code:
    import GameLogic as G

    # QUI STA L’OGGETTO STELLA
    scene = G.getCurrentScene()
    star = scene.objects[“OBCube.001”]

    # IL SISTEMA LEGGE IL FILE
    mioFile = open(“c:\salvataggio4.txt”,”r”)

    # LEGGO LE VARIABILI

    wow = mioFile.readline()

    # CHIUDO IL FILE
    mioFile.close()

    # MODIFICO LE VARIABILI IN STRINGHE PRESE PRIMA DAL FILE
    # GRAZIE ALLE FUNZIONI float() E int()
    star[‘WOW’] = int(wow)

    Ovviamente è entrata in gioco anche la logica della stella, ovvero

    COLLISIONE—-AND—-AUMENTO PROPERTY WOW ad 1

    WOW = 1


    Viene eliminato l’oggetto

    WOW = 1 e se si preme il tasto S


    Python salvataggio stella

    se si preme il tasto L


    Python caricamento della stella

    Bene, fino a qua funziona tutto, la stella si elimina alla variabile WOW con valore di 1 e se premo il tasto S essa si salva e successivamente alla pressione del tasto L ricarica la variabile WOW ad 1 e quindi la stella viene eliminata.

    Il problema sta ad una successione di stelle, come faccio?

    Avevo lontanamente pensato a dare alla variabile star una lista (G.getObjectsList) e a mettere dentro tutti gli oggetti stella, già  provato e non va.

    Allora avevo provato ad aggiungere allo script una variabile star2 = scene.objects[“OBstella2]

    quindi ho aggiunto una variabile secondaria wow2= miofile.Readline

    una property secondaria WOW2

    ecc ecc.

    Non va lo stesso, secondo me perchè nel salvataggio (ed ho pure controllato il file txt, mi salva solamente 1 variabile) è inserita solamente una variabile, infatti se collido con tutte e due le stelle, la variabile del file si salva ad 1 e le due stelle vengono eliminate, se collido con 1 ma con 1 no allora rimangono li e la variabile rimane 0, creare più salvataggi per delle monete (stelle nel file esperimento) sarebbe troppo ed esagerato. 😯

    Come posso fare?

    Scusate in anticipo per il disturbo, grazie ancora.

    Frank 😀

    #182682

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    Scusa ma non sto capendo. Le stelle o monete a cosa ti servono? Sono tipo le mele di Crash Bandicoot ??

    #182683

    Dr.Frank
    Partecipante
    • Blenderista
    • Post sul Forum 42

    Si, un po’ come Spyro, le gemme una volta finito il livello non si rigererano (Spyro 1-2-3-4).

    #182684

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    vedi qui

    https://www.blender.it/forum/viewtopic.php?f=13&t=14640

    #182685

    Dr.Frank
    Partecipante
    • Blenderista
    • Post sul Forum 42

    Non ci siamo capiti xD.

    Non ho bisogno dell’istruzione if, il mio problema è un altro.

    Il file archivia:

    0

    0

    il primo 0 della prima stella

    il secondo 0 della seconda stella

    il problema è che pur collidendo con tutte e due e salvando, non riesce ad archiviarle tutte e due ad 1

    ad es. collido con la prima ma non con la seconda

    1

    0

    viceversa

    0

    1

    ma se collido con tutte e due

    1

    0

    perchè è stata la prima stella con cui ho colliso.

    Ho fatto un esperimento, ho modificato i due zeri in uno, bene, tutte e due vengono eliminate ma come faccio a far ciò dal gioco? Qual’è il problema?

    #182686

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    Forse è il modo con cui imposti i logic brick.

    Ogni stella ha gli stessi identici logic brick

    #182687

    Dr.Frank
    Partecipante
    • Blenderista
    • Post sul Forum 42

    Li ho già  controllati, e poi scusa non devono essere uguali?

    #182688

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    Ogni stella deve avere un attuatore che la faccia morire (end object) e uno script che salva il suo stato fin un file, ovvero che non c’è più.

    Script e attuatore vengono attivati quando collide col player.

    #182689

    Dr.Frank
    Partecipante
    • Blenderista
    • Post sul Forum 42

    Ecco uno screenshot sulla logica della stella:

    http://i53.tinypic.com/2woyxsi.jpg

    #182690

    ccddxxff
    Partecipante
    • Blenderista
    • Post sul Forum 103

    mmmmmm ….. Benissimo.

    Fai così.

    Stella uno.


    prop Stella Bool True

    prop Visibile int 1

    Alwys —- and —- rotazione

    Collision (con player) —- and


    Visibile = 0

    (property)Visibile = 0


    and


    end obj


    Stella 2, 3 ,4 ecc… ottienile facendo shift+D dopo aver fatto settato i logick come ho scritto.

    Al player gli metti lo script che quando premi S ,scorre tutte le stelle e ne scrive in un file stelle.txt il valore di Visibile di ciascuna stella (in ordine miracc).

    Poi con la L, sempre al player, un’altro script che apre il file stelle.txt, scorre tutte le stelle e setta il valore di Visibile a seconda di come sta salvato nel file, e automaticamente grazie al sensore property, quando rileverà  Visibile = 0 eliminerà  l’oggetto.

    Così dovrebbe funzionare.

Stai vedendo 25 articoli - dal 26 a 50 (di 56 totali)

Devi essere loggato per rispondere a questa discussione.