LuxurY forum (scripting SA-MP)

Объявление

с 29 марта 2007 года
LuxurY forum - крупнейший российский форум скриптинга в PAWNO
Новый форум
Задавайте свои вопросы

Архив скриптов


Наша кнопка:
LuxurY forum :: Scripting SA-MP
Код:

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Вопросик

Сообщений 1 страница 15 из 15

1

у меня небольшой вопрос. есть скрипт миниигры и есть параметр, отвечающий за наличие игрока в этой игре (IsPlayerGame), как видите игрок не может использовать никаких команд, если он в миниигре.

Что надо: если игрок не в миниигре: сервер при !любой! команде выводил сообщение типа "наберите /kill", а если игрок не в миниигре и ввёл неправильную команду выводить что нибудь вроде "Неправильная команда, наберите /help"

Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!IsPlayerGame[playerid])
{
//
//  тут ещё какие то команды

if (strcmp(cmdtext, "/shotgun2", true) ==0 )
        {
        new joined[MAX_PLAYER_NAME];
        GetPlayerName(playerid, joined, MAX_PLAYER_NAME);
        format(string, sizeof(string), "*** %s joined Shotgun Minigame #2, to accept type /shotgun2 ", joined);
        SendClientMessageToAll(COLOR_RED, string);
        SetPlayerPos(playerid,1137.9163,1267.2561,10.8203);
        ResetPlayerWeapons(playerid);
        GivePlayerWeapon(playerid,25,1000);
        GameTextForPlayer(playerid, "~g~Shotgun Minigame 2", 5000, 1);
        SetPlayerWorldBounds(playerid, 1169.914, 1068.388, 1419.101, 1187.017);
        IsPlayerGame[playerid] = 1;
        return 1;
        }
//
//  и тут какие то команды
return 0;
}

0

2

public OnPlayerCommandText(playerid, cmdtext[])
{

  if (strcmp(cmdtext, "/kill", true) ==0 )
   {
        //текст к команде /kill
   }

if(IsPlayerGame[playerid])
{
   Мсдж("наберите /kill");
   return 1;
}
//  тут ещё какие то команды

if (strcmp(cmdtext, "/shotgun2", true) ==0 )
        {
        new joined[MAX_PLAYER_NAME];
        GetPlayerName(playerid, joined, MAX_PLAYER_NAME);
        format(string, sizeof(string), "*** %s joined Shotgun Minigame #2, to accept type /shotgun2 ", joined);
        SendClientMessageToAll(COLOR_RED, string);
        SetPlayerPos(playerid,1137.9163,1267.2561,10.8203);
        ResetPlayerWeapons(playerid);
        GivePlayerWeapon(playerid,25,1000);
        GameTextForPlayer(playerid, "~g~Shotgun Minigame 2", 5000, 1);
        SetPlayerWorldBounds(playerid, 1169.914, 1068.388, 1419.101, 1187.017);
        IsPlayerGame[playerid] = 1;
        return 1;
        }
//
//  и тут какие то команды

   Мсдж("Неправильная команда, наберите /help");
   return 1;

}

Отредактировано Evgeniy (2007-10-18 23:10:24)

0

3

*TM^SnooP написал(а):

у меня небольшой вопрос. есть скрипт миниигры и есть параметр, отвечающий за наличие игрока в этой игре (IsPlayerGame), как видите игрок не может использовать никаких команд, если он в миниигре.
Что надо: если игрок не в миниигре: сервер при !любой! команде выводил сообщение типа "наберите /kill", а если игрок не в миниигре и ввёл неправильную команду выводить что нибудь вроде "Неправильная команда, наберите /help"

так я не понял, тебе надо чтобы если игрок не в миниигре, то при вводе любой команды писалось "наберите /kill", а если он В миниигре и он ввел неправильную команду выводить что нибудь вроде "Неправильная команда, наберите /help"

я правильно понял?
а то ты так написал, что ничего не понятно

0

4

я немного не правильно написал в первом посте. попробую объяснить нормально.

Если параметр IsPlayerGame установлен на 1  - при наборе любой команды сервер писал "Наберите /kill чтобы выйти из этой миниигры"

Если параметр установлен на 0 - при наборе неправильной команды сервер писал "Неправильная команда, наберите /help"

0

5

*TM^SnooP написал(а):

я немного не правильно написал в первом посте. попробую объяснить нормально.
Если параметр IsPlayerGame установлен на 1  - при наборе любой команды сервер писал "Наберите /kill чтобы выйти из этой миниигры"
Если параметр установлен на 0 - при наборе неправильной команды сервер писал "Неправильная команда, наберите /help"

ну заключай все команды в скобки и пиши "Наберите /kill чтобы выйти из этой миниигры"
а чтобы когда неправильная команда, то
пиши

Код:
else {
SendClientMessage(playerid,COLOR_GREEN,"Неправильная команда, наберите /help");
}

0

6

*TM^SnooP написал(а):

я немного не правильно написал в первом посте. попробую объяснить нормально.

Если параметр IsPlayerGame установлен на 1  - при наборе любой команды сервер писал "Наберите /kill чтобы выйти из этой миниигры"

Если параметр установлен на 0 - при наборе неправильной команды сервер писал "Неправильная команда, наберите /help"

Evgeniy написал(а):

public OnPlayerCommandText(playerid, cmdtext[])
{

  if (strcmp(cmdtext, "/kill", true) ==0 )
   {
        //текст к команде /kill
   }

if(IsPlayerGame[playerid])
{
   Мсдж("наберите /kill");
   return 1;
}
//  тут ещё какие то команды

if (strcmp(cmdtext, "/shotgun2", true) ==0 )
        {
        new joined[MAX_PLAYER_NAME];
        GetPlayerName(playerid, joined, MAX_PLAYER_NAME);
        format(string, sizeof(string), "*** %s joined Shotgun Minigame #2, to accept type /shotgun2 ", joined);
        SendClientMessageToAll(COLOR_RED, string);
        SetPlayerPos(playerid,1137.9163,1267.2561,10.8203);
        ResetPlayerWeapons(playerid);
        GivePlayerWeapon(playerid,25,1000);
        GameTextForPlayer(playerid, "~g~Shotgun Minigame 2", 5000, 1);
        SetPlayerWorldBounds(playerid, 1169.914, 1068.388, 1419.101, 1187.017);
        IsPlayerGame[playerid] = 1;
        return 1;
        }
//
//  и тут какие то команды

   Мсдж("Неправильная команда, наберите /help");
   return 1;
}

0

7

Evgeniy написал(а):

//
//  и тут какие то команды
   Мсдж("Неправильная команда, наберите /help");
   return 1;
}

это не правильно.
ошибка будет выдаваться при каждом наборе команды

0

8

вот я вроде нашёл решение сам.

Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!IsPlayerGame[playerid])
{
//
//  тут ещё какие то команды

if (strcmp(cmdtext, "/shotgun2", true) ==0 )
        {
        new joined[MAX_PLAYER_NAME];
        GetPlayerName(playerid, joined, MAX_PLAYER_NAME);
        format(string, sizeof(string), "*** %s joined Shotgun Minigame #2, to accept type /shotgun2 ", joined);
        SendClientMessageToAll(COLOR_RED, string);
        SetPlayerPos(playerid,1137.9163,1267.2561,10.8203);
        ResetPlayerWeapons(playerid);
        GivePlayerWeapon(playerid,25,1000);
        GameTextForPlayer(playerid, "~g~Shotgun Minigame 2", 5000, 1);
        SetPlayerWorldBounds(playerid, 1169.914, 1068.388, 1419.101, 1187.017);
        IsPlayerGame[playerid] = 1;
        return 1;
        }
//
//  и тут какие то команды
return SetTimer("Minigame",10,0);
}
//-----------------------------------------------------
public Minigame(playerid)
{
if(IsPlayerGame[playerid])
{
SendClientMessage(playerid, COLOR_RED, "Type /kill to exit this minigame");
}
else
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Wrong command dude! Type /cmdlist to view available commands");
}
}
//----------------------------------------------------

Отредактировано *TM^SnooP (2007-10-20 13:57:33)

0

9

и че работает? =)

0

10

Вполне, правда проверял только на локальном сервере, тоесть для айди = 0, как будет на нормальном работать не знаю...

0

11

LuxurY написал(а):

это не правильно.
ошибка будет выдаваться при каждом наборе команды

каким образом будет выдаватся ошибка? , если в конце каждой команды

Код:
 return 1;

0

12

Evgeniy написал(а):

каким образом будет выдаватся ошибка? , если в конце каждой команды
Код:
return 1;

если так, то все правильно.

0

13

*TM^SnooP написал(а):

вот я вроде нашёл решение сам.

У тебя функция с парметрами вызывается с простым таймером. Она будет работать толькодля id 0. Юзай SetTimerEx.

0

14

array sizes do not match, or destination array is too small че за х, и как ее исправить?

0

15

Wolf написал(а):

array sizes do not match, or destination array is too small че за х, и как ее исправить?

размер массива поменять, т е у тебя

Код:
	new text[2];
	text="text";

а нужно

Код:
	new text[5];
	text="text";

Отредактировано Evgeniy (2007-11-08 16:43:17)

0