29.12.2011, 09:37
Вылетает с игры при выборе Job Spawn, как исправить ? (проблема появилась только в новом sa-mp 0.3d).
Код HTML:
public OnPlayerRequestClass(playerid, classid)//Выполняется при коннекте а также при выборе игроком класса (скина).
//Функция выполняется каждый раз, когда игрок нажимает "влево" и "вправо", чтобы выбрать другой класс.
//или запускается ф-ией ForceClassSelection(playerid); SetPlayerHealthEx(playerid,0);
//или может заменена TogglePlayerSpectating
//playerid ID игрока, запросивщего класс.
//classid ID запрошенного игроком класса.
{ //после рестарта запускается раньше чем ф-ия OnPlayerConnect(playerid)
if(IsPlayerNPC(playerid)) return 1;
PlayerInfo[playerid][pHealth] = floatadd(50.0, PlayerInfo[playerid][pSHealth]);
SetPlayerHealthEx(playerid, PlayerInfo[playerid][pHealth]);//Кол-во жизней у игрока
//--------------------------------------------------------------------------
gPlayerSpawned[playerid] = false;
if(gPlayerLogged[playerid] && GetPlayerState(playerid) != PLAYER_STATE_SPECTATING )//если игрок залогинелся
{ //если игрок подключился и уже нажал LOGIN и не находится в режиме спектатора, чтобы появились кнопки выбора спауна
//ИНФОРМИРОВАНИЕ
//new string[MAX_STRING];
//format(string, sizeof(string), "OnPlayerRequestClass(playerid:%d, classid:%d)", playerid, classid);
//ABroadCast(COLOR_MAROON, string, 10);
//SendClientMessageToAll(COLOR_YELLOW, string);
switch(classid)
{
case 0:
{
SetPlayerInterior(playerid,0);
SetPlayerCameraPos(playerid,1630.6136,-2286.0298,110.0);
SetPlayerCameraLookAt(playerid,1887.6034,-1682.1442,47.6167);
if(gPlayerSpawnSelection[playerid] == 0)
{ //если игрок только что зашёл в игру
GameTextForPlayer(playerid,"~y~> ~h~Place Output ~y~<",5000,4);//3500
SendClientMessage(playerid, COLOR_GREY, " Вы появитесь в точке выхода из игры!");
gSpawnChange[playerid] = 0;
gSpawn[playerid] = 0;
SetPlayerSpawn(playerid);//запускаем ф-ию установки спауна игрока
}
else if(gPlayerSpawnSelection[playerid] == 1)
{
GameTextForPlayer(playerid,"~y~> ~g~Job Spawn ~y~<",5000,4);
SendClientMessage(playerid, COLOR_GREY, " Вы теперь будете появляться по основному месту службы если она у вас есть!");
gSpawnChange[playerid] = 1;
gSpawn[playerid] = 1;
SetPlayerSpawn(playerid);//запускаем ф-ию установки спауна игрока
}
return 1;
}
case 1:
{
SetPlayerInterior(playerid,0);
SetPlayerCameraPos(playerid,-1300.8754,68.0546,129.4823);
SetPlayerCameraLookAt(playerid,-1817.9412,769.3878,132.6589);
if(gPlayerSpawnSelection[playerid] != 1)
{
GameTextForPlayer(playerid,"~y~> ~g~Job Spawn ~y~<",5000,4);
SendClientMessage(playerid, COLOR_GREY, " Вы теперь будете появляться по месту службы если она у вас есть!");
gSpawnChange[playerid] = 1;
gSpawn[playerid] = 1;
}
else if(gPlayerSpawnSelection[playerid] == 1)
{
GameTextForPlayer(playerid,"~y~> ~p~Motel Spawn ~y~<",5000,4);
SendClientMessage(playerid, COLOR_GREY, " Вы теперь будете появляться в Мотеле!");
gSpawnChange[playerid] = 1;
gSpawn[playerid] = 0;
}
SetPlayerSpawn(playerid);//запускаем ф-ию установки спауна игрока
return 1;
}
case 2:
{
SetPlayerInterior(playerid,0);
SetPlayerCameraPos(playerid,1310.6155,1675.9182,110.7390);
SetPlayerCameraLookAt(playerid,2285.2944,1919.3756,68.2275);
if(gPlayerSpawnSelection[playerid] != 1)
{
GameTextForPlayer(playerid,"~y~> ~p~Home/Motel Spawn ~y~<",5000,4);
SendClientMessage(playerid, COLOR_GREY, " Вы будете теперь возраждаться в вашем Собственном / Арендованном Доме или в Мотеле!");
}
else if(gPlayerSpawnSelection[playerid] == 1)
{
GameTextForPlayer(playerid,"~y~> ~h~Home Spawn ~y~<",5000,4);
SendClientMessage(playerid, COLOR_GREY, " Вы будете теперь возраждаться в вашем Собственном / Арендованном Доме или в Мотеле!");
}
gSpawnChange[playerid] = 2;
gSpawn[playerid] = 0;
SetPlayerSpawn(playerid);//запускаем ф-ию установки спауна игрока
return 1;
}
}
}
else if(!gPlayerLogged[playerid] && GetPlayerState(playerid) != PLAYER_STATE_SPECTATING)//если ф-ия запустилась до момента логирования
{ //если игрок подключился и ещё не нажал LOGIN и не находится в режиме спектатора
//если игрок просто не спектатор, а эта ф-ии ранее ему не запускалась
TogglePlayerSpectating(playerid, 1);//Переключает игрока в режим зрителя
}
//return 1;
return 0;//все виснут после реста
}//end OnPlayerRequestClass(playerid, classid)
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//SpawnSTEP5
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
public OnPlayerRequestSpawn(playerid)//Выполняется, когда игрок нажимает "rshift", чтобы спавниться после выбора класса
{ //F4 //равносильна SpawnPlayer(playerid), которая переразмещает игрока в стартовой позиции, и запускает OnPlayerSpawn
if(IsPlayerNPC(playerid)) return 1;
if(gPlayerLogged[playerid])//PlayerInfo[playerid][pReg]//если игрок зарегистрирован
{ //если игрок зашёл в игру
PlayerInfo[playerid][pHealth] = floatadd(50.0, PlayerInfo[playerid][pSHealth]);
SetPlayerHealthEx(playerid, PlayerInfo[playerid][pHealth]);//Кол-во жизней у игрока
gPlayerSpawnSelection[playerid] = 1;//поднимаем флаг - выбор спауна произошёл
//TogglePlayerSpectating(playerid, 0);//откл. режим спектатора
//SpawnPlayer(playerid);
//ИНФОРМИРОВАНИЕ
//new string[MAX_STRING];
//format(string, sizeof(string), "OnPlayerRequestSpawn(playerid:%d)", playerid);
//ABroadCast(COLOR_MAROON, string, 10);
//SendClientMessageToAll(COLOR_YELLOW, string);
return 1;//- 1, игрок спавница.
}
return 0;//- 0, при нажатии на Shift ничего не происходит.
}


