 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Help! создание команды с двумя вводными данными
| |
| Alan_Wake | Дата: Вторник, 30.11.2010, 13:28 | Сообщение # 1 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 296
Награды: 2
Город: Санкт-Петербург
Репутация: 38
Замечания: 0%
Статус: 
| Создаю команду, которая выглядит так /komanda [Циферка] [Какая-то другая циферка] Параметры в скобках вводятся игроком Которая должна например писать : "Циферка 1: [Циферка] . Циферка2 : [Какая-то другая циферка] " Пытался сделать по примеру других команд, где вводится скажем ид игрока и какое-нибудь число, но выходила в итоге полная чушь, цифры выводились наугад и не верные. Кто может мне разжевать создание подобной команды, по поиску толком ничего не нашел. Заранее спасибо, с меня + 
F.A.Q "Создание шлагбаумов"
likext.com -все самое интересное из мира спорта
|
| |
|
|
| SLICK | Дата: Вторник, 30.11.2010, 14:37 | Сообщение # 2 |
|
Местный
Группа:
I'm V.I.P.
Сообщений: 603
Награды: 9
Город: Unknown
Репутация: 388
Замечания: 0%
Статус: 
| по примеру же можно спокойно сделать, вот тебе простой пример: Code if(strcmp(cmd, "/komanda", true) == 0) { tmp = strtok(cmdtext, idx);
new num = strval(tmp); tmp = strtok(cmdtext, idx);
new num1 = strval(tmp);
new str[10]; format(str,sizeof(str), "%d %d", num, num1); SendClientMessage(playerid, 0xFFFFFFAA, str); return 1; }
My works: [GM] RTDM Advertising system Fuel System Artefacts Search (Динамическая сис-ма артефактов)
Сообщение отредактировал SLICK - Вторник, 30.11.2010, 14:42 |
| |
|
|
| Alan_Wake | Дата: Вторник, 30.11.2010, 14:53 | Сообщение # 3 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 296
Награды: 2
Город: Санкт-Петербург
Репутация: 38
Замечания: 0%
Статус: 
| А если можно, разжевать каждую строчечку?) Что бы был алгоритм работы) Иначе "тупо смотря в код" я мало что запоминаю )
F.A.Q "Создание шлагбаумов"
likext.com -все самое интересное из мира спорта
|
| |
|
|
| Dima-kun | Дата: Вторник, 30.11.2010, 15:19 | Сообщение # 4 |
|
Группа:
Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус: 
| Alan_Wake, куда еще проще.
Мои работы: [INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники, [FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos, [GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
|
| |
|
|
| toneysix | Дата: Вторник, 30.11.2010, 15:59 | Сообщение # 5 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| SLICK где объяvление tmp, idx, cmd и v конце концоv strtok?
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
|
| |
|
|
| Vagrant | Дата: Вторник, 30.11.2010, 17:35 | Сообщение # 6 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Alan_Wake, Могу разжувать по строкам: if(strcmp(cmd, "/komanda", true) == 0) // Если в чат вводится /komanda то выполняется условие { tmp = strtok(cmdtext, idx); /* Функция strtok сохраняет в переменную tmp всё что находится после пробела и сохраняет до конца строки либо следующего пробела. */ new num = strval(tmp); /* Так как после пробела должно быть число то сохраняем в переменную числового типа (num, Стандартный тип integer) цифру[ы] которые записались в переменную tmp (tmp - Имеет тип string проще говоря) */ tmp = strtok(cmdtext, idx); /* Далее когда переменная tmp освободилась и уже после второго пробела (То есть: /komanda_..._...) в неё опять записывается число. Число которое уже находится после второго пробела */ new num1 = strval(tmp); /* Создаём новую переменную num1 и сразу записываем в неё всё что находится в переменной tmp. */ new str[10]; /* Создаём массив имеющий 10 ячеек для записи символа в каждую из них и для записи в последнюю ячейку символа "\0" конец строки */ format(str,sizeof(str), "%d %d", num, num1); /* Записать в переменную str с размером 10 (sizeof(str) - За место этого пишется 10). Записать %d - за место этого число которое содержит переменная num во второе место %d записать число num1. Порядок записи пишется в этой функции далее после " ", */ SendClientMessage(playerid, 0xFFFFFFAA, str); // Ну и вывести сообщение в чат return 1; // Команда выполнена успешно возвращаем 1. } К этому прилагается: strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } А полностью для работы в OnPlayerCommand в любом новом моде пишешь так: new cmd[256],tmp[256],idx; cmd = strtok(cmdtext,idx); /* В cmd записывается только команда. То есть опять же всё что от начала до пробела или конца строки. */ if(strcmp(cmd, "/komanda", true) == 0) { tmp = strtok(cmdtext, idx); new num = strval(tmp); tmp = strtok(cmdtext, idx); new num1 = strval(tmp); new str[10]; format(str,sizeof(str), "%d %d", num, num1); SendClientMessage(playerid, 0xFFFFFFAA, str); return 1; } Ну и strtok в конец мода... Если помог с тебя + 
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
Сообщение отредактировал Vagrant - Вторник, 30.11.2010, 17:52 |
| |
|
|
| Alan_Wake | Дата: Вторник, 30.11.2010, 17:37 | Сообщение # 7 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 296
Награды: 2
Город: Санкт-Петербург
Репутация: 38
Замечания: 0%
Статус: 
| Quote (Morino_Reigan) Alan_Wake, куда еще проще. Это явно не ответ на мой вопрос. Я плохо разбираюсь в некоторых функциях, а что бы ПОНЯТЬ, а ну скопипастить, мне нужно знать что там за что отвечает. Конкретно мне не очень ясно что это такое, был бы любезен что бы мне РАЗЖЕВАЛИ, а не направили куда-либо со словами "куда еще проще" читать вики. Этот кусочек разжуйте: Quote (SLICK) tmp = strtok(cmdtext, idx); new num = strval(tmp); tmp = strtok(cmdtext, idx);
F.A.Q "Создание шлагбаумов"
likext.com -все самое интересное из мира спорта
|
| |
|
|
| Vagrant | Дата: Вторник, 30.11.2010, 17:48 | Сообщение # 8 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Alan_Wake, То есть проще говоря если сделать так: tmp = strtok(cmdtext, idx); // Число 1 new num1 = strval(tmp); // Записываем число 1 tmp = strtok(cmdtext, idx); // Число 2 new num2 = strval(tmp); // Записываем число 2 tmp = strtok(cmdtext, idx); // Число 3 new num3 = strval(tmp); // Записываем число 3 tmp = strtok(cmdtext, idx); // Число 4 new num4 = strval(tmp); // Записываем число 4 tmp = strtok(cmdtext, idx); // Число 5 new num5 = strval(tmp); // Записываем число 5 Команда будет такая: /komanda Число1 Число2 Число3 Число4 Число5 P.S.: Если не заметил почитай мой пост выше
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
Сообщение отредактировал Vagrant - Вторник, 30.11.2010, 17:49 |
| |
|
|
| Alan_Wake | Дата: Вторник, 30.11.2010, 19:50 | Сообщение # 9 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 296
Награды: 2
Город: Санкт-Петербург
Репутация: 38
Замечания: 0%
Статус: 
| Quote (Vagrant) Если не заметил почитай мой пост выше Просто я долго отправлял, вот и не заметил) Сейчас почитаю, спасибо) Добавлено (30.11.2010, 19:50) --------------------------------------------- Vagrant, проблемка, если первое введенное число больше 5 - то он пишет Unkown Command, хотя вроде выполняет. Почему так?
F.A.Q "Создание шлагбаумов"
likext.com -все самое интересное из мира спорта
|
| |
|
|
| toneysix | Дата: Вторник, 30.11.2010, 20:32 | Сообщение # 10 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| Alan_Wake да уж. "Vроде", так что? Может соизvолишь vыложить команду?...
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
|
| |
|
|
| SLICK | Дата: Вторник, 30.11.2010, 21:16 | Сообщение # 11 |
|
Местный
Группа:
I'm V.I.P.
Сообщений: 603
Награды: 9
Город: Unknown
Репутация: 388
Замечания: 0%
Статус: 
| Quote (toneysix) SLICK где объяvление tmp, idx, cmd и v конце концоv strtok? Думаю это ему не нужно было, т.к. по его словам понятно что это все он знает, он это делал но не получалось именно ввод 2ух чисел..
My works: [GM] RTDM Advertising system Fuel System Artefacts Search (Динамическая сис-ма артефактов)
Сообщение отредактировал SLICK - Вторник, 30.11.2010, 21:17 |
| |
|
|
| Alan_Wake | Дата: Вторник, 30.11.2010, 23:59 | Сообщение # 12 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 296
Награды: 2
Город: Санкт-Петербург
Репутация: 38
Замечания: 0%
Статус: 
| Quote (toneysix) Может соизvолишь vыложить команду? Да пожалуйста. Code if(strcmp(cmd, "/трололо", true) == 0) { if(PlayerToPoint(10.0, playerid, 2309.0486,-13.2550,26.7422)) { tmp = strtok(cmdtext, idx); new num = strval(tmp); tmp = strtok(cmdtext, idx); new Summa = strval(tmp); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, " Команда: /трололо [ололо] [лоло]"); return 1; } if(num > sizeof(File1)){SendClientMessage(playerid, COLOR_GREY, " Бдыщь! "); return 1;} if(Summa >= 9999999) { SendClientMessage(playerid, COLOR_GREY, " Пиу-пиу!"); return 1; } if(Summa > PlayerInfo[playerid][pCash]) { SendClientMessage(playerid, COLOR_WHITE, " неа..!"); return 1; } GivePlayerCash(playerid, -Summa); File1[num][yacheika] += Summa; SaveFile1(); SaveAccounts(playerid); format(string, sizeof(string), " бдыщь-бдышь %d ",Summa); SendClientMessage(playerid, COLOR_WHITE, string); return 1; } else{SendClientMessage(playerid, COLOR_WHITE, " Хныык"); return 1;} } Если значения num <5 то все шикарно. Работает как нужно. Если 5 или больше то: Снимает деньги. Пишет УнковнКоманд. вроде все расписал.
F.A.Q "Создание шлагбаумов"
likext.com -все самое интересное из мира спорта
|
| |
|
|
| Vagrant | Дата: Среда, 01.12.2010, 17:14 | Сообщение # 13 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Alan_Wake, Попробуй так: if(strcmp(cmd, "/трололо", true) == 0) { if(PlayerToPoint(10.0, playerid, 2309.0486,-13.2550,26.7422)) { tmp = strtok(cmdtext, idx); new num = strval(tmp); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, " Команда: /трололо [ололо] [лоло]"); tmp = strtok(cmdtext, idx); new Summa = strval(tmp); if(num <= sizeof(File1)) return SendClientMessage(playerid, COLOR_GREY, " Бдыщь! "); /* Если больше либо ровно 5 (return SendClientMessage... возвращает функцию. То есть это вывод сообщения и дальше код не читается если условие верно) */ if(Summa >= 9999999) return SendClientMessage(playerid, COLOR_GREY, " Пиу-пиу!"); if(Summa > PlayerInfo[playerid][pCash]) return SendClientMessage(playerid, COLOR_WHITE, " неа..!"); GivePlayerCash(playerid, -Summa); File1[num][yacheika] += Summa; SaveFile1(); SaveAccounts(playerid); format(string, sizeof(string), " бдыщь-бдышь %d ",Summa); SendClientMessage(playerid, COLOR_WHITE, string); return 1; } else return SendClientMessage(playerid, COLOR_WHITE, " Хныык"); } Если я правильно понял то условие ты хочешь сделать если меньше либо ровно 5 то всё выполнялось без Unknow Command? Если я не правильно понял то где условие поменять я думаю найдёшь
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
Сообщение отредактировал Vagrant - Среда, 01.12.2010, 17:20 |
| |
|
|
| Alan_Wake | Дата: Среда, 01.12.2010, 17:36 | Сообщение # 14 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 296
Награды: 2
Город: Санкт-Петербург
Репутация: 38
Замечания: 0%
Статус: 
| Quote (Vagrant) Если я правильно понял то условие ты хочешь сделать если меньше либо ровно 5 то всё выполнялось без Unknow Command? Если я не правильно понял то где условие поменять я думаю найдёшь Я хочу что бы все выполнялось без Unknow Command, при любых значениях. В файле File1 не 5 строк, а больше. То есть ввожу /трололо 1 200 То все нормально, записывает в строку номер 1, в нужный параметр +200 если у меня /трололо 5 200 то пишет Unknow Command, хотя строк в файле не 5.
F.A.Q "Создание шлагбаумов"
likext.com -все самое интересное из мира спорта
|
| |
|
|
| TeMka | Дата: Среда, 08.12.2010, 12:07 | Сообщение # 15 |
|
Новенький
Группа:
Продвинутые
Сообщений: 51
Награды: 0
Город: Борнео
Репутация: -51
Замечания: 40%
Статус: 
| O_O что то новенькое!! Спасибо щас поставлю.
|
| |
|
|
|
 |
|
 | |
| |
|