- added map generating script
- dropped support for versions older than 2 because of lighting supportmaster
parent
b326e75baa
commit
c18af6e728
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import struct
|
||||||
|
import random
|
||||||
|
|
||||||
|
def getrand():
|
||||||
|
i = random.randrange(0,2)
|
||||||
|
if i==0:
|
||||||
|
return 0
|
||||||
|
return 254
|
||||||
|
|
||||||
|
"""
|
||||||
|
Map format:
|
||||||
|
map/sectors/XXXXZZZZ/YYYY
|
||||||
|
|
||||||
|
XXXX,YYYY,ZZZZ = coordinates in hexadecimal
|
||||||
|
|
||||||
|
fffe = -2
|
||||||
|
ffff = -1
|
||||||
|
0000 = 0
|
||||||
|
0001 = 1
|
||||||
|
"""
|
||||||
|
|
||||||
|
f = open("map/sectors/00000000/ffff", "wb")
|
||||||
|
|
||||||
|
# version
|
||||||
|
f.write(struct.pack('B', 2))
|
||||||
|
# is_underground
|
||||||
|
f.write(struct.pack('B', 0))
|
||||||
|
|
||||||
|
for i in range(0,16*16*16):
|
||||||
|
# Material content
|
||||||
|
f.write(struct.pack('B', getrand()))
|
||||||
|
# Brightness
|
||||||
|
f.write(struct.pack('B', 15))
|
||||||
|
|
||||||
|
f.close()
|
||||||
|
|
|
@ -148,9 +148,9 @@ void Client::step(float dtime)
|
||||||
counter -= dtime;
|
counter -= dtime;
|
||||||
if(counter <= 0.0)
|
if(counter <= 0.0)
|
||||||
{
|
{
|
||||||
counter = 10.0;
|
counter = 20.0;
|
||||||
|
|
||||||
dout_client<<"Client packetcounter:"<<std::endl;
|
dout_client<<"Client packetcounter (20s):"<<std::endl;
|
||||||
m_packetcounter.print(dout_client);
|
m_packetcounter.print(dout_client);
|
||||||
m_packetcounter.clear();
|
m_packetcounter.clear();
|
||||||
}
|
}
|
||||||
|
|
60
src/map.cpp
60
src/map.cpp
|
@ -1780,16 +1780,15 @@ MapBlock * ServerMap::emergeBlock(
|
||||||
MapNode n;
|
MapNode n;
|
||||||
n.d = MATERIAL_MESE;
|
n.d = MATERIAL_MESE;
|
||||||
|
|
||||||
if(rand()%8 == 0)
|
if(is_ground_material(block->getNode(cp).d))
|
||||||
block->setNode(cp, n);
|
if(rand()%8 == 0)
|
||||||
|
block->setNode(cp, n);
|
||||||
|
|
||||||
for(u16 i=0; i<26; i++)
|
for(u16 i=0; i<26; i++)
|
||||||
{
|
{
|
||||||
if(!is_ground_material(block->getNode(cp+g_26dirs[i]).d))
|
if(is_ground_material(block->getNode(cp+g_26dirs[i]).d))
|
||||||
continue;
|
if(rand()%8 == 0)
|
||||||
|
block->setNode(cp+g_26dirs[i], n);
|
||||||
if(rand()%8 == 0)
|
|
||||||
block->setNode(cp+g_26dirs[i], n);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1798,15 +1797,25 @@ MapBlock * ServerMap::emergeBlock(
|
||||||
/*
|
/*
|
||||||
Create a few rats in empty blocks underground
|
Create a few rats in empty blocks underground
|
||||||
*/
|
*/
|
||||||
/*if(is_underground && low_block_is_empty == true)
|
if(is_underground)
|
||||||
{
|
{
|
||||||
//for(u16 i=0; i<2; i++)
|
//for(u16 i=0; i<2; i++)
|
||||||
{
|
{
|
||||||
v3s16 pos(8, 1, 8);
|
v3s16 cp(
|
||||||
RatObject *obj = new RatObject(NULL, -1, intToFloat(pos));
|
(rand()%(MAP_BLOCKSIZE-2))+1,
|
||||||
block->addObject(obj);
|
(rand()%(MAP_BLOCKSIZE-2))+1,
|
||||||
|
(rand()%(MAP_BLOCKSIZE-2))+1
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check that the place is empty
|
||||||
|
//if(!is_ground_material(block->getNode(cp).d))
|
||||||
|
if(1)
|
||||||
|
{
|
||||||
|
RatObject *obj = new RatObject(NULL, -1, intToFloat(cp));
|
||||||
|
block->addObject(obj);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Add block to sector.
|
Add block to sector.
|
||||||
|
@ -2491,31 +2500,8 @@ void ServerMap::loadBlock(std::string sectordir, std::string blockfile, MapSecto
|
||||||
Convert old formats to new and save
|
Convert old formats to new and save
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if(version == 0 || version == 1)
|
// Save old format blocks in new format
|
||||||
{
|
if(version < SER_FMT_VER_HIGHEST)
|
||||||
dstream<<"Block ("<<p3d.X<<","<<p3d.Y<<","<<p3d.Z<<")"
|
|
||||||
" is in old format. Updating lighting and saving"
|
|
||||||
" modified blocks in new format."<<std::endl;
|
|
||||||
|
|
||||||
// Old version has zero lighting, update it
|
|
||||||
core::map<v3s16, MapBlock*> blocks_changed;
|
|
||||||
blocks_changed.insert(block->getPos(), block);
|
|
||||||
core::map<v3s16, MapBlock*> modified_blocks;
|
|
||||||
updateLighting(blocks_changed, modified_blocks);
|
|
||||||
|
|
||||||
// Close input file
|
|
||||||
is.close();
|
|
||||||
|
|
||||||
// Save modified blocks
|
|
||||||
core::map<v3s16, MapBlock * >::Iterator i = modified_blocks.getIterator();
|
|
||||||
for(; i.atEnd() == false; i++)
|
|
||||||
{
|
|
||||||
MapBlock *b2 = i.getNode()->getValue();
|
|
||||||
saveBlock(b2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Save blocks in new format
|
|
||||||
else if(version < SER_FMT_VER_HIGHEST)
|
|
||||||
{
|
{
|
||||||
saveBlock(block);
|
saveBlock(block);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,8 +15,10 @@
|
||||||
loadable by any version. Other compatibility is not
|
loadable by any version. Other compatibility is not
|
||||||
maintained.
|
maintained.
|
||||||
Serialization format versions:
|
Serialization format versions:
|
||||||
|
== Unsupported ==
|
||||||
0: original networked test with 1-byte nodes
|
0: original networked test with 1-byte nodes
|
||||||
1: update with 2-byte nodes
|
1: update with 2-byte nodes
|
||||||
|
== Supported ==
|
||||||
2: lighting is transmitted in param
|
2: lighting is transmitted in param
|
||||||
3: optional fetching of far blocks
|
3: optional fetching of far blocks
|
||||||
4: block compression
|
4: block compression
|
||||||
|
@ -31,7 +33,7 @@
|
||||||
// Highest supported serialization version
|
// Highest supported serialization version
|
||||||
#define SER_FMT_VER_HIGHEST 9
|
#define SER_FMT_VER_HIGHEST 9
|
||||||
// Lowest supported serialization version
|
// Lowest supported serialization version
|
||||||
#define SER_FMT_VER_LOWEST 0
|
#define SER_FMT_VER_LOWEST 2
|
||||||
|
|
||||||
#define ser_ver_supported(v) (v >= SER_FMT_VER_LOWEST && v <= SER_FMT_VER_HIGHEST)
|
#define ser_ver_supported(v) (v >= SER_FMT_VER_LOWEST && v <= SER_FMT_VER_HIGHEST)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue