В теме 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.
 

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


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

@Braavos какой в моде командный процессор используется. Скинь начало  любой команды. 

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


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

причём тут mxINI ? (я про название темы)

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


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

Функции:

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

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

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

    • Talex
      От Talex
      Всем привет, сливаю первый мод!
      Информация о моде:

      — Основа Gamenix.
      — Мод переведен на Mysql R39, теперь ни каких слётов нет, мод работает стабильно с онлайном 160+.
      — Новый автосалон на TextDraw.
      — Система 3-х автомобилей (1 можно купить по дефолту, 2 и 3 за донат).
      — Автомобили у игроков теперь не пропадают (Id'ы авто сбивались, с номерами теперь тоже всё в порядке).
      — Оформление сервера полностью переработано, теперь оно более красивое.
      — Защита от копирования карты.
      — в меню сервера добавлен пункт визуальных настроек.
      — Номера на транспорт теперь можно приобрести в /donate.
      — Сделан новый красивый спидометр.
      — При получении номера, добавлен выбор региона.
      — Сделана система радаров и промокодов, создание прямо из игры.
      — Новый интерьер казино.
      — Магазин скинов теперь на TextDraw.
      — Автошкола полностью функционирует.
      — Добавлена информация после коннекта о последнем входе в собственный аккаунт.
      — Приватная защита от всех видов DDoS атак и DoS атак.                                                                                                                                    
      — пароль от АП (/alog) теперь у каждого администратора индивидуальный.
      — Изменено оформление самого мода
      Это не все изменения мода, их ещё очень много. все не упомнишь. 
      Автор мода: Неизвестен
      CUNBERS RP 8.4.3.rar
       

    • Tufxgod
      От Tufxgod
      Пойду на проект в качестве разработчика.
      Опыт в павн 2 года, умею писать системы любой сложности, владею mysql.
      Пишите в лс!
    • tivan666ban
      От tivan666ban
      дедуги в консоли при подключении к серверу: [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
      [debug]  Stack pointer (STK) is 0xFFFEC394, heap pointer (HEA) is 0x1B40
      [debug] AMX backtrace:
      [debug] #0 00000000 in public OnPlayerConnect () in Untitled.amx