View Single Post
  #7  
Old 06-02-2007, 04:33 PM
Inverness Inverness is offline
Incubator
Inverness's Avatar
Join Date: Aug 2004
Location: Houston, Texas
Posts: 3,613
Inverness is a jewel in the roughInverness is a jewel in the rough
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);
} 
__________________
Reply With Quote