-
SpawnPlayer
Всем привет. Пытаюсь сделать систему выбора места спавна.
Например, если игрок выбрал место №1, то
Код:
PlayerInfo[playerid][pPosX] = 843.8967;
PlayerInfo[playerid][pPosY] = -1855.1732;
PlayerInfo[playerid][pPosZ] = 8.4677;
Ну и разумеется
SetPlayerPos(playerid, PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]);
Почему-то игрок спавнится в деревне LS (нулевые координаты)
Заранее спасибо!
-
Покажите код, когда респавнится игрок по вашей системе.
-
Не включаешь ли-ты режим спектатора?
PHP код:
TogglePlayerSpectating(playerid, true)
Или что-то типо того...
Во всяком случае, попробуй добавить
PHP код:
TogglePlayerSpectating(playerid, false)
перед SetPlayerPos (это если у тебя во время реги спавн выбирают).
Убедись в правильности объявления переменных
PHP код:
PlayerInfo[playerid][pPosX] = 843.8967;
PlayerInfo[playerid][pPosY] = -1855.1732;
PlayerInfo[playerid][pPosZ] = 8.4677;
Попытайся изменить свой код и заспавнить игрока напрямую через SetPlayerPos, сохраняя лишь пункт в диалоге который он выбрал.
-
-
Кстати, хп при спавне тоже 0, но при этом игрок не умирает. Просто моргают жизни.
Код:
public OnPlayerSpawn(playerid)
{
if ( GetPVarInt ( playerid, "Logged" ) == 0)return true;
SetPlayerPos(playerid, Float: pPosX,Float: pPosY,Float: pPosZ);
SetPlayerFacingAngle(playerid, 280);
SetPlayerHealth(playerid, PlayerInfo[playerid][pHp]);
SetPlayerArmour(playerid, PlayerInfo[playerid][pArmour]);
//======TextDraw
new string[128];
format(string, sizeof(string), "Development...");
sait[playerid] = TextDrawCreate(550.000000, 2.000000, string);
TextDrawFont(sait[playerid], 3);
TextDrawColor(sait[playerid],0x33AAFFFF);//öâåò òåêñòà
TextDrawLetterSize(sait[playerid], 0.3600, 1.400000);
TextDrawSetOutline(sait[playerid], 1);
TextDrawShowForPlayer(playerid, sait[playerid]);
//=====================
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun0], PlayerInfo[playerid][ammo0]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun1], PlayerInfo[playerid][ammo1]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun2], PlayerInfo[playerid][ammo2]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun3], PlayerInfo[playerid][ammo3]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun4], PlayerInfo[playerid][ammo4]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun5], PlayerInfo[playerid][ammo5]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun6], PlayerInfo[playerid][ammo6]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun7], PlayerInfo[playerid][ammo7]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun8], PlayerInfo[playerid][ammo8]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun9], PlayerInfo[playerid][ammo9]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun10], PlayerInfo[playerid][ammo10]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun11], PlayerInfo[playerid][ammo11]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun12], PlayerInfo[playerid][ammo12]);
return 1;
}
-
PHP код:
SetPlayerPos(playerid, Float: pPosX,Float: pPosY,Float: pPosZ);
замени на
PHP код:
SetPlayerPos(playerid, pPosX,pPosY, pPosZ);
И у меня еще такое предположение есть:
PHP код:
if ( GetPVarInt ( playerid, "Logged" ) == 0)return true;
PVar "Logged", не меняется на 1 при авторизации, проверь и это тоже
-
Если заменить аргументы в SetPlayerPos, то вот, что получается:
warning 213: tag mismatch
warning 213: tag mismatch
warning 213: tag mismatch
-
Покажи enum где ты создаешь pPosX,pPosY, pPosZ
-
Float: pPosX,
Float: pPosY,
Float: pPosZ,
-
1) Прочтите это и посмотрите на ваш код
2) Зачем использовать format? Он там не требуется.
3) Эмм, вы собираетесь сохранять данные о позиции игрока в глобальную переменную... Если на сервер зайдёт несколько игроков, данные перепутаются. Вот, в общем
PHP код:
//Глобальные массивы
new Float: Pos_X_[MAX_PLAYERS],
Float: Pos_Y_[MAX_PLAYERS],
Float: Pos_Z_[MAX_PLAYERS];
//Колбэк
public OnPlayerSpawn(playerid)
{
if(!GetPVarInt(playerid, "Logged" ))return true;
SetPlayerPos(playerid, Pos_X_[playerid], Pos_Y_[playerid], Pos_Z_[playerid]);
SetPlayerFacingAngle(playerid, 280);
SetPlayerHealth(playerid, PlayerInfo[playerid][p/**/Hp]);
SetPlayerArmour(playerid, PlayerInfo[playerid][pArmour]);
//======TextDraw
sait[playerid] = TextDrawCreate(550.000000, 2.000000, "Development...");
TextDrawFont(sait[playerid], 3);
TextDrawColor(sait[playerid],0x33AAFFFF);
TextDrawLetterSize(sait[playerid], 0.3600, 1.400000);
TextDrawSetOutline(sait[playerid], 1);
TextDrawShowForPlayer(playerid, sait[playerid]);
//=====================
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun0], PlayerInfo[playerid][ammo0]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun1], PlayerInfo[playerid][ammo1]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun2], PlayerInfo[playerid][ammo2]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun3], PlayerInfo[playerid][ammo3]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun4], PlayerInfo[playerid][ammo4]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun5], PlayerInfo[playerid][ammo5]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun6], PlayerInfo[playerid][ammo6]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun7], PlayerInfo[playerid][ammo7]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun8], PlayerInfo[playerid][ammo8]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun9], PlayerInfo[playerid][ammo9]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun10], PlayerInfo[playerid][ammo10]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun11], PlayerInfo[playerid][ammo11]);
GivePlayerWeapon(playerid, PlayerInfo[playerid][gun12], PlayerInfo[playerid][ammo12]);
return 1;
}
И переделайте весь код под новые переменные