• Страница 1 из 1
  • 1
Модератор форума: admin, TweIk  
[Tutorial]по использованию sscanf с zcmd
adminДата: Вторник, 26.10.2010, 00:17:30 | Сообщение # 1

Группа: Администраторы
Сообщений: 3869
И так начнем урок что нам нужно
2 инклуда sscanf и zcmd
ZCMD:
pastebin
TopFilez(p.s больше норм не нашел)
SSCANF:
pastebin
TopFilez

И так научимся делать команды с одним параметром
Например :/skin [id]
Эта команда даст нам скин который мы введем

Code

       COMMAND:skin(playerid, params[]){//команды надо вводить без "/"
           new skinid;//переменая куда занесется значение которое введет игрок
           if(sscanf(params,"d", skinid))//занесем значение которе ввел игрок в переменую skinid
           return SendClientMessage(playerid, 0xFF0000AA, "Используй: /buyskin [id]");//если игрок не ввел значение то выдаем собщение
           SetPlayerSkin(playerid,skinid);//меняем игроку скин на который он выбрал
           return 1;}

Давайте попробуем сделать команду с 2-мя параметрами
например /money [id] [ammount]

Code

       COMMAND:money(playerid, params[]){
           new playa,cash;//playa(будет хранить ид игрока) а cash(количество денег)
           if(sscanf(params,"ud",playa,cash))//занесем первый параметр в playa а второй в cash
           return SendClientMessage(playerid, 0xFF0000AA, "Используй: /money [id] [ammount]");
           GivePlayerMoney(playa,cash);//даем денег игроку
           return 1;}

Теперь сделаем команду с тремя параметрами
например /car [id] [color1] [color2]
Code

       COMMAND:car(playerid, params[]){
           new id,color1,color2;//переменные
           if(sscanf(params,"ddd",id,color1,color2))//ну это понятно
           return SendClientMessage(playerid, 0xFF0000AA, "Используй: /veh [id] [color1] [color2]");
           new Float:pos[4];//перемные куда занесем кординаты игрокаи его угол поворота
           GetPlayerPos(playerid,pos[0],pos[1],pos[2]);//узнаем кординаты игрока
           GetPlayerFacingAngle(playerid,pos[3]);//узнаем угол поворота игрока
           CreateVehicle(id,pos[0],pos[1],pos[2],pos[3],color1,color2,600000);
            //создаем машину с id(который ввел игрок) на тех кординатах где он стоит
            //с цветами которыми ввел игрок
           return 1;}

Теперь отличие от стандартной команды и strtok

Code

       if(strcmp(cmd, "/veh", true) == 0){
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /veh [id]  [color1] [color2]");
           new id = strval(tmp);
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /veh [id]  [color1] [color2]");
           new col1 = strval(tmp);
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /veh [id]  [color1] [color2]");
           new col2 = strval(tmp);
           new Float:X,Float:Y,Float:Z,Float:A;
           GetPlayerFacingAngle(playerid, A);
           GetPlayerPos(playerid,X,Y,Z);
           CreateVehicle(id,X,Y,Z,A,col1,col2,60000);
           return 1;}

Теперь создадим команду не с числовым значением а буквеным
например /name [имя]
меняет имя игроку на введеное им
Code

       COMMAND:name(playerid, params[]){
           new name[34],string[256];//пеменая name которая будет хранить имя
           if(sscanf(params,"s",name))return SendClientMessage(playerid, 0xFF0000AA, "Используй: /name [имя]");
           format(string,sizeof(string),"%s",name);//форматируем name
           SetPlayerName(playerid,string);//ставим ворматированое имя
           return 1;}

Теперь создадим команду и с числовым и с буквеным
например /pm [id игрока] [сообщение]
Code

       COMMAND:pm(playerid, params[]){
           new string[256],message[256],id;//перменая message хранит собщение а id ид игрока
           if(sscanf(params,"us",id,message))return SendClientMessage(playerid, 0xFF0000AA, "Используй: /pm [id] [message]");
           format(string, sizeof(string), "ПМ к %s: %s", GN(id),message);
           //форматируем собщенние GN(id)(узнаем ник получателя),message(собщение которое ввел игрок)
           SendClientMessage(playerid, 0xFF0000FF, string);//отпровляем собщение себе=)
           format(string, sizeof(string), "ПМ от %s: %s", GN(playerid),message);
            //форматируем собщенние GN(playerid)(узнаем ник отправителя),message(собщение которое ввел игрок)
            SendClientMessage(id, 0xFF0000FF, string);//отпровляем форматированое сообщение получателю=)
           return 1;}

Если что вот stock GN
Code

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

теперь создадим команду с Float
например /gotocord X Y Z

Code

       COMMAND:gotocord(playerid, params[]){
           new Float:p[3];//переменая которая будт хранить кординаты
           if(sscanf(params,"fff",p[0],p[1],p[2]))//записываем значение в перменые
           return SendClientMessage(playerid, 0xFF0000AA, "Используй: /gotocord X Y Z");
           SetPlayerPos(playerid,p[0],p[1],p[2]);//телепортируем игрока на введенные кординаты
           return 1;}

Теперь отличие между стандартной командой и strtok

Code

           if(strcmp(cmd, "/gotocord", true) == 0){
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "Используй: /gotocord X Y Z");
           new Float:X = floatstr(tmp);
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "Используй: /gotocord X Y Z");
           new Float:Y = floatstr(tmp);
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "Используй: /gotocord X Y Z");
           new Float:Z = floatstr(tmp);
           SetPlayerPos(playerid,X,Y,Z);
           return 1;}  

Автор:sk2010
Источник



zm-jail.ru

Разработка сайта samp-pawno.ru


 
СообщениеИ так начнем урок что нам нужно
2 инклуда sscanf и zcmd
ZCMD:
pastebin
TopFilez(p.s больше норм не нашел)
SSCANF:
pastebin
TopFilez

И так научимся делать команды с одним параметром
Например :/skin [id]
Эта команда даст нам скин который мы введем

Code

       COMMAND:skin(playerid, params[]){//команды надо вводить без "/"
           new skinid;//переменая куда занесется значение которое введет игрок
           if(sscanf(params,"d", skinid))//занесем значение которе ввел игрок в переменую skinid
           return SendClientMessage(playerid, 0xFF0000AA, "Используй: /buyskin [id]");//если игрок не ввел значение то выдаем собщение
           SetPlayerSkin(playerid,skinid);//меняем игроку скин на который он выбрал
           return 1;}

Давайте попробуем сделать команду с 2-мя параметрами
например /money [id] [ammount]

Code

       COMMAND:money(playerid, params[]){
           new playa,cash;//playa(будет хранить ид игрока) а cash(количество денег)
           if(sscanf(params,"ud",playa,cash))//занесем первый параметр в playa а второй в cash
           return SendClientMessage(playerid, 0xFF0000AA, "Используй: /money [id] [ammount]");
           GivePlayerMoney(playa,cash);//даем денег игроку
           return 1;}

Теперь сделаем команду с тремя параметрами
например /car [id] [color1] [color2]
Code

       COMMAND:car(playerid, params[]){
           new id,color1,color2;//переменные
           if(sscanf(params,"ddd",id,color1,color2))//ну это понятно
           return SendClientMessage(playerid, 0xFF0000AA, "Используй: /veh [id] [color1] [color2]");
           new Float:pos[4];//перемные куда занесем кординаты игрокаи его угол поворота
           GetPlayerPos(playerid,pos[0],pos[1],pos[2]);//узнаем кординаты игрока
           GetPlayerFacingAngle(playerid,pos[3]);//узнаем угол поворота игрока
           CreateVehicle(id,pos[0],pos[1],pos[2],pos[3],color1,color2,600000);
            //создаем машину с id(который ввел игрок) на тех кординатах где он стоит
            //с цветами которыми ввел игрок
           return 1;}

Теперь отличие от стандартной команды и strtok

Code

       if(strcmp(cmd, "/veh", true) == 0){
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /veh [id]  [color1] [color2]");
           new id = strval(tmp);
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /veh [id]  [color1] [color2]");
           new col1 = strval(tmp);
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /veh [id]  [color1] [color2]");
           new col2 = strval(tmp);
           new Float:X,Float:Y,Float:Z,Float:A;
           GetPlayerFacingAngle(playerid, A);
           GetPlayerPos(playerid,X,Y,Z);
           CreateVehicle(id,X,Y,Z,A,col1,col2,60000);
           return 1;}

Теперь создадим команду не с числовым значением а буквеным
например /name [имя]
меняет имя игроку на введеное им
Code

       COMMAND:name(playerid, params[]){
           new name[34],string[256];//пеменая name которая будет хранить имя
           if(sscanf(params,"s",name))return SendClientMessage(playerid, 0xFF0000AA, "Используй: /name [имя]");
           format(string,sizeof(string),"%s",name);//форматируем name
           SetPlayerName(playerid,string);//ставим ворматированое имя
           return 1;}

Теперь создадим команду и с числовым и с буквеным
например /pm [id игрока] [сообщение]
Code

       COMMAND:pm(playerid, params[]){
           new string[256],message[256],id;//перменая message хранит собщение а id ид игрока
           if(sscanf(params,"us",id,message))return SendClientMessage(playerid, 0xFF0000AA, "Используй: /pm [id] [message]");
           format(string, sizeof(string), "ПМ к %s: %s", GN(id),message);
           //форматируем собщенние GN(id)(узнаем ник получателя),message(собщение которое ввел игрок)
           SendClientMessage(playerid, 0xFF0000FF, string);//отпровляем собщение себе=)
           format(string, sizeof(string), "ПМ от %s: %s", GN(playerid),message);
            //форматируем собщенние GN(playerid)(узнаем ник отправителя),message(собщение которое ввел игрок)
            SendClientMessage(id, 0xFF0000FF, string);//отпровляем форматированое сообщение получателю=)
           return 1;}

Если что вот stock GN
Code

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

теперь создадим команду с Float
например /gotocord X Y Z

Code

       COMMAND:gotocord(playerid, params[]){
           new Float:p[3];//переменая которая будт хранить кординаты
           if(sscanf(params,"fff",p[0],p[1],p[2]))//записываем значение в перменые
           return SendClientMessage(playerid, 0xFF0000AA, "Используй: /gotocord X Y Z");
           SetPlayerPos(playerid,p[0],p[1],p[2]);//телепортируем игрока на введенные кординаты
           return 1;}

Теперь отличие между стандартной командой и strtok

Code

           if(strcmp(cmd, "/gotocord", true) == 0){
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "Используй: /gotocord X Y Z");
           new Float:X = floatstr(tmp);
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "Используй: /gotocord X Y Z");
           new Float:Y = floatstr(tmp);
           tmp = strtok(cmdtext, idx);
           if(!strlen(tmp))
           return    SendClientMessage(playerid, COLOR_GRAD2, "Используй: /gotocord X Y Z");
           new Float:Z = floatstr(tmp);
           SetPlayerPos(playerid,X,Y,Z);
           return 1;}  

Автор:sk2010
Источник


Автор - admin
Дата добавления - 26.10.2010 в 00:17:30
-=GunsUp=-Дата: Среда, 10.11.2010, 14:41:35 | Сообщение # 2

Группа: Пользователи
Сообщений: 17
Укажи автора статьи, sk2010

Готово

 
СообщениеУкажи автора статьи, sk2010

Готово


Автор - -=GunsUp=-
Дата добавления - 10.11.2010 в 14:41:35
sk47Дата: Среда, 10.11.2010, 14:49:02 | Сообщение # 3

Группа: Пользователи
Сообщений: 28
укажи просто sk47 и сылку на статью

Готово

 
Сообщениеукажи просто sk47 и сылку на статью

Готово


Автор - sk47
Дата добавления - 10.11.2010 в 14:49:02
  • Страница 1 из 1
  • 1
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
Система телефонов поломалась
Не в себе
фильм скалайн
Трансформеры 3
форсаж 6
Ищу [FS]Для админок на сервер
нужны координаты карты для отметки зон...
Помогите найти мод
pawno урок автоматические ворота
обращение к скриптерам.
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS

Вопросы по скриптингу

(1081)

Считаем до 1000

(274)

Ваши ошибки при компиляция gm

(260)

Набор в команду

(80)

Ваши ошибки при компиляции GM/FS

(71)

вопроосы по скриптингу от 22.04.2013

(64)

Баннеробмен

(64)

несколько команд на samp 0.3 c

(64)

Оценки сайта samp-pawno.ru

(55)

Заказ хостинга

(51)

Набор в команду(форум)

(45)

Урок №61 по созданию системы авто для GodFather

(45)

admin

(3869)

[east_side]_trane

(443)

TWiX

(316)

valych

(501)

drifter-dron

(477)

danik_rok

(317)

Dimka_71rus

(360)

Drifter96

(300)

MaNb9K

(220)

[MTA]MaPeR5518

(181)

Dima_Tkach

(107)

Nik_Ull

(184)

system32xzxz

(Четверг 09:25:24)

torbin169

(Суббота 23:09:29)

kuchuk_00

(Суббота 17:10:14)

artem_boyko_3

(Суббота 15:57:37)

greggelbak

(Среда 18:29:37)

vladisvlavs

(Среда 13:51:57)

add02102002

(Понедельник 22:37:15)

Диман221

(Понедельник 18:12:45)

almas051004

(Воскресенье 11:05:32)

megasuccessms

(Суббота 14:15:36)

nawe

(Пятница 22:25:23)

swoysb

(Пятница 14:55:29)

Вверх
09:27:45
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2024

vkontakte :samp-pawno.ru: