Graal Forums

Graal Forums (https://forums.graalonline.com/forums/index.php)
-   NPC Scripting (https://forums.graalonline.com/forums/forumdisplay.php?f=8)
-   -   Chat room issue (https://forums.graalonline.com/forums/showthread.php?t=134264475)

Emera 09-04-2011 08:27 PM

Chat room issue
 
I am constructing a chat room system to get comfortable with using triggerserver and triggerclient. I am having some issues however. The chat won't appear on other players screens! I think the message is actually being sent to the serverside then back to the clientside because of a 0.5 second delay for the message to appear, but the other players in the chat room aren't actually receiving any messages. Here is the code.
PHP Code:

function onActionServerSide() {
  if (
params[0] == "sendtext") {
    
triggerclient("weapon", this.name, "gettext", params[1]);
  }
}

//#CLIENTSIDE
function onCreated() {
  new 
GuiWindowCtrl("Msg_Window1") {
    
profile = GuiBlueWindowProfile;
    
clientrelative = true;
    
clientextent = "320,240";

    
canmaximize = false;
    
canmove = true;
    
canresize = false;
    
closequery = false;
    
destroyonhide = true;
    
text = "Staff Chat Channel";
    
x = 517;
    
y = 203;

    new 
GuiScrollCtrl("Msg_Chatbox_Scroll") {
      
profile = GuiBlueScrollProfile;
      
height = 215;
      
hscrollbar = "dynamic";
      
vscrollbar = "dynamic";
      
width = 316;
      
x = 2;
      
y = 2;

      new 
GuiMLTextCtrl("Msg_Chatbox") {
        
profile = GuiBlueMLTextProfile;
        
height = 17;
        
horizsizing = "width";
        
text = "<b><font color = white>System</b>: Input /clear to clear the message box.";
        
width = 312;
      }
    }
    new 
GuiTextEditCtrl("Msg_ChatBar") {
      
profile = GuiBlueTextEditProfile;
      
height = 20;
      
width = 316;
      
x = 2;
      
y = 219;
    }
  }
}


function 
Msg_ChatBar.onAction() {
  
temp.msg = "";
  if (
Msg_ChatBar.text == "/clear") {
    
Msg_Chatbox.text = "Cleared!";
  } else {
    if (
Msg_ChatBar.text != NULL) {
      
temp.msg = Msg_ChatBar.text;
      
triggerserver("weapon", this.name, "sendtext", temp.msg);
      
Msg_ChatBar.text = "";
    }
  }
  if (
temp.msg.starts("/font ")) {
    
say2("Works");
  }
}

function 
onActionClientSide() {
  if (
params[0] == "gettext") {
    if (
clientr.isStaff) {
      
Msg_Chatbox.addtext("<br><b><font color = yellow>" @ player.nick @ "</b>: " @ params[1], false);
      
Msg_ChatBox.scrolltobottom();
    } else {
      
Msg_Chatbox.addtext("<br><b><font color = cyan>" @ player.nick @ "</b>: " @ params[1], false);
      
Msg_ChatBox.scrolltobottom();
    }
  }
} 

Thanks for any help I receive.

0PiX0 09-04-2011 08:57 PM

You are only sending the message to the player that triggered the server. To trigger all players in the chatroom, loop through them, and trigger them like so:
playerobj.triggerclient(stuff);

Emera 09-04-2011 09:06 PM

So would I have to do...
PHP Code:

function onActionServerSide() { 
  if (
params[0] == "sendtext") { 
    
playerobj.triggerclient("weapon", this.name, "gettext", params[1]); 
  } 
} 


0PiX0 09-04-2011 09:09 PM

Something like this:
PHP Code:

function onActionServerSide() { 
  if (
params[0] == "sendtext")
    for (
temp.pl: playersinthechatroom) 
      
pl.triggerclient("weapon", this.name, "gettext", params[1]); 
} 


fowlplay4 09-04-2011 09:09 PM

This is how:

PHP Code:

// other code
for (temp.pl: allplayers) {
  if (
temp.pl.level != NULL) {
    
temp.pl.triggerclient(this.name, "gettext", params[1]);
  }
}
// other code 

If players can be in different chat rooms then you can use:

if (temp.pl.clientr.chatroom == clientr.chatroom)

Instead of sending it to everyone.

Emera 09-05-2011 12:11 PM

Now, whenever you receive a new message, the scroll bar scrolls all the way to the right of the multi line box. Is there any way to disable the horizontal scroll bar?
I can't post the code because my browser gives a security risk error when I post it, so here is the Graal paste bin link.
Code

Mark Sir Link 09-05-2011 12:53 PM

hscrollbar = "alwaysOn", "alwaysOff", "dynamic"

Emera 09-05-2011 01:00 PM

Quote:

Originally Posted by Mark Sir Link (Post 1667128)
hscrollbar = "alwaysOn", "alwaysOff", "dynamic"

<3 Thank you!


All times are GMT +2. The time now is 02:13 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
Copyright (C) 1998-2019 Toonslab All Rights Reserved.