Просмотр полной версии : [Вопрос] 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 (нулевые координаты)
Заранее спасибо!
Just_Fenix
16.05.2014, 05:47
Покажите код, когда респавнится игрок по вашей системе.
Не включаешь ли-ты режим спектатора?
TogglePlayerSpectating(playerid, true)
Или что-то типо того...
Во всяком случае, попробуй добавить
TogglePlayerSpectating(playerid, false) перед SetPlayerPos (это если у тебя во время реги спавн выбирают).
Убедись в правильности объявления переменных
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;
}
SetPlayerPos(playerid, Float: pPosX,Float: pPosY,Float: pPosZ);
замени на
SetPlayerPos(playerid, pPosX,pPosY, pPosZ);
И у меня еще такое предположение есть:
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) Прочтите это (http://pro-pawn.ru/showthread.php?8668-%D0%9F%D1%80%D0%B8-%D0%BD%D0%B0%D0%B2%D0%B8%D0%B4%D0%B5%D0%BD%D0%B8%D0%B9-%D0%BD%D0%B0-TextDraw-%D0%BD%D0%B5-%D0%BF%D1%80%D0%BE%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%B8%D1%82-%D0%B2%D1%8B%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9-%D1%86%D0%B2%D0%B5%D1%82%D0%B0&p=37625&viewfull=1#post37625) и посмотрите на ваш код
2) Зачем использовать format? Он там не требуется.
3) Эмм, вы собираетесь сохранять данные о позиции игрока в глобальную переменную... Если на сервер зайдёт несколько игроков, данные перепутаются. Вот, в общем
//Глобальные массивы
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;
}
И переделайте весь код под новые переменные
Все решилось вот этим:
SetPlayerPos(playerid, PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ]);
У меня координаты игрока в enum со всеми данными аккаунта :)
По поводу format
Он используется в textdraw, там раньше был показатель, который менялся при определенных условиях.
Сейчас там просто надпись, не знаю, что будет потом.
Либо сделаю ссылку на сайт, либо что-нибудь под атмосферу. Еще не решил.
Спасибо за помощь!
Закрыто.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot