PDA

Просмотр полной версии : [Вопрос] Вопрос по DC_CMD



Ne_nub
25.11.2016, 15:17
Доброго времени суток. У меня есть вопрос по DC_CMD. Вот я изучаю новый cmd. В команде есть параметры PlayerInfo[playerid][pNames], PlayerInfo[giveplayerid][pNames], PlayerInfo[playa][pNames], вот команда. Я не понимаю как сделать так, чтобы были stock'и с giveplayerid, playa ( если они вообще нужны ).


CMD:live(playerid, params[])
{
new newcar = GetPlayerVehicleID(playerid);
switch(PlayerInfo[playerid][pMember])
{
case 16:
{
if(gag[playerid] == true) return SendClientMessage(playerid, COLOR_GREY, "* У вас кляп, вы не можете говорить!");
if(PlayerInfo[playerid][pMuted] == 1) return MutePlayer(playerid);
if(newcar >= lsnewscar[0] && newcar <= lsnewscar[1] || PlayerToPoint(30.0,playerid,1669.9496,-1341.3621,114.1579)) { } else { SendClientMessage(playerid, COLOR_GREY, "* Вы не в репортёрской машине / вертолёте / офисе!"); return true;}
if(TalkingLivels[playerid] != INVALID_PLAYER_ID)
{
SendClientMessage(playerid, 0x6ab1ffaa, "{7FB151}>> {FAEBD7}Прямой эфир завершён");
SendClientMessage(TalkingLivels[playerid], 0x6ab1ffaa, "{7FB151}>> {FAEBD7}Прямой эфир завершён");
TogglePlayerControllable(playerid, 1);
TogglePlayerControllable(TalkingLivels[playerid], 1);
TalkingLivels[TalkingLivels[playerid]] = INVALID_PLAYER_ID;
TalkingLivels[playerid] = INVALID_PLAYER_ID;
return true;
}
if(sscanf(params,"u",params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /live [id]");
if(params[0] == playerid) { SendClientMessage(playerid, COLOR_GREY, "* Вы не можете брать интервью у себя!"); return true; }
if(ProxDetectorS(5.0, playerid, params[0])){} else { SendClientMessage(playerid, COLOR_GREY, "* Человек далеко от вас!"); return true; }
if(params[0] == INVALID_PLAYER_ID) { SendClientMessage(playerid, COLOR_GREY, "* Человек не найден!"); return true; }
SendMes(playerid,0x6ab1ffaa,"{7FB151}>> {FAEBD7}Вы предложили %s снять интервью", PlayerInfo[params[0]][pNames]);
SendMes(params[0],0x6ab1ffaa,"{7FB151}>> {FAEBD7}%s предлагает вам снять интервью", GetTheName(playerid));
SendClientMessage(params[0], COLOR_WHITE, "{7FB151}>> {FAEBD7}Введите (( /accept livels )), чтобы согласиться");
LiveOfferls[params[0]] = playerid;
}
}
return true;
}

Вот есть только stock:


stock GetTheName(playerid)
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof pName);
return pName;
}

Нужны только основные playerid ( у меня он есть ), giveplayerid, ну и еще что-то.

И как работать с mysql и dc_cmd


CMD:offhelpers(playerid, params[])
{
if(Sergeo || Aleksey)
{
format(mysql_query, sizeof(mysql_query),"SELECT * FROM `accounts` WHERE `pHelper` !=0 ORDER BY `accounts`.`pHelper` DESC");
mysql_function_query(connects, mysql_query, true, "OfflineHelpers","i", playerid);
}
return true;
}

И нужно ли удалять после перевода всех команда public OnPlayerCommandText(playerid, cmdtext[]) ?

Mr.Dark
25.11.2016, 15:45
Не фига не понел

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


stock GetTheName(playerid)
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof pName);
return pName;
}

я понел тока надо чтобы был сток с giveplayerid токой-же ?

Чесно не врубаюсь (Пяный) вот тут посмотри может поможет http://wiki.sa-mp.com/wiki/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_strtok_RU

Ne_nub
25.11.2016, 19:49
Сделаю вопрос полегче.

В общем есть команда, например /slap, или та-же самая /makeadmin.

Там же есть и PlayerInfo[playerid][pNames] и PlayerInfo[giveplayerid][pNames], первое - это ты, второе - это кому выдаешь.

Это тогда делать так -
PlayerInfo[params[0]][pNames] ?

Geebrox
02.12.2016, 13:29
Советую сначала научиться работать со sscanf (http://forum.sa-mp.com/showthread.php?t=570927)
Далее уже все поймешь, параметры которых ввел игрок после определенной команды записываются в массив params, а для вычисление определенных параметров из этого массива поможет тебе sscanf (http://forum.sa-mp.com/showthread.php?t=570927).

KostyaNL
09.02.2017, 00:44
Советую сначала научиться работать со sscanf (http://forum.sa-mp.com/showthread.php?t=570927)
Далее уже все поймешь, параметры которых ввел игрок после определенной команды записываются в массив params, а для вычисление определенных параметров из этого массива поможет тебе sscanf (http://forum.sa-mp.com/showthread.php?t=570927).



CMD:slap(playerid, params[]){
new targetid; // переменная, в которую мы запихаем параметр (id игрока)
if (sscanf (params, "d", targetid)) // в "" прописываем тип параметров, дальше через запятую присваиваем им значение
return SendClientMessage(playerid, -1, !"Используйте /slap [id игрока]"); // что будет, если ввести пустую команду (ничего)
if(!IsPlayerConnected(targetid)) //проверка на подключение
return SendClientMessage(playerid, CGRAY, !"Игрока с таким айди нет"); // что будет, если игрок не подключен

new Float:slx, Float:sly, Float:slz; // переменные в которых будут координаты игрока, на котором применяем команду
GetPlayerPos(targetid, slx, sly, slz); // полчучаем координаты игрока на котором применяем команду
SetPlayerPos(targetid, slx, sly, slz+4); // подкидываем игрока
static const slap_text[] = "Вы подкинули игрока %s[%d]"; // сообщение для игрока, который ввел команду
new slap_str [sizeof (slap_text) + (MAX_PLAYER_NAME) + 4 - (2*2)]; // куда запишем готовое сообщение
format (slap_str, sizeof(slap_str), slap_text, GetTheName(targetid), targetid); // записываем в строку сообщение подставляя данные
SendClientMessage(playreid, string); // отправляем сообщение игроку
return true;
}


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



GetTheName(playerid)