Seit dem ich mein Script komplett auf MySQL umgestellt habe und es auf 0.3e geupdated habe, bugt mein Spawn.
ich habe eigentlich nichts grundlegendes daran geändert.
Man wird irgentwo hingeportet (in meinem Fall nähe LS Beach) und dann mit einer hohen geschwindigkeit nach oben gezogen.
Mein Spawn ist etwa so aufgebaut:
p_ChangeSpawnInfo(playerid);
SpawnPlayer(playerid);
stock p_ChangeSpawnInfo(playerid)
{
new day,month,year,second,minute,hour, spSkin;
if(firstspawn[playerid])
{
new bool:relogtimer = false;
getdate(year,month,day);
gettime(hour,minute,second);
if(month == Spieler[playerid][LastMonth] && day == Spieler[playerid][LastDay] && year == Spieler[playerid][LastYear])
{
if(hour-Spieler[playerid][LastHour] == 0)
{
if(minute - Spieler[playerid][LastMinute] <= 15 || Spieler[playerid][LastMinute] == minute) relogtimer = true;
}
else if(hour-Spieler[playerid][LastHour] == 1)
{
if(Spieler[playerid][LastMinute] > 45)
{
if(minute-Spieler[playerid][LastMinute] >= -59 && minute-Spieler[playerid][LastMinute] <= -45) relogtimer = true;
}
}
}
else if(month == Spieler[playerid][LastMonth] && year == Spieler[playerid][LastYear])
{
if(CheckDateDifference(Spieler[playerid][LastDay],Spieler[playerid][LastMonth],Spieler[playerid][LastYear],day,month,year,0) == 1)
{
if(Spieler[playerid][LastHour] == 23 && hour == 0 && Spieler[playerid][LastMinute] > 45 && minute < 15)
{
if(minute-Spieler[playerid][LastMinute] >= -59 && minute-Spieler[playerid][LastMinute] <= -45) relogtimer = true;
}
}
}
if(relogtimer)
{
new bool:needpara = false;
if(Spieler[playerid][Duty] == 1) spSkin = Spieler[playerid][Fraktionsskin];
else if(Spieler[playerid][Duty] == 2 && Spieler[playerid][Ziviljob] > 0) spSkin = Nebenjobs[Spieler[playerid][Ziviljob]][jSkin];
else if(Spieler[playerid][Duty] == 2 && Spieler[playerid][Fraktionsjob] > 0) spSkin = Nebenjobs[Spieler[playerid][Fraktionsjob]][jSkin];
else spSkin = Spieler[playerid][Zivilskin];
if(Spieler[playerid][ZPos] >= 75.0) needpara = true;
return p_SetSpawnInfo(playerid, spSkin, Spieler[playerid][XPos],Spieler[playerid][YPos],Spieler[playerid][ZPos], Spieler[playerid][APos], Spieler[playerid][Interior],Spieler[playerid][Virtualworld], Spieler[playerid][PlayerHealth], Spieler[playerid][PlayerArmour], needpara);
}
else
{
Spieler[playerid][Duty] = 0;
Spieler[playerid][Spawnchange] = -1;
}
}
if(IsAGang(GetPlayerFrak(playerid)) && Spieler[playerid][Duty] <= 1) Spieler[playerid][Duty] = 1;
if(Spieler[playerid][Duty] == 1) spSkin = Spieler[playerid][Fraktionsskin];
else if(Spieler[playerid][Duty] == 2 && Spieler[playerid][Ziviljob] > 0) spSkin = Nebenjobs[Spieler[playerid][Ziviljob]][jSkin];
else if(Spieler[playerid][Duty] == 2 && Spieler[playerid][Fraktionsjob] > 0) spSkin = Nebenjobs[Spieler[playerid][Fraktionsjob]][jSkin];
else spSkin = Spieler[playerid][Zivilskin];
if(Spieler[playerid][Spawnchange] >= 0)
{
p_SetSpawnInfo(playerid, spSkin, Fraktionen[Spieler[playerid][Spawnchange]][pickx],Fraktionen[Spieler[playerid][Spawnchange]][picky],Fraktionen[Spieler[playerid][Spawnchange]][pickz],Fraktionen[Spieler[playerid][Spawnchange]][picka],Fraktionen[Spieler[playerid][Spawnchange]][pickinter], Fraktionen[Spieler[playerid][Spawnchange]][pickvirt]);
return 1;
}
if(Spieler[playerid][Hotelzimmer] >= 0)
{
p_SetSpawnInfo(playerid,spSkin, pHotelzimmer[Spieler[playerid][Hotelzimmer]][hzx2],pHotelzimmer[Spieler[playerid][Hotelzimmer]][hzy2],pHotelzimmer[Spieler[playerid][Hotelzimmer]][hzz2],pHotelzimmer[Spieler[playerid][Hotelzimmer]][hza2],pHotelzimmer[Spieler[playerid][Hotelzimmer]][inter2],pHotelzimmer[Spieler[playerid][Hotelzimmer]][virt2]);
return 1;
}
if(Spieler[playerid][Haus] >= 0)
{
p_SetSpawnInfo(playerid, spSkin, Haeuser[Spieler[playerid][Haus]][pick2x],Haeuser[Spieler[playerid][Haus]][pick2y],Haeuser[Spieler[playerid][Haus]][pick2z],Haeuser[Spieler[playerid][Haus]][pick2a],Haeuser[Spieler[playerid][Haus]][inter],Haeuser[Spieler[playerid][Haus]][virt]);
return 1;
}
if(Spieler[playerid][Stadt] == 1) p_SetSpawnInfo(playerid, spSkin, 823.9938,-1361.9373,-0.5078, 314.8367);
else if(Spieler[playerid][Stadt] == 2) p_SetSpawnInfo(playerid, spSkin, -1964.9036,137.8082,27.6875,89.5713);
else if(Spieler[playerid][Stadt] == 3) p_SetSpawnInfo(playerid, spSkin, 1433.6573,2620.4934,11.3926, 180.1021);
else p_SetSpawnInfo(playerid, spSkin, 823.9938,-1361.9373,-0.5078, 314.8367);
return 1;
}
stock p_SetSpawnInfo(playerid, skin, Float:x, Float:y, Float:z, Float:a, interior = 0, virtualworld = 0, Float:spHealth = 100.0, Float:spArmour = 0.0, bool:spPara = false)
{
SetSpawnInfo(playerid, -1, skin, x, y, z, a, 0, 0, 0, 0, 0, 0);
SpawnInfo[playerid][Inter] = interior;
SpawnInfo[playerid][Virt] = virtualworld;
SpawnInfo[playerid][spHp] = spHealth;
SpawnInfo[playerid][spArm] = spArmour;
SpawnInfo[playerid][Parachute] = spPara;
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerInterior(playerid, SpawnInfo[playerid][Inter]);
SetPlayerVirtualWorld(playerid, SpawnInfo[playerid][Virt]);
SetPlayerHealth(playerid, SpawnInfo[playerid][spHp]);
SetPlayerArmour(playerid, SpawnInfo[playerid][spArm]);
if(SpawnInfo[playerid][Parachute]) GivePlayerWeapon(playerid, 46, 1);
return 1;
}
Da steht noch mehr OnPlayerSpawn, hat aber nichts damit zu tun (Textdraws, objekte, gangzonen, etc)
Ich frage mich ob es an mysql, an 0.3e oder an irgenteinen anderen Fehler liegt.