View Single Post
Shadows Adi
AlliedModders Donor
Join Date: Aug 2019
Location: Romania
Old 05-26-2021 , 07:59   Re: callfunc_begin vs Multiforward which is better?
Reply With Quote #2

Quote:
Originally Posted by Celena Luna View Post
I used MultiForward for my Weapon Menu System and notice some time it cause crash on server or really huge lag spike if a lot of player try to buy weapons at the same time.

I thought it was because of it have to go though 20+ plugins using that forward and executed too many time (3 execute per player in < 1 second + chance of 10+ players press buy and execute at short period of time)
I assume it has some parameters, so it doesn't matter, it is called with different parameters, every time, per player, or per action, client_putinserver it's a forward too.
It doesn't matter if it's called in 1 plugin, 10 plugins and so on, it's executed once by a module or a plugin, so, passed params will be the same for every plugin in that moment.


Quote:
Originally Posted by Celena Luna View Post
So did some research and found callfunc_begin function which directly call function from specific plugins. With PluginID and FunctionID can be sent via "Weapon Register Native"(like ZP Class Register), in theory, it would be great for Weapon Menu System.

But still, it is my own assumption. I am not sure which one is better to use in this situation so I want to hear veteran opinion on this.

P/S: Some said that callfunc_begin is basically native so why not use native?
- Between replacing 2 parameters getting from Info Param of the menu item and have to create a .inc file, register_native, making a switch between menu item that lead to each native for each specific weapon? the first one definitely cleaner.
You should use a direct native, because it's faster to acces the native directly through a function than using a native to search for a function in certain plugin. it is not mandatory to create a include file, you can declare that you are using a native or forward in header's plugin ( this only if you're not registering a custom library ).

This code:
PHP Code:
/* Sublime AMXX Editor v4.2 */

#include <amxmodx>

#define PLUGIN  "New Plug-In"
#define VERSION "1.0.0-1"
#define AUTHOR  "Author"

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

does the same thing like this code:
PHP Code:
/* Sublime AMXX Editor v4.2 */

// Not included the library
//#include <amxmodx>

#define PLUGIN  "New Plug-In"
#define VERSION "1.0.0-1"
#define AUTHOR  "Author"

forward plugin_init()
native register_plugin(const plugin_name[], const version[], const author[])

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)

__________________


Accepting Paid Requests, contact PM.

MVP Of The Round View project on GITHUB / AlliedModders
CSGO REMAKE ~ CSGO MOD [STABLE + SOURCE CODE]
Shadows Adi is offline