Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Похожая команда на /do - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Тема закрыта

[ Pawn ]
Похожая команда на /do Похожая команда на /do

#11
Пользователь офлайн   BroGames 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (23 февраля 2021 - 11:04) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Спасибо просто копировать не буду буду сидеть и понимать
1

#12
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Чтоб понять как оно работает, нужно изучить функции:
1) strcmp
2) Все функции pVar
3) GetPlayerPos
4) GetPlayerName
5) format
6) IsPlayerInRangeOfPoint

Ну и разобраться в основах, по типу общего построения кода, работе циклов, составлению условий, объявлению переменных и т.п.

Ну и да - лучше переходить на командный процессор Pawn.CMD и плагин sscanf для обработки параметров.
1

#13
Пользователь офлайн   BroGames 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (23 февраля 2021 - 11:21) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Pawn.CMD я уже установил немогу найти уроки по pawno. Знаешь?
А где найти sscanf?

Сообщение отредактировал BroGames: 23 февраля 2021 - 11:30

1

#14
Пользователь офлайн   BroGames 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (23 февраля 2021 - 11:04) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Я чекнул команду ест проблемка - человеку нужно вводить команду два раза чтобы начать и прекратить(ну то есть он не может закончить читать командой /book)
0

#15
Пользователь офлайн   21th year 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияBroGames (23 февраля 2021 - 17:54) писал:

Я чекнул команду ест проблемка - человеку нужно вводить команду два раза чтобы начать и прекратить(ну то есть он не может закончить читать командой /book)

Ты хочешь на время?
0

#16
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияBroGames (23 февраля 2021 - 17:54) писал:

Я чекнул команду ест проблемка - человеку нужно вводить команду два раза чтобы начать и прекратить(ну то есть он не может закончить читать командой /book)


Эмм, ты либо что-то изменил в коде, либо что-то не так скопировал.
0

#17
Пользователь офлайн   BroGames 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (23 февраля 2021 - 18:09) писал:

Эмм, ты либо что-то изменил в коде, либо что-то не так скопировал.

Я могу еще рас все скопировать и проверить ок?
вот что получилось
public OnPlayerCommandText(playerid, cmdtext[])
{
	if(strcmp(cmdtext, "/book", true, 5) == 0 && cmdtext[5] == ' ')
	{
	    if(!GetPVarType(playerid, "PlayerReadBook"))
	    {
	        new Float:x;
	        new Float:y;
	        new Float:z;
	        GetPlayerPos(playerid, x, y, z);

	        new string[144+1];
	        GetPlayerName(playerid, string, MAX_PLAYER_NAME);
	        format(string, sizeof(string), "%s читает %s", string, cmdtext[6]);
	        for(new i; i < MAX_PLAYERS; i++)
	        {
	            if(!IsPlayerInRangeOfPoint(i, 10.0, x, y, z))
	            {
	                continue;
	            }
	            SendClientMessage(i, 0xFFFFFFFF, string);
	        }

	        SetPVarInt(playerid, "PlayerReadBook", 1);
	        ApplyAnimation(playerid, "PED", "BOMBER", 4.1, true, false, false, false, 0, true);
	    }
	    else
	    {
	        SendClientMessage(playerid, 0xFFFFFFFF, "Вы прекратили читать книгу");
	        DeletePVar(playerid, "PlayerReadBook");
	        ClearAnimations(playerid, true);
	    }
	    return 1;
	}
	return 1;
}


Сообщение отредактировал BroGames: 23 февраля 2021 - 18:16

0

#18
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
А, я понял, наверное, о чём ты. Тебе нужно, чтоб чтение отключалось при вводе "/book" без текста.

if(strcmp(cmdtext, "/book", true, 5) == 0 && (cmdtext[5] == ' ' || cmdtext[5] == '\0'))
{
    if(!GetPVarType(playerid, "PlayerReadBook"))
    {
        if(cmdtext[5] == '\0')
        {
            SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /book \"Название книги, которую читаете\"");
            return 1;
        }

        new Float:x;
        new Float:y;
        new Float:z;
        GetPlayerPos(playerid, x, y, z);

        new string[144+1];
        GetPlayerName(playerid, string, MAX_PLAYER_NAME);
        format(string, sizeof(string), "%s читает %s", string, cmdtext[6]);
        for(new i; i < MAX_PLAYERS; i++)
        {
            if(!IsPlayerInRangeOfPoint(i, 10.0, x, y, z))
            {
                continue;
            }
            SendClientMessage(i, 0xFFFFFFFF, string);
        }

        SetPVarInt(playerid, "PlayerReadBook", 1);
        ApplyAnimation(playerid, "PED", "BOMBER", 4.1, true, false, false, false, 0, true);
    }
    else
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Вы прекратили читать книгу");
        DeletePVar(playerid, "PlayerReadBook");
        ClearAnimations(playerid, true);
    }
    return 1;
}


Для командного процессора:
CMD:book(playerid, params[])
{
    if(GetPVarType(playerid, "PlayerReadBook") == PLAYER_VARTYPE_INT)
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Вы прекратили читать книгу");
        DeletePVar(playerid, "PlayerReadBook");
        ClearAnimations(playerid, true);
        return 1;
    }

    if(isnull(params))
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Используйте: /book \"Название книги, которую читаете\"");
        return 1;
    }

    new Float:x;
    new Float:y;
    new Float:z;
    GetPlayerPos(playerid, x, y, z);

    new string[144+1];
    GetPlayerName(playerid, string, MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s читает %s", string, cmdtext[6]);
    for(new i; i < MAX_PLAYERS; i++)
    {
        if(!IsPlayerInRangeOfPoint(i, 10.0, x, y, z))
        {
            continue;
        }
        SendClientMessage(i, 0xFFFFFFFF, string);
    }

    SetPVarInt(playerid, "PlayerReadBook", 1);
    ApplyAnimation(playerid, "PED", "BOMBER", 4.1, true, false, false, false, 0, true);
    return 1;
}


Но этот вариант не запретит, например, пробелов несколько поставить вместо названия, из-за чего в чате напишет "игрок читает ". Чтоб подобное запретить, нужно циклом проверять содержимое массива.

Ну и да, на будущее: если хочешь публиковать чужой код, сначала нужно разрешения спрашивать. Делать так, как сделал ты - не красиво :)

Сообщение отредактировал DeimoS: 23 февраля 2021 - 18:33

0

#19
Пользователь офлайн   BroGames 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (23 февраля 2021 - 18:32) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Сори я новичок, но я хотя бы автора оставил)

Просмотр сообщенияDeimoS (23 февраля 2021 - 18:32) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

А еще я попробовал вставить в CMD(плагин я установил и подключил) но вот ощибки:

Цитата

D:\Samp Server\gamemodes\new.pwn(104) : error 029: invalid expression, assumed zero
D:\Samp Server\gamemodes\new.pwn(104) : error 017: undefined symbol "pc_cmd_book"
D:\Samp Server\gamemodes\new.pwn(104) : error 029: invalid expression, assumed zero
D:\Samp Server\gamemodes\new.pwn(104) : fatal error 107: too many error messages on one line

Сообщение отредактировал BroGames: 23 февраля 2021 - 21:27

0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Тема закрыта

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика