AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Returns from Fake Forwards (https://forums.alliedmods.net/showthread.php?t=89563)

Exolent[jNr] 04-07-2009 18:14

Returns from Fake Forwards
 
How would I get the return value from a plugin that is using a fake forward that is executed by another plugin?

ot_207 04-07-2009 18:47

Re: Returns from Fake Forwards
 
Quote:

Originally Posted by Exolent[jNr] (Post 800255)
How would I get the return value from a plugin that is using a fake forward that is executed by another plugin?

You can use callfunc or create another forward/native that will send that return value.
This is how I would do at least and at the first thought ...

Emp` 04-07-2009 23:52

Re: Returns from Fake Forwards
 
You have plugin A sending fakeforward, plugin B using fakeforward, and you want plugin C to get what plugin B returned?

Exolent[jNr] 04-08-2009 15:41

Re: Returns from Fake Forwards
 
Quote:

Originally Posted by Emp` (Post 800440)
You have plugin A sending fakeforward, plugin B using fakeforward, and you want plugin C to get what plugin B returned?

No, I want plugin A to get what plugin B returned so I can check to see if "PLUGIN_HANDLED" or whatever returned.

Emp` 04-08-2009 16:26

Re: Returns from Fake Forwards
 
Code:

ExecuteForward( forward, return_value );
return_value should be what plugin B returned.

If you are using CreateMultiForward, you might want to check the second parameter in CreateMultiForward.
Code:

#define ET_IGNORE                0        //ignore return val
#define ET_STOP                        1        //stop on PLUGIN_HANDLED
#define ET_STOP2                2        //same, except return biggest
#define ET_CONTINUE                3        //no stop, return biggest


P34nut 04-08-2009 16:30

Re: Returns from Fake Forwards
 
PHP Code:

new fwAuth
public plugin_cfg()
{
   
fwAuth CreateMultiForward("user_auth"ET_STOPFP_CELL)
}

........
public 
client_authorized(id)
{
   new 
iReturn
   ExecuteForward
(fwAuthiReturnid)

  if (
iReturn == PLUGIN_HANDLED)
     
// Ugh
  
else
     
// OHHHHH


Like this?

Exolent[jNr] 04-08-2009 17:03

Re: Returns from Fake Forwards
 
Okay so I was trying some code for this:
Code:
#include <amxmodx> #include <amxmisc> new g_forward1; new g_forward2; public plugin_init() {     register_plugin("Forward Test Sender", "0.1", "Exolent");         register_clcmd("say /forward", "CmdForward"); } public plugin_natives() {     register_library("forward_test");         g_forward1 = CreateMultiForward("my_forward1", ET_IGNORE);     g_forward2 = CreateMultiForward("my_forward2", ET_STOP); } public CmdForward() {     new ret;     for( new i = 0; i < 5; i++ )     {         ExecuteForward(g_forward1, ret);         log_amx("Return1 [%i / 5]: %i", i + 1, ret);                 ExecuteForward(g_forward2, ret);         log_amx("Return2 [%i / 5]: %i", i + 1, ret);     } }
Code:
#include <amxmodx> #include <amxmisc> #if AMXX_VERSION_NUM >= 175     #pragma reqlib "forward_test"     #if !defined AMXMODX_NOAUTOLOAD         #pragma loadlib "forward_test"     #endif #else     #pragma library "forward_test" #endif forward my_forward1(); forward my_forward2(); public plugin_init() {     register_plugin("Forward Test Receiver", "0.1", "Exolent"); } public my_forward1() {     static count;     count++;     log_amx("Forward1: return %i;", count);     return count; } public my_forward2() {     static count;     count++;     log_amx("Forward2: return %i;", count);     return count; }
Here is the output in my console:
Code:

L 04/08/2009 - 16:03:15: [forward_test_sender.amxx] Return1 [1 / 5]: 0
L 04/08/2009 - 16:03:15: [forward_test_sender.amxx] Return2 [1 / 5]: 0
L 04/08/2009 - 16:03:15: [forward_test_sender.amxx] Return1 [2 / 5]: 0
L 04/08/2009 - 16:03:15: [forward_test_sender.amxx] Return2 [2 / 5]: 0
L 04/08/2009 - 16:03:15: [forward_test_sender.amxx] Return1 [3 / 5]: 0
L 04/08/2009 - 16:03:15: [forward_test_sender.amxx] Return2 [3 / 5]: 0
L 04/08/2009 - 16:03:15: [forward_test_sender.amxx] Return1 [4 / 5]: 0
L 04/08/2009 - 16:03:15: [forward_test_sender.amxx] Return2 [4 / 5]: 0
L 04/08/2009 - 16:03:15: [forward_test_sender.amxx] Return1 [5 / 5]: 0
L 04/08/2009 - 16:03:15: [forward_test_sender.amxx] Return2 [5 / 5]: 0

There are no logs from forward_test_receive.amxx

amxx plugins
Code:

[ 28] Forward Test Sender    0.1        Exolent          forward_test_se  running 
 [ 29] Forward Test Receiver  0.1        Exolent          forward_test_re  running

So both are running, there are no errors in my console, and I'm using AMXX 1.8.1

Where is the problem?

Emp` 04-08-2009 18:54

Re: Returns from Fake Forwards
 
Print what g_forward1 and g_forward2 are. Also print what ExecuteForward returns.

Exolent[jNr] 04-08-2009 19:13

Re: Returns from Fake Forwards
 
Code:
#include <amxmodx> #include <amxmisc> new g_forward1; new g_forward2; public plugin_init() {     register_plugin("Forward Test Sender", "0.1", "Exolent");         register_clcmd("say /forward", "CmdForward"); } public plugin_natives() {     register_library("forward_test");         g_forward1 = CreateMultiForward("my_forward1", ET_IGNORE);     g_forward2 = CreateMultiForward("my_forward2", ET_STOP); } public CmdForward() {     log_amx("g_forward1 = %i", g_forward1);     log_amx("g_forward2 = %i", g_forward2);         static execute, ret;     for( new i = 0; i < 5; i++ )     {         execute = ExecuteForward(g_forward1, ret);         log_amx("Forward1 (#%i) (Execute: %i) (Return: %i)", i + 1, execute, ret);                 execute = ExecuteForward(g_forward2, ret);         log_amx("Forward2 (#%i) (Execute: %i) (Return: %i)", i + 1, execute, ret);     } }

Code:

L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] g_forward1 = 0
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] g_forward2 = 2
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] Forward1 (#1) (Execute: 1) (Return: 0)
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] Forward2 (#1) (Execute: 1) (Return: 0)
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] Forward1 (#2) (Execute: 1) (Return: 0)
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] Forward2 (#2) (Execute: 1) (Return: 0)
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] Forward1 (#3) (Execute: 1) (Return: 0)
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] Forward2 (#3) (Execute: 1) (Return: 0)
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] Forward1 (#4) (Execute: 1) (Return: 0)
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] Forward2 (#4) (Execute: 1) (Return: 0)
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] Forward1 (#5) (Execute: 1) (Return: 0)
L 04/08/2009 - 18:14:26: [forward_test_sender.amxx] Forward2 (#5) (Execute: 1) (Return: 0)


P34nut 04-08-2009 23:37

Re: Returns from Fake Forwards
 
Instead of using ET_STOP try using ET_STOP2 or ET_CONTINUE here


All times are GMT -4. The time now is 02:20.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.