I am brand new to LUA and I am trying to show a hidden entity but I think I am doing something wrong. I can call the sound effect but not the entity?
Any help greatly appreciated
g_plrinzone = {}
function plrinzone_init(e)
end
function plrinzone_main(e)
if g_Entity[e]['plrinzone']==1 then
PlaySound(e,0)
Show(e,lightning)
Destroy(e)
PerformLogicConnections(e)
end
end
recently I have been creating an imitation HarborRP gamemode for Garry's Mod, and I'm trying to recreate the Smuggler NPC (You'll know what I mean if you've ever played HarborRP) So basically I want the NPC to open ONE Derma-Frame window when the player presses their use key on it. I have the NPC created and all of that, but when the player simply presses their use key on the NPC, a million windows pop up, I have the NPC/Entity's use type set to SIMPLE_USE, but it seems like that doesn't matter because so many windows pop up. the VGUI/Derma Frame's settings is set to MakePopup() but that doesn't matter either. See if you can find whats wrong with it, I have very little knowledge of LUA.
init.lua file:
include("shared.lua")
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
util.AddNetworkString("smug")
hook.Add("PlayerUse", "menuu", function(ply, ent)
net.Start("smug")
net.Send(ply)
end)
function ENT:Initialize()
self:SetModel('models/humans/group01/female_01.mdl')
self:SetHullType(HULL_HUMAN)
self:SetHullSizeNormal()
self:SetNPCState(NPC_STATE_SCRIPT)
self:SetSolid(SOLID_BBOX)
self:SetUseType(SIMPLE_USE)
self:DropToFloor()
end
cl_init.lua file:
include("shared.lua")
function ENT:Draw()
self.Entity:DrawModel()
end
net.Receive("smug", function()
if( !frame ) then
local frame = vgui.Create("DFrame")
frame:SetSize(900,600)
frame:SetPos(ScrW()/2-450,ScrH()/2-300)
frame:SetVisible(true)
frame:MakePopup()
frame:SetDeleteOnClose(true)
elseif (frame) then print("HI")
end
end)
shared.lua file:
ENT.Base = "base_ai"
ENT.Type = "ai"
ENT.PrintName = "[DEV] Smuggler NPC"
ENT.Category = "InVaLiD's HBRP Entities"
ENT.Author = "InVaLiD"
ENT.Spawnable = true
ENT.AdminSpawnable = true
ENT.AutomaticFrameAdvance = true
Something To Note
All of these files are in the addons/smug_npc/lua/entities/ folder.
Yes, I know I have weird names for things, that's just me.
I have a basic to no knowledge of lua, so explain things please :)
I really do appreciate your help, and your will to help people, please know that I thank you all for being here just to sort other people's problems even though you could be spending your time doing something productive, Thank you!
You need to put your code that does net.Send into the entities ENT:Use function rather than on the PlayerUse hook.
function ENT:Use(ply)
net.Start("smug")
net.Send(ply)
end
The below line which you already have in your code in the initialize function makes the entity call the ENT:Use function once when a player presses E on it, which it seems that you want to do so that is good:
self:SetUseType(SIMPLE_USE)
Also, I recommend checking out the gmod forums if you need developer help in future.
GMod forums: https://gmod.facepunch.com/f
I know the pseudo code.
It goes something like this:
if f(x): g(x)*h(x) then u:g(x) and v:h(x)
for i:0 thru n do block
( binomial(n,i)*diff(u,x,i)*diff(v,x,n-i), i:i+1);
I'm not able to actually execute the code. I get some thing I don't need. Please
help me.
Thankyou
kill(all)$
y:x^4*log(x);
u:log(x);
v:x^4;
n:4;
lsum(binomial(n,i)*diff(u,x,n-i)*diff(v,x,i),i,[0,1,2,3,4]);
I'm trying to perform an operation on multiple lines on my form. I have tried to use multiselectionhelper, and it seems as it would work, but for some reason, it's not. My operation is still looking at the last line I have selected instead of all the selected lines.
myTable myTableTmp;
MultiSelectionHelper selectionHelper = MultiSelectionHelper::construct();
selectionHelper.parmDatasource(myTable_ds);
myTableTmp = selectionHelper.getFirst();
while (myTableTmp )
{
//perform operation
myTableTmp = selectionHelper.getNext();
}
This looks like it would work, but still not working as expected.
Any help would be greatly appreciated. Thanks!
I have finally figured it out. I'm not sure how I missed it. The answer was really simple. I had this:
myTable myTableTmp;
MultiSelectionHelper selectionHelper = MultiSelectionHelper::construct();
selectionHelper.parmDatasource(myTable_ds);
myTableTmp = selectionHelper.getFirst();
while (myTableTmp )
{
localTable.methodCall();
myTableTmp = selectionHelper.getNext();
}
I should have used myTableTmp.methodCall() instead of the localtable.methodCall()
Thanks for anyone that tried to help!
i made a script for garry's mode, using lua to code a script that allows me to when i bind a key, it will do a jump, then a 360 turn and shoot, but when i finished coding it, it won't let me run a test on it, why is this, and can you by chance tell me what i did wrong in the code. I am also 90% sure that the turn doesn't make a full 360, so if you could help me with that, i will be greatful. thanks.
Code:
function 360JumpShot()
timer.simple(.01,jump)
timer.simple(.02,turn)
timer.simple(.04,turn)
timer.simple(.06,turn)
timer.simple(.08,turn)
timer.simple(.10,turn)
timer.Simple(.12,Turn)
timer.Simple(.14,Turn)
timer.Simple(.16,Turn)
timer.Simple(.18,Turn)
timer.Simple(.20,Turn)
timer.Simple(.22,Turn)
timer.Simple(.24,Turn)
timer.Simple(.26,Turn)
timer.Simple(.28,Turn)
timer.Simple(.30,Turn)
timer.Simple(.32,Turn)
timer.Simple(.34,Turn)
timer.Simple(.36,Turn)
timer.Simple(.36,Turn)
timer.Simple(.40,Turn)
timer.Simple(.45,Turn)
timer.Simple(.50,Turn)
timer.Simple(.55,Turn)
timer.Simple(.60,Turn)
timer.Simple(.65,Turn)
timer.Simple(.70,Turn)
-- Get Noscoped
timer.simple(.7,function() RunConsoleCommand("+attack") end)
timer.simple(.72,function() RunConsoleCommand("-attack") end)
end
function Turn()
-- Turn(360)
LocalPlayer():SetEyeAngles(LocalPlayer():EyeAngles()-Angle(0,10,0))
end
function jump()
LocalPlayer():EyeAngles() LocalPlayer():SetEyeAngles(Angle(a.p-a.p-a.p, a.y-180, a.r))
end
-- Console Command
concommand.ADD("360Jump",360JumpShot)
alright, i got it to work.
Firstly, you cannot start your functions with digits so change
function 360JumpShot()
concommand.ADD("360Jump",360JumpShot)
to
function JumpShot()
concommand.Add("360Jump",JumpShot)
note that i also changed ADD to Add because LUA is case sensitive, considering that.. change
timer.simple(.01,jump)
timer.simple(.02,turn)
timer.simple(.04,turn)
timer.simple(.06,turn)
timer.simple(.08,turn)
timer.simple(.10,turn)
timer.simple(.7,function() RunConsoleCommand("+attack") end)
timer.simple(.72,function() RunConsoleCommand("-attack") end)
to
timer.Simple(.01,jump)
timer.Simple(.02,Turn)
timer.Simple(.04,Turn)
timer.Simple(.06,Turn)
timer.Simple(.08,Turn)
timer.Simple(.10,Turn)
timer.Simple(.7,function() RunConsoleCommand("+attack") end)
timer.Simple(.72,function() RunConsoleCommand("-attack") end)
after these changes your script works fine but you might want to find a way to move faster because your camera movement is very slow and is probably not exactly what you want.