Баг с нулевыми координатами -
Daea - 16.06.2014
Добрый день! У меня есть система, которая записывает координаты игрока при смерти, а при спавне должно спавнить его туда, но ,как пишут другие - их спавнит на нулевые координаты.
Code:
public OnPlayerRequestClass(playerid, classid)
{
//if(IsPlayerNPC(playerid)) return 1;
//TogglePlayerSpectating(playerid,1);
SetSpawnInfo(playerid, 255, 0, 0, 0, 0, 1.0, -1, -1, -1, -1, -1, -1);
SpawnPlayer(playerid);
return true;
}
public OnPlayerDeath(playerid, killerid, reason)
{
GetPlayerPos(playerid,PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z]);
PlayerInfo[playerid][pInt]=GetPlayerInterior(playerid);
PlayerInfo[playerid][pWorld]=GetPlayerVirtualWorld(playerid);
При том, что больше такая функция нигде не встречается
Точно так же с транспортом:
Создаю транспорт через /veh и иногда спавнюсь на нулевых координатах
Code:
stock CreateAdminVehicle(playerid,model,Float:posx,Float:posy,Float:posz,Float:posa,color1,color2)
{
CarModel[playerid] = model;
new carid = CreateVehicle(model,posx,posy,posz,posa,color1,color2,60000);
new numer[24];
format(numer,24,"%c%c%c %i",65+random(26),65+random(26),65+random(26),100+carid);
strmid(VehicleInfo[carid][vNomer], numer, 0, strlen(numer), 40);
SetVehicleNumberPlate(carid,numer);
SetVehicleToRespawn(carid);
vehicleColor[carid][0] = color1;
vehicleColor[carid][1] = color2;
CreatedCar[carid] = true;
SetVehicleHealth(carid,1000);
RepairVehicle(carid);
VehicleInfo[carid][vEngine] = true;
Iter_Add(Vehicle,carid);
UnLockCar(carid);
GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(carid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
if(GetPlayerInterior(playerid) != 0) LinkVehicleToInterior(carid,GetPlayerInterior(playerid));
if(GetPlayerVirtualWorld(playerid) != 0)SetVehicleVirtualWorld(carid,GetPlayerVirtualWorld(playerid));
VehicleInfo[carid][vFuel] = GetCarBak(carid);
VehicleInfo[carid][vMaxFuel] = VehicleInfo[carid][vFuel];
PutPlayerInVehicle(playerid,carid,0);
return true;
}
Или сегодня тестер написал, что купил транспорт в автосалоне и тачка заспавнилась на 0 коордах, хотя раньше не спавнилась и код не трогал
Code:
stock cddStaticVehicle(modelid, Float: x, Float: y, Float: z, Float: angle, color1, color2)
{
new vehicleid = CreateVehicle(modelid, x, y, z, angle, color1, color2,60000);
new numer[24];
format(numer,24,"%c%c%c %i",65+random(26),65+random(26),65+random(26),100+vehicleid);
SetVehicleNumberPlate(vehicleid,numer);
vehicleColor[vehicleid][0] = color1;
vehicleColor[vehicleid][1] = color2;
strmid(VehicleInfo[vehicleid][vNomer], numer, 0, strlen(numer), 30);
VehicleInfo[vehicleid][vFuel] = GetCarBak(vehicleid);
VehicleInfo[vehicleid][vMaxFuel] = VehicleInfo[vehicleid][vFuel];
SetVehicleToRespawn(vehicleid);
Iter_Add(Vehicle,vehicleid);
return vehicleid;
}
Может баг в SetVehicleToRespawn(vehicleid);?
Re: Баг с нулевыми координатами -
Daea - 16.06.2014
Потому что больше ничего странного нет
Re: Баг с нулевыми координатами -
White_116 - 16.06.2014
PHP Code:
public OnPlayerDeath(playerid, killerid, reason)
{
GetPlayerPos(playerid,PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z]);
SetSpawnInfo(playerid, 255, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z], 0.0, -1, -1, -1, -1, -1, -1);
//.....
Re: Баг с нулевыми координатами -
Daea - 17.06.2014
Продолжается

SetSpawnInfo - как использовать: SpawnPlayer(playerid)? Просто в public OnPlayerSpawn - в конце спавнит игрока, но там просто ТП, без магии)
Re: Баг с нулевыми координатами -
OKStyle - 18.06.2014
OnPlayerSpawn в студию. Ту часть, что касается координат.
Re: Баг с нулевыми координатами -
Daea - 18.06.2014
Code:
switch(PlayerInfo[playerid][pSpawn])
{
case 3: SetPlayerFixPos(playerid,-234.3270,1421.0704,2027.5746,337.0791,playerid,playerid);
default: SetPlayerFixPos(playerid,PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z],0,PlayerInfo[playerid][pInt],PlayerInfo[playerid][pWorld]);
}
SetPlayerHealthAC(playerid,PlayerInfo[playerid][pHealth]);
stock SetPlayerFixPos( playerid, Float:x, Float:y, Float:z, Float:angle, interior = -1, world = -1, car = 0)
{
SetCameraBehindPlayer(playerid);
if(GetPVarInt(playerid, "FlyMode") == 1) return SetPlayerObjectPos(playerid, noclipdata[playerid][flyobject],x,y,z);
if(IsPlayerInAnyVehicle(playerid) && car == 1)
{
if(interior != -1)LinkVehicleToInterior(GetPlayerVehicleID(playerid),interior),SetPlayerInterior(playerid,interior);
if(world != -1 )SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),world),SetPlayerVirtualWorld(playerid,world);
SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
SetVehicleZAngle(GetPlayerVehicleID(playerid),angle);
}
else
{
if(interior != -1)SetPlayerInterior(playerid,interior);
if(world != -1 )SetPlayerVirtualWorld(playerid,world);
SetPlayerPos(playerid, x, y, z);
SetPlayerFacingAngle(playerid,angle);
ClearAnimations(playerid,1);
}
AntiTeleportTime[playerid] = 5;
GameTextForPlayer(playerid, TranslateText("Прорисовка объектов"), 1500, 1);
//SetCameraBehindPlayer(playerid);
TogglePlayerControllable(playerid,0);
SetTimerEx("Toggle",2400,0,"iifffi",playerid,1,x,y,z,car);
return 1;
}