[Ajuda] Spawns Bugado.
#1

- Entгo pessoal estou com um problema, que quando o player escolhe sua facзгo para jogar, ele simplesmente nasce em um lugar ! Mas estб definido para nascer na favela de sua facзгo ! Quando й preso acontece o mesmo, ele pe setado somente na quela posiзгo ! Em qualquer lugar que vai ser setado a pos, ele nasce no mesmo lugar. Passei um tempo tentando arrumar isso, fique praticamente umas 2 horas, mas nгo consegui resolver, entгo resolvi vim no forum-samp, para tentar me ajudarem.

Aqui estгo as duas prints ! Somente nesse local que fica..

http://imgur.com/a/wicIP

Para setar a posiзгo de sua favela, estou usando SetPlayerTeam.
Bom, aqui seria posiзгo para spawnar qual a favela o jogador iria escolher, o servidor ao total tem 17, contando com as organizaзвoes.
Bom aqui teria uma parte do codigo das posiзхes.

Код:
new Faccoes[MAX_FACCOES][t_info] =
{
	{"Facзгo", "Sigla", 0, 0, {0.0, 0.0, 0.0}, COR_BRANCO, 0},
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//CMD

	{"Parque Uniao", "PU", 3, 1, {-1459.7767,2843.1702,103.7271},  COR_CMD, 1},
	{"Vila Kennedy", "VK", 3, 1, {-947.3892,1777.4912,60.9229},    COR_CMD, 1},
	{"Barro Vermelho", "BV", 3, 1, {-53.5136,1315.5812,11.8230},   COR_CMD, 1},
	{"Salgueiro", "SAL", 3, 1, {2045.3462,-1732.7958,13.5469},     COR_CMD, 1},
Bom ai tudo certo...

OnPlayerSpawn estб sendo usado a
Код:
SetPlayerTeam(playerid, Player[playerid][pFaccao]);
E tambйm OnPlayerSpawn
Код:
new t = Player[playerid][pFaccao];
	if(t > 0)
    {
	    TogglePlayerControllable(playerid, 1);
		SetPlayerPos(playerid,Faccoes[t][Spawn][0], Faccoes[t][Spawn][1],Faccoes[t][Spawn][2]);
		SetPlayerInterior(playerid, 0);
		SetPlayerColor(playerid, Faccoes[t][tCor]);
	}
Na
Код:
public OnPlayerStreamIn(playerid, forplayerid)
temos o codigo abaixo, vou passar a primeira linha.

Код:
if(Player[playerid][pFaccao] == 1|| Player[playerid][pFaccao] == 2 || Player[playerid][pFaccao] == 3 || Player[playerid][pFaccao] == 4)
  	{
		SetPlayerTeam(playerid, TIME_CMD);
	}
Temos a stock tambйm que й o seguinte cуdigo.
Код:
static stock ResetPlayerTeam(playerid)
{
    SetPlayerTeam(playerid, 80+(teams++));
    if(teams >= 65000) teams = 0;
}
Reply
#2

Nгo tem nada pra setar dps disso? no onplayerspawn


tenta ai, fiquei meio confuso.

if(t >= 1)
Reply
#3

Quote:
Originally Posted by viniciuship
Посмотреть сообщение
Nгo tem nada pra setar dps disso? no onplayerspawn


tenta ai, fiquei meio confuso.

if(t >= 1)
A setagem para o player spawnar em sua favela seria esssa.
PHP код:
new Player[playerid][pFaccao];
    if(
0)
      {
        
TogglePlayerControllable(playerid1);
        
SetPlayerPos(playerid,Faccoes[t][Spawn][0], Faccoes[t][Spawn][1],Faccoes[t][Spawn][2]);
        
SetPlayerInterior(playerid0);
        
SetPlayerColor(playeridFaccoes[t][tCor]);
    } 
Reply
#4

Tem que ver se o valor de Player[playerid][pFaccao] se encaixa em alguma cйlula da array Faccoes
Reply
#5

Nгo estou vendo nenhum problema nos cуdigos, mas realmente sу estб spawnando no lugar que mandei a print =/
Reply
#6

Da um /save no lugar de spawn e procura a coordenada no seu script se nгo achar procurar os primeiros numeros.

Verifica se a facзгo dele й maior de 0?
Preferia coloca maior ou igual a 1

PHP код:
    if( Player[playerid][pFaccao] == n° da facзгo 
      { 
       
// seta ele para isso, seria assim?
        
TogglePlayerControllable(playerid1); 
        
SetPlayerPos(playerid,Faccoes[t][Spawn][0], Faccoes[t][Spawn][1],Faccoes[t][Spawn][2]); 
        
SetPlayerInterior(playerid0); 
        
SetPlayerColor(playeridFaccoes[t][tCor]); 
    } 
Reply
#7

Quote:
Originally Posted by viniciuship
Посмотреть сообщение
Da um /save no lugar de spawn e procura a coordenada no seu script se nгo achar procurar os primeiros numeros.

Verifica se a facзгo dele й maior de 0?
Preferia coloca maior ou igual a 1

PHP код:
    if( Player[playerid][pFaccao] == n° da facзгo 
      { 
       
// seta ele para isso, seria assim?
        
TogglePlayerControllable(playerid1); 
        
SetPlayerPos(playerid,Faccoes[t][Spawn][0], Faccoes[t][Spawn][1],Faccoes[t][Spawn][2]); 
        
SetPlayerInterior(playerid0); 
        
SetPlayerColor(playeridFaccoes[t][tCor]); 
    } 
Ai ocorre a setagem para o ( Spawn ) , ele logou, spawno na favela que ele escolheu na primeira vez que logou, tambйm temos o ''/mudarmorro'', vocк pode escolher novamente sua facзгo e favela.
Reply
#8

como assim esse lugar que nasce й o spawn? adiciona um else ali caso ele nгo for ai da spawn no lugar e depois apaga o spawn normal
Reply
#9

Quote:
Originally Posted by viniciuship
Посмотреть сообщение
como assim esse lugar que nasce й o spawn? adiciona um else ali caso ele nгo for ai da spawn no lugar e depois apaga o spawn normal
Bom exemplo , o '' Faccoes '' tem todos os spawns ( setplayerpos ) marcados como citei acima..
Aqui um pouco do codigo.
Код:
enum t_info
{
	tNome[64],
	Sigla[6],
	Regiao,
	Estado,
	Float:Spawn[3],
	tCor,
	tSkin
}

//Coord Nascer Favela

new Faccoes[MAX_FACCOES][t_info] =
{
	{"Facзгo", "Sigla", 0, 0, {0.0, 0.0, 0.0}, COR_BRANCO, 0},
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
//Comando Vermelho

	{"Parque Uniao", "PU", 3, 1, {-1459.7767,2843.1702,103.7271},  COR_CMD, 1},
	{"Vila Kennedy", "VK", 3, 1, {-947.3892,1777.4912,60.9229},    COR_CMD, 1},
	{"Barro Vermelho", "BV", 3, 1, {-53.5136,1315.5812,11.8230},   COR_CMD, 1},
	{"Salgueiro", "SAL", 3, 1, {2045.3462,-1732.7958,13.5469},     COR_CMD, 1},
mais para abaixo tem as diversas favelas, mas para isso nгo estб spawnando cada facзгo em sua devida favela ( O player que estб em uma favela, nгo й spawnado em sua favela, e sim na print que postei acima).

No OnPlayerSpawn й usado isto.
Код:
public OnPlayerSpawn(playerid)
{
    SetPlayerTeam(playerid, Player[playerid][pFaccao]);
Em OnPlayerSpawn ainda
Код:
	new t = Player[playerid][pFaccao];
	if(t > 0)
    {
	    TogglePlayerControllable(playerid, 1);
		SetPlayerPos(playerid,Faccoes[t][Spawn][0], Faccoes[t][Spawn][1],Faccoes[t][Spawn][2]);
		SetPlayerInterior(playerid, 0);
		SetPlayerColor(playerid, Faccoes[t][tCor]);
	}

 	if(Player[playerid][pPresoADM] == 1)
	{
		SetPlayerPos(playerid, 322.197998,302.497985,999.148437);
		SetPlayerInterior(playerid, 5);
		ResetPlayerWeapons(playerid);
		SCM(playerid, COR_NEGATIVO, "Vocк estб preso. Digite /presos para saber o tempo restante.");
 		GameTextForPlayer(playerid, "~r~Voce Esta Preso!", 2500, 3);
        Player[playerid][InHospital] = false;
    	SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CUFFED);
    	SetPlayerTeam(playerid, 1);
		return 1;
	}

	if(Player[playerid][pPresoLS] == 1)
	{
		new randmaca = random(sizeof(CelaAposPreso));
 		SetPlayerPos(playerid, CelaAposPreso[randmaca][0], CelaAposPreso[randmaca][1], CelaAposPreso[randmaca][2]);
 		SetPlayerFacingAngle(playerid, CelaAposPreso[randmaca][3]);
 		ResetPlayerWeapons(playerid);
		SCM(playerid, COR_ERRO, "Vocк estб preso. Digite /presos para saber o tempo restante.");
		SetPlayerHealth(playerid, 100);
        Player[playerid][InHospital] = false;
		return 1;
	}

	if(Player[playerid][pPresoSF] == 1)
	{
		new randmaca = random(sizeof(CelaAposPreso));
 		SetPlayerPos(playerid, CelaAposPreso[randmaca][0], CelaAposPreso[randmaca][1], CelaAposPreso[randmaca][2]);
 		SetPlayerFacingAngle(playerid, CelaAposPreso[randmaca][3]);
 		ResetPlayerWeapons(playerid);
		SCM(playerid, COR_ERRO, "Vocк estб preso. Digite /presos para saber o tempo restante.");
		SetPlayerHealth(playerid, 100);
        Player[playerid][InHospital] = false;
		return 1;
	}

	if(Player[playerid][pPresoLV] == 1)
	{
		new randmaca = random(sizeof(CelaAposPreso));
 		SetPlayerPos(playerid, CelaAposPreso[randmaca][0], CelaAposPreso[randmaca][1], CelaAposPreso[randmaca][2]);
 		SetPlayerFacingAngle(playerid, CelaAposPreso[randmaca][3]);
 		ResetPlayerWeapons(playerid);
		SCM(playerid, COR_ERRO, "Vocк estб preso. Digite /presos para saber o tempo restante.");
		SetPlayerHealth(playerid, 100);
        Player[playerid][InHospital] = false;
		return 1;
	}

	if(Player[playerid][InHospital] == true)
	{
		new seg;
		seg = 15;
		SegundosContagem[playerid] = seg;
		new rand = random(sizeof(RadomCama));
		SetPlayerPos(playerid, RadomCama[rand][0], RadomCama[rand][1], RadomCama[rand][2]);
        SetPlayerInterior(playerid, 1);
        freeze[playerid] = 1;
        TogglePlayerControllable(playerid, 0);
        ClearAnimations(playerid);
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        SetPlayerCameraPos(playerid, 1711.5804,1193.0474,35.7302);
		SetPlayerCameraLookAt(playerid, 1711.5837,1191.0347,35.7302);
        format(string,sizeof(string),"~w~Recebera Alta em: ~r~%d",SegundosContagem[playerid]);
		GameTextForPlayer(playerid, string, 2500, 3);
		SegundosContagem[playerid] --;
		SetTimerEx("Contando",1000,0,"d",playerid);
		SCM(playerid, COR_ERRO, "[EMERGКNCIA] Os moradores conseguiram levar vocк hб tempo! Aguarde receber alta...");
		GivePlayerMoney(playerid,-150);
		Tirarbag(playerid);
		return 1;
	}
	
	if(Player[playerid][pIniciante] == 1)
	{
		new String[256];
		format(String, sizeof(String), "{FFFFFF}Digite Seu Email Para Terminar O Registro\nLembre-se de Digitar Um Email Valido!\nCaso Esqueзa Sua Senha Poderб Recupera-la\n\n");
		ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Configuraзгo de Email", String, "Configurar", "");
		return true;
	}

	if(Player[playerid][pCidade] == 1)
	{
		SetPlayerPos(playerid, 1243.2974,-1692.5538,16.1978);
		SetPlayerFacingAngle(playerid, 186.1785);
	}

	if(Player[playerid][pCidade] == 2)
	{
		SetPlayerPos(playerid, -1986.0248,137.1134,27.6875);
		SetPlayerFacingAngle(playerid, 83.6810);
	}

	if(Player[playerid][pCidade] == 3)
	{
		SetPlayerPos(playerid, 1433.8618,2613.7546,11.3926);
		SetPlayerFacingAngle(playerid, 182.5781);
	}

 	return 1;
}
Reply
#10

Eu recomendaria vocк criar uma public de verificaзгo e chamasse ela no onplayerconnect tipo SetarPlayer e verificar a org 1 por 1

ou


Adiciona t_info no pFaccao e coloca a verificaзгo uma por uma.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)