Welcome to Сообщество игровых серверов NETZONA.ORG

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. Зарегистрировавшись и войдя в систему, вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию другим участникам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?
  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/

  • Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/

  • Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades

NPC помощник

Статус
В этой теме нельзя размещать новые ответы.

daydreamer

Пользователь
Регистрация
30 Апр 2020
Сообщения
31
Реакции
0
Баллы
16
Объясняю суть, хочу сделать Энтити с моделькой NPC, который будет отвечать на вопросы, выбираемые в поле. Как на условном юнионе короче, кто подскажет, как это сделать? Код оттуда не совсем работает, нажимая на E ничего не появляется(
init.lua:
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")

include("shared.lua")


function ENT:Initialize()
self:SetModel("models/other/ven/tk_basic_01/tk_basic.mdl")
self:SetBodygroup(0,1)
self:SetBodygroup(1,1)
self:PhysicsInit(SOLID_VPHYSICS)
self:SetMoveType(MOVETYPE_NONE)
self:SetSolid(SOLID_BBOX)
self:SetHullSizeNormal()

self:CapabilitiesAdd(bit.bor(CAP_ANIMATEDFACE, CAP_TURN_HEAD))
self:SetUseType(SIMPLE_USE)
self:DropToFloor()

self:SetMaxYawSpeed(90)


end
util.AddNetworkString("DrawNPCGUI")
function ENT:Use()
net.Start("NPCShopUI")
net.Send(ply)
end
end

cl_init.lua:
(весь код не вставляю, только часть отвечающую за интерфейс, который по идее должен вызываться на Е, не вставляю шрифты и диалоги)
local function NPCShopUI(len)

surface.PlaySound(table.Random(RandomSounds))

chat.AddText(col.o, "Капрал: ",ChatTextMessageColor, ChatTextMessage )

local NPCUI = vgui.Create( "DFrame" )
NPCUI:SetPos( ScrW()*0.35, ScrH()*0.75 )
NPCUI:SetSize( 545, 200 )
NPCUI:SetTitle( "" )
NPCUI:SetAlpha(0)
NPCUI:SetBackgroundBlur( true )
NPCUI:ShowCloseButton(false)
NPCUI:SetDraggable( false )
NPCUI:MakePopup()
NPCUI.Paint = function(self,w,h)
draw.RoundedBox(0,0,0,w,h,col.ba)
CreateThickOutlinedBox( 0,0,w,h,1,col.o )
end

NPCUI:AlphaTo(255,0.3,0)

local SelectedBox = vgui.Create( "DFrame",NPCUI )
SelectedBox:SetPos( ScrW()*0.35, ScrH()*0.625 )
SelectedBox:SetSize( 545, 35 )
SelectedBox:SetTitle( "Капрал:" )
SelectedBox:ShowCloseButton(false)
SelectedBox:SetDraggable( false )
SelectedBox:MakePopup()
SelectedBox.Paint = function(self,w,h)
draw.RoundedBox(0,0,0,w,h,col.ba)
CreateThickOutlinedBox( 0,0,w,h,1,col.o )
end

local richtext = vgui.Create( "RichText", SelectedBox )
richtext:Dock( FILL )
richtext:InsertColorChange( 192, 192, 192, 255 )
richtext:AppendText( "Добро пожаловать!" )

function richtext:PerformLayout()
self:SetFontInternal( "ChatFont" )
self:SetFGColor( Color( 255, 255, 255 ) )
end

local DermaList = vgui.Create( "DPanelList", NPCUI )
DermaList:SetPos( 5,30 )
DermaList:SetSize( NPCUI:GetWide()-10, NPCUI:GetTall()-35 )
DermaList:SetSpacing( 5 ) -- Spacing between items
DermaList:EnableHorizontal( false ) -- Only vertical items
DermaList:EnableVerticalScrollbar( true ) -- Allow scrollbar if you exceed the Y axis

local isSwitching = false

for k,v in pairs(iButtons) do
local DButton = vgui.Create( "DButton",layout )
DButton:SetText( v.text )
DButton:SetSize( 300, 25 )
DButton:SetTextColor(color_white)
DButton.DoClick = function()
end
DButton.Paint = function(self,w,h)
draw.RoundedBox(0,0,0,w,h,Color(255, 100, 80, 100))
CreateThickOutlinedBox( 0,0,w,h,1,col.ba )
end

DButton.DoClick = function()

if isSwitching then return end
isSwitching = true
SelectedBox:SizeTo( 545, 35, 0.3, 0)
richtext:SetText('')
timer.Simple(0.65,function()
richtext:SetText(v.info)
SelectedBox:SizeTo( 545, 100, 0.3, 0 )
timer.Simple(0.3,function() isSwitching = false end)
end)
end
DermaList:AddItem(DButton)
end


local CDButton = vgui.Create( "DButton",layout )
CDButton:SetText( "Мне пора!" )
CDButton:SetSize( 300, 25 )
CDButton:SetTextColor(color_white)
CDButton.DoClick = function()
if isSwitching then return end
surface.PlaySound(table.Random(RandomSounds))
NPCUI:Close()
end
CDButton.Paint = function(self,w,h)
draw.RoundedBox(0,0,0,w,h,Color(255, 100, 80, 100))
CreateThickOutlinedBox( 0,0,w,h,1,col.ba )
end
DermaList:AddItem(CDButton)
end
net.Receive("DrawNPCGUI", NPCShopUI)


shared.lua:

ENT.Base = "base_ai"
ENT.Type = "ai"
ENT.PrintName = "Помощь"
ENT.Category = "OtherNPC"
ENT.Author = "smbdy"
ENT.Spawnable = true
ENT.AutomaticFrameAdvance = true
 

danlimons

Пользователь
Регистрация
6 Фев 2018
Сообщения
97
Реакции
0
Баллы
19
Возраст
23
Веб-сайт
vk.com
Lua:
function ENT:Use(ply) --дописал внутри скобочек ply

net.Start("NPCShopUI")

net.Send(ply)

end

end
У тебя вообще ошибка в консоль должна писаться. Почаще туда смотри.
 

Рюзаки

Пользователь
Только чтение
Регистрация
11 Июл 2021
Сообщения
95
Реакции
0
Баллы
10
Веб-сайт
steamcommunity.com
Клан-тег
NevadaRP
Пол
Мужской
Род занятий
Страдаю херней в форумах, пишу сервер по Фаллаут тематике
Объясняю суть, хочу сделать Энтити с моделькой NPC, который будет отвечать на вопросы, выбираемые в поле. Как на условном юнионе короче, кто подскажет, как это сделать? Код оттуда не совсем работает, нажимая на E ничего не появляется(
init.lua:
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")

include("shared.lua")


function ENT:Initialize()
self:SetModel("models/other/ven/tk_basic_01/tk_basic.mdl")
self:SetBodygroup(0,1)
self:SetBodygroup(1,1)
self:PhysicsInit(SOLID_VPHYSICS)
self:SetMoveType(MOVETYPE_NONE)
self:SetSolid(SOLID_BBOX)
self:SetHullSizeNormal()

self:CapabilitiesAdd(bit.bor(CAP_ANIMATEDFACE, CAP_TURN_HEAD))
self:SetUseType(SIMPLE_USE)
self:DropToFloor()

self:SetMaxYawSpeed(90)


end
util.AddNetworkString("DrawNPCGUI")
function ENT:Use()
net.Start("NPCShopUI")
net.Send(ply)
end
end

cl_init.lua:
(весь код не вставляю, только часть отвечающую за интерфейс, который по идее должен вызываться на Е, не вставляю шрифты и диалоги)
local function NPCShopUI(len)

surface.PlaySound(table.Random(RandomSounds))

chat.AddText(col.o, "Капрал: ",ChatTextMessageColor, ChatTextMessage )

local NPCUI = vgui.Create( "DFrame" )
NPCUI:SetPos( ScrW()*0.35, ScrH()*0.75 )
NPCUI:SetSize( 545, 200 )
NPCUI:SetTitle( "" )
NPCUI:SetAlpha(0)
NPCUI:SetBackgroundBlur( true )
NPCUI:ShowCloseButton(false)
NPCUI:SetDraggable( false )
NPCUI:MakePopup()
NPCUI.Paint = function(self,w,h)
draw.RoundedBox(0,0,0,w,h,col.ba)
CreateThickOutlinedBox( 0,0,w,h,1,col.o )
end

NPCUI:AlphaTo(255,0.3,0)

local SelectedBox = vgui.Create( "DFrame",NPCUI )
SelectedBox:SetPos( ScrW()*0.35, ScrH()*0.625 )
SelectedBox:SetSize( 545, 35 )
SelectedBox:SetTitle( "Капрал:" )
SelectedBox:ShowCloseButton(false)
SelectedBox:SetDraggable( false )
SelectedBox:MakePopup()
SelectedBox.Paint = function(self,w,h)
draw.RoundedBox(0,0,0,w,h,col.ba)
CreateThickOutlinedBox( 0,0,w,h,1,col.o )
end

local richtext = vgui.Create( "RichText", SelectedBox )
richtext:Dock( FILL )
richtext:InsertColorChange( 192, 192, 192, 255 )
richtext:AppendText( "Добро пожаловать!" )

function richtext:PerformLayout()
self:SetFontInternal( "ChatFont" )
self:SetFGColor( Color( 255, 255, 255 ) )
end

local DermaList = vgui.Create( "DPanelList", NPCUI )
DermaList:SetPos( 5,30 )
DermaList:SetSize( NPCUI:GetWide()-10, NPCUI:GetTall()-35 )
DermaList:SetSpacing( 5 ) -- Spacing between items
DermaList:EnableHorizontal( false ) -- Only vertical items
DermaList:EnableVerticalScrollbar( true ) -- Allow scrollbar if you exceed the Y axis

local isSwitching = false

for k,v in pairs(iButtons) do
local DButton = vgui.Create( "DButton",layout )
DButton:SetText( v.text )
DButton:SetSize( 300, 25 )
DButton:SetTextColor(color_white)
DButton.DoClick = function()
end
DButton.Paint = function(self,w,h)
draw.RoundedBox(0,0,0,w,h,Color(255, 100, 80, 100))
CreateThickOutlinedBox( 0,0,w,h,1,col.ba )
end

DButton.DoClick = function()

if isSwitching then return end
isSwitching = true
SelectedBox:SizeTo( 545, 35, 0.3, 0)
richtext:SetText('')
timer.Simple(0.65,function()
richtext:SetText(v.info)
SelectedBox:SizeTo( 545, 100, 0.3, 0 )
timer.Simple(0.3,function() isSwitching = false end)
end)
end
DermaList:AddItem(DButton)
end


local CDButton = vgui.Create( "DButton",layout )
CDButton:SetText( "Мне пора!" )
CDButton:SetSize( 300, 25 )
CDButton:SetTextColor(color_white)
CDButton.DoClick = function()
if isSwitching then return end
surface.PlaySound(table.Random(RandomSounds))
NPCUI:Close()
end
CDButton.Paint = function(self,w,h)
draw.RoundedBox(0,0,0,w,h,Color(255, 100, 80, 100))
CreateThickOutlinedBox( 0,0,w,h,1,col.ba )
end
DermaList:AddItem(CDButton)
end
net.Receive("DrawNPCGUI", NPCShopUI)


shared.lua:

ENT.Base = "base_ai"
ENT.Type = "ai"
ENT.PrintName = "Помощь"
ENT.Category = "OtherNPC"
ENT.Author = "smbdy"
ENT.Spawnable = true
ENT.AutomaticFrameAdvance = true
Лучше показал бы всю часть, а так не понятно, выглядит всё нормально.
 

daydreamer

Пользователь
Регистрация
30 Апр 2020
Сообщения
31
Реакции
0
Баллы
16
Да я сделал уже
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу