I finally figured it out: Arma encodes all network traffic as 16- bit integers. Therefore, to send a string (like the player name), the individual characters are paired together, the first char of each pair becoming the lower byte of the new short, the second thar becoming the upper byte. At least that's what tank was probably thinking when he originally wrote the script (and nobody noticed it afterwards). Well, what actually happens is this:[code] char const * sRaw = s; // write first pairs of bytes for(i=0;i+1rawpacket); $c = $c + 2) { $this->swappedpacket[$c] = $this->rawpacket[$c + 1]; $this->swappedpacket[$c + 1] = $this->rawpacket[$c]; }[code]becomes[code] for ($c = 0; $c < strlen($this->rawpacket); $c = $c + 2) { $this->swappedpacket[$c] = $this->rawpacket[$c + 1]; $this->swappedpacket[$c + 1] = $this->rawpacket[$c]; if(ord($this->swappedpacket[$c]) > 127) { $this->swappedpacket[$c + 1] = chr(1 + ord($this->swappedpacket[$c + 1])); } }[/code]