PDA

Просмотр полной версии : [Вопрос] Команда /spec



kala4iks
06.08.2015, 19:09
Добрый день помогите пожалуйста сделал чтоб после спека игрока тп-хало на то место где он заходил на /spec но почему-то игрока после спека тпхает на респу а не на то место где он начинал спекать. Его вроде тп-хает на то место но происходит оч быстро и резко тп на респу.


CMD:spec(playerid,params[]){
if(Player[playerid][pAdmin] < 3 || AdminDuty[playerid] == 0)return NoRights;
if(Spectate[playerid] == 999){
if(sscanf(params,"u",params[0]))return send(playerid,COLOR_COMAND,"[КОМАНДЫ] {FFFFFF}/spec [id игрока].");
if(!IsPlayerConnected(params[0]))return Notonline;
if(Player[params[0]][pAdmin] > Player[playerid][pAdmin])return send(playerid,COLOR_RED,"[ОШИБКА] {FFFFFF}Ты не можешь наблюдать за администратором старше тебя.");
TogglePlayerSpectating(playerid,1);
SetCameraBehindPlayer(params[0]);
Spectate[playerid] = params[0];
SetPlayerInterior(playerid,GetPlayerInterior(params[0]));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(params[0]));
PlayerSpectatePlayer(playerid,params[0]);
new Float:health,giveplayer[124];
GetPlayerHealth(Spectate[playerid],health);
TextDrawShowForPlayer(playerid, FULLRECON[playerid]);
GetPlayerName(Spectate[playerid],giveplayer,sizeof(giveplayer));
GameTextForPlayer(playerid,"~w~Pe›њЇ ®a—ћ«љe®њ¬~g~‹kћ«¤e®",5000,6);
SetCameraBehindPlayer(params[0]);
UpdatePlayerPosition(playerid);
return 1;
}
if(Spectate[playerid] != 999)
{
Spectate[playerid] = 999;
TogglePlayerControllable(playerid,1);
TogglePlayerSpectating(playerid,0);
SetCameraBehindPlayer(playerid);
GameTextForPlayer(playerid,"~w~Pe›њЇ ®a—ћ«љe®њ¬~r~‹Ёkћ«¤e®", 5000, 6);
new Float:x,Float:y,Float:z;
x = Player[playerid][pDpos_x];
y = Player[playerid][pDpos_y];
z = Player[playerid][pDpos_z];
ServerSetPlayerPos(playerid,x,y,z+0.5);
SetPlayerInterior(playerid,Player[playerid][pDint]);
SetPlayerVirtualWorld(playerid, Player[playerid][pDworld]);
TextDrawHideForPlayer(playerid,FULLRECON[playerid]);}
return 1;}

$continue$
06.08.2015, 19:18
:help: - вам сюда (http://rutracker.org/forum/viewtopic.php?t=4342826)
Что за стиль кодиннга аля RLS?!
Может Вы дадите с нормальным текстом?!

kala4iks
07.08.2015, 12:33
:help: - вам сюда (http://rutracker.org/forum/viewtopic.php?t=4342826)
Что за стиль кодиннга аля RLS?!
Может Вы дадите с нормальным текстом?!

Я попросил нормально помочь причем тут стиль кодинга?

$continue$
07.08.2015, 13:42
Я попросил нормально помочь причем тут стиль кодинга?

При том что - говнокодинг.

kala4iks
07.08.2015, 13:47
При том что - говнокодинг.

Какая разница какой у кого код. Вместо критики помочь мог бы, а не критиковать. Тип у тебя такой офигенный код всегда.

$continue$
07.08.2015, 14:38
Какая разница какой у кого код. Вместо критики помочь мог бы, а не критиковать. Тип у тебя такой офигенный код всегда.

Вам обратно на г-и :blush2:

Daniel_Cortez
07.08.2015, 14:38
:help: - вам сюда (http://rutracker.org/forum/viewtopic.php?t=4342826)
Что за стиль кодиннга аля RLS?!
Может Вы дадите с нормальным текстом?!
Правила не запрещают постить говнокод в данном разделе. Но и вам тоже никто не запрещает игнорировать таких пользователей.

$continue$
07.08.2015, 14:40
Правила не запрещают постить говнокод в данном разделе. Но и вам тоже никто не запрещает игнорировать таких пользователей.

Я вроде про критиковал код и ссылку кинул. Как - то, не адекватно отреагировал. Впрочем, типичный пользователь г-и.
Автор: Вы может дадите, с нормальным текстом? Может покажите команду (/spoff - или как у Вас там администратор выходит из слежки)

kala4iks
07.08.2015, 15:52
Я вроде про критиковал код и ссылку кинул. Как - то, не адекватно отреагировал. Впрочем, типичный пользователь г-и.
Автор: Вы может дадите, с нормальным текстом? Может покажите команду (/spoff - или как у Вас там администратор выходит из слежки)

У меня из слежки выходить просто прописать /spec еще раз и выходит.

XakeP
07.08.2015, 16:18
UpdatePlayerPosition(playerid); - можно глянуть что у вас тут? Так как от RLS и прочего хлама меня Бог уберег

P.S. По поводу кода, полностью согласен, ни кто не запрещает, но если вы хотите, что бы вам помогли, то наверно все же лучше пару минут по нажимать кнопочку "Tab", по мне дак это обычное не уважение...

kala4iks
07.08.2015, 17:55
UpdatePlayerPosition(playerid); - можно глянуть что у вас тут? Так как от RLS и прочего хлама меня Бог уберег

P.S. По поводу кода, полностью согласен, ни кто не запрещает, но если вы хотите, что бы вам помогли, то наверно все же лучше пару минут по нажимать кнопочку "Tab", по мне дак это обычное не уважение...

Вот все координаты сохраняются но после слежки все равно сначала вроде на то место где спекать начал а потом резко на респу.

stock UpdatePlayerPosition(playerid)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x,y,z);
Player[playerid][pDpos_x] = x;
Player[playerid][pDpos_y] = y;
Player[playerid][pDpos_z] = z;
Player[playerid][pDint] = GetPlayerInterior(playerid);
Player[playerid][pDworld] = GetPlayerVirtualWorld(playerid);
return 1;
}

Desulaid
08.08.2015, 00:30
Просто раскрыл и оттабулировал код. Немного переделал.


CMD:spec(playerid,params[])
{
if(Player[playerid][pAdmin] < 3 || AdminDuty[playerid] == 0) return NoRights;
if(Spectate[playerid] == 999)
{
if(sscanf(params,"u",params[0]))
return send(playerid,COLOR_COMAND,"[КОМАНДЫ] {FFFFFF}/spec [id игрока].");
if(!IsPlayerConnected(params[0]))
return Notonline;
if(Player[params[0]][pAdmin] > Player[playerid][pAdmin])
return send(playerid,COLOR_RED,"[ОШИБКА] {FFFFFF}Ты не можешь наблюдать за администратором старше тебя.");

TogglePlayerSpectating(playerid,1);
SetCameraBehindPlayer(params[0]);
Spectate[playerid] = params[0];
SetPlayerInterior(playerid,GetPlayerInterior(params[0]));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(params[0]));
PlayerSpectatePlayer(playerid,params[0]);

new Float:health,
// НИЧОСИ
// мы же не индийское имя записываем
// MAX_PLAYER_NAME
giveplayer[124];

GetPlayerHealth(Spectate[playerid],health);
TextDrawShowForPlayer(playerid, FULLRECON[playerid]);
GetPlayerName(Spectate[playerid],giveplayer,sizeof(giveplayer));
GameTextForPlayer(playerid,"~w~Pe›њЇ ®a—ћ«љe®њ¬~g~‹kћ«¤e®",5000,6);
SetCameraBehindPlayer(params[0]);
UpdatePlayerPosition(playerid);
return 1;
}
if(Spectate[playerid] != 999)
{
Spectate[playerid] = 999;
TogglePlayerControllable(playerid,1);
TogglePlayerSpectating(playerid,0);
SetCameraBehindPlayer(playerid);
GameTextForPlayer(playerid,"~w~Pe›њЇ ®a—ћ«љe®њ¬~r~‹Ёkћ«¤e®", 5000, 6);
/* Как подсказывает мой хрустальный шар,
то вы так возвращаете игрока на начало "спека" ?

new Float:x,Float:y,Float:z;
x = Player[playerid][pDpos_x];
y = Player[playerid][pDpos_y];
z = Player[playerid][pDpos_z];
ServerSetPlayerPos(playerid,x,y,z+0.5);
*/
// Насоздавали массивов
// Теперь мучаетесь с ними
// #define не слоабаков =(

new Float:x,Float:y,Float:z;
ServerSetPlayerPos( playerid,Player[playerid][pDpos_x],
Player[playerid][pDpos_y],
Player[playerid][pDpos_z]+0.5);
// ...

SetPlayerInterior(playerid,Player[playerid][pDint]);
SetPlayerVirtualWorld(playerid, Player[playerid][pDworld]);
TextDrawHideForPlayer(playerid,FULLRECON[playerid]);
}
return 1;
}

И что за ServerSetPlayerPos? Надеюсь, что не

// КЭК
#define ServerSetPlayerPos(%0,%1,%2,%3) \
(SetPlayerPos(%0,%1,%2,%3))
:rofl::dash2::rofl:

Daniel_Cortez
08.08.2015, 09:37
Похоже, никто так и не заметил, что команда сфейлится при попытке спекта за 999-м игроком.

$continue$
08.08.2015, 13:50
Похоже, никто так и не заметил, что команда сфейлится при попытке спекта за 999-м игроком.

Заметил, но желание приписывать команду нет.

kala4iks
08.08.2015, 13:52
Просто раскрыл и оттабулировал код. Немного переделал.


CMD:spec(playerid,params[])
{
if(Player[playerid][pAdmin] < 3 || AdminDuty[playerid] == 0) return NoRights;
if(Spectate[playerid] == 999)
{
if(sscanf(params,"u",params[0]))
return send(playerid,COLOR_COMAND,"[КОМАНДЫ] {FFFFFF}/spec [id игрока].");
if(!IsPlayerConnected(params[0]))
return Notonline;
if(Player[params[0]][pAdmin] > Player[playerid][pAdmin])
return send(playerid,COLOR_RED,"[ОШИБКА] {FFFFFF}Ты не можешь наблюдать за администратором старше тебя.");

TogglePlayerSpectating(playerid,1);
SetCameraBehindPlayer(params[0]);
Spectate[playerid] = params[0];
SetPlayerInterior(playerid,GetPlayerInterior(params[0]));
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(params[0]));
PlayerSpectatePlayer(playerid,params[0]);

new Float:health,
// НИЧОСИ
// мы же не индийское имя записываем
// MAX_PLAYER_NAME
giveplayer[124];

GetPlayerHealth(Spectate[playerid],health);
TextDrawShowForPlayer(playerid, FULLRECON[playerid]);
GetPlayerName(Spectate[playerid],giveplayer,sizeof(giveplayer));
GameTextForPlayer(playerid,"~w~Pe›њЇ ®a—ћ«љe®њ¬~g~‹kћ«¤e®",5000,6);
SetCameraBehindPlayer(params[0]);
UpdatePlayerPosition(playerid);
return 1;
}
if(Spectate[playerid] != 999)
{
Spectate[playerid] = 999;
TogglePlayerControllable(playerid,1);
TogglePlayerSpectating(playerid,0);
SetCameraBehindPlayer(playerid);
GameTextForPlayer(playerid,"~w~Pe›њЇ ®a—ћ«љe®њ¬~r~‹Ёkћ«¤e®", 5000, 6);
/* Как подсказывает мой хрустальный шар,
то вы так возвращаете игрока на начало "спека" ?

new Float:x,Float:y,Float:z;
x = Player[playerid][pDpos_x];
y = Player[playerid][pDpos_y];
z = Player[playerid][pDpos_z];
ServerSetPlayerPos(playerid,x,y,z+0.5);
*/
// Насоздавали массивов
// Теперь мучаетесь с ними
// #define не слоабаков =(

new Float:x,Float:y,Float:z;
ServerSetPlayerPos( playerid,Player[playerid][pDpos_x],
Player[playerid][pDpos_y],
Player[playerid][pDpos_z]+0.5);
// ...

SetPlayerInterior(playerid,Player[playerid][pDint]);
SetPlayerVirtualWorld(playerid, Player[playerid][pDworld]);
TextDrawHideForPlayer(playerid,FULLRECON[playerid]);
}
return 1;
}

И что за ServerSetPlayerPos? Надеюсь, что не

// КЭК
#define ServerSetPlayerPos(%0,%1,%2,%3) \
(SetPlayerPos(%0,%1,%2,%3))
:rofl::dash2::rofl:

НЕ помогло все равно.

А вот и ServerSetPlayerPos


stock ServerSetPlayerPos(playerid, Float:x, Float:y, Float:z)
{
TeleportTime[playerid] = 10;
SetPlayerPos(playerid, x, y, z);
ReadPlayerPosition[playerid][ReadX] = x;
ReadPlayerPosition[playerid][ReadY] = y;
ReadPlayerPosition[playerid][ReadZ] = z;
return 1;
}

$continue$
08.08.2015, 14:21
НЕ помогло все равно.

А вот и ServerSetPlayerPos


stock ServerSetPlayerPos(playerid, Float:x, Float:y, Float:z)
{
TeleportTime[playerid] = 10;
SetPlayerPos(playerid, x, y, z);
ReadPlayerPosition[playerid][ReadX] = x;
ReadPlayerPosition[playerid][ReadY] = y;
ReadPlayerPosition[playerid][ReadZ] = z;
return 1;
}

Тут легче похоже команду переписать чем копаться в куче хлама.
Например массив надо использовать с INVALID_PLAYER_ID