21.09.2015, 20:27
The teleports aren't loading only the last teleport that has been created is working. I believe its a problem of the teleport load
PHP код:
#define LoadTeleports INI_ParseFile(tpFile(), "LoadTP", .bExtra = true, .extra = i);
#define MAX_TELEPORTS 50
enum TPData
{
ID,
Float:X,
Float:Y,
Float:Z,
Float:ToX,
Float:ToY,
Float:ToZ,
Description[64],
VW,
ToVW
}
new tpDB[MAX_TELEPORTS][TPData];
CMD:createtp(playerid,params[]){
LoggedCMD OwnerCMD
if(sscanf(params,"iffffffiis",param[0],F[0],F[1],F[2],F[3],F[4],F[5],param[1],param[2],String2)) return MSG(playerid,C_GRAY,"Error: Usage /CreateTP [Teleport ID] [X] [Y] [Z] [To X] [To Y] [To Z] [Virtual World] [To Virtual World] [Description]");
tpDB[param[0]][ID] = param[0];
tpDB[param[0]][X] = F[0];
tpDB[param[0]][Y] = F[1];
tpDB[param[0]][Z] = F[2];
tpDB[param[0]][ToX] = F[3];
tpDB[param[0]][ToY] = F[4];
tpDB[param[0]][ToZ] = F[5];
tpDB[param[0]][VW] = param[1];
tpDB[param[0]][ToVW] = param[2];
format(tpDB[param[0]][Description],64,String2);
MSG(playerid,C_WHITE,"Teleport has created successfuly!");
format(String,sizeof(String),"Teleport (%i)\n%s",tpDB[param[0]][ID],tpDB[param[0]][Description]);
Create3DTextLabel(String, 0xffffffff, tpDB[param[0]][X], tpDB[param[0]][Y], tpDB[param[0]][Z], 25, tpDB[param[0]][VW], 0);
Create3DTextLabel(String, 0xffffffff, tpDB[param[0]][ToX], tpDB[param[0]][ToY], tpDB[param[0]][ToZ], 25, tpDB[param[0]][ToVW], 0);
SaveTPFile();
return 1;}
function LoadTP(playerid, name[], value[])
{
for(new i = 0; i < MAX_TELEPORTS; i++){
INI_Int("ID",tpDB[i][ID]);
INI_String("Description",tpDB[i][Description],64);
INI_Float("X",tpDB[i][X]);
INI_Float("Y",tpDB[i][Y]);
INI_Float("Z",tpDB[i][Z]);
INI_Float("ToX",tpDB[i][ToX]);
INI_Float("ToY",tpDB[i][ToY]);
INI_Float("ToZ",tpDB[i][ToZ]);
INI_Int("VW",tpDB[i][VW]);
INI_Int("ToVW",tpDB[i][ToVW]);}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if ((newkeys & KEY_SECONDARY_ATTACK) && !(oldkeys & KEY_SECONDARY_ATTACK)){
for(new i = 0; i < MAX_TELEPORTS; i++){
new fkstr[128];
format(fkstr,sizeof(fkstr),"Teleports/Teleport (%i).ini",i);
if(IsPlayerInRangeOfPoint(playerid,3,tpDB[fkstr][X],tpDB[i][Y],tpDB[i][Z])){
SetPlayerPos(playerid,tpDB[i][ToX],tpDB[i][ToY],tpDB[i][ToZ]);
return 1;}
if(IsPlayerInRangeOfPoint(playerid,3,tpDB[i][ToX],tpDB[i][ToY],tpDB[i][ToZ])){
SetPlayerPos(playerid,tpDB[i][X],tpDB[i][Y],tpDB[i][Z]);
return 1;}}
}
return 1;
}