Вопросы

streetmeat
Новичок

из названия понятно, что мне нужно. сам я туповатый и эти команды у меня работают некорректно, так что нужен знающий человек :^)

Поделиться сообщением


Ссылка на сообщение

22 ответа на этот вопрос

  • 0
streetmeat
Новичок

да, то что есть на форуме - не пашет полностью тоже

Отредактировано пользователем streetmeat

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

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

Поделиться сообщением


Ссылка на сообщение
  • 0
streetmeat
Новичок
2 минуты назад, odosenok сказал:

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

команды брал из этой темы https://pawno-rus.ru/topic/3380-cmdkomandy-me-ame-do-todo-s-n-try-dlya-processora-dc_cmd/. взял /me (для примера) и переделал под свой мод, и получаю такую ошибку
https://imgur.com/a/9zLpYEd
пока другие не пробовал, но может тут ещё найду решение для будущих проблем (наверное)

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@streetmeat, это ошибка табуляции. Потому что у вас не везде соблюдена табуляция. Весь код должен идти за красной линией (см. изображение). Однако, первая строчка стоит неправильно. Достаточно ее сдвинуть правее и все будет хорошо.

Спойлер

Безымянный.png

 

Поделиться сообщением


Ссылка на сообщение
  • 0
streetmeat
Новичок
В 29.04.2020 в 22:53, odosenok сказал:

@streetmeat, это ошибка табуляции. Потому что у вас не везде соблюдена табуляция. Весь код должен идти за красной линией (см. изображение). Однако, первая строчка стоит неправильно. Достаточно ее сдвинуть правее и все будет хорошо.

  изображение (открыть спойлер)

Безымянный.png

 

я уже этим разобрался, но вылилась другая проблема - команда не работает
https://imgur.com/a/FttvUxv

 

вылилась новая проблема - не отображается никнейм когда пишешь отыгровку
https://imgur.com/a/R2pg5qT

Поделиться сообщением


Ссылка на сообщение
  • 0
Бот
Великий Гуру

АВТОМАТИЧЕСКИ СФОРМИРОВАННОЕ СООБЩЕНИЕ:

Данная тема была перемещена модерацией или администрацией портала PAWNO-RUS.RU! 

Перемещена из: "Магазин > Стол заказов"

Перемещена в: "Скриптинг PAWN > Вопросы / проблемы по скриптингу"

 

С уважением, ваш Бот! 

Если вы НЕ согласны с переносом данной темы в раздел "Скриптинг PAWN > Вопросы / проблемы по скриптингу", пожалуйтесь на это сообщение в жалобе указав причины вашего недовольства. Спасибо. 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
smvrtdev
Новичок

Добавьте в OnPlayerConnect строку
 

GetPlayerName(playerid, PlayerInfo[playerid][NAME], sizeof PlayerInfo[playerid][NAME]);

 

Скорее всего её нет, поэтому в самой строке не хранится имя игрока.

Поделиться сообщением


Ссылка на сообщение
  • 0
streetmeat
Новичок
3 часа назад, smvrtdev сказал:

Добавьте в OnPlayerConnect строку
 


GetPlayerName(playerid, PlayerInfo[playerid][NAME], sizeof PlayerInfo[playerid][NAME]);

 

Скорее всего её нет, поэтому в самой строке не хранится имя игрока.

https://imgur.com/a/ye94Hxx появились такие ошибки. щас попробую исправить, если не выйдет - отпишу

ошибки всё так же, ничего не поменялось

Поделиться сообщением


Ссылка на сообщение
  • 0
streetmeat
Новичок
1 час назад, smvrtdev сказал:

Дайте полный код команды, которая в Вашем моде.

CMD:me(playerid, params[])
{
	if(sscanf(params, "s[118]", params[0])) return SCM(playerid, COLOR_GREY, !"/me [действие]");
	new string[144];
	format(string, sizeof(string), "* %s %s", PlayerInfo[playerid][NAME], params[0]);
	ProxDetector(20.0, playerid, string, COLOR_ROSE, COLOR_ROSE, COLOR_ROSE, COLOR_ROSE, COLOR_ROSE);
	SetPlayerChatBubble(playerid, params[0], COLOR_ROSE, 20, 7500);
	return 1;
}

если было про /me

Поделиться сообщением


Ссылка на сообщение
  • 0
povstanec
Освоившийся

ProxDetector корректно работает в других случаях?

 

12 часов назад, streetmeat сказал:

https://imgur.com/a/ye94Hxx появились такие ошибки. щас попробую исправить, если не выйдет - отпишу

ошибки всё так же, ничего не поменялось

Вместо sizeof PlayerInfo[playerid][NAME] поставь sizeof(PlayerInfo[playerid][NAME])

Поделиться сообщением


Ссылка на сообщение
  • 0

@streetmeat sizeof можно использовать только для объектов, размер которых известен на момент компиляции. PlayerInfo[playerid][NAME] таким не является, так как зависит от переменной playerid, которая известна только на момент исполнения кода. 

вместо sizeof PlayerInfo[playerid][NAME] вставьте просто константу MAX_PLAYER_NAME

Поделиться сообщением


Ссылка на сообщение
  • 0
streetmeat
Новичок
2 часа назад, DEST сказал:

@streetmeat sizeof можно использовать только для объектов, размер которых известен на момент компиляции. PlayerInfo[playerid][NAME] таким не является, так как зависит от переменной playerid, которая известна только на момент исполнения кода. 

вместо sizeof PlayerInfo[playerid][NAME] вставьте просто константу MAX_PLAYER_NAME

сработало)

вот ещё такой вопрос, но про /ame - как сделать так, чтобы самому игроку отправилось сообщение в чат? через scm (sendclientmessage)?

Поделиться сообщением


Ссылка на сообщение
  • 0
povstanec
Освоившийся
14 минут назад, streetmeat сказал:

сработало)

вот ещё такой вопрос, но про /ame - как сделать так, чтобы самому игроку отправилось сообщение в чат? через scm (sendclientmessage)?

Да.

Поделиться сообщением


Ссылка на сообщение
  • 0
streetmeat
Новичок

https://imgur.com/a/pZ2My2r
 

CMD:ame(playerid, params[])
{
	new string[180];
	if(sscanf(params, "s[124]", params[0])) return SCM(playerid, COLOR_GREY, "/ame [äåéñòâèå]");
	SetPlayerChatBubble(playerid,string,COLOR_ROSE,30.0,5000);
	format(string, sizeof(string), "> %s", string);
	SCM(playerid, COLOR_ROSE, string);
    return 1;
}

ладно, где я зафакапился, что у меня ни отыгровка, ни ник игрока не отображается?

Поделиться сообщением


Ссылка на сообщение
  • 0
povstanec
Освоившийся

Ты отправляешь игроку и в проксдетектор string, а текст в params[0].

Поделиться сообщением


Ссылка на сообщение
  • 0
streetmeat
Новичок
13 минут назад, povstanec сказал:

Ты отправляешь игроку и в проксдетектор string, а текст в params[0].

https://imgur.com/a/GE18m9I подправил, но ника нет. где ещё надо заменить?
 

CMD:ame(playerid, params[])
{
	new string[180];
	if(sscanf(params, "s[124]", params[0])) return SCM(playerid, COLOR_GREY, "/ame [действие]");
	SetPlayerChatBubble(playerid, params[0], COLOR_ROSE, 20, 5000);
	format(string, sizeof(string), "> %s", params[0]);
	SCM(playerid, COLOR_ROSE, string);
    return 1;
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@streetmeat

Спойлер

CMD:me(playerid, params[])
{
	if (!params[0]) return SCM(playerid, COLOR_GREY, !"/me [действие]"); // если строка действия на передана, выведем сообщение
	
	new string[144]; // создадим переменную для хранения текста с действием игрока
	format(string, sizeof(string), "* %s %s", PlayerInfo[playerid][NAME], params[0]); // форматируем переменную
	ProxDetector(20.0, playerid, string, COLOR_ROSE, COLOR_ROSE, COLOR_ROSE, COLOR_ROSE, COLOR_ROSE); // выведем текст из string всем в радиусе 20.0
	SetPlayerChatBubble(playerid, params[0], COLOR_ROSE, 20, 7500); // выведем текст действия над головой игрока
	
	SendClientMessage(playerid, COLOR_ROSE, string); // выведем аналогичный текст, как в  ProxDetector, самому игроку
	return 1;
}

 

 

А Ваш вариант выше отправлял сообщение только Вам, не всем игрокам в некотором радиусе.

Поделиться сообщением


Ссылка на сообщение
  • 0
povstanec
Освоившийся
CMD:ame(playerid, params[])
{
	new string[180];
	if(sscanf(params, "s[124]", params[0])) return SCM(playerid, COLOR_GREY, "/ame [действие]");
	SetPlayerChatBubble(playerid, params[0], COLOR_ROSE, 20, 5000);
	format(string, sizeof(string), "> %s %s", PlayerInfo[playerid][NAME], params[0]);
	SCM(playerid, COLOR_ROSE, string);
    return 1;
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
streetmeat
Новичок

и последний вопрос: как убрать в ми, ами и ду черту в нике между именем и фамилией?

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@streetmeat, давайте я попробую здесь изложить ход рассуждений, чтобы Вы поняли, по какому принципу стоит решать подобные вопросы, а не брали постоянно готовый участок кода.

 

Замечание: не есть правильно каждый раз при использовании команд отыгровки RolePlay-ситуаций искать нижнее подчеркивание в имени игрока и заменять его пробелом. Как минимум, это нерационально. Лучше добавьте в массив игрока глобальную переменную (теперь у Вас будет две переменных: одна - OOC-характера (внеигровая), хранящая игровое имя в полном формате, например, First_Second, другая - игровая (IC-характера), например, First Name. Проводите инициализацию двух переменных при подключении игрока к серверу и работайте дальше напрямую с этими переменными.

 

Вернемся к тому, как убрать нижнее подчеркивание. Есть у Вас, например, некоторая переменная, в которую записан nick-name игрока (я использую имя Дениса Косякова, поскольку 1 мая, сегодня, - день его рождения):

new name[MAX_PLAYER_NAME+1] = "Denis_Kosyakov";

Как убрать нижнее подчеркивание? Необходимо найти его местонахождение программно. Для этого нужно поискать какую-нибудь функцию поиска символа в строке (или же функцию поиска подстроки в строке). Как пользователя поисковой системой Google? Первая же вкладка - WIKI-страничка. 

Читаем, как пользоваться функцией strfind, какие аргументы она принимает, что возвращает. И делаем аналогично:

// создаем переменную для хранения строки - имени пользователя
new name[MAX_PLAYER_NAME+1] = "Denis_Kosyakov";
// в переменную underline будет записан порядковый номер (с нуля) нижнего подчеркивания 
new underline = strfind(name, "_"); // name - где ищем, "_" - что ищем (нижнее подчеркивание)

Нашли? Отлично. Теперь думаем, как можно заменить нижнее подчеркивание другим символом (речь идет о пробеле). Здесь достаточно просто изменить значение ячейки массива, обратившись к ней по индексу.

// создаем переменную для хранения строки - имени пользователя
new name[MAX_PLAYER_NAME+1] = "Denis_Kosyakov";
// в переменную underline будет записан порядковый номер (с нуля) нижнего подчеркивания 
new underline = strfind(name, "_"); // name - где ищем, "_" - что ищем (нижнее подчеркивание)
// заменяем значение ячейки массива с индексом underline новым значением - пробелом
name[underline] = ' '; // теперь в переменной name ячейка underline содержит пробел

Можно пойти другим способом - перебирать все ячейки строки, пока не будет найден символ нижнего подчеркивания. Нашли? Отлично, заменяем его пробелом, как это сделано в примере выше.

new name[MAX_PLAYER_NAME+1] = "Denis_Kosyakov";

// создаем цикл for. Переменная i "пробегается" от 0 до MAX_PLAYER_NAME = 24
for (new i = 0; i < MAX_PLAYER_NAME; i++) {
	if (name[i] == '_') { // если символ в i-ой (итой) ячейке экивалентен нижнему подчеркиванию
		name[i] = ' '; // изменяем символ в i-ой ячейке на символ пробела
		break; // если мы нашли одно нижнее подчеркивание, то больше их не будет - иначе это не RP nick-name
	}
}

Конкретно я использовал бы второй способ. А так... Что хотите, то и используйте. Можете даже создать отдельную функцию, которая бы в переданном nick-name находила символ нижнего подчеркивания и возвращала nick-name уже без этого символа.

Спойлер

// следующий макрос необходимо добавить в начало мода
#if !defined isnull
    #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif

// функция ликвидации нижнего подчеркивания из ника игрока
stock DeleteUnderline(nick[]) {
	if (isnull(nick)) { // если nick - пустая строка
		return '\0'; // завершаем работу функции, возвращаем нуль-символ
	}
	
	// создадим результирующую строку (в нее будет записан ник без нижнего подчеркивания)
	new result[MAX_PLAYER_NAME+1];
	
	// создадим цикл, в котором будем перебирать все символы ника
	for (int i = 0, length = strlen(nick); i < length; i++) {
		result[i] = (nick[i] == '_') ? (' ') : (nick[i]);
	}
	
	return result;
}

 

 

Ну, и если использовать функцию, то выход будет примерно таким:

Спойлер

CMD:ame(playerid, params[])
{
	new string[180];
	if(sscanf(params, "s[124]", params[0])) return SCM(playerid, COLOR_GREY, "/ame [действие]");
	SetPlayerChatBubble(playerid, params[0], COLOR_ROSE, 20, 5000);
	format(string, sizeof(string), "> %s %s", DeleteUnderline(PlayerInfo[playerid][NAME]), params[0]);
	SCM(playerid, COLOR_ROSE, string);
    return 1;
}

 

 

И я хочу обратить еще раз Ваше внимание на ту пометку, которую оставил под своим прошлым постом: текущая версия Вашей команды отправляет текст только Вам, а не всем игрокам из радиуса. Решение данной проблемы я прикладывал, однако, Вы его проигнорировали.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Korochansky
      От Korochansky
      Я рад объявить о выпуске первой публичной версии современной IDE с открытым исходным кодом под лицензией GPLv3 для разработки open.mp и SA-MP, которая отличается интеграцией с SAMPCTL, управлением зависимостями и встроенной поддержкой Git.
       
      Особенности:
      • Разработано специально для open.mp и SA-MP разработки.
      • Встроенная интеграция с SAMPCTL для создания, запуска и управления проектами.
      • Менеджер зависимостей для удобной установки и обновления серверных пакетов и компонентов.
      • Встроенная поддержка Git с индикаторами состояния репозитория и историей коммитов.
      • Маркеры истории изменений для отслеживания измененных и сохраненных строк.
      • Автоматическое сопоставление и выделение скобок
      • Предварительный просмотр цвета для значений RGBA и HEX прямо в редакторе.
      • Интеграция инструмента выбора цвета для быстрой вставки цветов в код Pawn.
      • Режим 'Разделенный редактор кода' для одновременной работы с несколькими файлами.
      • Дерево проекта, оптимизированное для крупных проектов.
      • Интегрированные панели вывода результатов сборки и консоли сервера.
      • Автоматический мониторинг и обновление файлов проектов.
      • Портативная версия (установка не требуется).
       
      В репозитории: https://github.com/daniilkorochansky/spawn
    • Margiela
      От Margiela
      устал от vs code + он часто конфликтует с маками, конкретно с версией M3(как у меня).
      имеются ли аналоги pawno на mac? 
    • Vladislav Diachenko
      От Vladislav Diachenko
      Привет! Мы разрабатываем модульный RP-проект нового поколения и сейчас расширяем команду разработки.
      Если тебе надоело ковыряться в гигантских монолитах со сливов и ты хочешь писать чистый, структурированный код — мы сработаемся.
      Что нужно будет делать:
      Разрабатывать новые системы и оптимизировать текущий функционал.
      Работать с модульной структурой мода (разделение по инклудам, y_hooks).
      Взаимодействовать с базой данных (MySQL R41).
      Наши ожидания от тебя:
      Уверенные знания Pawn и понимание работы MySQL.
      Опыт работы с современным инструментарием (VS Code, компилятор Zeex, git — приветствуется).
      Понимание принципов оптимизации (не писать код, который «ложится» при онлайне).
      Умение трезво оценивать сроки своих задач.
      Что мы предлагаем:
      Адекватное ТЗ без формулировок «сделай то, не знаю что».
      Свободу в реализации технических решений (главное — качество и стабильность).
      Своевременную оплату ([подоговорно / за каждую выполненную задачу / фикс. оклад]).
      Работу в дружной и заряженной на результат команде.
      Заинтересовало? Напиши в ЛС телеграмм: [@VladislaHR]. Расскажи пару слов о своем опыте и, если есть возможность, прикрепи пример своего кода (кусочек системы или ссылку на GitHub).
      Давай делать крутой проект вместе!
    • danya_white
      От danya_white


      Скачать файл Оригинальный мод SA:MP Action Games aka Revent RP
      Доброго времени суток, хочу выставить на продажу уникального игровой мод проекта Action Games ( Revent RP )
      Известный мод проекта который существовал с 2016 года, 
      Мод уникальный и многофункциональный, но требует доработок и улучшений достаточно много недороботок/багов
      Продаю потому что нет времени и желание продолжать работу над этим модом
      Основа мода Revent RP, разрабатывался под проект Action Games
       
      Информация о моде:
      Версия MYSQL -  MySQL R41-4
      Античит - NEX-AC
      Стример - Streamer Plugin v2.9.6 by Incognito
      Командный процессор - Pawn.CMD
      Хэширование паролей - MD5
      Игровой мод разбит на файлы
      Остальное Все плагины обновлены до последней версии

      Функционал, интерфейс можно посмотреть по скриншотам и видеообзорам ниже.
       
      Добавил danya_white Добавлено 05/31/26 Категория Моды Автор danya_whtie