Создаём самый простой магазин для DarkRP на Expression 2.

0
V.I.P.
0
Участник
Всем привет. Изописания и названия темы вы думаю уже догадались о чём пойдёт сегодня речь. В
общем начнём сразу и быстро. Данный урок очень короткий так как нам нужно всего
лишь пару условий и немного фантазии. Что же приступим.
И так для начала создаём новый чип на Е2. Нажимаем на кнопку открытия спавн
меню и переходим во вкладку Wire Mod или в новой версии просто Wire. Там
открываем папку Chips, Gates и ищем в ней Expression 2. Нажимаем на него и
после чего в меню где у нас как обычно настройки инструмента, в данном случае
нашего чипа на Е2 и среди этих настроек есть кнопка "Open Editor".
Нажимаем на неё, и перед нами открывается окно с редактором кода.
В нём уже по стандарту есть строчи:
@name
@inputs
@outputs
@persist
@trigger
Думаю если вы не первый раз работаете с Е2 то объяснять что, каждая из этих
строк делает, нет смысла. По этому сразу приступим. Для начала выведем
переменные которые мы будем соединять с другими чипами. Это будут наши входы.
Вводим в строчку с входами наши переменные. Это будут EGP Pot Ranger . К
переменной EGP приписываем свойство wirelink. Будет это всё дело выглядеть так:
@inputs EPG:wirelink Pot Ranger
Теперь разберём что каждая из этих переменных означает.
Переменная EGP это переменная нашего EGP экрана. С помощью неё мы будем
создавать разные боксы и приписывать к ним цвета что бы наш магазин выглядел
как то более нормально.
Переменная Pot это наш MoneyPot в который люди будут класть деньги.
Переменная Ranger - это инструмент ranger из Wire Mod который будет служить
нашим детектором коробки с оружием. То есть если коробка с оружием будет лежать
и на неё будет попадать луч от рейнджера мы будем видеть на экране надпись о
том что оружие есть. Если луч не попадает на коробку то мы будем видеть надпись
о том что оружия нет.
Так теперь, как только мы разобрались с входами нам нужно подключить выходы. К
выходам мы подключаем одну лишь переменную User. Вот как это выглядит:
@outputs User
Переменная User - это инструмент User. Который будет использовать нашу коробку.
То есть если по стандарту мы должны нажать на коробку кнопку
"Использовать"  (то есть кнопку "Е" когда мы смотрим
на коробку) то этот инструмент нам это всё заменит и все операции будут
производится автоматически.
Теперь в строчку persist зададим стринговое значение нашего текста, иначе мы
просто не сможем использовать текст в нашем механизме.
Выглядит это всё так:
@persist Text:string
Строчку trigger можно спокойно удалить.
Ну так, всё в общем, с переменными разобрались. Теперь приступим к кодингу.
Создаём пустой бокс на EGP:
EGP:egpBox(1,vec2(256,256),vec2(512,512))
И приписываем к нему материал. Список материалов которые можно приписывать к
боксам, мы можем найти в гугле. Я буду использовать материал второго эпизода
халвы.
Выглядит это так:
EGP:egpMaterial(1, "vgui/appchooser/background_ep2")
Где 1 это индекс нашего бокса, а в кавычки внесён путь к материалу.
Теперь приступим к созданию условий if. Что бы некого не задерживать я
объяснять что каждая из строчек делает не буду. Сами догадаетесь если знаете
английский и не первый раз работаете с программированием.
EGP:egpSize(3,50)
if(Ranger==0){EGP:egpBox(2,vec2(256,256),vec2(400,60)), EGP:egpColor(2,vec(114,3,0)), EGP:egpText(3,"Weapon:No",vec2(180,345)), EGP:egpPos(2,vec2(256,370))}
if(Ranger>0){EGP:egpBox(2,vec2(256,256),vec2(400,60)), EGP:egpColor(2,vec(3,114,0)), EGP:egpText(3,"Weapon:Yes",vec2(170,345)), EGP:egpPos(2,vec2(256,370))}
if(Pot==2000){User=1}
else{User=0}
Теперь разберём каждую из этих строк по порядку.
Первая строка это строка размера нашего текста, её можно не трогать. Что бы изменить размер редактируйте второй параметр. То есть вместо 50 можно вписать свой размер.
Вторая строка это условие при котором на экране будет гореть красный бокс и в нём будет надпись о том что оружия нет. Что бы определить если оружие используется рейнджер который при нуле как раз таки и показывает надпись о том что оружия нет.
Третья строка это условие при котором на экране будет гореть зелёный бокс и в нём будет текст сообщающий о том что оружие имеется. Опять таки тут используется рейнджер. Но хочу обратить ваше внимание на то что рейнджер не должен быть равен 1 или любому другому точному значению, тут главное что бы рейнджер показывал нам значение больше 0. Сделано это для того что бы наш механизм работал правильно.
Если допустим у нас рейнджер будет равен 1 или любому другому точному значению, то у нас будет один баг. Рейнджер определяет лишь расстояние. И мы не можем положить коробку с оружием на определённый точный кусок. По этому и используется условие что рейнджер должен быть равен любому значению выше нуля.
Четвёртая строка и пятая это уже непосредственно наше самое главное условие. Которое как раз таки выполняет выкидывание оружия.
Читается так:
если переменная Pot равна значению 2000 то нужно запустить User который будет равен 1
иначе не запускать User и оставить его в значении 0
То есть как вы уже поняли это и есть наша цена и всё что нужно для того что бы оружие вылезло из коробки.
Теперь осталось всё это соединить.
Это делается довольно просто:
От нашего чипа подключаем переменную Pot к нашему MoneyPot на значение StoredAmount. Далее от нашего чипа подключаем переменную Ranger к нашему рейнджеру (в ваере так и называется Ranger). Теперь подключаем переменную EGP на наш EGPv3 экран.
От инструмента User ведём инпут Fire на наш чип к оутпуту User.
Собственно всё, наш магазин готов, теперь осталось немного вашей фантазии для того что бы собрать каркас. Да прибудут с вами знания.
Внезапно полчища нек
Покроют земную твердь.
И если одна муркнет — «ня»,
Миллионы ответят — «смерть»!
V.I.P.
0
Новичок
Ой, E2 - сложная штука...
Я даже не знаю, как чужие поделки через него заказывать, а тут...
Но уже чувствую, что штука интересная.
Кто сломал гаррис?
Журналисты
0
Заслуженный участник
Мм, магаз на Е2, надо будет прочекать. 
V.I.P.
0
Участник
SCrZ, Е2 - гибрид, и один из самых простых языков. Попробуй С# выучи.
Внезапно полчища нек
Покроют земную твердь.
И если одна муркнет — «ня»,
Миллионы ответят — «смерть»!
Посетители
0
Новичок
C# тускнеет перед профессиональным Паскалем. C++ более гибкий и всё потому что у него нет ограничений в include модах. Вот такие истории.
Expression 2 это вообще зародыш от Lua двигателя, который как раз и написан на C#. Так что говорить о сложности двух братьев вообще бессмысленно.
Посетители
0
Новичок
За магазин +. Только ты не предусмотрел возможность ограбления с помощью User. Брешь инструмент, подключаешь кнопку и втыкаешь во внутрь, тыкаем кнопку и тырим оружие бесплатно.
Я от такого ставлю блок с отключенными столкновениями и подключаю Faiding Door. Потом тамймерами делаю поочерёдное включение, сперва скрываем блок, потом отправляем оружие и всё закрываем, чтобы никто не воровал.
V.I.P.
0
Участник
KACbIM, Ну это уже пусть люди сами думают какую защиту сделать. Я лишь натолкнул на базовые познания. А так в принципе можно 2 FD поставить и User не будет проходить сквозь пропы. Ты меня сам этому учил :)
Внезапно полчища нек
Покроют земную твердь.
И если одна муркнет — «ня»,
Миллионы ответят — «смерть»!
Посетители
0
Новичок
Спойлер [+]
Я конечно не видел этого урока , но мой магазин тоже похож
Посетители
0
Новичок
KACbIM
06:40, 11.03.2016
Спойлер [+]

Ну как тебе сказать...
Попробуй русские буквы добавить. Можно через toChar(), но это будет громоздко, по этому используй httpUrlDecode().
Например:
EGP:egpText(1,"FOOD NO", vec2(165,200)),EGP:egpSize(1, 50),EGP:egpColor(1,vec(255,0,0)) // Это начальный текст. Заменим ну русский
EGP:egpText(1,htppUrlDecode("%D0%95%D0%B4%D0%B0%20%D0%B5%D1%81%D1%82%D1%8C "), vec2(165,200)),EGP:egpSize(1, 50),EGP:egpColor(1,vec(255,0,0)) // Это русский текст "Еда есть", для перевода используем гугл
В строке поиска вводим слово, которое на нужно для EGP v3, нажимаем "поиск", и в адресной строке после ...ie=UTF-8#q=... будет кракозябра с процентами буквами, это коды символов в 16-ричной кодировке, ещё там символ "+" заменяет пробел, так что его тоже копируем, если в предложении есть пробелы.
Посетители
0
Новичок
_Bern_Pepsi_(ismatuner)
16:18, 29.05.2016
Здравствуй!Вот мой код,у меня пишем ошибка EGP:
@name Magazin
@inputs EPG:wirelink Pot Ranger
@outputs User
@persist Text:string
EGP:egpBox(1,vec2(256,256),vec2(512,512))
EGP:egpMaterial(1, "vgui/appchooser/background_ep2")
Egp:egpSize(3,50)
if(Ranger==0){EGP:egpBox(2,vec2(256,256),vec2(400,60)), EGP:egpColor(2,vec(114,3,0)), EGP:egpText(3,"Weapon:No",vec2(180,345)), EGP:egpPos(2,vec2(256,370))}
if(Ranger>0){EGP:egpBox(2,vec2(256,256),vec2(400,60)), EGP:egpColor(2,vec(3,114,0)), EGP:egpText(3,"Weapon:Yes",vec2(170,345)), EGP:egpPos(2,vec2(256,370))}
if(Pot==2000){User=1}
else{User=0}
Посетители
0
Новичок
KACbIM
02:08, 22.06.2016
_Bern_Pepsi_(ismatuner) (29.05.2016, 16:17) писал:
Здравствуй!Вот мой код,у меня пишем ошибка EGP:@name Magazin
@inputs EPG:wirelink Pot Ranger
@outputs User
@persist Text:string
EGP:egpBox(1,vec2(256,256),vec2(512,512))
EGP:egpMaterial(1, "vgui/appchooser/background_ep2")
Egp:egpSize(3,50)
if(Ranger==0){EGP:egpBox(2,vec2(256,256),vec2(400,60)), EGP:egpColor(2,vec(114,3,0)), EGP:egpText(3,"Weapon:No",vec2(180,345)), EGP:egpPos(2,vec2(256,370))}
if(Ranger>0){EGP:egpBox(2,vec2(256,256),vec2(400,60)), EGP:egpColor(2,vec(3,114,0)), EGP:egpText(3,"Weapon:Yes",vec2(170,345)), EGP:egpPos(2,vec2(256,370))}
if(Pot==2000){User=1}
else{User=0}

У тебя ошибка в соблюдении регистра букв для переменных, т.е. если ты писал в @ переменную с большими буквами, то оно должно быть и в коде так же.
Egp:egpSize(3,50) исправь на EGP:egpSize(3,50) и в @inputs EPG:wirelink Pot Ranger у тебя написано не EGP, а EPG.
 
Доступ закрыт.
  • Вам запрещено отвечать в темах данного форума.