Code: Select all
class TMenu : ListMenu
{
Actor plr;
override void Init(Menu parent, ListMenuDescriptor desc)
{
plr = players[consoleplayer].mo;
if(plr)
plr.health++;
Super.Init(parent, desc);
}
}
Moderator: GZDoom Developers
Code: Select all
class TMenu : ListMenu
{
Actor plr;
override void Init(Menu parent, ListMenuDescriptor desc)
{
plr = players[consoleplayer].mo;
if(plr)
plr.health++;
Super.Init(parent, desc);
}
}
I take comfort in knowing that all this zealous blocking is also how other games do it.Graf Zahl wrote:BTW, in games like Quake or Quake 2, everything had to be explicitly routed through the C/S protocol.
Code: Select all
Class GEventHandlers : EventHandler
{
override void NetworkProcess(ConsoleEvent e)
{
int playerNumber = e.Player;
let plr = players[playerNumber].mo;
if(plr)
{
if (e.Name == "TestNetEvent")
{
Console.Printf(e.Name.." called by player : "..playerNumber);
Console.Printf(plr.GetClassName());
Console.Printf("Before : "..plr.Health);
//plr.health++; //health is not updating properly
plr.A_SetInventory("Shotgun", 1);
Console.Printf("After : "..plr.Health);
}
else
{
Console.Printf("Invalid event");
}
}
}
}
Code: Select all
Class TMenu : ListMenu
{
Actor plr;
override void Init(Menu parent, ListMenuDescriptor desc)
{
//plr = players[consoleplayer].mo;
GEventHandlers.SendNetworkEvent("TestNetEvent",1,0,0);
Super.Init(parent, desc);
}
}
Cool, I made it work, but I'm still not sure what the hell is going on.Graf Zahl wrote:You also need to adjust the PlayerPawn's health to make it have an effect.
Code: Select all
Class GEventHandlers : EventHandler
{
override void NetworkProcess(ConsoleEvent e)
{
int playerNumber = e.Player;
let plr = players[playerNumber].mo;
if(plr)
{
if (e.Name == "TestNetEvent")
{
Console.Printf(e.Name.." called by player : "..playerNumber);
plr.Health++;
players[playerNumber].Health++;
}
else
{
Console.Printf("Invalid event");
}
}
}
}