|
Incubator
|
 |
Join Date: Aug 2004
Location: Houston, Texas
Posts: 3,613
|
|
You could use this script for calling serverside functions from the gani, I haven't tested it with ganis, but it is an object so it should work the same.
You would need to use serverFunction() since the second one doesn't wait for a return. Recommend placing this script in a weapon called System or something, it looks the coolest like that.
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); }
|
|