Kann mir jemand erklären, wieso im folgenden Code die variable "p_hp" 0 zurück gibt?
Spoiler anzeigen
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
Alles anzeigen
Hat jemand eine Ahnung was da los ist?
GML-Quellcode
- if (file_exists(working_directory+"/buffertest.bin")){
- file_delete(working_directory+"/buffertest.bin");
- }
- buffer =buffer_create(1, buffer_grow, 1);
- buffer_write(buffer,buffer_u32,456753);
- buffer_write(buffer,buffer_u32,234223);
- buffer_write(buffer,buffer_u8,90);
- buffer_write(buffer,buffer_u8,200);
- buffer_write(buffer,buffer_u8,133);
- buffer_write(buffer,buffer_u8,100);
- buffer_save(buffer,working_directory+"/buffertest.bin");
- buffer_delete(buffer);
- //Read data:
- var px,py,p_hp,p_mun,m_stamina,p_messer;
- buffer = buffer_load(working_directory+"/buffertest.bin");
- px = buffer_read(buffer,buffer_u32);
- py = buffer_read(buffer,buffer_u32);
- p_hp = buffer_read(buffer,buffer_u8); //Gibt 0 zurück
- p_mun = buffer_read(buffer,buffer_u8);
- p_stamina = buffer_read(buffer,buffer_u8);
- p_messer = buffer_read(buffer,buffer_u8);
- show_message(string(px)+"|"+string(py)+"|"+string(p_hp)+"|"+string(p_mun)+"|"+string(p_stamina)+"|"+string(p_messer));
- buffer_delete(buffer);
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:
GML-Quellcode
- if (file_exists(working_directory+"/buffertest.bin")){
- file_delete(working_directory+"/buffertest.bin");
- }
- buffer =buffer_create(1, buffer_grow, 1);
- buffer_write(buffer,buffer_u8,1);
- buffer_write(buffer,buffer_u32,456753);
- buffer_write(buffer,buffer_u32,234223);
- buffer_write(buffer,buffer_u8,90);
- buffer_write(buffer,buffer_u8,200);
- buffer_write(buffer,buffer_u8,133);
- buffer_write(buffer,buffer_u8,100);
- buffer_save(buffer,working_directory+"/buffertest.bin");
- buffer_delete(buffer);
- //Read data:
- var pid,px,py,p_hp,p_mun,m_stamina,p_messer;
- buffer = buffer_load(working_directory+"/buffertest.bin");
- p_id = buffer_read(buffer,buffer_u8); //<-- Behebt den "Bug"?
- px = buffer_read(buffer,buffer_u32);
- py = buffer_read(buffer,buffer_u32);
- p_hp = buffer_read(buffer,buffer_u8);//wert wird korrekt zurückgegeben, da p_id gelesen wurde (und diese ein u8 byte ist)
- p_mun = buffer_read(buffer,buffer_u8);
- p_stamina = buffer_read(buffer,buffer_u8);
- p_messer = buffer_read(buffer,buffer_u8);
- show_message(string(p_id)+"|"+string(px)+"|"+string(py)+"|"+string(p_hp)+"|"+string(p_mun)+"|"+string(p_stamina)+"|"+string(p_messer));
- buffer_delete(buffer);
Hat jemand eine Ahnung was da los ist?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von LEWA ()