Баг с нулевыми координатами
#1

Добрый день! У меня есть система, которая записывает координаты игрока при смерти, а при спавне должно спавнить его туда, но ,как пишут другие - их спавнит на нулевые координаты.
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);?
Reply
#2

Потому что больше ничего странного нет
Reply
#3

PHP Code:
public OnPlayerDeath(playeridkilleridreason)
{
    
GetPlayerPos(playerid,PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z]);
    
SetSpawnInfo(playerid255PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z], 0.0, -1, -1, -1, -1, -1, -1);
//..... 
Reply
#4

Продолжается
SetSpawnInfo - как использовать: SpawnPlayer(playerid)? Просто в public OnPlayerSpawn - в конце спавнит игрока, но там просто ТП, без магии)
Reply
#5

OnPlayerSpawn в студию. Ту часть, что касается координат.
Reply
#6

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;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)