PDA

Просмотр полной версии : [Вопрос] Команды/me , /getip



heralt
19.02.2015, 21:46
Вообщем команды работают неправильно.

1. Команда /me, просто пишет мне Используйте:/me [текст]


dcmd_me(playerid, params[])
{
#pragma unused params
new string[88], name[MAX_PLAYER_NAME], text[64];
GetPlayerName(playerid, name, sizeof(name));
if(sscanf(text,"u",text)) return SendClientMessage(playerid, COLOR_WHITE,"Èñïîëüçóéòå: /me [òåêñò]");
format(string, 178, "%s %s", name, text);
SendClientMessage(playerid, white, text);
ProxDetector(30.0, playerid, text, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
SetPlayerChatBubble(playerid, text, COLOR_PURPLE, 30.0, 10000);
return true;
}

2. Команда /getip должна действовать по id (/getip [id]), но она показывает твое айпи. :c


dcmd_getip(playerid, params[])
#pragma unused params
{
if(PlayerInfo[playerid][pAdminLevel] >= 2)
{
new name[MAX_PLAYER_NAME], ipStr[16], messageStr[48];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerIp( playerid, ipStr, 16 );
format(messageStr, 48, "[IP|%s] -- %s", name, ipStr );
SendClientMessage(playerid, white, messageStr);
}
return true;
}

L0ndl3m
19.02.2015, 22:05
#pragma unused params
уберите и замените

if(sscanf(text,"u",text))
на

if(isnull(params))
а далее вместо text в команде используйте слово params.

heralt
19.02.2015, 22:21
Команда /me.

1. Изменил, по твоему cовету, код получился таков:


dcmd_me(playerid, params[])
{
new string[88], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(isnull(params)) return SendClientMessage(playerid, COLOR_WHITE,"Используйте: /me [текст]");
format(string, 178, "%s %s", name, params);
SendClientMessage(playerid, white, params);
ProxDetector(30.0, playerid, params, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
SetPlayerChatBubble(playerid, params, COLOR_PURPLE, 30.0, 10000);
return true;
}

А получилось вот что: http://imgur.com/mPE9VG0


public OnPlayerText(playerid, text[])
{
SetPlayerChatBubble(playerid, text, white, 100.0, 10000);
if(GetPVarInt(playerid,"Logged") == 0)
{
SendClientMessage(playerid, red, "Îøèáêà: àâòîðèçóéñÿ, ÷òî áû ïèñàòü â ÷àò.");
return 0;
}
if(GetPVarInt(playerid, "maska_odeta"))
{
new nickvmaske[78];
if(GetPVarInt(playerid, "maska_odeta") == 1) format(nickvmaske, sizeof(nickvmaske),"Íåèçâåñòíûé: %s", text);
SendClientMessage(playerid, 0x000000AA, nickvmaske);
return 0;
}
return 1;
}

L0ndl3m
19.02.2015, 23:04
Создаёте массив на 88 ячеек, используете 178. Логика где? 178 пробуйте на 88 заменить.

heralt
19.02.2015, 23:34
Так. Проблема с двойными строками исключена.
Теперь нужно исправить проблему с ником. Он не отображается.


dcmd_me(playerid, params[])
{
new string[88], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(isnull(params)) return SendClientMessage(playerid, COLOR_WHITE,"Èñïîëüçóéòå: /me [òåêñò]");
format(string, 88, "%s %s", name, params);
ProxDetector(30.0, playerid, params, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
SetPlayerChatBubble(playerid, params, COLOR_PURPLE, 30.0, 10000);
return true;
}

http://i.imgur.com/7pREAed.png

- - - Добавлено - - -

Ошибка ссылочкой, http://imgur.com/sHGDJ4A

L0ndl3m
20.02.2015, 11:24
ProxDetector(30.0, playerid, params, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
SetPlayerChatBubble(playerid, params, COLOR_PURPLE, 30.0, 10000);

на


ProxDetector(30.0, playerid, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 10000);

heralt
20.02.2015, 12:39
Проблема с /me решена. С /getip остается.

BaBuIIIkaDrifteR
20.02.2015, 15:06
2. Команда /getip должна действовать по id (/getip [id]), но она показывает твое айпи. :c
Я тебя не понял, команда /getip должна показывать IP-игрока или твой ип. в чем косяк то?

- - - Добавлено - - -

Я в этом командном процессе не селен но должно работать держи:


dcmd_getip(playerid,params[])
{
if(PlayerInfo[playerid][pAdminLevel] < 2) return SendClientMessage(playerid, COLOR_RED,"Ты не администратор");
new name[MAX_PLAYER_NAME],
new ipStr[16], messageStr[48];
if(sscanf(params,"i", id)) return SendClientMessage(playerid, COLOR_RED,"/getip [id]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_RED,"Игрок с данным ID отсутствует на сервере.");
GetPlayerName(id, name, sizeof(name));
GetPlayerIp( id, ipStr, 16 );
format( messageStr, 48, " * Nick:[%s] - ip adress: (%s)", name ,ipStr);
SendClientMessage( playerid, 0xFFFFFFFF, messageStr );
return 1;
}

L0ndl3m
20.02.2015, 15:12
dcmd_getip(playerid, params[])
{
if(PlayerInfo[playerid][pAdminLevel] < 2)
return 1;
extract params -> new player: targetid; else
return SendClientMessage(playerid, -1, "Используйте: /getip [targetid]");
if(!IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "Указанного игрока нет на сервере.");

new
name[MAX_PLAYER_NAME + 1],
ipStr[16],
messageStr[48];

GetPlayerName(targetid, name, sizeof(name));
GetPlayerIp(targetid, ipStr, 16);
format(messageStr, 48, "[IP|%s] -- %s", name, ipStr);
return SendClientMessage(playerid, white, messageStr);
}

heralt
20.02.2015, 16:43
dcmd_getip(playerid, params[])
{
if(PlayerInfo[playerid][pAdminLevel] < 2)
return 1;
extract params -> new player: targetid; else
return SendClientMessage(playerid, -1, "Используйте: /getip [targetid]");
if(!IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "Указанного игрока нет на сервере.");

new
name[MAX_PLAYER_NAME + 1],
ipStr[16],
messageStr[48];

GetPlayerName(targetid, name, sizeof(name));
GetPlayerIp(targetid, ipStr, 16);
format(messageStr, 48, "[IP|%s] -- %s", name, ipStr);
return SendClientMessage(playerid, white, messageStr);
}



C:\Users\Áàòÿ âñåÿ Ðóñè\Desktop\Ïðîåêò\gamemodes\Heinz-v4.pwn(1925) : error 017: undefined symbol "extract"
C:\Users\Áàòÿ âñåÿ Ðóñè\Desktop\Ïðîåêò\gamemodes\Heinz-v4.pwn(1925) : error 029: invalid expression, assumed zero
C:\Users\Áàòÿ âñåÿ Ðóñè\Desktop\Ïðîåêò\gamemodes\Heinz-v4.pwn(1925) : error 033: array must be indexed (variable "params")
C:\Users\Áàòÿ âñåÿ Ðóñè\Desktop\Ïðîåêò\gamemodes\Heinz-v4.pwn(1925) : 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.

Mazzilla
20.02.2015, 16:47
sscanf подключать надо.

heralt
20.02.2015, 17:01
sscanf подключать надо.

Подключен он.


#include <a_samp>
#include <dini>
#include <streamer>
#include <sscanf>
#include <mxINI>
#include <dc_anims>

L0ndl3m
20.02.2015, 18:43
Значит обновите, макрос extract находится в самом инклуде sscanf'а.

heralt
20.02.2015, 19:19
Значит обновите, макрос extract находится в самом инклуде sscanf'а.

щас

- - - Добавлено - - -


Значит обновите, макрос extract находится в самом инклуде sscanf'а.

Простите за глупый вопроc, но как это сделать? Версия инклуда 2.8.1

L0ndl3m
20.02.2015, 19:21
Скачиваете сборку в котором есть файлы с расширениями .dll, .so и .inc. Далее берёте тот который с расширением .inc и заменяете его в папке pawno/include с прошлым файлом.

heralt
20.02.2015, 20:05
занимаюсь уже этим )

- - - Добавлено - - -

Решил воспользоваться способом пользователя BaBuIIIkaDrifteR , подкорректировал, и команда вышла на ура. = )

Проблема решена. Большое спасибо. =)

BaBuIIIkaDrifteR
20.02.2015, 21:58
занимаюсь уже этим )

- - - Добавлено - - -

Решил воспользоваться способом пользователя BaBuIIIkaDrifteR , подкорректировал, и команда вышла на ура. = )

Проблема решена. Большое спасибо. =)

Сразу надо было пользоваться.