PDA

Просмотр полной версии : [Вопрос] Commands /gmx



BaBuIIIkaDrifteR
09.03.2015, 20:32
Суть проблемы в команде.
Ввожу команду /gmx - рестарт сервера, все работает.

Сервер перезагружается, открывается окно ввода пароля, ввожу пароль, и респамлюсь в середине карты под картой.


if(strcmp(string, "/gmx", true) == 0)
{
if(Player[playerid][pAdmin] < 4) return UnknownCommand(playerid,cmdtext);
{
for(new i; i < 15; i++) SCM(playerid, -1, " ");
foreach(Player, i)
{
new gmx_server[225];
format(gmx_server, sizeof(gmx_server), "Происходит рестарт сервера");
SPD(i, 228, DIALOG_STYLE_MSGBOX, " ", gmx_server, " ", "");
}
SavePlayer(playerid); //Сохроняем аккаунт
SaveSettings(); //Сохроняем Номер аккаунта
GameModeExit(); //Перезагружаем сервер
}
return true;
}

heralt
09.03.2015, 20:35
На Grove Street? Практически в середине?

BaBuIIIkaDrifteR
09.03.2015, 20:56
На Grove Street? Практически в середине?

Нет СЕРЕДИНА КАРТЫ там на РП серверах какаэто ферма!
http://s1.hostingkartinok.com/uploads/images/2015/03/feb6898e363a9d4feb385c61404c7b02.png (http://hostingkartinok.com/show-image.php?id=feb6898e363a9d4feb385c61404c7b02)

gangzone.ini
10.03.2015, 09:04
GameModeExit();
Знамени на:

SendRconCommand("gmx");

Mazzilla
11.03.2015, 14:40
Уменьшить размер gmx_server и все беды пропадут.

$continue$
11.03.2015, 14:48
Уменьшить размер gmx_server и все беды пропадут.

Да пусть даже не уменьшает, из тела цикла вынести, не?
И вот Вам онлайн подсчет строки: ТЫК (http://www.helpset.ru/%D0%BF%D0%BE%D0%B4%D1%81%D1%87%D1%91%D1%82-%D1%81%D1%82%D1%80%D0%BE%D0%BA-%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD/)

Wise
11.03.2015, 19:15
Уменьшить размер gmx_server и все беды пропадут.

Зачем вообще что-то уменьшать? В тексте нечего форматировать.

if(!strcmp(cmdtext, "/gmx"))
{
if(Player[playerid][pAdmin] < 4) return UnknownCommand(playerid, cmdtext);
for(new t; t < 100; t++) SCM(playerid, -1, "");
foreach(Player, i) SPD(i, 228, DIALOG_STYLE_MSGBOX, "Restart Of Server", "Происходит рестарт сервера", " ", " ");
SavePlayer(playerid); // Сохраняем аккаунты.
SaveSettings(); // Сохраняем номер аккаунтов.
SendRconCommand("gmx"); // Перезагрузка сервера.
return 1;
}

UPD: А появляешься на середине карты наверное из-за паблика "GameModeExit", т.к. там обычно закрывают соединение с MySQL.

BaBuIIIkaDrifteR
13.03.2015, 00:50
Причем тут размер строки ?! Я просто от дури такой написал так все подсчитано.
Заменить наSendRconCommand("gmx"); щас попробую!

- - - Добавлено - - -


Зачем вообще что-то уменьшать? В тексте нечего форматировать.

if(!strcmp(cmdtext, "/gmx"))
{
if(Player[playerid][pAdmin] < 4) return UnknownCommand(playerid, cmdtext);
for(new t; t < 100; t++) SCM(playerid, -1, "");
foreach(Player, i) SPD(i, 228, DIALOG_STYLE_MSGBOX, "Restart Of Server", "Происходит рестарт сервера", " ", " ");
SavePlayer(playerid); // Сохраняем аккаунты.
SaveSettings(); // Сохраняем номер аккаунтов.
SendRconCommand("gmx"); // Перезагрузка сервера.
return 1;
}

UPD: А появляешься на середине карты наверное из-за паблика "GameModeExit", т.к. там обычно закрывают соединение с MySQL.

У меня не MySQL

- - - Добавлено - - -

SendRconCommand("gmx");

Не помог!

$continue$
13.03.2015, 00:56
Убери переменную из цикла

BaBuIIIkaDrifteR
13.03.2015, 01:26
Убери переменную из цикла

А причем цикл? Цикл вызывает 15 сообщений разом он же не относиться не к чему

BaBuIIIkaDrifteR
13.03.2015, 18:02
Еще кода я после рестарта появляюсь посреди карты кагбдто ак слетел скин 0 и т.д + некоторые текстравы не пропадают

$continue$
13.03.2015, 20:48
Пробуй:


if(strcmp(string, "/gmx", true) == 0)
{
if(Player[playerid][pAdmin] < 4) return UnknownCommand(playerid,cmdtext);
static gmx_text_server[] = "Происходит рестарт сервера!";
for(new сlear_chat; сlear_chat < 15; сlear_chat++) SCM(playerid, -1, " ");
foreach(Player, i)
{
SavePlayer(i); //Сохроняем аккаунт, всем игрокам сервера
SPD(i, 228, DIALOG_STYLE_MSGBOX, " ", gmx_text_server, " ", "");
}
SaveSettings(); //Сохроняем Номер аккаунта
GameModeExit(); //Перезагружаем сервер
return 1;
}

BaBuIIIkaDrifteR
13.03.2015, 21:25
Где ты используешь static
gmx_text_server

$continue$
13.03.2015, 21:30
SPD(i, 228, DIALOG_STYLE_MSGBOX, " ", gmx_text_server, " ", "");

BaBuIIIkaDrifteR
13.03.2015, 21:42
Пробуй:


if(strcmp(string, "/gmx", true) == 0)
{
if(Player[playerid][pAdmin] < 4) return UnknownCommand(playerid,cmdtext);
static gmx_text_server[] = "Происходит рестарт сервера!";
for(new сlear_chat; сlear_chat < 15; сlear_chat++) SCM(playerid, -1, " ");
foreach(Player, i)
{
SavePlayer(i); //Сохроняем аккаунт, всем игрокам сервера
SPD(i, 228, DIALOG_STYLE_MSGBOX, " ", gmx_text_server, " ", "");
}
SaveSettings(); //Сохроняем Номер аккаунта
GameModeExit(); //Перезагружаем сервер
return 1;
}

Не работает.
Вот видео в чем проблема.
Но при этом все остальное работает.

http://www.youtube.com/watch?v=YEC08R32OX8

BaBuIIIkaDrifteR
14.03.2015, 05:03
Всем спасибо проблему вроде бы решил сам!
Зае*ался лазить по форум и читать но в этоге добился нужного результата, надо было просто добавить обновление позиции игрока!
Рабочий код:

if(strcmp(string, "/gmx", true) == 0)
{
if(Player[playerid][pAdmin] < 4) return UnknownCommand(playerid,cmdtext);
{
for(new i; i < 15; i++) SCM(playerid, -1, " ");
foreach(Player, i) SPD(i, 228, DIALOG_STYLE_MSGBOX, "Рестарт", "Рестарт сервера!", " ", "");
SavePlayer(playerid);
SaveSettings();
UpdatePlayerPosition(playerid);
SendRconCommand("gmx");
}
return true;
}
Тут у меня созрел вопрос? Сохранение аккаунта будет идти только для того человека который ввел команду?
И SendRconCommand("gmx"); Вызывает паблик OnPlayerDisconect ?
Если да то если в паблике OnPlayerDiconnect стоит: SavePlayer(playerid);, сохранение всех аккаунтов будет?
Не надо разве
SavePlayer(playerid);
SaveSettings();
UpdatePlayerPosition(playerid); засунуть в цикл ? Что бы все аккаунты сохранялись? Если админ введет /gmx