Вопросы

Работает опять-же криво.
Пишеться в игре [A][A-GUN] Основатель %s выдал оружие игроку <пустое место> Так-же с примерно той-же командой только уже /gun Спросите нах я сделал /agun? Потому-что игроки выдавали себе миниган и творили с ним что хотели,вот я и добавил /agun может выдавать все оружки кроме 45 Я хз почему оставил 45 ид Но я думал будет ошибка если я уберу весь case  в общем /agun выдаёт всё а у /gun запрещёнки есть довольно большие. помоги плиз.С меня +-ик

CMD:agun(playerid, params[])
{
	if(PlayerInfo[playerid][pAlcoInvenxua] < 15) return true;
	if(sscanf(params, "ddd",params[0],params[1],params[2])) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /agun [id] [id оружия /gi] [патроны]");
	if(!IsPlayerConnected(params[0])) return true;
	if(params[2] < 1 || params[2] > 9999) return SendClientMessage(playerid, COLOR_GRAD1, "Нельзя меньше 1 или больше 9999 патронов!");
	if(params[1] < 1 || params[1] > 46) return SendClientMessage(playerid, COLOR_GREY, "ID оружия от 1 до 46!");
	switch(params[1])
	{
		case 45: return SendClientMessage(playerid, COLOR_GRAD1, "Запрещенное оружие!");
	}
	GiveWeapon(params[0],params[1],params[2]);
	SendClientMessage(playerid, COLOR_GRAD1, "Оружие Выдано!");
	SendClientMessage(playerid, COLOR_GRAD1,stringer1);
	format(stringer1,sizeof(stringer1),"{00FF00}[A][A-GUN]{FF0000}Основатель %s выдал Вам оружие!", PlayerInfo[playerid][pNames]);
	format(stringer1,sizeof(stringer1),"{00FF00}[A][A-GUN]{FF0000}Основатель %s выдал оружие игроку %s", PlayerInfo[playerid][pNames][pNames]);
	SendAdminMessage(COLOR_RED,stringer1);
	return true;
}

И ещё не могли бы вы сделать для меня команду /fakeban ? С диалогом что  вы получили бан?Я думаю всем ясна данная команда,но всё-же скажу. Это даёт ФЕЙКОВЫЙ бан,не банит игрока и желательно чтобы не снимала админку а то было такое что снималось админка. Кто сделаем там +-ик :D  Спасибо заранее
Командный Процессор DC_CMD обязательно плиз :D

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

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


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

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

  • 0

@AnimeshniK По поводу проблемы с форматированием. Проблема опять такая же, как и в прошлой теме. В этот раз поясню подробней. 

Format - функция для форматированного ввода в строку, т.е. она записывает данные в переменную.

SendClientMessage - функция для вывода (отправки строки игроку). 

Теперь логически сопоставьте, что нужно выполнить первым: ввод или вывод?

  Правильный вариант кода (открыть спойлер)

Ссылки на документацию:

https://wiki.sa-mp.com/wiki/Format

https://wiki.sa-mp.com/wiki/SendClientMessage

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


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

Енум с диалогами(если имеется)

fakeban

OnDialogResponse

case fakeban:
		{
			if(response)
			{
				SendClientMessage(playerid, -1, "Ха-ха-ха-ха-ха, а я пошутииил! :)");
			}
		}

И в любое место в моде)

cmd:fakeban(playerid,params[])
{
	new id,reason[64];
	if(sscanf(params,"us[64]",id,reason)) return SendClientMessage(playerid, -1, "Usage: /fakeban [ID][Причина]");
	if(id < 0 || id > 499) return SendClientMessage(playerid, -1, "Неверный ID");
	new dialog[256];
	format(dialog,sizeof dialog, "Вы были забанены на сервере (НАЗВАНИЕ).\n\
		Причина: %s",reason);
	ShowPlayerDialog(playerid, fakeban, DIALOG_STYLE_MSGBOX, "Уведомление:", dialog, "Принять", "");
	return 0;
}

Пробежимся по коду:
В перечисляемый список enum (ха-ха-ха) добавим название нашего диалога: fakeban
В паблик с диалогами(OnPlayerDialog), напишем: делаем проверку, если нажата клавиша 1(Принять), то высветится сообщение с шуткой(лол как смешно). 
Затем мы пишем саму команду, кстати, cmd на CMD замени, попробуй, если ошибки будут.
Создаём переменные с ID и reason, ставьте размерность сообщения по своему вкусу, после с помощью SSCANF принимаем параметры. Затем проверяем id игрока, проверка ужасна, но работает( может быть xD ) 
Затем выделяем память под текст диалога, выделил побольше, т.к ещё и причина входит в этот состав, можно было сделать по уму, но если не принципиально :) Затем форматируем текст, после выводим диалог, P R O F I T.

Судя по ТЗ , вам требовалось это?)

 

__________________
/gun , /agun код скинь

 

Упс, да, не заметил код, сори. В общем попробуй new string[512]; (внутри твоей команды) , и stringer1 заменить на string

Отредактировано пользователем keyl1337
Причина: пофиксил один эррор, разобрал свой полезный урок, хаха

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


Ссылка на сообщение
  • 0
  В 8/10/2019 в 09:20, keyl1337 сказал:

Енум с диалогами(если имеется)

fakeban

OnDialogResponse

case fakeban:
		{
			if(response)
			{
				SendClientMessage(playerid, -1, "Ха-ха-ха-ха-ха, а я пошутииил! :)");
			}
		}

И в любое место в моде)

cmd:fakeban(playerid,params[])
{
	new id,reason[64];
	if(sscanf(params,"us[64]",id,reason)) return SendClientMessage(playerid, -1, "Usage: /fakeban [ID][Причина]");
	if(id < 0 || id > 499) return SendClientMessage(playerid, -1, "Неверный ID");
	new dialog[256];
	format(dialog,sizeof dialog, "Вы были забанены на сервере (НАЗВАНИЕ).\n\
		Причина: %s",reason);
	ShowPlayerDialog(playerid, fakeban, DIALOG_STYLE_MSGBOX, "Уведомление:", dialog, "Принять", "");
	return 0;
}

Пробежимся по коду:
В перечисляемый список enum (ха-ха-ха) добавим название нашего диалога: fakeban
В паблик с диалогами(OnPlayerDialog), напишем: делаем проверку, если нажата клавиша 1(Принять), то высветится сообщение с шуткой(лол как смешно). 
Затем мы пишем саму команду, кстати, cmd на CMD замени, попробуй, если ошибки будут.
Создаём переменные с ID и reason, ставьте размерность сообщения по своему вкусу, после с помощью SSCANF принимаем параметры. Затем проверяем id игрока, проверка ужасна, но работает( может быть xD ) 
Затем выделяем память под текст диалога, выделил побольше, т.к ещё и причина входит в этот состав, можно было сделать по уму, но если не принципиально :) Затем форматируем текст, после выводим диалог, P R O F I T.

Судя по ТЗ , вам требовалось это?)

 

__________________
/gun , /agun код скинь

 

Упс, да, не заметил код, сори. В общем попробуй new string[512]; (внутри твоей команды) , и stringer1 заменить на string

Читать далее...  

Спасибо конечно,но я начинающий,так что почти нечего не понял из выше сказанного :D Можешь плиз по проще?

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


Ссылка на сообщение
  • 0
  В 8/10/2019 в 13:35, DEST сказал:

@AnimeshniK По поводу проблемы с форматированием. Проблема опять такая же, как и в прошлой теме. В этот раз поясню подробней. 

Format - функция для форматированного ввода в строку, т.е. она записывает данные в переменную.

SendClientMessage - функция для вывода (отправки строки игроку). 

Теперь логически сопоставьте, что нужно выполнить первым: ввод или вывод?

  Правильный вариант кода (открыть спойлер)

Ссылки на документацию:

https://wiki.sa-mp.com/wiki/Format

https://wiki.sa-mp.com/wiki/SendClientMessage

Читать далее...  

Простите,я понимаю что вы профессионал в своём деле,но не могли бы вы для меня сделать Код или что там надо который рабоает как-то так при форматирований тех строк Администратор %s выдал оружие %d[Тут тип пишеться Desert Eagle и  т.д]  игроку %s с %d[тут патроны скольк выдал] патронами. Очень прошу :D

  В 8/10/2019 в 13:35, DEST сказал:

@AnimeshniK По поводу проблемы с форматированием. Проблема опять такая же, как и в прошлой теме. В этот раз поясню подробней. 

Format - функция для форматированного ввода в строку, т.е. она записывает данные в переменную.

SendClientMessage - функция для вывода (отправки строки игроку). 

Теперь логически сопоставьте, что нужно выполнить первым: ввод или вывод?

  Правильный вариант кода (открыть спойлер)

Ссылки на документацию:

https://wiki.sa-mp.com/wiki/Format

https://wiki.sa-mp.com/wiki/SendClientMessage

Читать далее...  

Увы но не работает этот ваш Правильный Варьянт.

sa-mp-024.png

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


Ссылка на сообщение
  • 0
  В 8/10/2019 в 13:01, AnimeshniK сказал:

Спасибо конечно,но я начинающий,так что почти нечего не понял из выше сказанного :D Можешь плиз по проще?

Читать далее...  

Попроще  = CTRL + C , CTRL + V

 

Ещё попроще , скопируешь вставишь только команду -_-

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

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


Ссылка на сообщение
  • 0
  В 8/10/2019 в 17:19, keyl1337 сказал:

Попроще  = CTRL + C , CTRL + V

 

Ещё попроще , скопируешь вставишь только команду -_-

Читать далее...  

Так а как хотя-б выглядит этот Енум с диалогами??

 

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


Ссылка на сообщение
  • 0
  В 8/10/2019 в 17:30, AnimeshniK сказал:

Так а как хотя-б выглядит этот Енум с диалогами??

 

Читать далее...  

Вообще идентично обычному енуму, т.е
 

enum e_DialogID
{
	none,
  	fakeban,
  	register,
}
//и сюда просто кидаешь названия диалогов, никаких запар :)

Если у тебя его нет, то .. я думаю , ну в принципе, можешь создать, и в дальнейшем его юзать) В DialogResponse , просто писать 
 

switch(dialogid)
{
  case fakeban:
    {}
    
  case name_of_dialog: // вот так прросто добавляешь диалоги (:
}



UPD:
И все enum'ы, лучше называй  так: "e_name_of_enum", в последующем , другому кодеру будет удобно юзать его.

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

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


Ссылка на сообщение
  • 0
  В 8/10/2019 в 19:31, keyl1337 сказал:

Вообще идентично обычному енуму, т.е
 

enum e_DialogID
{
	none,
  	fakeban,
  	register,
}
//и сюда просто кидаешь названия диалогов, никаких запар :)

Если у тебя его нет, то .. я думаю , ну в принципе, можешь создать, и в дальнейшем его юзать) В DialogResponse , просто писать 
 

switch(dialogid)
{
  case fakeban:
    {}
    
  case name_of_dialog: // вот так прросто добавляешь диалоги (:
}



UPD:
И все enum'ы, лучше называй  так: "e_name_of_enum", в последующем , другому кодеру будет удобно юзать его.

Читать далее...  

Прости,а ты не знаешь как сделать телепорт игрока вместе  с машиной ??

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


Ссылка на сообщение
  • 0
  В 8/11/2019 в 13:56, AnimeshniK сказал:

Прости,а ты не знаешь как сделать телепорт игрока вместе  с машиной ??

Читать далее...  
SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z); 

 

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


Ссылка на сообщение
  • 0
  В 8/11/2019 в 14:33, keyl1337 сказал:
SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z); 

 

Читать далее...  

Не работает.

  В 8/11/2019 в 14:33, keyl1337 сказал:
SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z); 

 

Читать далее...  
CMD:tun(playerid)
{
	if(PlayerInfo[playerid][pAlcoInvenxua] < 1) return true;
	if(PlayerInfo[playerid][pPayDayHad] > 5) return SendClientMessage(playerid, -1, "{ff0000}Âû íå îòûãðàëè 5 ÷àñîâ.");
	SendClientMessage(playerid, COLOR_YELLOW, "Âû óñïåøíî òåëåïîðòèðîâàëèñü ê Òþíèíã-Ñàëîíó.");
	SetPPos(playerid, -1778.31, 1200.12, 24.73);
   	SetVehiclePos(GetPlayerVehicleID(playerid), -1778.31, 1200.12, 24.73);
	return true;
}

Вот код команды,которая должна тебя тепать с тачкой. Почему не работает??И как сделать чтобы можно было тепаться на любой админке,а то почему-то возможно тепатся только с 1 лвлом админки подскажите плиз Уже пробовал символ сменить на > не помогло.

 

Помогите плиз и с этой командой,ты проигрываешь и у тебя списываються вирты но после их как-будто сервер восстанавливает..

CMD:cubik(playerid, params[])
{
    if(sscanf(params, "dd", params[0], params[1]))  {
        SendClientMessage(playerid, 0xFF8000AA, !"Èñïîëüçóéòå /cubik [÷èñëî 1-6][Ñóììà Ñòàâêè] ÷òîáû áðîñèòü êóáèê.");
        return SendClientMessage(playerid, 0xFF8000AA, !"Óñëè âû óãàäàåòå âû ïîëó÷èòå ñóììó ñòàâêè óìíîæåííóþ íà 10.");
    }

    if(1 < params[0] > 6)
        return SendClientMessage(playerid, 0xFF8000AA, !"×èñëî îò 1 äî 6.");

    if(100 < params[1] > 1000000)
        return SendClientMessage(playerid, 0xFF8000AA, !"Ñóììà ñòàâêè íå äîëæíà áûòü ìåíüøå 100$ è áîëüøå 1.000.000$.");

    if(params[0] == random(6 + 1)) {
        SendClientMessage(playerid, 0xFF8000AA, !"Âû âûèãðàëè è ïîëó÷àåòå ñóììó ñòàâêè óìíîæåííóþ íà 10.");
        return GivePlayerMoney(playerid, params[1]  * 10);
    }
    else {
    	SendClientMessage(playerid, 0xFF8000AA, !"Âû ïðîèãðàëè!");
        GivePlayerMoney(playerid, -params[0]);
    }
    return 1;
}

 

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


Ссылка на сообщение
  • 0
  В 8/11/2019 в 15:54, AnimeshniK сказал:

Не работает.

CMD:tun(playerid)
{
	if(PlayerInfo[playerid][pAlcoInvenxua] < 1) return true;
	if(PlayerInfo[playerid][pPayDayHad] > 5) return SendClientMessage(playerid, -1, "{ff0000}Âû íå îòûãðàëè 5 ÷àñîâ.");
	SendClientMessage(playerid, COLOR_YELLOW, "Âû óñïåøíî òåëåïîðòèðîâàëèñü ê Òþíèíã-Ñàëîíó.");
	SetPPos(playerid, -1778.31, 1200.12, 24.73);
   	SetVehiclePos(GetPlayerVehicleID(playerid), -1778.31, 1200.12, 24.73);
	return true;
}

Вот код команды,которая должна тебя тепать с тачкой. Почему не работает??И как сделать чтобы можно было тепаться на любой админке,а то почему-то возможно тепатся только с 1 лвлом админки подскажите плиз Уже пробовал символ сменить на > не помогло.

 

Помогите плиз и с этой командой,ты проигрываешь и у тебя списываються вирты но после их как-будто сервер восстанавливает..

CMD:cubik(playerid, params[])
{
    if(sscanf(params, "dd", params[0], params[1]))  {
        SendClientMessage(playerid, 0xFF8000AA, !"Èñïîëüçóéòå /cubik [÷èñëî 1-6][Ñóììà Ñòàâêè] ÷òîáû áðîñèòü êóáèê.");
        return SendClientMessage(playerid, 0xFF8000AA, !"Óñëè âû óãàäàåòå âû ïîëó÷èòå ñóììó ñòàâêè óìíîæåííóþ íà 10.");
    }

    if(1 < params[0] > 6)
        return SendClientMessage(playerid, 0xFF8000AA, !"×èñëî îò 1 äî 6.");

    if(100 < params[1] > 1000000)
        return SendClientMessage(playerid, 0xFF8000AA, !"Ñóììà ñòàâêè íå äîëæíà áûòü ìåíüøå 100$ è áîëüøå 1.000.000$.");

    if(params[0] == random(6 + 1)) {
        SendClientMessage(playerid, 0xFF8000AA, !"Âû âûèãðàëè è ïîëó÷àåòå ñóììó ñòàâêè óìíîæåííóþ íà 10.");
        return GivePlayerMoney(playerid, params[1]  * 10);
    }
    else {
    	SendClientMessage(playerid, 0xFF8000AA, !"Âû ïðîèãðàëè!");
        GivePlayerMoney(playerid, -params[0]);
    }
    return 1;
}

 

Читать далее...  

Раскладку смени и перекопируй код заново.
Там где с 1-ым лвлом админки, нужен код)
После перезахода восстанавливает? 

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

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


Ссылка на сообщение
  • 0
  В 8/11/2019 в 19:17, keyl1337 сказал:

Раскладку смени и перекопируй код заново.
Там где с 1-ым лвлом админки, нужен код)
После перезахода восстанавливает? 

Читать далее...  

Всм восстанавливает ? :D Можете написать мне правильный код?

 

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


Ссылка на сообщение
  • 0
  В 8/11/2019 в 19:19, AnimeshniK сказал:

Всм восстанавливает ? :D Можете написать мне правильный код?

 

Читать далее...  

в смысле деньги восстанавливаются после перезахода? 

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


Ссылка на сообщение
  • 0
  В 8/11/2019 в 19:58, keyl1337 сказал:

в смысле деньги восстанавливаются после перезахода? 

Читать далее...  

Ну тип деньги сразу восстанавливаются Тип с начала идут в минус а после восстанавливаются,идут в минус  я имел ввиду ЧТо убывают.

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


Ссылка на сообщение
  • 0
  В 8/10/2019 в 13:35, DEST сказал:

@AnimeshniK По поводу проблемы с форматированием. Проблема опять такая же, как и в прошлой теме. В этот раз поясню подробней. 

Format - функция для форматированного ввода в строку, т.е. она записывает данные в переменную.

SendClientMessage - функция для вывода (отправки строки игроку). 

Теперь логически сопоставьте, что нужно выполнить первым: ввод или вывод?

  Правильный вариант кода (открыть спойлер)

Ссылки на документацию:

https://wiki.sa-mp.com/wiki/Format

https://wiki.sa-mp.com/wiki/SendClientMessage

Читать далее...  

Кстати,не решилась проблема. Всё так-же пишет Администратор Alexei_Cheetov выдал <пробел> / Ну кароче всё (Слово удалено системой) не работает :D Буду рад если скинете доделанный и правильный код\

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


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

@AnimeshniK Нужно исправить аргументы форматирования, порядок операций там правильный. 

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


Ссылка на сообщение
  • 0
  В 8/15/2019 в 19:24, DEST сказал:

@AnimeshniK Нужно исправить аргументы форматирования, порядок операций там правильный. 

Читать далее...  

Прости но я всё-же так не понимаю,я понимаю если ты например пример напишешь :D Уж прости но так учился я скриптингу :D Ну и ещё учусь.

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


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

Отпишите мне в Личные Сообщения, сделаю вам команду нормально и ее никто не сможет использовать с исключением Администратора и то с определенного уровня.

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


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

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

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

    • hatriyikko
      От hatriyikko
      Рад приветствовать!

      Нужна помощь с копией радмира. Есть комплект клиент + мод радмир 5.9 (Всё это могу прислать).

      Требуется правка экономики (сделать цены, зарплаты и бонусы как в оригинальном радмире) и подправить пикапы чтобы они были в нужных местах (чтобы не было повисших в воздухе пикапов и т д)

      Если есть уже готовый мод версии близкой к 5.9 с экономикой как в оригинальном радмире и рабочими пикапами то тоже рассмотрю его покупку.

      Напишите сколько это будет стоить?

      В дальнейшем также могут понадобиться какие то доработки мода, если всё ок рассматриваю долгосрочное сотрудничество

      Связь тут или в тг @kovart7
    • Michov Andr
      От Michov Andr
      Re:samp RP — проект в разработке
      Re:samp RP — это SA-MP в стиле RP-проект, который в данный момент находится в активной разработке. Мы создаём сервер с бонусной системой, где механики будут, и игроки смогут развивать свои персонажи, зарабатывать деньги и взаимодействовать с окружающим миром. Однако, главное — это ролевой процесс. Вы сами выбираете, хотите ли вы заниматься бизнесом и фармом или погружаться в глубокую ролевую игру. Всё зависит от того, какой путь вы хотите пройти.
      Мы стремимся к тому, чтобы на сервере не было скучного фарма и бесконечных рутинных задач. Всё будет сбалансировано так, чтобы каждый игрок мог выбрать свой стиль игры и наслаждаться процессом, будь то отыгрыш роли, развитие персонажа или участие в экономике.
      Что касается доната — на сервере будет доступна возможность покупки привилегий, включая покупку админки. Мы не планируем делать донат обязательным для прогресса, и он не будет влиять на геймплей, но те, кто хотят ускорить процесс или получить дополнительные возможности, смогут воспользоваться такими предложениями. Всё сделано так, чтобы не нарушать баланс и не превращать сервер в платный путь к успеху.
      Re:samp RP — это сервер, где каждый игрок может найти для себя интересное занятие и, главное, где всегда будет место для качественной ролевой игры. Мы не навязываем никаких обязательных механик, и все решения остаются за вами. Стартовый бонус, донат, админки — это всё дополнительные возможности, но не основа игры. 
      Discrod:https://discord.gg/ernRMjyEJy
       
             
      на логотип не смотрим да признаюсь взял с самп рп() но уж больно он норм)
    • djxxx
      От djxxx
      приветствую всех.
       
      Задался таким вопросом при добавлении одной системы на DIALOG_STYLE_TABLIST_HEADERS.
       
      Суть проблемы в том, что диалог не выравнивается под нужные показатели, а просто как будто находиться по середине, в диалоге используется \t, но они особо не помогают в решении, также не ровно.
       
      а если попытаться выравнивать большим количеством \t, оно компилируется но в игре происходят вылеты
       
      Код такой:
      DialogAdmShop ( playerid, DIALOG_EPOINTSHOP, DIALOG_STYLE_TABLIST_HEADERS, fmt_str, ""BR"номер\t"BR"наименование\t"BR"доступное действие\n"\ "{EB4C42}#1\t{FFFFFF}Виртуальная валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#2\t{FFFFFF}Донат валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#3\t{FFFFFF}Вип статусы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#4\t{FFFFFF}Кейсы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#5\t{FFFFFF}Уникальные аксессуары\t{888888}нажмите для взаимодействия", "Выбрать", "Закрыть" ); }  
      сток dialogadmshop:
      stock DialogAdmShop(playerid, dialogid, style, title[], text[], button[], button2[]) {   if(style == 5)   {      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "...", "...", "...", "");    }   ShowPlayerDialog(playerid, dialogid, style, title, text, button, button2);   return 1; }