Buffer fehler?

  • Win

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Buffer fehler?

    Kann mir jemand erklären, wieso im folgenden Code die variable "p_hp" 0 zurück gibt?

    Spoiler anzeigen

    GML-Quellcode

    1. if (file_exists(working_directory+"/buffertest.bin")){
    2. file_delete(working_directory+"/buffertest.bin");
    3. }
    4. buffer =buffer_create(1, buffer_grow, 1);
    5. buffer_write(buffer,buffer_u32,456753);
    6. buffer_write(buffer,buffer_u32,234223);
    7. buffer_write(buffer,buffer_u8,90);
    8. buffer_write(buffer,buffer_u8,200);
    9. buffer_write(buffer,buffer_u8,133);
    10. buffer_write(buffer,buffer_u8,100);
    11. buffer_save(buffer,working_directory+"/buffertest.bin");
    12. buffer_delete(buffer);
    13. //Read data:
    14. var px,py,p_hp,p_mun,m_stamina,p_messer;
    15. buffer = buffer_load(working_directory+"/buffertest.bin");
    16. px = buffer_read(buffer,buffer_u32);
    17. py = buffer_read(buffer,buffer_u32);
    18. p_hp = buffer_read(buffer,buffer_u8); //Gibt 0 zurück
    19. p_mun = buffer_read(buffer,buffer_u8);
    20. p_stamina = buffer_read(buffer,buffer_u8);
    21. p_messer = buffer_read(buffer,buffer_u8);
    22. show_message(string(px)+"|"+string(py)+"|"+string(p_hp)+"|"+string(p_mun)+"|"+string(p_stamina)+"|"+string(p_messer));
    23. buffer_delete(buffer);
    Alles anzeigen


    Witzigerweise habe ich herausfinden können ,dass wenn man im buffer als erstes ein einzelnes Byte (u8 ) reinschreibt und dieses als erstes wieder ausliest,
    wird die variable "p_hp" korrekt erkannt. Wenn ich allerdings als erstes einen float oder einen Integer mit mehr als 1 byte (u16, u32,etc...) reinschreibe und
    dann wieder als erstes auslese, ist "p_hp" wieder 0.

    Der volgende code funktioniert:

    Spoiler anzeigen

    GML-Quellcode

    1. if (file_exists(working_directory+"/buffertest.bin")){
    2. file_delete(working_directory+"/buffertest.bin");
    3. }
    4. buffer =buffer_create(1, buffer_grow, 1);
    5. buffer_write(buffer,buffer_u8,1);
    6. buffer_write(buffer,buffer_u32,456753);
    7. buffer_write(buffer,buffer_u32,234223);
    8. buffer_write(buffer,buffer_u8,90);
    9. buffer_write(buffer,buffer_u8,200);
    10. buffer_write(buffer,buffer_u8,133);
    11. buffer_write(buffer,buffer_u8,100);
    12. buffer_save(buffer,working_directory+"/buffertest.bin");
    13. buffer_delete(buffer);
    14. //Read data:
    15. var pid,px,py,p_hp,p_mun,m_stamina,p_messer;
    16. buffer = buffer_load(working_directory+"/buffertest.bin");
    17. p_id = buffer_read(buffer,buffer_u8); //<-- Behebt den "Bug"?
    18. px = buffer_read(buffer,buffer_u32);
    19. py = buffer_read(buffer,buffer_u32);
    20. p_hp = buffer_read(buffer,buffer_u8);//wert wird korrekt zurückgegeben, da p_id gelesen wurde (und diese ein u8 byte ist)
    21. p_mun = buffer_read(buffer,buffer_u8);
    22. p_stamina = buffer_read(buffer,buffer_u8);
    23. p_messer = buffer_read(buffer,buffer_u8);
    24. show_message(string(p_id)+"|"+string(px)+"|"+string(py)+"|"+string(p_hp)+"|"+string(p_mun)+"|"+string(p_stamina)+"|"+string(p_messer));
    25. buffer_delete(buffer);
    Alles anzeigen


    Hat jemand eine Ahnung was da los ist?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von LEWA ()