Перейти к содержанию
Авторизация  
William Cobalt

[CMD]Команды /me, /ame, /do, /todo, /s, /n, /try для процессора DC_CMD

Рекомендуемые сообщения

William Cobalt

Привет, выложил лёгкие команды, наверное есть на форуме, но я выложил свои.

Автор : я

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

[spoiler=Код]

CMD:me(playerid, params[])
{
if(sscanf(params, "s[118]", params[0])) return SCM(playerid, COLOR_GREY, !"Используйте /me [текст]");
new string[144];
format(string, sizeof(string), "%s %s", PlayerInfo[playerid][pName], params[0]);
ProxDetector(20.0, playerid, string, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF);
SetPlayerChatBubble(playerid, params[0], 0xDE92FFFF, 20, 7500);
return 1;
}
CMD:do(playerid, params[])
{
if(sscanf(params, "s[116]", params[0])) return SCM(playerid, COLOR_GREY, !"Используйте /do [текст]");
new string[144];
format(string, sizeof(string), "%s (%s)", params[0], PlayerInfo[playerid][pName]);
ProxDetector(20.0, playerid, string, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF);
SetPlayerChatBubble(playerid, params[0], 0xDE92FFFF, 20, 7500);
return 1;
}
CMD:ame(playerid, params[])
{
if(sscanf(params, "s[144]", params[0])) return SCM(playerid, COLOR_GREY, !"Используйте /ame [текст]");
SetPlayerChatBubble(playerid, params[0], 0xDE92FFFF, 20, 7500);
return 1;
}
CMD:try(playerid, params[])
{
if(sscanf(params, "s[99]", params[0])) return SCM(playerid, COLOR_GREY, !"Используйте /try [текст]");
new string[144];
format(string, sizeof(string), "%s %s | %s", PlayerInfo[playerid][pName], params[0], (!random(2)) ? ("{FF0000}Неудачно") : ("{32CD32}Удачно"));
ProxDetector(20.0, playerid, string, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF);
return 1;
}
CMD:todo(playerid, params[])
{
if(strlen(params) > 95) return SCM(playerid, COLOR_GREY, !"Слишком длинный текст и действие");
new message[48], action[49];
if(sscanf(params, "p<*>s[47]s[48]", message, action)) return SCM(playerid, COLOR_GREY, !"Используйте /todo [текст*действие]");
if(strlen(message) < 2 || strlen(action) < 2) return SCM(playerid, COLOR_GREY, !"Используйте /todo [текст*действие]");
new string[144];
format(string, sizeof(string), "- '%s' - {DE92FF}сказал%s %s, %s", message, (player_info[playerid][SEX] == 1) ? ("") : ("а"), PlayerInfo[playerid][pName], action);
ProxDetector(20.0, playerid, string, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE);
return 1;
}
CMD:n(playerid, params[])
{
if(sscanf(params, "s[107]", params[0])) return SCM(playerid, COLOR_GREY, !"Используйте /n [сообщение]");
new string[144];
format(string, sizeof(string), "(( %s[%d]: %s ))", PlayerInfo[playerid][pName], playerid, params[0]);
ProxDetector(20.0, playerid, string, 0xCCCC99FF, 0xCCCC99FF, 0xCCCC99FF, 0xCCCC99FF, 0xCCCC99FF);
return 1;
}
CMD:s(playerid, params[])
{
if(sscanf(params, "s[105]", params[0])) return SCM(playerid, COLOR_GREY, !"Используйте /s [текст]");
new string[144];
format(string, sizeof(string), "%s[%d] крикнул: %s", PlayerInfo[playerid][pName], playerid, params[0]);
ProxDetector(30.0, playerid, string, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE);
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
ApplyAnimation(playerid, "ON_LOOKERS", "shout_01", 4.1,0,0,0,0,0);
}
SetPlayerChatBubble(playerid, params[0], COLOR_WHITE, 25, 7500);
return 1;

}

 

Изменено пользователем hteppl
  • Like 4

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


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

Подскажи пожалуйста что и куда, новичек в этом деле просто. Закинул всё в команды, получилось вот так: (Ошибки)


C:\Users\User\Desktop\Russia Project\gamemodes\RPG.pwn(232) : error 017: undefined symbol "SCM"
C:\Users\User\Desktop\Russia Project\gamemodes\RPG.pwn(234) : error 017: undefined symbol "PlayerInfo"
C:\Users\User\Desktop\Russia Project\gamemodes\RPG.pwn(234) : warning 215: expression has no effect
C:\Users\User\Desktop\Russia Project\gamemodes\RPG.pwn(234) : error 001: expected token: ";", but found "]"
C:\Users\User\Desktop\Russia Project\gamemodes\RPG.pwn(234) : error 029: invalid expression, assumed zero
C:\Users\User\Desktop\Russia Project\gamemodes\RPG.pwn(234) : fatal error 107: too many error messages on one line

232 строка- if(sscanf(params, "s[118]", params[0])) return SCM(playerid, COLOR_GREY, !"Используйте /me [текст]");
234 строка - format(string, sizeof(string), "%s %s", PlayerInfo[playerid][pName], params[0]);

Что не так? 

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


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

 

 


PlayerInfo[playerid][pName]

замени на GetName(playerid)

 

и добавь

stock GetName(i)
{
    new name[24];
    GetPlayerName(i, name, 24);
    return name;
}

И в начало мода добавь #define SCM SendClientMessage

(туда где все #define)

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


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

@ChillyVilly, всё исправилось ? если нет, то пиши какие ошибки остались 

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


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

 

 


if(sscanf(params, "s[144]", params[0])) return SCM(playerid, COLOR_GREY, !"Используйте /ame [текст]");

 

В строку чата можно ввести только лишь 128 символов  :-)

И можно еще в начале каждой команды добавить, точно ли введены какие-нибудь параметры. Чтобы с самого начала не вызывать нативную функцию, а произвести обычную проверку:

if(params[0] == '\0') return SendClientMessage(playerid, COLOR_GRAY, !"Используйте /me [текст]"); // на примере первой команды

А чтобы дважды не вводить текст "Используйте /me [text]", который дважды потом попадает в память (а значит и берет лишний раз пространство), лучше вынести этот текст в начало:

static const MSG_USE_CMD[] = !"Используйте /me [текст]";
if(params[0] == '\0') return SendClientMessage(playerid, COLOR_GRAY, MSG_USE_CMD);
if(sscanf(params, "s[118]", params[0])) return SendClientMessage(playerid, COLOR_GRAY, MSG_USE_CMD);

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


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

, он не сам писал явно,  да и врятли учтет и запомнит о чем ты.

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


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

@Wеb, уверен не сам ? я пишу мод по урокам, запоминаю, и пишу команды и т.д, и вообще мне по*уй на твоё мнение, пиши что хочешь 

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


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

На мое мнение все равно? Мое мнение основано на многолетнем опыте. Таких "Скриптеров" я повидал очень много. Критику надо уметь принимать, тем более объективную. Как в жизни так и в интернете. А не хамить, что как бы намекает на не самые лучшие личностные качества. Ну и модераторы, не пропускайте такие команды. Следите за качеством.

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


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

Остальное по примеру.

 

CMD:me(playerid, params[])
{
	extract params -> new string:text[110]; else 
		return SendClientMessage(playerid, -1, !"Используйте: /me текст");
	
	if(isnull(text)) 
		return SendClientMessage(playerid, -1, !"Используйте: /me текст");
	
	static string[MAX_CHATBUBBLE_LENGTH + 1];
	format(string, sizeof(string), "%s %s", проверка_на_ник, text);
	ProxDetector(20.0, playerid, string, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF, 0xDE92FFFF);
	SetPlayerChatBubble(playerid, text, 0xDE92FFFF, 20, 7500);
	
	return 1;
}

 

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


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

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

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

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.