Question

Здравствуйте, прошу мне помочь. Потому-что я искал-искал, и никак не нашёл. Я хочу сделать как на радмире, намальске.

1. Ввёл команду /afly.

2. И заспавнился там куда ты прилетел.

3. Всё, умоляю. Всё что попросите, предоставлю. 

Заметка от Cawfee , создано

Изменил название темы. Пожалуйста, в будущем не пишите в заголовках префиксы вроде "[PAWNO]". Они ни к чему.

Share this post


Link to post

23 answers to this question

  • 0

@Nekit_Krut18 покопался в реализации этой системы, попробуйте сделать следующее: 

заменить строчку

GetPlayerCameraPos(playerid, plocx, plocy, plocz);

на

GetPlayerObjectPos(playerid, noclipdata[playerid][flyobject], plocx, plocy, plocz);

 

Share this post


Link to post
  • 0

При выходе из /afly узнавайте координаты камеры с помощью ф-ии https://wiki.sa-mp.com/wiki/GetPlayerCameraPos, после чего отключайте режим спектейта https://wiki.sa-mp.com/wiki/TogglePlayerSpectating и телепортируйте с помощью https://wiki.sa-mp.com/wiki/SetPlayerPos на эти координаты

 Пример: 

// при выключении режима /afly
new Float:x, Float:y, Float:z; 
GetPlayerCameraPos(playerid, x, y, z); 
TogglePlayerSpectating(playerid, 0); 
SetPlayerPos(playerid, x, y, z); 

 

Share this post


Link to post
  • 0

 @DEST  тоесть вот это всё вставить в stock cancelflymode?

Share this post


Link to post
  • 0

@Nekit_Krut18 я  ж не знаю из чего он у вас состоит. Скиньте его сюда

Share this post


Link to post
  • 0

@DEST

stock CancelFlyMode(playerid)
{
	DeletePVar(playerid, "FlyMode");
	CancelEdit(playerid);
	TogglePlayerSpectating(playerid, 0);

	DestroyPlayerObject(playerid, noclipdata[playerid][flyobject]);
	noclipdata[playerid][cameramode] = CAMERA_MODE_NONE;
	return 1;
}

 

Edited by odosenok
Причина: удалил код цитаты.

Share this post


Link to post
  • 0
1 минуту назад, Nekit_Krut18 сказал:

TogglePlayerSpectating(playerid, 0);

вместо этой строчки вставьте тот код, который я скидывал. 

Share this post


Link to post
  • 0

@DEST  Всё также(

 

@DEST Как будто что-то не то Дест), А что такое spawn_ac?

Заметка от Cawfee , создано

Объединил сообщения.

Share this post


Link to post
  • 0

@Nekit_Krut18 значит, у вас скорее всего античит на тп. посмотрите как в моде происходит телепортация и сделайте аналогично 

Share this post


Link to post
  • 0

@DEST  ничего не нашёл  в /goto, /gethere и тд 

 

Edited by Nekit_Krut18

Share this post


Link to post
  • 0

@Nekit_Krut18 Т.е. у вас в моде нигде не происходит телепортация вовсе? 

Share this post


Link to post
  • 0

@DEST Незнаю(

@DEST Ещё кстати анти-чит всё время жалуется когда я беру оружие в любых орг, исп. /afly, почему незнаю.

Share this post


Link to post
  • 0

@Nekit_Krut18 Ищите все, что связано с SetPlayerPos и смотрите какая функция вызывается вместо нее. SetPlayerPosAC или что-то подобное. 

Share this post


Link to post
  • 0

@DEST PG_SetPayerPos

Share this post


Link to post
  • 0

@Nekit_Krut18 значит в коде, который я вам скинул, вместо SetPlayerPos вставьте PG_SetPlayerPos

Share this post


Link to post
  • 0

@DEST Ничего не изменилось

 

UP

 

Заметка от Cawfee , создано

Объединил сообщения.

Share this post


Link to post
  • 0

@Nekit_Krut18, ничего не изменилось в том плане, что появляешься не там, где вышел из /afly?

Share this post


Link to post
  • 0

@Talex Именно

Share this post


Link to post
  • 0

@Nekit_Krut18 эта функция вообще срабатывает? Вставьте в ее начало print("#debug1"); и посмотрите в логи, будет ли напечатано это сообщение. 

Share this post


Link to post
  • 0

@DEST Да проверил!

Цитата

[23:40:33] Nekita_Akkerman dialog:2
[23:40:45] Nekita_Akkerman cmd:afly
[23:40:49] Nekita_Akkerman cmd:alogin
[23:40:51] Nekita_Akkerman dialog:3200
[23:40:52] Nekita_Akkerman cmd:afly
[23:41:03] Nekita_Akkerman cmd:afly\
[23:41:07] FLY OK JOB!
[23:41:07] Nekita_Akkerman cmd:afly

 

 

Share this post


Link to post
  • 0

@Nekit_Krut18 скиньте код, который у вас в итоге получился. 

Share this post


Link to post
  • 0

@DEST 

Цитата

stock CancelFlyMode(playerid)
{
    //new Float:x, Float:y, Float:z;
    printf("FLY OK JOB!");
    new Float:plocx,Float:plocy,Float:plocz;
	GetPlayerCameraPos(playerid, plocx, plocy, plocz);
	DeletePVar(playerid, "FlyMode");
	CancelEdit(playerid);
	TogglePlayerSpectating(playerid, 0);
	SetPlayerPos(playerid, plocx+2, plocy+2, plocz);
 	SetPVarInt(playerid,"spawn_ac",0);

	DestroyPlayerObject(playerid, noclipdata[playerid][flyobject]);
	noclipdata[playerid][cameramode] = CAMERA_MODE_NONE;
	return 1;
}

 

 

Share this post


Link to post
  • 0

@DEST Кст Дест я ещё заметил такой код в OnPlayerSpawn, 

Цитата

if(PI[playerid][pMember]) SetPlayerSkin(playerid, PI[playerid][pMemberSkin]);
	else SetPlayerSkin(playerid, PI[playerid][pModel]);
	SetPlayerColorEx(playerid, TeamColors[GetTeamID(playerid)]);
	if(PI[playerid][Spectating][0] != INVALID_PLAYER_ID)
	{
	    new Float:X = GetPVarFloat(playerid, "SpecX"), Float:Y = GetPVarFloat(playerid, "SpecY"), Float:Z = GetPVarFloat(playerid, "SpecZ"),
		Float:FA = GetPVarFloat(playerid, "SpecFA"), inter = GetPVarInt(playerid, "SpecInt"), world = GetPVarInt(playerid, "SpecWorld");
	    SetPlayerFacingAngle(playerid, GetPVarFloat(playerid, "SpecA"));
		SetPlayerVirtualWorld(playerid, GetPVarInt(playerid, "SpecVw"));
		SetPlayerInterior(playerid, GetPVarInt(playerid, "SpecInt"));
		DeletePVar(playerid, "SpecInt");
		DeletePVar(playerid, "SpecVw");
		DeletePVar(playerid, "SpecX");
		DeletePVar(playerid, "SpecY");
		DeletePVar(playerid, "SpecZ");
		DeletePVar(playerid, "SpecA");
		DeletePVar(playerid, "SpecFA");
		DeletePVar(playerid, "SpecWorld");
	 	DeletePVar(playerid, "FlyMode");
		DeletePVar(playerid, "SpecBool");
        SetPlayerPos(playerid, X, Y, Z);
		PI[playerid][Spectating][0] = INVALID_PLAYER_ID;
		PI[playerid][Spectating][1] = INVALID_PLAYER_ID;
		SetPlayerColorEx(playerid, TeamColors[GetTeamID(playerid)]);
		SetPlayerScore(playerid, PI[playerid][pLevel]);
		if(PI[playerid][pWanted]) SetPlayerWantedLevel(playerid, PI[playerid][pWanted]);
		if(PI[playerid][pMember]) SetPlayerSkin(playerid, PI[playerid][pMemberSkin]);
		else if(Oldskin2[playerid] > 0) SetPlayerSkin(playerid, Oldskin2[playerid]);
		else SetPlayerSkin(playerid, PI[playerid][pModel]);
		return 1;
	}

 

 

Edited by Nekit_Krut18

Share this post


Link to post
  • 0

UP

 

Share this post


Link to post
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content