В теме 6 сообщений

Новичок

Здравствуйте, я выкладываю команду /givegun. Что она может? Она выдает оружие игрокам. Код ниже:

Автор: SlenderTop4ik

Команду слил: SlenderTop4ik

	if(strcmp(cmd, "/givegun", true) == 0)
	{
		if(IsPlayerConnected(playerid))
		{
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_YELLOW, "Помощь: /givegun [ид] [ид оружия] [патроны]");
				return 1;
			}
			new playa;
			new gun;
			new ammo;
			giveplayerid = ReturnUser(tmp);
			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
			GetPlayerName(playerid, sendername, sizeof(sendername));
			playa = ReturnUser(tmp);
			tmp = strtok(cmdtext, idx);
			gun = strval(tmp);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_YELLOW, "Помощь: /givegun [ид] [ид оружия] [патроны]");
				SendClientMessage(playerid, COLOR_GRAD1, "1(кастет) 2(клюшка) 3(дубинка) 4(нож) 5(бита)");
				SendClientMessage(playerid, COLOR_GRAD1, "6(лопата) 7(кий) 8(катана) 9(пила) 10-13(фаллосы) 14(букет)");
				SendClientMessage(playerid, COLOR_GRAD1, "15(трость) 16(гранаты) 17(дым) 18(коктейль молотова)");
				SendClientMessage(playerid, COLOR_GRAD1, "22(кольт) 23(глушитель) 24(пустынный орел) 25(дробовик)");
				SendClientMessage(playerid, COLOR_GRAD1, "26(обрезы) 27(дробовик/7) 28(узи) 29(МР5)");
				SendClientMessage(playerid, COLOR_GRAD1, "30(АК47) 31(М16) 32(ТЕС9) 33(винтовка)");
				SendClientMessage(playerid, COLOR_GRAD1, "34(сн.винтовка) 35(базука) 36(базука с СР) 37(огнемет)");
				SendClientMessage(playerid, COLOR_GRAD1, "41(спрей) 42(огнетушитель) 43(фотокамера)");
				SendClientMessage(playerid, COLOR_GRAD1, "44(ПНВ) 45(ПТВ) 46(прашут)");
				return 1;
			}
			tmp = strtok(cmdtext, idx);
			ammo = strval(tmp);
			if(ammo <1||ammo > 9999)
			{ SendClientMessage(playerid, COLOR_GRAD1, "Кол-во патронов от 1 до 9999"); return 1; }
			if (PlayerInfo[playerid][pAdmin] >= 11)//Проверка на админа. Меняйте на свое
			{
				if(IsPlayerConnected(playa))
				{
					if(playa != INVALID_PLAYER_ID)
					{
						PyxiTime[playa] = 5;
						GivePlayerWeapon(playa, gun, ammo);
						SendClientMessage(playerid, COLOR_RED, "Выдано");
						format(string, sizeof(string), "[A] %s выдал %s оружие. (%d-%d-%d)",sendername,giveplayer,gun, ammo);
						ABroadCast(COLOR_GRAD1,string,7);
					}
				}
			}
			else
			{
				SendClientMessage(playerid, COLOR_GRAD1, "У вас нету прав!");
			}
		}
		return 1;
	}

 

Отредактировано пользователем SlenderTop4ik
Причина: Кое-что забыл добавить

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


Ссылка на сообщение
Поделиться на другие сайты
Новичок

D:\!user\Desktop\[FS] Семья\gamemodes\new.pwn(755) : warning 217: loose indentation
D:\!user\Desktop\[FS] Семья\gamemodes\new.pwn(770) : error 017: undefined symbol "sendername"
D:\!user\Desktop\[FS] Семья\gamemodes\new.pwn(770) : error 017: undefined symbol "sendername"
D:\!user\Desktop\[FS] Семья\gamemodes\new.pwn(770) : error 029: invalid expression, assumed zero
D:\!user\Desktop\[FS] Семья\gamemodes\new.pwn(770) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
 

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


Ссылка на сообщение
Поделиться на другие сайты
Активный

Функции:

  • ReturnUser,
  • ABroadCast

Предоставьте.

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

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


Ссылка на сообщение
Поделиться на другие сайты
Активный

Немного оптимизировал, вырезал лишнее, перевел на командный процессор DCMD.
Так же стоит отметить, что для нормальной компиляции и работы данного кода в моде должны быть подключены sscanf2 и foreach.

Спойлер

 


CMD:givegun(playerid, params[]) { //Основа самой команды
	if(PlayerInfo[playerid][pAdmin] < 11) //Проверка на администратора | Меняете на свою
		return SendClientMessage(playerid, COLOR_GRAD1, "У вас нету прав!"); //Выдача сообщения, если игрок не является администратором

	extract params -> new id, gunid, ammo; else //Проверка на валидность введенных данных
		return SendClientMessage(playerid,COLOR_YELLOW,!"Помощь: /givegun [ид] [ид оружия] [патроны]"); //Выдача сообщения при невалидности

	if(1 > ammo > 9999) //Проверка на введенное количество патронов
		return SendClientMessage(playerid,-1,!"Количество патронов от 1 до 9999"); //Выдача сообщения, если было введено невалидное количество патронов

	GivePlayerWeapon(playa, gun, ammo); //Выдача самого оружия

	new
		aName[MAX_PLAYER_NAME],
		pName[MAX_PLAYER_NAME]; //Переменные для получения имен игроков

	GetPlayerName(playerid,aName, sizeof(aName));
	GetPlayerName(id,pName, sizeof(pName)); //Получение имен игроков

	format(string,sizeof(string),"[A] %s выдал %s оружие. (%d-%d-%d)",aName,pName,gun, ammo); //Форматирование сообщения
	
	foreach(new i:Player) { //Цикл для выдачи сообщения администрации
		if(PlayerInfo[playerid][pAdmin] != 0) //Проверка на администратора | Меняете на свою
			SendClientMessage(i,-1,string); //Выдача сообщения
    }
	return SendClientMessage(playerid, COLOR_RED,!"Выдано"); //Выдача сообщения игроку, прописавшему команду, завершение действия команды
}


И.. Псс.. Чел ? А ты сам заметил что те сообщения с ID оружия, которые по твоей задумке должны выводится, просто напросто никогда не смогут вывестись? :D
Если поднять глаза чуть выше этих самых сообщений, можно найти абсолютно идентичную проверку, в конце которой стоит return, т.е. ты возвращаешь действие.

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

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

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

    • От xDetik
      Приветствую.
      Сделал небольшой островок на некотором расстоянии от карты Сан-Андреса, хотел поставить там пикап, добавил пикап в мод, и после того как приехал на остров, пикап не видно. Но если на этом же пикапе поменять координаты на те, которые находятся на карте Сан-Андреса, то он становится виден. В чем может быть проблема?
    • От xwezzzx
      Куплю проект, нужен SA:MP
      Мой бюджет 5.000 Рублей.
      Нужно-Готовый лаунчер, Запуск через ПК и Телефон, Маппинг, Минимум 2 проработанных работ, Скины, Автомобили, Организации и так далее.
      Можем договорится на цену более 5.000, все будет зависеть от того какие системы и проработанность.
      КОПИИ ДРУГИХ ПРОЕКТОВ НЕ НУЖНЫ!
      Связь только через вк *ТЫК*


      хорошего дня
    • От dante34538
      ищу гейм мод самп рп, который не был в пабликах, по цене до 3000р, писать в вк https://vk.com/screamzmorrow