public OnPlayerRequestClass
#1

Вылетает с игры при выборе 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 ничего не происходит.
}
Reply
#2

читай тут
Reply
#3

Мне SetSpawnInfo(playerid,0,0,0,0,0,0,0,0,0,0,0,0); не подойдёт.
Reply
#4

GameTextForPlayer попробуй убрать
Reply
#5

Quote:
Originally Posted by anonim15
Посмотреть сообщение
Мне SetSpawnInfo(playerid,0,0,0,0,0,0,0,0,0,0,0,0); не подойдёт.
тогда используй первый релиз версии SA-MP 0.3d
Reply
#6

Вот почему calcor не может сделать нормальный sa-mp, старые баги не убраны - только новые появились. Вот MTA это то, что надо.
Reply
#7

Quote:
Originally Posted by anonim15
Посмотреть сообщение
Вот почему calcor не может сделать нормальный sa-mp, старые баги не убраны - только новые появились. Вот MTA это то, что надо.
Зачем тогда ты юзаешь sa-mp? дуй в mta там то, что надо.
Reply
#8

Quote:
Originally Posted by [Saint]
Посмотреть сообщение
Зачем тогда ты юзаешь sa-mp? дуй в mta там то, что надо.
В сампе проще, там всё запутанно.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)