Вопросы

Решил немного подтянуть знания и для начала сделать что-нибудь незамысловатое. Решил сделать команду, которая показывает диалог: ID и Ник богатого игрока. Получил конечно же ошибки про компиляции. Некоторые поправил, но еще 2 осталось и что-то не получается их исправить. Поглядите что не так сделал

Спойлер

CMD:topmoney(playerid, params[])
{
	if(PI[playerid][pAdmin] < 1) return 1;
	else if(AdminLogged[playerid] == false) return SendMess(playerid, MSG_YOU_NOT_LOGGED_AS_ADMIN);
	else if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "{FFFFFF}Введите: /topmoney");
	new string[29+(-4+MAX_PLAYER_NAME)+1]; //отсюда в принципе и начинается..
	for(new i; i <= 500; i++);
    if(GetPlayerMoney(i) >= 100000 || PI[i][pBank] >= 100000 )
	{
	    format(string, sizeof(string), "Самый богатый игрок","%d ID | Ник: %s", playerid, PI[playerid][pName]);
	    ShowPlayerDialog(playerid,D_NULL,DIALOG_STYLE_MSGBOX,"Самый богатый игрок","%d ID | Ник: %s","Окей","");
    }
	return 1;
}

 

(Тут табуляция какая-то пьяная получилась.. На деле все ровно. вроде как )

 

Теперь немного о команде..

		format(string, sizeof(string), "Самый богатый игрок","%d ID | Ник: %s", playerid, PI[playerid][pName]);
	    ShowPlayerDialog(playerid,D_NULL,DIALOG_STYLE_MSGBOX,"Самый богатый игрок","%d ID | Ник: %s","Окей","");

Тут я уже окончательно запутался и не понял где именно оставить текст "Самый богатый игрок...". Если кто объяснит - с меня плюсик :)

 

Ну и Ошибки при компиляции:

Спойлер

srp.pwn(33377) : error 036: empty statement

srp.pwn(33378) : error 017: undefined symbol "i"

 

Строчка 33377: for(new i; i <= 500; i++);
Строчка 33378: if(GetPlayerMoney(i) >= 100000 || PI[i][pBank] >= 100000 )

 

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

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


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

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

  • 0
SCRIPTMAN
Великий Гуру

Так, раз уж подтянуть знания.. Начнём по порядку... У тебя ошибки из-за цикла: 

for(new i; i <= 500; i++);

После цикла точка с запятой не ставиться, либо фигурная скобка и выполнение кода, либо на этой же строке короткий код в одну строку.

Следующее: ты перебираешь игроков, рекомендую использовать цикл foreach, про него можно узнать в интернете, но если в двух словах: у тебя максимально не оптимизирован, ты даже не проверяешь на то, в онлайне человек или нет, у тебя будет выполняться 500 итераций, даже если сделаешь проверку, а юзая foreach, он будет выполнять столько проверок, сколько игроков на сервере, это же гораздо лучше!

Прикрепляю команду с использованием foreach, сам инклуд, надеюсь подключишь)

CMD:topmoney(playerid)
{
	if(PI[playerid][pAdmin] < 1) return 1;
	else if(AdminLogged[playerid] == false) return SendMess(playerid, MSG_YOU_NOT_LOGGED_AS_ADMIN);
	new string[29+(-4+MAX_PLAYER_NAME)+1]; //отсюда в принципе и начинается..
	foreach(new i: Player) 
	{
	    if(GetPlayerMoney(i) >= 100000 || PI[i][pBank] >= 100000 )
		{
		    format(string, sizeof(string), "ID: %d | Ник: %s", i, PI[i][pName]);
		    ShowPlayerDialog(playerid,D_NULL,DIALOG_STYLE_MSGBOX,"Самый богатый игрок", string, "Закрыть","");
	    }
	}
	return 1;
}

Что я исправил: тебе не нужно вводить ид игрока, потому что тебе нужно узнать самого богатого игрока, я это убрал. Заменил обычный цикл на foreach, писал выше почему.

По поводу format: ты записываешь значение в переменную, задаёшь ей текст с какими-то значениями через эту функцию формат, потом, туда, где тебе нужно вывести форматированный текст, вместо "text", пишешь просто название переменной, которую форматировал, в данном случае string.

format(имя формат. переменной, размер(в основном юзаем sizeof имя формат. переменной), "текст, который задаём переменной", аргументы);

 

И вообще, команда у тебя не выбирает самого богатого игрока, она покажет игрока, первого попавшегося, у которого налом больше 100к или в банке больше 100к

А, и в формате, я заменил playerid(ид, кто вводит команду), на "i", ид типа самого богатого игрока, но логику твоей команды я тебе объяснил

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


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

@SCRIPTMAN Большое спасибо за то, что откликнулись и разобрали все.

Все скомпилировалось и работает. Сейчас буду разбираться во всём.

Некоторые моменты:

- Изначально планировалось, что бы показывало вообще самого богатого игрока, пусть он и в оффлайн. Но, как я понял, это немного по другому придется делать. Ну да ладно

- Я не придумал, как написать, что бы выводило игрока, у которого больше всего денег и решил пока сделать условие в >100к

Ещё раз спасибо :)

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


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

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

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

    • Дебилойд
      От Дебилойд
      Здравствуйте!
      Мы ищем талантливого 3D-моделлера в команду нашего CRMP-проекта!
      Что нужно будет делать:
      Моделировать и адаптировать автомобили.
      Создавать и настраивать скины (модели персонажей).
      Большим плюсом будет:
      Умение создавать качественные и оптимизированные интерьеры.
      Если вы хотите стать частью нашей команды и развивать проект вместе с нами, пишите в ЛС. Ждем ваши портфолио!
    • LORDIKUS
      От LORDIKUS
      Уважаемые участники форума - всех приветствую, кто перешел в беседу моей темы обсуждения. В настоящее время у меня зарождается огромное желание и мысль создать собственный CR:MP проект, но столкнулся с единственной проблемой - с отсутствием команды людей, у которых будет искреннее желание ежедневно вкладывать свой труд на разработку проекта. Особого опыта в скриптинге, маппинге, дизайне или в моделировании у меня не имеется, поэтому такой критерий как опыт в определенной сфере для желающих вступить в команду я не рассматриваю. Так как проект не открыт и находится на начальной стадии создания, мое сотрудничество выстраивается на некоммерческой основе (без выплаты за проделанную работу и труд), однако я не собираюсь отрицать высокую ценность вложенного командой труд — труд, особенно на первой стадии разработки я рассматриваю превыше всего. После открытия проекта в зависимости от коммерции и чистой прибыли каждый участник будет получать настоящую выплату, однако это также может убить еще значительное время. Мне нужна команда, которая проявит искренний интерес в создании общего между командой CR:MP проекта, пожертвует свое время, а также вложит собственный труд благодаря заработанным навыкам. Если вас заинтересовала данная тема обсуждения, пожалуйста, свяжитесь со мной по любым возможным и удобным для вас контактам связи ниже. Спасибо всем, кто зашел в мою беседу!

      🔗 Спец. Связь:
      — DISCORD: https://discord.com/users/1452715348196589691 (перейти по ссылке и добавить в друзья) ИЛИ _shin833_ (ввести никнейм и отправить запрос дружбы)
      — VK: https://vk.com/shin833
      — TG: https://t.me/s_hin833
    • Korochansky
      От Korochansky
      Настало время объявить о скором выпуске первого релиза среды разработки под названием Spawn.

      В настоящее время программа находится на заключительных этапах доработки кода и локализации интерфейса.
      Таким образом, в течение следующей недели будет выпущена быстрая и современная среда разработки, обладающая следующими возможностями (о которых я расскажу сейчас, а о других — позже):
       
      Полнофункциональный локальный Git: 
      Индексирование, фиксации, индикаторы состояния и мягкий/жесткий сброс до любой точки сохранения одним щелчком мыши. Разрабатывайте свой игровой сервер, не боясь его сломать.
      Новички могут рассматривать это как историю кодовой базы вашего сервера (что и есть на самом деле).
       
      Чистый UTF-8 (без BOM): 
      Полный отказ от устаревшей кодировки Windows-1251 (CP1251) для абсолютной стабильности и идеальной совместимости с Git.
      Реализация поддержки CP1251 привела бы к нестабильному поведению программы и ухудшила бы пользовательский опыт.
       
      История изменений строк: Редактор выделяет измененные строки в реальном времени в полях рядом с номерами строк. Это позволяет мгновенно видеть границы изменений, внесенных с момента открытия файла.
       
      Сопоставление и выделение фигурных скобок: мгновенное выделение открывающих и закрывающих фигурных скобок для быстрой навигации по структуре кода и защиты от ошибок компиляции.
       
      Интеграция с SAMPCTL: готовая к использованию автоматизация процессов. Сборка, запуск сервера и менеджер зависимостей (управление библиотеками и плагинами) работают напрямую из интерфейса редактора.
       
      И многое другое...
       
      И самое главное: проект будет с открытым исходным кодом под лицензией GPLv3!
      Следите за новостями о выпуске в репозитории: https://github.com/daniilkorochansky/spawn
    • KodBi
      От KodBi
      шапка
      по одиночке работают
      нужны оба