vlad20 Дата: Среда, 23.01.2013, 02:11 | Сообщение # 1
Постоялец
Группа:
I'm V.I.P.
Сообщений: 417
Награды:
5
Город: Одесса
Репутация:
82
Замечания:
60%
Статус:
Начал переводить команды на zcmd+sscanf,столкнулся с некоторыми проблемами.За + Проблема 1:/enter,/exit и т.д,сделаны на кнопке,не могу найти как сделать чтоб срабатывали не в onplayercommandtext Второй момент,например команда /get(drugs,fuel),то есть при вводе /get fuel ненужно вводить никаких символов,а в /get drugs нужно,по этому /get drugs не срабатывает,вот сама команда,что тут не так?
CMD:get(playerid, params[]) { if(IsPlayerConnected(playerid)) { new text[24]; if(sscanf(params, "s[24]", text)) { SendClientMessage(playerid, COLOR_WHITE, " Ââåäèòå: /get [íàçâàíèå]"); SendClientMessage(playerid, COLOR_GREY, " Äîñòóïíûå íàçâàíèÿ: drugs, fuel"); SendClientMessage(playerid, COLOR_GREEN, "|_________________________________________|"); return true; } if(GetPVarInt(playerid, "AntiPDA")==1 || GetPVarInt(playerid, "MnePizda") == 1 || GetPVarInt(playerid, "KnockedDown") == 1)return SendClientMessage(playerid,COLOR_RED," Âû íå ìîæåòå äâèãàòüñÿ !"); if(strcmp(text,"drugs",true) == 0) { if(PlayerInfo[playerid][pSeed] > 5) { new string[32]; format(string, sizeof(string), " Ó âàñ åù¸ åñòü %d ñåìÿí !", PlayerInfo[playerid][pSeed]); SendClientMessage(playerid, COLOR_GREY, string); return true; } new tel; new price; if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Ââåäèòå: /get drugs [êîë-âî]"); if(params[0] > 10 || params[0] < 1)return SendClientMessage(playerid, COLOR_GRAD2, " Íåëüçÿ áîëåå 10 èëè ìåíåå 1"); switch (PlayerInfo[playerid][pDrugsSkill]) { case 0..50:{ tel = 130; if(params[0] < 1 || params[0] > 2)return SendClientMessage(playerid, COLOR_GREY, " Ñ âàøèì íàâûêîì íåëüçÿ âçÿòü áîëüøå 2 ñåìÿí !"); } case 51..100:{ tel = 110; if(params[0] < 1 || params[0] > 4)return SendClientMessage(playerid, COLOR_GREY, " Ñ âàøèì íàâûêîì íåëüçÿ âçÿòü áîëüøå 4 ñåìÿí !"); } case 101..200:{ tel = 90; if(params[0] < 1 || params[0] > 6)return SendClientMessage(playerid, COLOR_GREY, " Ñ âàøèì íàâûêîì íåëüçÿ âçÿòü áîëüøå 6 ñåìÿí !"); } case 201..400:{ tel = 70; if(params[0] < 1 || params[0] > 8)return SendClientMessage(playerid, COLOR_GREY, " Ñ âàøèì íàâûêîì íåëüçÿ âçÿòü áîëüøå 8 ñåìÿí !"); } default:{ tel = 50; if(params[0] < 1 || params[0] > 10)return SendClientMessage(playerid, COLOR_GREY, " Ñ âàøèì íàâûêîì íåëüçÿ âçÿòü áîëüøå 10 ñåìÿí !"); }} if (PlayerInfo[playerid][pJob] == 4 && IsPlayerInRangeOfPoint(playerid,2.0, 323.0417,1118.3827,1083.8828)&&GetPlayerVirtualWorld(playerid) == 8) { price = params[0] * tel; if(GetPlayerCash(playerid) > price) { new string[72]; format(string, sizeof(string), " Âû êóïèëè %d ñåìÿí çà %d$.Äëÿ ïîñàäêè ââåäèòå /plant", params[0], price); SendClientMessage(playerid, COLOR_LIGHTBLUE, string); GivePlayerCash(playerid, -price); Kazna += price; PlayerInfo[playerid][pSeed] += params[0]; } else return SendClientMessage(playerid, COLOR_GREY, " Ó âàñ íåäîñòàòî÷íî äåíåã ñ ñîáîé !"); } else return SendClientMessage(playerid, COLOR_GREY, " Âû íå áàðûãà èëè âû íå â ïðèòîíå !"); } else if(strcmp(text,"fuel",true) == 0) { if(IsAtGasStation(playerid)) { if(PlayerInfo[playerid][pGascan] != 1) { SendClientMessage(playerid, COLOR_GREY, " Ó âàñ íåòó êàíèñòðû !"); SendClientMessage(playerid, COLOR_GREY, " Êóïèòü å¸ ìîæíî â 24/7 !"); return true; } if(PlayerInfo[playerid][pFuel] > 0)return SendClientMessage(playerid, COLOR_GRAD3," Âàøà êàíèñòðà ïîëíàÿ !"); if(GetPlayerCash(playerid) < 20)return SendClientMessage(playerid, COLOR_GRAD3," Âàì íóæíî èìåòü ïðè ñåáå ìèíèìóì 20$ !"); new price = 20; new string[42]; format(string, sizeof(string), " Âû íàïîëíèëè êàíèñòðó çà %d$.",price); SendClientMessage(playerid, COLOR_LIGHTBLUE, string); PlayerInfo[playerid][pFuel] = 20; GivePlayerCash(playerid, - price); SBizzInfo[3][sbTill] += price/2; new string2[128]; mysql_format(1, string2, "UPDATE `sbizz` SET `Till`='%d' WHERE `id` = '3'",SBizzInfo[3][sbTill]); mysql_function_query(1, string2, false, "",""); Kazna += price/2; return true; } else return SendClientMessage(playerid,COLOR_GREY," Âû íå íà çàïðàâêå !"); } else return true; }//not connected return true; }
vlad20 Дата: Среда, 23.01.2013, 21:09 | Сообщение # 2
Постоялец
Группа:
I'm V.I.P.
Сообщений: 417
Награды:
5
Город: Одесса
Репутация:
82
Замечания:
60%
Статус:
С кнопками разобрался,если кто ищет cmd_enter(playerid, ""); cmd_opengate(playerid, ""); и т.д А вот вторая проблема всё ещё не решена
toneysix Дата: Воскресенье, 03.03.2013, 16:38 | Сообщение # 3
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды:
77
Город: Салават
Репутация:
1825
Замечания:
0%
Статус:
vlad20 Некорректное использование sscanf'а, для подобных команд тебе нужно вырезать кусок с аргументами, минуя ключевое слово, указывающее на какой из подразделов команды нужно смотреть. Вот тут я написал небольшой пример, делай по его аналогу http://pastebin.com/ayanMW5W
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Сообщение отредактировал toneysix - Воскресенье, 03.03.2013, 16:41