Вопросы

Решил немного подтянуть знания и для начала сделать что-нибудь незамысловатое. Решил сделать команду, которая показывает диалог: 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

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

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 пользователей онлайн

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

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

    • KAIF
      От KAIF


      Скачать файл GTA RolePlay-МОД,СБОРКА
      !!!!!ВСЕГО ОДНА КОПИЯ!!!! 
      Единственный мод GTA RP.
       
      Фракции:
      Правительство
      ГИБДД
      Полиция Южного
      ФСБ
      ЦГБ-А
      Автошкола
      Китайская мафия
      Русская Мафия
      Итальянская Мафия
      Американская Мафия
      Чеченская Мафия
      ВВС
      МЧС
      ОПГ Тяп-Ляп
      ОПГ Хади-Такташ
      СМИ Южного
      ФСИН
      В комплекте идёт СБОРКА И МОД.
      Единственный мод GTA RP.
      Добавил KAIF Добавлено 01.01.2024 Категория Моды Автор Aleksandr  
    • gooding
      От gooding


      Скачать файл REDROW RP | ЛУЧШИЙ БОНУСНИК | АВТОПАРКИ
      Доброго времени суток! Я выложил на продажу игровой мод RedRow RolePlay!
       
      17 ТИТУЛОВ, 14 КОСТЮМОВ (КАМЕРМЭН, ФЕЯ, СИ-ДЖЕЙ, ДЭДПУЛ, СПАНЧ БОБ, НИНДЗЯ, ДЕД МОРОЗ и другие!),
      BMW I8, BMW M5, BMW Vision M NEXT, Mercedes-Benz G-CLASS, Rolls-Royce Phantom! Система рулетки  (Исправлена, теперь не выпадает одно и то же),
      Автопарки Фракций (FBI и банд), МОД ОПТИМИЗИРОВАЛИ под ИГРУ, ДОБАВИЛИ НОВЫЙ АНТИЧИТ (Latest Nex-AC) и АНТИЧИТ настроен. Проделано много работы (Над модом работали полгода) и исправили множество багов.
       
      Что было добавлено?
      1. 17 титулов,
      2. 14 костюмов,
      3. Эксклюзивный транспорт (SandKing, Rolls-Royce Phantom, BMW I8, BMW M5, BMW Vision M NEXT, Mercedes-Benz G-CLASS).
      4. Автопарк ФБР и всех банд.
      5. Новый анти-чит.
      6. Оптимизация игрового мода.
      7. Премиум и уникальные возможности для владельцев Премиума.
      8. Команда /bonus, где можно получить бесплатно Red Coins.
      9. За АКТИВ даются Red Coins!
      10. Рестарт сервера в 5:00 по МСК.
      11. Радужный клист.
      12. Уникальный тюнинг для эксклюзивных машин и ускорение.
      13. Новая система банка.
      14. Исправлено множество багов.
      15. Новый маппинг.
      Добавил gooding Добавлено 28.01.2024 Категория Моды Автор GOODING (Я)  
    • gooding
      От gooding
      Доброго времени суток! Я выложил на продажу игровой мод RedRow RolePlay!
       
      17 ТИТУЛОВ, 14 КОСТЮМОВ (КАМЕРМЭН, ФЕЯ, СИ-ДЖЕЙ, ДЭДПУЛ, СПАНЧ БОБ, НИНДЗЯ, ДЕД МОРОЗ и другие!),
      BMW I8, BMW M5, BMW Vision M NEXT, Mercedes-Benz G-CLASS, Rolls-Royce Phantom! Система рулетки  (Исправлена, теперь не выпадает одно и то же),
      Автопарки Фракций (FBI и банд), МОД ОПТИМИЗИРОВАЛИ под ИГРУ, ДОБАВИЛИ НОВЫЙ АНТИЧИТ (Latest Nex-AC) и АНТИЧИТ настроен. Проделано много работы (Над модом работали полгода) и исправили множество багов.
       
      Что было добавлено?
      1. 17 титулов,
      2. 14 костюмов,
      3. Эксклюзивный транспорт (SandKing, Rolls-Royce Phantom, BMW I8, BMW M5, BMW Vision M NEXT, Mercedes-Benz G-CLASS).
      4. Автопарк ФБР и всех банд.
      5. Новый анти-чит.
      6. Оптимизация игрового мода.
      7. Премиум и уникальные возможности для владельцев Премиума.
      8. Команда /bonus, где можно получить бесплатно Red Coins.
      9. За АКТИВ даются Red Coins!
      10. Рестарт сервера в 5:00 по МСК.
      11. Радужный клист.
      12. Уникальный тюнинг для эксклюзивных машин и ускорение.
      13. Новая система банка.
      14. Исправлено множество багов.
      15. Новый маппинг.
    • Redmondd
      От Redmondd
      Хочу сделать команду /gpsoff, которая убирает метку