05:07
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 1
  • 1
Модератор форума: Alcoholik  
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%
Статус:
дааа... даже не знаю что сказать... sorry


... 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%
Статус:
Вот ето да а что ето ? и для Чего расазывай mda


Хочу такой же!
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 еще быстрее.

lol чето я не заметил ржавчины..... или я просто не встречался с такими задачами где бы была необходимость в создании аналога...... и при проверке не заметил разници между твоей и стандартной функцией.
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
  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua