|
Senior Member
Join Date: Mar 2008
Location: Sweden
|

05-09-2009
, 14:20
doesnt set render after loading blocks (blockmaker)
|
#1
|
Hi, i have my own blockmaker, and me and xPaw just made our own Render Menu, to add like glowings, transalpha to blocks, saving work just fine, but when it loads the blocks dont get their rendering.
This works in xPaw's blockmaker but not my, so i posted here to get help
Anyway, heres save/load functions
PHP Code:
/***** FILE HANDLING *****/
saveBlocks(id)
{
//make sure player has access to this command
if (get_user_flags(id) & BM_ADMIN_LEVEL)
{
new file = fopen(gszNewFile, "wt");
new ent = -1;
new blockType;
new Float:vOrigin[3];
new Float:vAngles[3];
new Float:vStart[3];
new Float:vEnd[3];
new blockCount = 0;
new teleCount = 0;
new szData[512];
new Float:fMax;
new size;
new Float:vSizeMax[3];
new szNameCreator[32];
new Float:flRenderColor[ 3 ], Float:flRenderAmt, iRenderFX, iRenderMode;
while ((ent = find_ent_by_class(ent, gszBlockClassname)))
{
//get block info
blockType = pev(ent, pev_body);
pev(ent, pev_targetname, szNameCreator, 31);
if( blockType == BM_MAGICCARPET )
pev(ent, pev_v_angle, vOrigin);
else
pev(ent, pev_origin, vOrigin);
pev(ent, pev_angles, vAngles);
pev(ent, pev_maxs, vSizeMax);
size = SMALL;
fMax = vSizeMax[0] + vSizeMax[1] + vSizeMax[2];
if (fMax > 34.0) size = POLE;
if (fMax > 64.0) size = NORMAL;
if (fMax > 128.0) size = LARGE;
iRenderFX = pev( ent, pev_renderfx );
iRenderMode = pev( ent, pev_rendermode );
pev( ent, pev_rendercolor, flRenderColor );
pev( ent, pev_renderamt, flRenderAmt );
//format block info and save it to file
formatex(szData, 511, "%c %f %f %f %f %f %f %d %s %i %i %f %f %f %f^n", gBlockSaveIds[blockType], vOrigin[0], vOrigin[1], vOrigin[2], vAngles[0], vAngles[1], vAngles[2], size, szNameCreator, iRenderFX, iRenderMode, flRenderAmt, flRenderColor[0], flRenderColor[1], flRenderColor[2]);
fputs(file, szData);
//increment block count
++blockCount;
}
//iterate through teleport end entities because you can't have an end without a start
ent = -1;
while ((ent = find_ent_by_class(ent, gszTeleportEndClassname)))
{
//get the id of the start of the teleporter
new tele = entity_get_int(ent, EV_INT_iuser1);
//check that start of teleport is a valid entity
if (tele)
{
//get the origin of the start of the teleport and save it to file
entity_get_vector(tele, EV_VEC_origin, vStart);
entity_get_vector(ent, EV_VEC_origin, vEnd);
//get creator
pev(tele, pev_targetname, szNameCreator, 31);
formatex(szData, 128, "%c %f %f %f %f %f %f 0 %s^n", gTeleportSaveId, vStart[0], vStart[1], vStart[2], vEnd[0], vEnd[1], vEnd[2], szNameCreator);
fputs(file, szData);
//2 teleport entities count as 1 teleporter
++teleCount;
}
}
//get players name
new szName[32];
get_user_name(id, szName, 32);
//notify all admins that the player saved blocks to file
for (new i = 1; i <= 32; ++i)
{
//make sure player is connected
if (is_user_connected(i))
{
if (get_user_flags(i) & BM_ADMIN_LEVEL)
{
client_print(i, print_chat, "%s'%s' saved %d block%s and %d teleporter%s! Total entites in map: %d", gszPrefix, szName, blockCount, (blockCount == 1 ? "" : "s"), teleCount, (teleCount == 1 ? "" : "s"), entity_count());
}
}
}
//close file
fclose(file);
}
}
loadBlocks(id)
{
new bool:bAccess = false;
//if this function was called on map load, ID is 0
if (id == 0)
{
bAccess = true;
}
//make sure user calling this function has access
else if (get_user_flags(id) & BM_ADMIN_LEVEL)
{
bAccess = true;
}
if (bAccess)
{
//if map file exists
if (file_exists(gszNewFile))
{
//if a player is loading then first delete all the old blocks, teleports and timers
if (id > 0 && id <= 32)
{
deleteAllBlocks(id, false);
deleteAllTeleports(id, false);
}
new szData[512];
new szType[2];
new sz1[16], sz2[16], sz3[16], sz4[16], sz5[16], sz6[16], sz7[16];
new Float:vVec1[3];
new Float:vVec2[3];
new axis;
new size;
new f = fopen(gszNewFile, "rt");
new blockCount = 0;
new teleCount = 0;
new szCreator[32];
new szRenderColor[3][16], szRenderFX[3], szRenderMode[3], szRenderAmt[16];
new Float:flRenderColor[ 3 ], Float:flRenderAmt, iRenderFX, iRenderMode;
new iCreatedEntity;
//iterate through all the lines in the file
while (!feof(f))
{
szType = "";
fgets(f, szData, 511);
parse(szData, szType, 1, sz1, 16, sz2, 16, sz3, 16, sz4, 16, sz5, 16, sz6, 16, sz7, 16, szCreator, 31, szRenderFX, 2, szRenderMode, 2, szRenderAmt, 16, szRenderColor[0], 16, szRenderColor[1], 16, szRenderColor[2], 16);
vVec1[0] = str_to_float(sz1);
vVec1[1] = str_to_float(sz2);
vVec1[2] = str_to_float(sz3);
vVec2[0] = str_to_float(sz4);
vVec2[1] = str_to_float(sz5);
vVec2[2] = str_to_float(sz6);
size = str_to_num(sz7);
flRenderColor[0] = str_to_float( szRenderColor[0] );
flRenderColor[1] = str_to_float( szRenderColor[1] );
flRenderColor[2] = str_to_float( szRenderColor[2] );
flRenderAmt = str_to_float( szRenderAmt );
iRenderFX = str_to_num( szRenderFX );
iRenderMode = str_to_num( szRenderMode );
if (strlen(szType) > 0)
{
//if type is not a teleport
if (szType[0] != gTeleportSaveId)
{
//set axis orientation depending on block angles
if (vVec2[0] == 90.0 && vVec2[1] == 0.0 && vVec2[2] == 0.0)
{
axis = X;
}
else if (vVec2[0] == 90.0 && vVec2[1] == 0.0 && vVec2[2] == 90.0)
{
axis = Y;
}
else
{
axis = Z;
}
//increment block counter
++blockCount;
}
//create block or teleport depending on type
switch (szType[0])
{
case 'A': iCreatedEntity = createBlock(0, BM_PLATFORM, vVec1, axis, size, szCreator);
case 'B': iCreatedEntity = createBlock(0, BM_BHOP, vVec1, axis, size, szCreator);
case 'C': iCreatedEntity = createBlock(0, BM_DAMAGE, vVec1, axis, size, szCreator);
case 'D': iCreatedEntity = createBlock(0, BM_HEALER, vVec1, axis, size, szCreator);
case 'E': iCreatedEntity = createBlock(0, BM_INVINCIBILITY, vVec1, axis, size, szCreator);
case 'F': iCreatedEntity = createBlock(0, BM_STEALTH, vVec1, axis, size, szCreator);
case 'G': iCreatedEntity = createBlock(0, BM_TRAMPOLINE, vVec1, axis, size, szCreator);
case 'H': iCreatedEntity = createBlock(0, BM_SPEEDBOOST, vVec1, axis, size, szCreator);
case 'I': iCreatedEntity = createBlock(0, BM_NOFALLDAMAGE, vVec1, axis, size, szCreator);
case 'J': iCreatedEntity = createBlock(0, BM_ICE, vVec1, axis, size, szCreator);
case 'K': iCreatedEntity = createBlock(0, BM_DEATH, vVec1, axis, size, szCreator);
case 'M': iCreatedEntity = createBlock(0, BM_CAMOUFLAGE, vVec1, axis, size, szCreator);
case 'N': iCreatedEntity = createBlock(0, BM_LOWGRAVITY, vVec1, axis, size, szCreator);
case 'P': iCreatedEntity = createBlock(0, BM_SLAP, vVec1, axis, size, szCreator);
case 'Q': iCreatedEntity = createBlock(0, BM_RANDOM, vVec1, axis, size, szCreator);
case 'R': iCreatedEntity = createBlock(0, BM_HONEY, vVec1, axis, size, szCreator);
case 'S': iCreatedEntity = createBlock(0, BM_BARRIER_CT, vVec1, axis, size, szCreator);
case 'T': iCreatedEntity = createBlock(0, BM_BARRIER_T, vVec1, axis, size, szCreator);
case 'U': iCreatedEntity = createBlock(0, BM_BOOTSOFSPEED, vVec1, axis, size, szCreator);
case 'V': iCreatedEntity = createBlock(0, BM_GLASS, vVec1, axis, size, szCreator);
case 'Y': iCreatedEntity = createBlock(0, BM_MAGICCARPET, vVec1, axis, size, szCreator);
case 'Z': iCreatedEntity = createBlock(0, BM_LIGHT, vVec1, axis, size, szCreator);
case '1': iCreatedEntity = createBlock(0, BM_MEGAHEALER, vVec1, axis, size, szCreator);
case '2': iCreatedEntity = createBlock(0, BM_REDLIGHT, vVec1, axis, size, szCreator);
case '3': iCreatedEntity = createBlock(0, BM_GREENLIGHT, vVec1, axis, size, szCreator);
case '4': iCreatedEntity = createBlock(0, BM_BLUELIGHT, vVec1, axis, size, szCreator);
case '5': iCreatedEntity = createBlock(0, BM_DOUBLEJUMP, vVec1, axis, size, szCreator);
case '6': iCreatedEntity = createBlock(0, BM_ROCKET, vVec1, axis, size, szCreator);
case '7': iCreatedEntity = createBlock(0, BM_NOCLIP, vVec1, axis, size, szCreator);
case '8': iCreatedEntity = createBlock(0, BM_400GRAVITY, vVec1, axis, size, szCreator);
case '9': iCreatedEntity = createBlock(0, BM_DELAYEDBHOP, vVec1, axis, size, szCreator);
case '0': iCreatedEntity = createBlock(0, BM_BLINDTRAP, vVec1, axis, size, szCreator);
case 'W': iCreatedEntity = createBlock(0, BM_BLINDOPPOTEAM, vVec1, axis, size, szCreator);
case 'O': iCreatedEntity = createBlock(0, BM_SPAMDUCK, vVec1, axis, size, szCreator);
case 'L': iCreatedEntity = createBlock(0, BM_PULSE, vVec1, axis, size, szCreator);
case 'X': iCreatedEntity = createBlock(0, BM_ASPEEDBOOST, vVec1, axis, size, szCreator);
case gTeleportSaveId:
{
createTeleport(0, TELEPORT_START, vVec1, szCreator);
createTeleport(0, TELEPORT_END, vVec2, szCreator);
//increment teleport count
++teleCount;
}
default:
{
log_amx("%sInvalid block type: %c in: %s", gszPrefix, szType[0], gszFile);
//decrement block counter because a block was not created
--blockCount;
}
}
if (pev_valid(iCreatedEntity)) {
set_pev( iCreatedEntity, pev_renderfx, iRenderFX );
set_pev( iCreatedEntity, pev_rendermode, iRenderMode );
set_pev( iCreatedEntity, pev_rendercolor, flRenderColor );
set_pev( iCreatedEntity, pev_renderamt, flRenderAmt );
}
}
}
fclose(f);
//if a player is loading the blocks
if (id > 0 && id <= 32)
{
//get players name
new szName[32];
get_user_name(id, szName, 32);
//notify all admins that the player loaded blocks from file
for (new i = 1; i <= 32; ++i)
{
//make sure player is connected
if (is_user_connected(i))
{
if (get_user_flags(i) & BM_ADMIN_LEVEL)
{
client_print(i, print_chat, "%s'%s' loaded %d block%s and %d teleporter%s! Total entites in map: %d", gszPrefix, szName, blockCount, (blockCount == 1 ? "" : "s"), teleCount, (teleCount == 1 ? "" : "s"), entity_count());
}
}
}
}
}
else
{
//if a player is loading the blocks
if (id > 0 && id <= 32)
{
//notify player that the file could not be found
client_print(id, print_chat, "%sCouldn't find file: %s", gszPrefix, gszNewFile);
}
}
}
}
+karma for help ^^
|
|