 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
MultiCMD
| |
| LuxurY | Дата: Среда, 27.02.2008, 14:21 | Сообщение # 1 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус: 
| Эта штука очень полезна, т.к. дает сразу 3 параметра для команд. #define mcmd(%3,%1,%2) if ((strcmp(beat(%1,0,' '),#%2, true)==0)&&(mcmd_%2(%3,beat(%1,1,' '),beat(%1,2,' '),beat(%1,3,' ')))) return 1 Основана на функции: Code stock beat(string[], arg, symbol, begin = 0) { new output[32],outLen; while (string[begin] && string[begin] == symbol) begin++; while (string[begin]){ if (string[begin] == symbol) { arg--; while (string[++begin] == symbol) {}} if (!arg){ new ch; while ((ch = string[begin++]) && ch != symbol && outLen < (sizeof (output) - 1)) { output[outLen++] = ch; } output[outLen] = EOS; return output; } begin++; } return output; } использование: Code mcmd_tt2(playerid,param1[],param2[],param3[]) { print(param1); print(param2); print(param3); #pragma unused playerid return 1; }
mcmd_xc(playerid,param1[],param2[],param3[]) { print(param1); print(param2); #pragma unused param3 #pragma unused playerid return 1; } Code public OnRconCommand(cmd[]) { mcmd(0,cmd,tt2); mcmd(0,cmd,xc); return 0; } а также в OnPlayerCommandText Code mcmd_xc(playerid,param1[],param2[],param3[]) { print(param1); print(param2); #pragma unused param3 return 1; }
public OnPlayerCommandText(playerid,cmdtext[]) { mcmd(playerid,cmdtext[1],xc); return 0; } почему cmdtext[1] ? потому что нам не надо учитывать знак "/" он находится на нулевой позиции в строке. если мы не юзаем какой-либо параметр пишем например: #pragma unused param3 если юзаем в OnRconCommand то прописываем (помимо неиспользованных параметров) #pragma unused playerid это сделано для того чтобы система была универсальной. кто до сих пор в танке эта штука для команд типа /command param1 param2 param3 написано мной, так что копирайт LuxurY  Добавлено (27.02.2008, 14:21) --------------------------------------------- типо никому не надо? 
www.gtascript.ru admin www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
Сообщение отредактировал LuxurY - Вторник, 26.02.2008, 21:34 |
| |
|
|
| Gunner | Дата: Среда, 27.02.2008, 14:38 | Сообщение # 2 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 173
Награды: 3
Город: Минск
Репутация: 13
Замечания: 0%
Статус: 
| дааа... даже не знаю что сказать...
... and if you not down with that I got two words for ya... SUCK IT!!!
|
| |
|
|
| LuxurY | Дата: Среда, 27.02.2008, 15:06 | Сообщение # 3 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус: 
| Quote (|FOBS|gunner) дааа... даже не знаю что сказать... sorry ну ты уж попытайся чтоньть сказать... а то как тупые вопросы задавать мы сразу разговорчивыми становимся
www.gtascript.ru admin www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
|
| |
|
|
| Hwoarang91 | Дата: Среда, 27.02.2008, 19:11 | Сообщение # 4 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 83
Награды: 1
Город: волгоград
Репутация: 5
Замечания: 0%
Статус: 
| Вот ето да а что ето ? и для Чего расазывай
Хочу такой же!
|
| |
|
|
| AVANGARD | Дата: Четверг, 28.02.2008, 04:30 | Сообщение # 5 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 197
Награды: 3
Город: Омск
Репутация: 51
Замечания: 0%
Статус: 
| Думаю вещь очень полезная.... но зачем командам три параметра? Я даже придумать не могу где это использовать! Если есть примеры то выкладывай
Респект пацанам из SAMP! наш сайт http://www.joylife.ru/ [FS] ButtonEditor [GM] BattleField2[changemap] В разработке: [FS] NEW_Alkatras
|
| |
|
|
| EKup | Дата: Четверг, 28.02.2008, 10:43 | Сообщение # 6 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 75
Награды: 2
Город: Ульяновск
Репутация: 10
Замечания: 0%
Статус: 
| Интересная и удобная вещь. Млдц. Но я привык использовать свои функции. Мне так удобнее
Текущая версия ERPG GM: 2.7.0 RC1(03.10.2009) http://3val.ru/games/samp/changelistServ.php
|
| |
|
|
| LuxurY | Дата: Четверг, 28.02.2008, 13:47 | Сообщение # 7 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус: 
| например /hparm player hp armour /hparm 0 100 50
www.gtascript.ru admin www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
|
| |
|
|
| brontozavr | Дата: Четверг, 28.02.2008, 17:42 | Сообщение # 8 |
|
Уважаемый человек
Группа:
Продвинутые
Сообщений: 880
Награды: 13
Репутация: 191
Замечания: 40%
Статус: 
| LuxurY, Quote например /hparm player hp armour /hparm 0 100 50 а тем что есть уже в павне не судьба воспользоваться? вот мой пример команды без использования и создания всяких дополнительных функций просто в onplayercommandtext ну + несколько переменных потребуется. но они в каждом скрипте есть Quote if(strcmp(cmd, "/setpos", true) == 0 ) { new tmp[256]; new SetPosSTR[255]; new Float:xps2,Float:yps2,Float:zps2; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid,COLOR_YELLOW," Не введен Х, использование: /setpos X Y Z (0 символов после запятой)"); return 1; } xps2=strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid,COLOR_YELLOW," Не введен Y, использование: /setpos X Y Z (0 символов после запятой)"); return 1; } yps2=strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid,COLOR_YELLOW," Не введен Z, использование: /setpos X Y Z (0 символов после запятой)"); return 1; } zps2=strval(tmp); SetPlayerPos(playerid,xps2,yps2,zps2); format(SetPosSTR, sizeof(SetPosSTR), " позиция %0.1f %0.1f %0.1f",xps2,yps2,zps2); SendClientMessage(playerid,COLOR_YELLOW,SetPosSTR); return 1; } и все. это команда телепортирует на координаты указанные командой /setpos......например /setpos 4 4 0 И не надо изобретать велосипед
Сообщение отредактировал brontozavr - Четверг, 28.02.2008, 17:45 |
| |
|
|
| LuxurY | Дата: Четверг, 28.02.2008, 21:50 | Сообщение # 9 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус: 
| Quote (brontozavr) и все. это команда телепортирует на координаты указанные командой /setpos......например /setpos 4 4 0  И не надо изобретать велосипед как раз strtok это ржавый велосипед. это функция очень медленная. beat быстрее, sscanf еще быстрее. ясное дело новичкам это не надо. и я их прекрасно понимаю)
www.gtascript.ru admin www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
|
| |
|
|
| brontozavr | Дата: Четверг, 28.02.2008, 23:34 | Сообщение # 10 |
|
Уважаемый человек
Группа:
Продвинутые
Сообщений: 880
Награды: 13
Репутация: 191
Замечания: 40%
Статус: 
| LuxurY, Quote как раз strtok это ржавый велосипед. это функция очень медленная. beat быстрее, sscanf еще быстрее. чето я не заметил ржавчины..... или я просто не встречался с такими задачами где бы была необходимость в создании аналога...... и при проверке не заметил разници между твоей и стандартной функцией. Quote ясное дело новичкам это не надо. и я их прекрасно понимаю) да я вообщето не новичек и мод свой имеется, можешь взгялнуть если интересно http://samp-rus.com/forum/8-442-1 самая последняя ссылка для скачки мода гдето на последних страницах темы
|
| |
|
|
| LuxurY | Дата: Пятница, 29.02.2008, 20:31 | Сообщение # 11 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус: 
| Quote (brontozavr) lol чето я не заметил ржавчины..... или я просто не встречался с такими задачами где бы была необходимость в создании аналога...... и при проверке не заметил разници между твоей и стандартной функцией. если бы ты использовал ее то увидел бы что она легко справляется со строками типа: cmd!!!!!!!!!!!!!!!1!!!2!!!!!3 а strtok работает только с cmd!1!2!3 где ! - символ разделения значений Добавлено (29.02.2008, 20:31) --------------------------------------------- если ты не видишь различий, то посмотри эту: Code stock beat2(string[],arg,symbol,begin=0) { new len=strlen(string),pos,output[32],arg2=-1,arg3=-1; while(len>=begin) { if (string[begin] == symbol) { if (pos == arg-1) arg2=begin+1; if (pos == arg) arg3=begin; pos++; } begin++; } if (arg2 !=-1 && arg3!=-1) { format(output,sizeof(output),"%.*s",arg3-arg2,string[arg2]); } else if (arg2 ==-1 && arg3 !=-1) { format(output,sizeof(output),"%.*s",arg3,string); } else if (arg2 !=-1 && arg3 ==-1) { format(output,sizeof(output),"%s",string[arg2]); } return output; } правда версия предыдущая немного медленнее и не работает с экстра символами.
www.gtascript.ru admin www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
Сообщение отредактировал LuxurY - Пятница, 29.02.2008, 20:27 |
| |
|
|
|
 |
|
 | |
| |
|