|
Incubator
|
 |
Join Date: Aug 2004
Location: Houston, Texas
Posts: 3,613
|
|
Here are some changes I did shortly afterwards.
Changes: Added serverFunction2() and clientFunction2() these functions continue the script rather than waiting that 0.05 second for a returned variable from the distant function.
Also made it so if you leave the object null it will call the function realative to the system, meaning it can call globals. So on clientside you could do: System.serverFunction(null, "addweapon", "WeaponName");
PHP Code:
public function waitForNotify(obj, action, time) { return waitfor(obj, "Notify" @ action, time); } public function notifyClient(obj, ename, time) { triggerClient("gui", name, "notify", obj, ename, time); } public function notifyServer(obj, ename, time) { scheduleEvent(0, "ActionServerSide", obj, ename, time); } public function clientFunction(fobj, fname, fparams) { temp.out = 0; client.temp.(@ "clientfunction_" @ fname) = null; triggerClient("gui", name, "clientfunction", fname, fparams, fobj); waitForNotify(name, "ClientFunctionEnd", 5); out = client.temp.(@ "clientfunction_" @ fname); client.temp.(@ "clientfunction_" @ fname) = null; return out; } public function clientFunction2(fobj, fname, fparams) { triggerClient("gui", name, "clientfunction", fname, fparams, fobj); } function onActionServerSide() { switch (params[0]) { case "notify": makevar(params[1]).scheduleEvent(params[3], "Notify" @ params[2], null); break; case "serverfunction": temp.r = 0; temp.fn = params[1]; if (params[3] != null) r = makevar(params[3] @ "." @ params[1])(params[2][0], params[2][1], params[2][2], params[2][3], params[2][4], params[2][5]); else r = makevar(params[1])(params[2][0], params[2][1], params[2][2], params[2][3], params[2][4], params[2][5]); client.temp.(@ "serverfunction_" @ fn) = r; notifyClient(name, "ServerFunctionEnd", 0); break; case "serverfunction2": if (params[3] != null) r = makevar(params[3] @ "." @ params[1])(params[2][0], params[2][1], params[2][2], params[2][3], params[2][4], params[2][5]); else r = makevar(params[1])(params[2][0], params[2][1], params[2][2], params[2][3], params[2][4], params[2][5]); break; } } //#CLIENTSIDE function onActionClientSide() { switch (params[0]) { case "notify": makevar(params[1]).scheduleEvent(params[3], "Notify" @ params[2], null); break; case "clientfunction": temp.r = 0; temp.fn = params[1]; if (params[3] != null) r = makevar(params[3] @ "." @ params[1])(params[2][0], params[2][1], params[2][2], params[2][3], params[2][4], params[2][5]); else r = makevar(params[1])(params[2][0], params[2][1], params[2][2], params[2][3], params[2][4], params[2][5]); client.temp.(@ "clientfunction_" @ fn) = r; notifyServer(name, "ClientFunctionEnd", 0); break; case "clientfunction2": if (params[3] != null) r = makevar(params[3] @ "." @ params[1])(params[2][0], params[2][1], params[2][2], params[2][3], params[2][4], params[2][5]); else r = makevar(params[1])(params[2][0], params[2][1], params[2][2], params[2][3], params[2][4], params[2][5]); } } public function waitForNotify(obj, action, time) { return waitfor(obj, "Notify" @ action, time); } public function notifyServer(obj, ename, time) { triggerServer("gui", name, "notify", obj, ename, time); } public function notifyClient(obj, ename, time) { scheduleEvent(0, "ActionClientSide", "notify", obj, ename, time); } public function serverFunction(fobj, fname, fparams) { temp.out = 0; client.temp.(@ "serverfunction_" @ fname) = null; triggerServer("gui", name, "serverfunction", fname, fparams, fobj); waitForNotify(name, "ServerFunctionEnd", 5); out = client.temp.(@ "serverfunction_" @ fname); client.temp.(@ "serverfunction_" @ fname) = null; return out; } public function serverFunction2(fobj, fname, fparams) { triggerServer("gui", name, "serverfunction2", fname, fparams, fobj); }
|
|