tMessage-handling code tidied up for new clients/servers - vaccinewars - be a d… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit b8e6c1180be932834cd0e7e59f211c5aa31a83ca | |
parent f6eb1f80293e4987d855294318867a02ca6a9541 | |
Author: Ben Webb <[email protected]> | |
Date: Wed, 13 Sep 2000 16:28:59 +0000 | |
Message-handling code tidied up for new clients/servers | |
Diffstat: | |
M TODO | 2 -- | |
M po/dopewars.pot | 590 +++++++++++++++--------------- | |
M src/AIPlayer.c | 35 +++++++++++++++--------------… | |
M src/curses_client.c | 57 ++++++++++++++++-------------… | |
M src/gtk_client.c | 47 ++++++++++++-----------------… | |
M src/message.c | 179 +++++++++++++++++++++--------… | |
M src/message.h | 10 +++++++--- | |
M src/serverside.c | 3 +-- | |
M src/win32_client.c | 41 +++++++++++++----------------… | |
9 files changed, 505 insertions(+), 459 deletions(-) | |
--- | |
diff --git a/TODO b/TODO | |
t@@ -1,5 +1,3 @@ | |
-- Ignore "To" message field in client, and "From" field in server; use | |
- A_PLAYERID ability to replace player names in protocol with player IDs | |
- Fix GTK+ modal dialog behaviour (mouse grabbing during fighting) - _seems_ | |
to be OK... | |
- Revamp player-player fighting | |
diff --git a/po/dopewars.pot b/po/dopewars.pot | |
t@@ -6,7 +6,7 @@ | |
msgid "" | |
msgstr "" | |
"Project-Id-Version: PACKAGE VERSION\n" | |
-"POT-Creation-Date: 2000-09-13 05:02+0100\n" | |
+"POT-Creation-Date: 2000-09-13 16:56+0100\n" | |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | |
"Language-Team: LANGUAGE <[email protected]>\n" | |
t@@ -998,7 +998,7 @@ msgstr "" | |
msgid "CLQP" | |
msgstr "" | |
-#: src/curses_client.c:371 src/gtk_client.c:807 | |
+#: src/curses_client.c:371 src/gtk_client.c:804 | |
msgid "Where to, dude ? " | |
msgstr "" | |
t@@ -1015,11 +1015,11 @@ msgstr "" | |
msgid "How many do you drop? " | |
msgstr "" | |
-#: src/curses_client.c:454 src/curses_client.c:826 | |
+#: src/curses_client.c:454 src/curses_client.c:829 | |
msgid "What do you wish to buy? " | |
msgstr "" | |
-#: src/curses_client.c:456 src/curses_client.c:828 | |
+#: src/curses_client.c:456 src/curses_client.c:831 | |
msgid "What do you wish to sell? " | |
msgstr "" | |
t@@ -1084,7 +1084,7 @@ msgstr "" | |
msgid " Are you sure? " | |
msgstr "" | |
-#: src/curses_client.c:544 src/curses_client.c:562 src/curses_client.c:1688 | |
+#: src/curses_client.c:544 src/curses_client.c:562 src/curses_client.c:1691 | |
msgid "YN" | |
msgstr "" | |
t@@ -1096,257 +1096,257 @@ msgstr "" | |
msgid "New name: " | |
msgstr "" | |
-#: src/curses_client.c:621 | |
+#: src/curses_client.c:624 | |
msgid "You have been pushed from the server. Reverting to single player mode." | |
msgstr "" | |
-#: src/curses_client.c:631 | |
+#: src/curses_client.c:634 | |
msgid "The server has terminated. Reverting to single player mode." | |
msgstr "" | |
-#: src/curses_client.c:646 src/gtk_client.c:337 src/serverside.c:259 | |
+#: src/curses_client.c:649 src/gtk_client.c:335 src/serverside.c:258 | |
#, c-format | |
msgid "%s joins the game!" | |
msgstr "" | |
-#: src/curses_client.c:651 src/gtk_client.c:343 | |
+#: src/curses_client.c:654 src/gtk_client.c:341 | |
#, c-format | |
msgid "%s has left the game." | |
msgstr "" | |
-#: src/curses_client.c:656 | |
+#: src/curses_client.c:659 | |
#, c-format | |
msgid "%s will now be known as %s." | |
msgstr "" | |
-#: src/curses_client.c:680 | |
+#: src/curses_client.c:683 | |
msgid "S U B W A Y" | |
msgstr "" | |
-#: src/curses_client.c:723 | |
+#: src/curses_client.c:726 | |
msgid "" | |
"Unfortunately, somebody else is already using \"your\" name. Please change " | |
"it." | |
msgstr "" | |
-#: src/curses_client.c:744 | |
+#: src/curses_client.c:747 | |
msgid "H I G H S C O R E S" | |
msgstr "" | |
-#: src/curses_client.c:800 | |
+#: src/curses_client.c:803 | |
msgid "Will you B>uy, S>ell, or L>eave? " | |
msgstr "" | |
-#: src/curses_client.c:805 | |
+#: src/curses_client.c:808 | |
msgid "BSL" | |
msgstr "" | |
-#: src/curses_client.c:810 | |
+#: src/curses_client.c:813 | |
#, c-format | |
msgid "You don't have any %s to sell!" | |
msgstr "" | |
-#: src/curses_client.c:817 src/gtk_client.c:1083 | |
+#: src/curses_client.c:820 src/gtk_client.c:1079 | |
#, c-format | |
msgid "You'll need more %s to carry any more %s!" | |
msgstr "" | |
-#: src/curses_client.c:839 src/gtk_client.c:1087 | |
+#: src/curses_client.c:842 src/gtk_client.c:1083 | |
#, c-format | |
msgid "You don't have enough space to carry that %s!" | |
msgstr "" | |
-#: src/curses_client.c:847 src/gtk_client.c:1091 | |
+#: src/curses_client.c:850 src/gtk_client.c:1087 | |
#, c-format | |
msgid "You don't have enough cash to buy that %s!" | |
msgstr "" | |
-#: src/curses_client.c:860 src/gtk_client.c:1095 | |
+#: src/curses_client.c:863 src/gtk_client.c:1091 | |
msgid "You don't have any to sell!" | |
msgstr "" | |
-#: src/curses_client.c:884 | |
+#: src/curses_client.c:887 | |
msgid "How much money do you pay back? " | |
msgstr "" | |
-#: src/curses_client.c:890 src/curses_client.c:920 src/gtk_client.c:1930 | |
+#: src/curses_client.c:893 src/curses_client.c:923 src/gtk_client.c:1924 | |
msgid "You don't have that much money!" | |
msgstr "" | |
-#: src/curses_client.c:910 | |
+#: src/curses_client.c:913 | |
msgid "Do you want to D>eposit money, W>ithdraw money, or L>eave ? " | |
msgstr "" | |
-#: src/curses_client.c:913 | |
+#: src/curses_client.c:916 | |
msgid "DWL" | |
msgstr "" | |
-#: src/curses_client.c:915 | |
+#: src/curses_client.c:918 | |
msgid "How much money? " | |
msgstr "" | |
-#: src/curses_client.c:923 src/gtk_client.c:1923 | |
+#: src/curses_client.c:926 src/gtk_client.c:1917 | |
msgid "There isn't that much money in the bank..." | |
msgstr "" | |
-#: src/curses_client.c:1002 | |
+#: src/curses_client.c:1005 | |
msgid "Press any key..." | |
msgstr "" | |
-#: src/curses_client.c:1133 | |
+#: src/curses_client.c:1136 | |
msgid "Messages" | |
msgstr "" | |
-#: src/curses_client.c:1140 src/gtk_client.c:1381 | |
+#: src/curses_client.c:1143 src/gtk_client.c:1376 | |
msgid "Stats" | |
msgstr "" | |
-#: src/curses_client.c:1143 | |
+#: src/curses_client.c:1146 | |
#, c-format | |
msgid "Cash %17s" | |
msgstr "" | |
-#: src/curses_client.c:1150 | |
+#: src/curses_client.c:1153 | |
#, c-format | |
msgid "Health %3d" | |
msgstr "" | |
-#: src/curses_client.c:1152 | |
+#: src/curses_client.c:1155 | |
#, c-format | |
msgid "Bank %17s" | |
msgstr "" | |
-#: src/curses_client.c:1156 | |
+#: src/curses_client.c:1159 | |
#, c-format | |
msgid "Debt %17s" | |
msgstr "" | |
-#: src/curses_client.c:1160 | |
+#: src/curses_client.c:1163 | |
#, c-format | |
msgid "Space %6d" | |
msgstr "" | |
-#: src/curses_client.c:1162 | |
+#: src/curses_client.c:1165 | |
#, c-format | |
msgid "%s %3d Space %6d" | |
msgstr "" | |
-#: src/curses_client.c:1173 | |
+#: src/curses_client.c:1176 | |
msgid "Trenchcoat" | |
msgstr "" | |
-#: src/curses_client.c:1213 | |
+#: src/curses_client.c:1216 | |
#, c-format | |
msgid "Spy reports for %s" | |
msgstr "" | |
-#: src/curses_client.c:1217 src/curses_client.c:1222 | |
+#: src/curses_client.c:1220 src/curses_client.c:1225 | |
#, c-format | |
msgid "%s..." | |
msgstr "" | |
-#: src/curses_client.c:1243 | |
+#: src/curses_client.c:1246 | |
msgid "No other players are currently logged on!" | |
msgstr "" | |
-#: src/curses_client.c:1248 | |
+#: src/curses_client.c:1251 | |
msgid "Players currently logged on:-" | |
msgstr "" | |
-#: src/curses_client.c:1396 | |
+#: src/curses_client.c:1399 | |
msgid "Hey dude, what's your name? " | |
msgstr "" | |
-#: src/curses_client.c:1430 | |
+#: src/curses_client.c:1433 | |
#, c-format | |
msgid "Hey dude, the prices of %s here are:" | |
msgstr "" | |
-#: src/curses_client.c:1442 | |
+#: src/curses_client.c:1445 | |
msgid "Will you B>uy" | |
msgstr "" | |
-#: src/curses_client.c:1443 | |
+#: src/curses_client.c:1446 | |
msgid ", S>ell" | |
msgstr "" | |
-#: src/curses_client.c:1444 | |
+#: src/curses_client.c:1447 | |
msgid ", D>rop" | |
msgstr "" | |
-#: src/curses_client.c:1445 | |
+#: src/curses_client.c:1448 | |
msgid ", T>alk, P>age, L>ist" | |
msgstr "" | |
-#: src/curses_client.c:1448 | |
+#: src/curses_client.c:1451 | |
msgid ", G>ive" | |
msgstr "" | |
-#: src/curses_client.c:1451 | |
+#: src/curses_client.c:1454 | |
msgid ", F>ight" | |
msgstr "" | |
-#: src/curses_client.c:1455 | |
+#: src/curses_client.c:1458 | |
msgid ", J>et" | |
msgstr "" | |
-#: src/curses_client.c:1457 src/curses_client.c:1472 | |
+#: src/curses_client.c:1460 src/curses_client.c:1475 | |
msgid ", or Q>uit? " | |
msgstr "" | |
-#: src/curses_client.c:1465 | |
+#: src/curses_client.c:1468 | |
msgid "Do you " | |
msgstr "" | |
-#: src/curses_client.c:1467 | |
+#: src/curses_client.c:1470 | |
msgid "F>ight, " | |
msgstr "" | |
-#: src/curses_client.c:1468 | |
+#: src/curses_client.c:1471 | |
msgid "S>tand, " | |
msgstr "" | |
-#: src/curses_client.c:1470 | |
+#: src/curses_client.c:1473 | |
msgid "R>un, " | |
msgstr "" | |
-#: src/curses_client.c:1471 | |
+#: src/curses_client.c:1474 | |
msgid "D>eal " | |
msgstr "" | |
-#: src/curses_client.c:1514 | |
+#: src/curses_client.c:1517 | |
msgid "Connection to server lost! Reverting to single player mode" | |
msgstr "" | |
-#: src/curses_client.c:1543 | |
+#: src/curses_client.c:1546 | |
msgid "BSDTPLGFJQ" | |
msgstr "" | |
-#: src/curses_client.c:1545 | |
+#: src/curses_client.c:1548 | |
msgid "DRFSQ" | |
msgstr "" | |
-#: src/curses_client.c:1573 | |
+#: src/curses_client.c:1576 | |
msgid "List what? P>layers or S>cores? " | |
msgstr "" | |
-#: src/curses_client.c:1574 | |
+#: src/curses_client.c:1577 | |
msgid "PS" | |
msgstr "" | |
-#: src/curses_client.c:1583 | |
+#: src/curses_client.c:1586 | |
msgid "Whom do you want to page (talk privately to) ? " | |
msgstr "" | |
-#: src/curses_client.c:1598 | |
+#: src/curses_client.c:1601 | |
msgid "Talk: " | |
msgstr "" | |
-#: src/curses_client.c:1687 | |
+#: src/curses_client.c:1690 | |
msgid "Play again? " | |
msgstr "" | |
-#: src/curses_client.c:1699 | |
+#: src/curses_client.c:1702 | |
msgid "" | |
"No curses client available - rebuild the binary passing the\n" | |
"--enable-curses-client option to configure, or use a windowed\n" | |
t@@ -1441,216 +1441,216 @@ msgstr "" | |
msgid "Start new game" | |
msgstr "" | |
-#: src/gtk_client.c:208 | |
+#: src/gtk_client.c:207 | |
msgid "Inventory" | |
msgstr "" | |
-#: src/gtk_client.c:236 src/gtk_client.c:2166 src/gtk_client.c:2534 | |
+#: src/gtk_client.c:235 src/gtk_client.c:2159 src/gtk_client.c:2523 | |
msgid "Close" | |
msgstr "" | |
-#: src/gtk_client.c:266 | |
+#: src/gtk_client.c:265 | |
msgid "Connection to server lost - switching to single player mode" | |
msgstr "" | |
-#: src/gtk_client.c:311 | |
+#: src/gtk_client.c:309 | |
msgid "You have been pushed from the server." | |
msgstr "" | |
-#: src/gtk_client.c:316 | |
+#: src/gtk_client.c:314 | |
msgid "The server has terminated." | |
msgstr "" | |
-#: src/gtk_client.c:356 | |
+#: src/gtk_client.c:354 | |
#, c-format | |
msgid "Jetting to %s" | |
msgstr "" | |
-#: src/gtk_client.c:362 | |
+#: src/gtk_client.c:360 | |
msgid "<main>/Errands/Spy" | |
msgstr "" | |
-#: src/gtk_client.c:364 | |
+#: src/gtk_client.c:362 | |
#, c-format | |
msgid "_Spy\t(%s)" | |
msgstr "" | |
-#: src/gtk_client.c:368 | |
+#: src/gtk_client.c:366 | |
#, c-format | |
msgid "_Tipoff\t(%s)" | |
msgstr "" | |
-#: src/gtk_client.c:370 | |
+#: src/gtk_client.c:368 | |
msgid "<main>/Errands/Tipoff" | |
msgstr "" | |
-#: src/gtk_client.c:402 | |
+#: src/gtk_client.c:400 | |
msgid "High Scores" | |
msgstr "" | |
-#: src/gtk_client.c:436 src/gtk_client.c:1034 src/gtk_client.c:1494 | |
-#: src/gtk_client.c:1839 src/gtk_client.c:2004 src/gtk_client.c:2283 | |
-#: src/gtk_client.c:2441 | |
+#: src/gtk_client.c:434 src/gtk_client.c:1030 src/gtk_client.c:1489 | |
+#: src/gtk_client.c:1834 src/gtk_client.c:1998 src/gtk_client.c:2274 | |
+#: src/gtk_client.c:2431 | |
msgid "OK" | |
msgstr "" | |
-#: src/gtk_client.c:518 | |
+#: src/gtk_client.c:516 | |
msgid "Fight" | |
msgstr "" | |
-#: src/gtk_client.c:545 | |
+#: src/gtk_client.c:543 | |
#, c-format | |
msgid "_Deal %s" | |
msgstr "" | |
-#: src/gtk_client.c:549 src/gtk_client.c:1127 src/gtk_client.c:1324 | |
+#: src/gtk_client.c:547 src/gtk_client.c:1122 src/gtk_client.c:1319 | |
msgid "_Fight" | |
msgstr "" | |
-#: src/gtk_client.c:552 | |
+#: src/gtk_client.c:550 | |
msgid "_Stand" | |
msgstr "" | |
-#: src/gtk_client.c:555 src/gtk_client.c:1126 | |
+#: src/gtk_client.c:553 src/gtk_client.c:1121 | |
msgid "_Run" | |
msgstr "" | |
-#: src/gtk_client.c:798 | |
+#: src/gtk_client.c:795 | |
msgid "Jet to location" | |
msgstr "" | |
-#: src/gtk_client.c:867 | |
+#: src/gtk_client.c:864 | |
#, c-format | |
msgid "at %s" | |
msgstr "" | |
-#: src/gtk_client.c:872 | |
+#: src/gtk_client.c:869 | |
#, c-format | |
msgid "You are currently carrying %d %s" | |
msgstr "" | |
-#: src/gtk_client.c:877 | |
+#: src/gtk_client.c:874 | |
#, c-format | |
msgid "Available space: %d" | |
msgstr "" | |
-#: src/gtk_client.c:882 | |
+#: src/gtk_client.c:879 | |
#, c-format | |
msgid "You can afford %d" | |
msgstr "" | |
-#: src/gtk_client.c:932 src/gtk_client.c:1063 | |
+#: src/gtk_client.c:928 src/gtk_client.c:1059 | |
msgid "Buy" | |
msgstr "" | |
-#: src/gtk_client.c:933 src/gtk_client.c:1064 | |
+#: src/gtk_client.c:929 src/gtk_client.c:1060 | |
msgid "Sell" | |
msgstr "" | |
-#: src/gtk_client.c:934 src/gtk_client.c:1065 | |
+#: src/gtk_client.c:930 src/gtk_client.c:1061 | |
msgid "Drop" | |
msgstr "" | |
-#: src/gtk_client.c:1022 | |
+#: src/gtk_client.c:1018 | |
#, c-format | |
msgid "%s how many?" | |
msgstr "" | |
-#: src/gtk_client.c:1040 src/gtk_client.c:1839 src/gtk_client.c:2015 | |
-#: src/gtk_client.c:2291 | |
+#: src/gtk_client.c:1036 src/gtk_client.c:1834 src/gtk_client.c:2009 | |
+#: src/gtk_client.c:2282 | |
msgid "Cancel" | |
msgstr "" | |
-#: src/gtk_client.c:1079 | |
+#: src/gtk_client.c:1075 | |
#, c-format | |
msgid "You don't have any %s!" | |
msgstr "" | |
-#: src/gtk_client.c:1126 src/gtk_client.c:1840 | |
+#: src/gtk_client.c:1121 src/gtk_client.c:1835 | |
msgid "_Yes" | |
msgstr "" | |
-#: src/gtk_client.c:1126 src/gtk_client.c:1840 | |
+#: src/gtk_client.c:1121 src/gtk_client.c:1835 | |
msgid "_No" | |
msgstr "" | |
-#: src/gtk_client.c:1127 | |
+#: src/gtk_client.c:1122 | |
msgid "_Attack" | |
msgstr "" | |
-#: src/gtk_client.c:1127 | |
+#: src/gtk_client.c:1122 | |
msgid "_Evade" | |
msgstr "" | |
-#: src/gtk_client.c:1145 | |
+#: src/gtk_client.c:1140 | |
msgid "Question" | |
msgstr "" | |
-#: src/gtk_client.c:1254 | |
+#: src/gtk_client.c:1249 | |
msgid "<main>/Talk" | |
msgstr "" | |
-#: src/gtk_client.c:1256 | |
+#: src/gtk_client.c:1251 | |
msgid "<main>/List" | |
msgstr "" | |
-#: src/gtk_client.c:1258 | |
+#: src/gtk_client.c:1253 | |
msgid "<main>/Errands" | |
msgstr "" | |
-#: src/gtk_client.c:1274 | |
+#: src/gtk_client.c:1269 | |
msgid "Space" | |
msgstr "" | |
-#: src/gtk_client.c:1279 | |
+#: src/gtk_client.c:1274 | |
msgid "Cash" | |
msgstr "" | |
-#: src/gtk_client.c:1284 | |
+#: src/gtk_client.c:1279 | |
msgid "Debt" | |
msgstr "" | |
-#: src/gtk_client.c:1289 | |
+#: src/gtk_client.c:1284 | |
msgid "Bank" | |
msgstr "" | |
-#: src/gtk_client.c:1304 | |
+#: src/gtk_client.c:1299 | |
msgid "Health" | |
msgstr "" | |
-#: src/gtk_client.c:1324 | |
+#: src/gtk_client.c:1319 | |
msgid "_Jet!" | |
msgstr "" | |
-#: src/gtk_client.c:1355 | |
+#: src/gtk_client.c:1350 | |
msgid "dopewars" | |
msgstr "" | |
-#: src/gtk_client.c:1441 | |
+#: src/gtk_client.c:1436 | |
msgid "Drug Dealing and Research" | |
msgstr "" | |
-#: src/gtk_client.c:1442 | |
+#: src/gtk_client.c:1437 | |
msgid "Play Testing" | |
msgstr "" | |
-#: src/gtk_client.c:1443 | |
+#: src/gtk_client.c:1438 | |
msgid "Extensive Play Testing" | |
msgstr "" | |
-#: src/gtk_client.c:1445 | |
+#: src/gtk_client.c:1440 | |
msgid "Constructive Criticism" | |
msgstr "" | |
-#: src/gtk_client.c:1447 | |
+#: src/gtk_client.c:1442 | |
msgid "Unconstructive Criticism" | |
msgstr "" | |
-#: src/gtk_client.c:1451 | |
+#: src/gtk_client.c:1446 | |
msgid "About dopewars" | |
msgstr "" | |
-#: src/gtk_client.c:1460 | |
+#: src/gtk_client.c:1455 | |
msgid "" | |
"Based on John E. Dell's old Drug Wars game, dopewars is a simulation of an\n" | |
"imaginary drug market. dopewars is an All-American game which features\n" | |
t@@ -1662,151 +1662,151 @@ msgid "" | |
"have one month of game time to make your fortune.\n" | |
msgstr "" | |
-#: src/gtk_client.c:1468 | |
+#: src/gtk_client.c:1463 | |
#, c-format | |
msgid "" | |
"Version %s Copyright (C) 1998-2000 Ben Webb [email protected]\n" | |
"dopewars is released under the GNU General Public Licence\n" | |
msgstr "" | |
-#: src/gtk_client.c:1486 | |
+#: src/gtk_client.c:1481 | |
msgid "" | |
"\n" | |
"For information on the command line options, type dopewars -h at your\n" | |
"Unix prompt. This will display a help screen, listing the availableoptions." | |
msgstr "" | |
-#: src/gtk_client.c:1524 src/gtk_client.c:1547 | |
+#: src/gtk_client.c:1519 src/gtk_client.c:1542 | |
#, c-format | |
msgid "Status: Could not connect (%s)" | |
msgstr "" | |
-#: src/gtk_client.c:1535 | |
+#: src/gtk_client.c:1530 | |
#, c-format | |
msgid "Status: Attempting to contact %s..." | |
msgstr "" | |
-#: src/gtk_client.c:1595 | |
+#: src/gtk_client.c:1590 | |
#, c-format | |
msgid "%d of %d" | |
msgstr "" | |
-#: src/gtk_client.c:1659 src/gtk_client.c:1700 src/gtk_client.c:1741 | |
+#: src/gtk_client.c:1654 src/gtk_client.c:1695 src/gtk_client.c:1736 | |
msgid "Server" | |
msgstr "" | |
-#: src/gtk_client.c:1660 src/gtk_client.c:1715 | |
+#: src/gtk_client.c:1655 src/gtk_client.c:1710 | |
msgid "Port" | |
msgstr "" | |
-#: src/gtk_client.c:1661 | |
+#: src/gtk_client.c:1656 | |
msgid "Version" | |
msgstr "" | |
-#: src/gtk_client.c:1662 | |
+#: src/gtk_client.c:1657 | |
msgid "Players" | |
msgstr "" | |
-#: src/gtk_client.c:1663 | |
+#: src/gtk_client.c:1658 | |
msgid "Comment" | |
msgstr "" | |
-#: src/gtk_client.c:1676 | |
+#: src/gtk_client.c:1671 | |
msgid "New Game" | |
msgstr "" | |
-#: src/gtk_client.c:1685 | |
+#: src/gtk_client.c:1680 | |
msgid "Hey dude, what's your _name?" | |
msgstr "" | |
-#: src/gtk_client.c:1707 | |
+#: src/gtk_client.c:1702 | |
msgid "Host name" | |
msgstr "" | |
-#: src/gtk_client.c:1730 src/gtk_client.c:1793 | |
+#: src/gtk_client.c:1725 src/gtk_client.c:1788 | |
msgid "_Connect" | |
msgstr "" | |
-#: src/gtk_client.c:1743 src/gtk_client.c:1764 | |
+#: src/gtk_client.c:1738 src/gtk_client.c:1759 | |
msgid "Single player" | |
msgstr "" | |
-#: src/gtk_client.c:1749 | |
+#: src/gtk_client.c:1744 | |
msgid "_Antique mode" | |
msgstr "" | |
-#: src/gtk_client.c:1756 | |
+#: src/gtk_client.c:1751 | |
msgid "_Start single-player game" | |
msgstr "" | |
-#: src/gtk_client.c:1766 src/gtk_client.c:1804 | |
+#: src/gtk_client.c:1761 src/gtk_client.c:1799 | |
msgid "Metaserver" | |
msgstr "" | |
-#: src/gtk_client.c:1783 | |
+#: src/gtk_client.c:1778 | |
msgid "_Update" | |
msgstr "" | |
-#: src/gtk_client.c:1808 | |
+#: src/gtk_client.c:1803 | |
msgid "Status: Waiting for user input" | |
msgstr "" | |
-#: src/gtk_client.c:1961 | |
+#: src/gtk_client.c:1955 | |
#, c-format | |
msgid "Cash: %s" | |
msgstr "" | |
-#: src/gtk_client.c:1968 | |
+#: src/gtk_client.c:1962 | |
#, c-format | |
msgid "Debt: %s" | |
msgstr "" | |
-#: src/gtk_client.c:1971 | |
+#: src/gtk_client.c:1965 | |
#, c-format | |
msgid "Bank: %s" | |
msgstr "" | |
-#: src/gtk_client.c:1979 | |
+#: src/gtk_client.c:1973 | |
msgid "Pay back:" | |
msgstr "" | |
-#: src/gtk_client.c:1982 | |
+#: src/gtk_client.c:1976 | |
msgid "Deposit" | |
msgstr "" | |
-#: src/gtk_client.c:1986 | |
+#: src/gtk_client.c:1980 | |
msgid "Withdraw" | |
msgstr "" | |
-#: src/gtk_client.c:2010 | |
+#: src/gtk_client.c:2004 | |
msgid "Pay all" | |
msgstr "" | |
-#: src/gtk_client.c:2032 | |
+#: src/gtk_client.c:2026 | |
msgid "Player List" | |
msgstr "" | |
-#: src/gtk_client.c:2121 | |
+#: src/gtk_client.c:2114 | |
msgid "Talk to player(s)" | |
msgstr "" | |
-#: src/gtk_client.c:2143 | |
+#: src/gtk_client.c:2136 | |
msgid "Talk to all players" | |
msgstr "" | |
-#: src/gtk_client.c:2147 | |
+#: src/gtk_client.c:2140 | |
msgid "Message:-" | |
msgstr "" | |
-#: src/gtk_client.c:2160 | |
+#: src/gtk_client.c:2153 | |
msgid "Send" | |
msgstr "" | |
-#: src/gtk_client.c:2253 | |
+#: src/gtk_client.c:2244 | |
msgid "Spy On Player" | |
msgstr "" | |
-#: src/gtk_client.c:2255 | |
+#: src/gtk_client.c:2246 | |
#, c-format | |
msgid "" | |
"Please choose the player to spy on. Your %s will\n" | |
t@@ -1816,11 +1816,11 @@ msgid "" | |
"you, so any %s or %s that he's carrying may be lost!" | |
msgstr "" | |
-#: src/gtk_client.c:2263 | |
+#: src/gtk_client.c:2254 | |
msgid "Tip Off The Cops" | |
msgstr "" | |
-#: src/gtk_client.c:2265 | |
+#: src/gtk_client.c:2256 | |
#, c-format | |
msgid "" | |
"Please choose the player to tip off the cops to. Your %s will\n" | |
t@@ -1829,71 +1829,71 @@ msgid "" | |
"so any %s or %s that he's carrying may be lost!" | |
msgstr "" | |
-#: src/gtk_client.c:2305 | |
+#: src/gtk_client.c:2296 | |
#, c-format | |
msgid "Sack %s" | |
msgstr "" | |
-#: src/gtk_client.c:2306 | |
+#: src/gtk_client.c:2297 | |
#, c-format | |
msgid "" | |
"Are you sure? (Any %s or %s carried\n" | |
"by this %s may be lost!)" | |
msgstr "" | |
-#: src/gtk_client.c:2327 | |
+#: src/gtk_client.c:2317 | |
msgid "Name" | |
msgstr "" | |
-#: src/gtk_client.c:2328 | |
+#: src/gtk_client.c:2318 | |
msgid "Price" | |
msgstr "" | |
-#: src/gtk_client.c:2329 | |
+#: src/gtk_client.c:2319 | |
msgid "Number" | |
msgstr "" | |
-#: src/gtk_client.c:2331 | |
+#: src/gtk_client.c:2321 | |
msgid "_Buy ->" | |
msgstr "" | |
-#: src/gtk_client.c:2332 | |
+#: src/gtk_client.c:2322 | |
msgid "<- _Sell" | |
msgstr "" | |
-#: src/gtk_client.c:2333 | |
+#: src/gtk_client.c:2323 | |
msgid "_Drop <-" | |
msgstr "" | |
-#: src/gtk_client.c:2338 | |
+#: src/gtk_client.c:2328 | |
#, c-format | |
msgid "%s here" | |
msgstr "" | |
-#: src/gtk_client.c:2341 | |
+#: src/gtk_client.c:2331 | |
#, c-format | |
msgid "%s carried" | |
msgstr "" | |
-#: src/gtk_client.c:2417 | |
+#: src/gtk_client.c:2407 | |
msgid "Change Name" | |
msgstr "" | |
-#: src/gtk_client.c:2427 | |
+#: src/gtk_client.c:2417 | |
msgid "" | |
"Unfortunately, somebody else is already using \"your\" name. Please change " | |
"it:-" | |
msgstr "" | |
-#: src/gtk_client.c:2486 | |
+#: src/gtk_client.c:2476 | |
msgid "Done" | |
msgstr "" | |
-#: src/gtk_client.c:2520 | |
+#: src/gtk_client.c:2509 | |
msgid "Spy reports" | |
msgstr "" | |
-#: src/gtk_client.c:2591 | |
+#: src/gtk_client.c:2580 | |
msgid "" | |
"No GTK+ client available - rebuild the binary passing the\n" | |
"--enable-gtk-client option to configure, or use the curses\n" | |
t@@ -1948,77 +1948,77 @@ msgstr "" | |
msgid "cannot read high score file\n" | |
msgstr "" | |
-#: src/serverside.c:269 | |
+#: src/serverside.c:268 | |
#, c-format | |
msgid "MaxClients (%d) exceeded - dropping connection" | |
msgstr "" | |
-#: src/serverside.c:273 | |
+#: src/serverside.c:272 | |
msgid "" | |
"Sorry, but this server has a limit of 1 player, which has been " | |
"reached.^Please try connecting again later." | |
msgstr "" | |
-#: src/serverside.c:278 | |
+#: src/serverside.c:277 | |
#, c-format | |
msgid "" | |
"Sorry, but this server has a limit of %d players, which has been " | |
"reached.^Please try connecting again later." | |
msgstr "" | |
-#: src/serverside.c:291 | |
+#: src/serverside.c:290 | |
#, c-format | |
msgid "%s will now be known as %s" | |
msgstr "" | |
-#: src/serverside.c:306 | |
+#: src/serverside.c:305 | |
msgid "Your dealing time is up..." | |
msgstr "" | |
-#: src/serverside.c:317 | |
+#: src/serverside.c:316 | |
#, c-format | |
msgid "%s: DENIED jet to %s" | |
msgstr "" | |
-#: src/serverside.c:374 | |
+#: src/serverside.c:373 | |
#, c-format | |
msgid "%s now spying on %s" | |
msgstr "" | |
-#: src/serverside.c:382 | |
+#: src/serverside.c:381 | |
#, c-format | |
msgid "%s spy on %s: DENIED" | |
msgstr "" | |
-#: src/serverside.c:388 | |
+#: src/serverside.c:387 | |
#, c-format | |
msgid "%s tipped off the cops to %s" | |
msgstr "" | |
-#: src/serverside.c:396 | |
+#: src/serverside.c:395 | |
#, c-format | |
msgid "%s tipoff about %s: DENIED" | |
msgstr "" | |
-#: src/serverside.c:503 | |
+#: src/serverside.c:502 | |
msgid "--More--" | |
msgstr "" | |
-#: src/serverside.c:514 | |
+#: src/serverside.c:513 | |
msgid "Pager exited abnormally - using stdout instead..." | |
msgstr "" | |
-#: src/serverside.c:529 | |
+#: src/serverside.c:528 | |
#, c-format | |
msgid "Maintaining pid file %s" | |
msgstr "" | |
-#: src/serverside.c:533 | |
+#: src/serverside.c:532 | |
#, c-format | |
msgid "Cannot create pid file %s" | |
msgstr "" | |
-#: src/serverside.c:582 | |
+#: src/serverside.c:581 | |
#, c-format | |
msgid "" | |
"Cannot open high score file %s.\n" | |
t@@ -2026,144 +2026,144 @@ msgid "" | |
"specify an alternate high score file with the -f command line option." | |
msgstr "" | |
-#: src/serverside.c:619 | |
+#: src/serverside.c:618 | |
#, c-format | |
msgid "" | |
"dopewars server version %s ready and waiting for connections\n" | |
"on port %d. For assistance with server commands, enter the command \"help\"\n" | |
msgstr "" | |
-#: src/serverside.c:636 | |
+#: src/serverside.c:635 | |
msgid "Cannot install SIGUSR1 interrupt handler!" | |
msgstr "" | |
-#: src/serverside.c:642 | |
+#: src/serverside.c:641 | |
msgid "Cannot install SIGINT interrupt handler!" | |
msgstr "" | |
-#: src/serverside.c:645 | |
+#: src/serverside.c:644 | |
msgid "Cannot install SIGTERM interrupt handler!" | |
msgstr "" | |
-#: src/serverside.c:648 | |
+#: src/serverside.c:647 | |
msgid "Cannot install SIGHUP interrupt handler!" | |
msgstr "" | |
-#: src/serverside.c:653 | |
+#: src/serverside.c:652 | |
msgid "Cannot install pipe handler!" | |
msgstr "" | |
-#: src/serverside.c:676 | |
+#: src/serverside.c:675 | |
msgid "Users currently logged on:-\n" | |
msgstr "" | |
-#: src/serverside.c:681 | |
+#: src/serverside.c:680 | |
msgid "No users currently logged on!" | |
msgstr "" | |
-#: src/serverside.c:685 | |
+#: src/serverside.c:684 | |
#, c-format | |
msgid "Pushing %s" | |
msgstr "" | |
-#: src/serverside.c:687 src/serverside.c:695 | |
+#: src/serverside.c:686 src/serverside.c:694 | |
msgid "No such user!" | |
msgstr "" | |
-#: src/serverside.c:691 | |
+#: src/serverside.c:690 | |
#, c-format | |
msgid "%s killed" | |
msgstr "" | |
-#: src/serverside.c:697 | |
+#: src/serverside.c:696 | |
msgid "Unknown command - try \"help\" for help..." | |
msgstr "" | |
-#: src/serverside.c:714 | |
+#: src/serverside.c:713 | |
#, c-format | |
msgid "got connection from %s" | |
msgstr "" | |
-#: src/serverside.c:730 | |
+#: src/serverside.c:729 | |
#, c-format | |
msgid "%s leaves the server!" | |
msgstr "" | |
-#: src/serverside.c:798 | |
+#: src/serverside.c:797 | |
msgid "Standard input closed." | |
msgstr "" | |
-#: src/serverside.c:941 | |
+#: src/serverside.c:940 | |
#, c-format | |
msgid "Unable to read high score file %s" | |
msgstr "" | |
-#: src/serverside.c:961 | |
+#: src/serverside.c:960 | |
msgid "Congratulations! You made the high scores!" | |
msgstr "" | |
-#: src/serverside.c:974 | |
+#: src/serverside.c:973 | |
msgid "You didn't even make the high score table..." | |
msgstr "" | |
-#: src/serverside.c:988 | |
+#: src/serverside.c:987 | |
#, c-format | |
msgid "Unable to write high score file %s" | |
msgstr "" | |
-#: src/serverside.c:1007 | |
+#: src/serverside.c:1006 | |
msgid "(R.I.P.)" | |
msgstr "" | |
-#: src/serverside.c:1042 | |
+#: src/serverside.c:1041 | |
#, c-format | |
msgid "%s: Tipoff from %s" | |
msgstr "" | |
-#: src/serverside.c:1059 | |
+#: src/serverside.c:1058 | |
#, c-format | |
msgid "One of your %s was spying for %s.^The spy %s!" | |
msgstr "" | |
-#: src/serverside.c:1067 | |
+#: src/serverside.c:1066 | |
#, c-format | |
msgid "Your spy working with %s has been discovered!^The spy %s!" | |
msgstr "" | |
-#: src/serverside.c:1090 | |
+#: src/serverside.c:1089 | |
#, c-format | |
msgid " The lady next to you on the subway said,^ \"%s\"%s" | |
msgstr "" | |
-#: src/serverside.c:1093 | |
+#: src/serverside.c:1092 | |
msgid "^ (at least, you -think- that's what she said)" | |
msgstr "" | |
-#: src/serverside.c:1095 | |
+#: src/serverside.c:1094 | |
#, c-format | |
msgid " You hear someone playing %s" | |
msgstr "" | |
-#: src/serverside.c:1104 src/serverside.c:1113 src/serverside.c:1122 | |
-#: src/serverside.c:1131 | |
+#: src/serverside.c:1103 src/serverside.c:1112 src/serverside.c:1121 | |
+#: src/serverside.c:1130 | |
#, c-format | |
msgid "YN^Would you like to visit %s?" | |
msgstr "" | |
-#: src/serverside.c:1142 | |
+#: src/serverside.c:1141 | |
#, c-format | |
msgid "YN^^Would you like to hire %s %s for %s?" | |
msgstr "" | |
-#: src/serverside.c:1143 | |
+#: src/serverside.c:1142 | |
msgid "an" | |
msgstr "" | |
-#: src/serverside.c:1143 | |
+#: src/serverside.c:1142 | |
msgid "a" | |
msgstr "" | |
-#: src/serverside.c:1155 | |
+#: src/serverside.c:1154 | |
#, c-format | |
msgid "AE^%s is already here!^Do you Attack, or Evade?" | |
msgstr "" | |
t@@ -2172,336 +2172,336 @@ msgstr "" | |
#. The format string used for this purpose can be altered by | |
#. passing non-NULL "LoneMessage" (for unaccompanied Officer | |
#. Hardass) and/or "DeputyMessage" (for him with x deputies) | |
-#: src/serverside.c:1224 | |
+#: src/serverside.c:1223 | |
#, c-format | |
msgid "YN^Officer %s is chasing you!" | |
msgstr "" | |
-#: src/serverside.c:1226 | |
+#: src/serverside.c:1225 | |
#, c-format | |
msgid "YN^Officer %s and %d of his deputies are chasing you!" | |
msgstr "" | |
-#: src/serverside.c:1247 | |
+#: src/serverside.c:1246 | |
msgid "^Do you run?" | |
msgstr "" | |
-#: src/serverside.c:1250 | |
+#: src/serverside.c:1249 | |
msgid "^Do you Run, or Fight?" | |
msgstr "" | |
-#: src/serverside.c:1265 | |
+#: src/serverside.c:1264 | |
#, c-format | |
msgid "%s: tipoff by %s finished OK." | |
msgstr "" | |
-#: src/serverside.c:1271 | |
+#: src/serverside.c:1270 | |
#, c-format | |
msgid "Following your tipoff, the cops ambushed %s, who was shot dead" | |
msgstr "" | |
-#: src/serverside.c:1275 | |
+#: src/serverside.c:1274 | |
#, c-format | |
msgid "Following your tipoff, the cops ambushed %s, who escaped with %d %s. " | |
msgstr "" | |
-#: src/serverside.c:1312 | |
+#: src/serverside.c:1311 | |
msgid "^You stand there like an idiot." | |
msgstr "" | |
-#: src/serverside.c:1316 | |
+#: src/serverside.c:1315 | |
msgid "^You lose him in the alleys." | |
msgstr "" | |
-#: src/serverside.c:1318 | |
+#: src/serverside.c:1317 | |
msgid "^You lose them in the alleys." | |
msgstr "" | |
-#: src/serverside.c:1326 | |
+#: src/serverside.c:1325 | |
msgid "^You can't shake him, man!" | |
msgstr "" | |
-#: src/serverside.c:1328 | |
+#: src/serverside.c:1327 | |
msgid "^You can't shake them, man!" | |
msgstr "" | |
-#: src/serverside.c:1339 | |
+#: src/serverside.c:1338 | |
#, c-format | |
msgid "^You killed Officer %s! You find %s on his corpse!" | |
msgstr "" | |
-#: src/serverside.c:1353 | |
+#: src/serverside.c:1352 | |
#, c-format | |
msgid "YN^^^^Do you pay a doctor %s to sew your %s up?" | |
msgstr "" | |
-#: src/serverside.c:1357 | |
+#: src/serverside.c:1356 | |
#, c-format | |
msgid "YN^^^^Do you pay a doctor %s to sew you up?" | |
msgstr "" | |
-#: src/serverside.c:1369 | |
+#: src/serverside.c:1368 | |
msgid "^You got one, man!" | |
msgstr "" | |
-#: src/serverside.c:1372 | |
+#: src/serverside.c:1371 | |
msgid "^You missed!" | |
msgstr "" | |
-#: src/serverside.c:1376 | |
+#: src/serverside.c:1375 | |
msgid "^He's firing on you, man! " | |
msgstr "" | |
-#: src/serverside.c:1378 | |
+#: src/serverside.c:1377 | |
msgid "^They're firing on you, man! " | |
msgstr "" | |
-#: src/serverside.c:1381 | |
+#: src/serverside.c:1380 | |
msgid "You've been hit! " | |
msgstr "" | |
-#: src/serverside.c:1388 | |
+#: src/serverside.c:1387 | |
msgid "He wasted you, man! What a drag!" | |
msgstr "" | |
-#: src/serverside.c:1390 | |
+#: src/serverside.c:1389 | |
msgid "They wasted you, man! What a drag!" | |
msgstr "" | |
-#: src/serverside.c:1398 | |
+#: src/serverside.c:1397 | |
#, c-format | |
msgid "You lost one of your %s!" | |
msgstr "" | |
-#: src/serverside.c:1407 | |
+#: src/serverside.c:1406 | |
msgid "He missed!" | |
msgstr "" | |
-#: src/serverside.c:1409 | |
+#: src/serverside.c:1408 | |
msgid "They missed!" | |
msgstr "" | |
-#: src/serverside.c:1429 | |
+#: src/serverside.c:1428 | |
msgid "You were mugged in the subway!" | |
msgstr "" | |
-#: src/serverside.c:1440 | |
+#: src/serverside.c:1439 | |
#, c-format | |
msgid "You meet a friend! He gives you %d %s." | |
msgstr "" | |
-#: src/serverside.c:1445 | |
+#: src/serverside.c:1444 | |
#, c-format | |
msgid "You meet a friend! You give him %d %s." | |
msgstr "" | |
-#: src/serverside.c:1452 | |
+#: src/serverside.c:1451 | |
msgid "Sanitized away a RandomOffer" | |
msgstr "" | |
-#: src/serverside.c:1457 | |
+#: src/serverside.c:1456 | |
#, c-format | |
msgid "" | |
"Police dogs chase you for %d blocks! You dropped some %s! That's a drag, man!" | |
msgstr "" | |
-#: src/serverside.c:1471 | |
+#: src/serverside.c:1470 | |
#, c-format | |
msgid "You find %d %s on a dead dude in the subway!" | |
msgstr "" | |
-#: src/serverside.c:1483 | |
+#: src/serverside.c:1482 | |
#, c-format | |
msgid "Your mama made brownies with some of your %s! They were great!" | |
msgstr "" | |
-#: src/serverside.c:1491 | |
+#: src/serverside.c:1490 | |
msgid "" | |
"YN^There is some weed that smells like paraquat here!^It looks good! Will " | |
"you smoke it? " | |
msgstr "" | |
-#: src/serverside.c:1498 | |
+#: src/serverside.c:1497 | |
#, c-format | |
msgid "You stopped to %s." | |
msgstr "" | |
-#: src/serverside.c:1519 | |
+#: src/serverside.c:1518 | |
#, c-format | |
msgid "Would you like to buy a bigger trenchcoat for %s?" | |
msgstr "" | |
-#: src/serverside.c:1524 | |
+#: src/serverside.c:1523 | |
#, c-format | |
msgid "YN^Hey dude! I'll help carry your %s for a mere %s. Yes or no?" | |
msgstr "" | |
-#: src/serverside.c:1536 | |
+#: src/serverside.c:1535 | |
#, c-format | |
msgid "YN^Would you like to buy a %s for %s?" | |
msgstr "" | |
-#: src/serverside.c:1637 src/serverside.c:1748 | |
+#: src/serverside.c:1636 src/serverside.c:1747 | |
#, c-format | |
msgid "%s: offer was on behalf of %s" | |
msgstr "" | |
-#: src/serverside.c:1640 | |
+#: src/serverside.c:1639 | |
#, c-format | |
msgid "%s has accepted your %s!^Use the G key to contact your spy." | |
msgstr "" | |
-#: src/serverside.c:1686 | |
+#: src/serverside.c:1685 | |
msgid "" | |
"You hallucinated for three days on the wildest trip you ever imagined!^Then " | |
"you died because your brain disintegrated!" | |
msgstr "" | |
-#: src/serverside.c:1725 | |
+#: src/serverside.c:1724 | |
#, c-format | |
msgid "Too late - %s has just left!" | |
msgstr "" | |
-#: src/serverside.c:1751 | |
+#: src/serverside.c:1750 | |
#, c-format | |
msgid "%s has rejected your %s!" | |
msgstr "" | |
-#: src/serverside.c:1786 | |
+#: src/serverside.c:1785 | |
#, c-format | |
msgid "%s has got away!" | |
msgstr "" | |
-#: src/serverside.c:1827 | |
+#: src/serverside.c:1826 | |
#, c-format | |
msgid "%s has run off!" | |
msgstr "" | |
-#: src/serverside.c:1839 | |
+#: src/serverside.c:1838 | |
msgid "Coward! You successfully escaped from the fight." | |
msgstr "" | |
-#: src/serverside.c:1895 | |
+#: src/serverside.c:1894 | |
msgid "pitifully armed" | |
msgstr "" | |
-#: src/serverside.c:1896 | |
+#: src/serverside.c:1895 | |
msgid "lightly armed" | |
msgstr "" | |
-#: src/serverside.c:1897 | |
+#: src/serverside.c:1896 | |
msgid "moderately well armed" | |
msgstr "" | |
-#: src/serverside.c:1898 | |
+#: src/serverside.c:1897 | |
msgid "heavily armed" | |
msgstr "" | |
-#: src/serverside.c:1899 | |
+#: src/serverside.c:1898 | |
msgid "armed to the teeth" | |
msgstr "" | |
-#: src/serverside.c:1900 | |
+#: src/serverside.c:1899 | |
msgid " fires and " | |
msgstr "" | |
-#: src/serverside.c:1901 | |
+#: src/serverside.c:1900 | |
msgid " stands and takes it." | |
msgstr "" | |
-#: src/serverside.c:1904 | |
+#: src/serverside.c:1903 | |
#, c-format | |
msgid "%s arrives, with %d %s, %s,^%s" | |
msgstr "" | |
-#: src/serverside.c:1908 | |
+#: src/serverside.c:1907 | |
#, c-format | |
msgid "%s arrives, %s,^%s" | |
msgstr "" | |
-#: src/serverside.c:1913 | |
+#: src/serverside.c:1912 | |
#, c-format | |
msgid "%s fires and " | |
msgstr "" | |
-#: src/serverside.c:1915 | |
+#: src/serverside.c:1914 | |
#, c-format | |
msgid "%s stands and takes it." | |
msgstr "" | |
-#: src/serverside.c:1927 | |
+#: src/serverside.c:1926 | |
msgid "misses you!" | |
msgstr "" | |
-#: src/serverside.c:1928 | |
+#: src/serverside.c:1927 | |
#, c-format | |
msgid "You failed to hit %s." | |
msgstr "" | |
-#: src/serverside.c:1931 | |
+#: src/serverside.c:1930 | |
msgid "You stand and take it." | |
msgstr "" | |
-#: src/serverside.c:1935 | |
+#: src/serverside.c:1934 | |
msgid "hits you, man!" | |
msgstr "" | |
-#: src/serverside.c:1938 | |
+#: src/serverside.c:1937 | |
msgid " You've been wasted! What a drag!" | |
msgstr "" | |
-#: src/serverside.c:1939 | |
+#: src/serverside.c:1938 | |
#, c-format | |
msgid "You hit and killed %s" | |
msgstr "" | |
-#: src/serverside.c:1954 src/serverside.c:1987 | |
+#: src/serverside.c:1953 src/serverside.c:1986 | |
msgid ", and loot the body!" | |
msgstr "" | |
-#: src/serverside.c:1963 | |
+#: src/serverside.c:1962 | |
#, c-format | |
msgid "^You lost a %s, man!" | |
msgstr "" | |
-#: src/serverside.c:1968 | |
+#: src/serverside.c:1967 | |
#, c-format | |
msgid "You are paid a bounty of %s in reward for killing^one of %s's %s" | |
msgstr "" | |
-#: src/serverside.c:1976 | |
+#: src/serverside.c:1975 | |
#, c-format | |
msgid "You killed one of %s's %s (%d left)" | |
msgstr "" | |
-#: src/serverside.c:1994 | |
+#: src/serverside.c:1993 | |
#, c-format | |
msgid "You fire, and hit %s!" | |
msgstr "" | |
-#: src/serverside.c:2034 | |
+#: src/serverside.c:2033 | |
msgid "YN^Officer %%s spots you dropping %s, and chases you!" | |
msgstr "" | |
-#: src/serverside.c:2036 | |
+#: src/serverside.c:2035 | |
msgid "" | |
"YN^Officer %%s and %%d of his deputies spot you dropping %s, and chase you!" | |
msgstr "" | |
-#: src/serverside.c:2191 | |
+#: src/serverside.c:2190 | |
msgid "Player removed due to idle timeout" | |
msgstr "" | |
-#: src/serverside.c:2201 | |
+#: src/serverside.c:2200 | |
msgid "Player removed due to connect timeout" | |
msgstr "" | |
-#: src/serverside.c:2207 src/serverside.c:2213 | |
+#: src/serverside.c:2206 src/serverside.c:2212 | |
#, c-format | |
msgid "%s fails to return fire..." | |
msgstr "" | |
-#: src/message.c:449 | |
+#: src/message.c:467 | |
#, c-format | |
msgid "" | |
"This server is version %s, while your client is version %s.\n" | |
t@@ -2510,27 +2510,27 @@ msgid "" | |
"for the latest version." | |
msgstr "" | |
-#: src/message.c:588 | |
+#: src/message.c:606 | |
msgid "Could not find host" | |
msgstr "" | |
-#: src/message.c:589 | |
+#: src/message.c:607 | |
msgid "Could not create network socket" | |
msgstr "" | |
-#: src/message.c:590 src/message.c:623 | |
+#: src/message.c:608 src/message.c:641 | |
msgid "Connection refused or no server present" | |
msgstr "" | |
-#: src/message.c:789 | |
+#: src/message.c:800 | |
msgid "Cannot locate metaserver" | |
msgstr "" | |
-#: src/message.c:790 | |
+#: src/message.c:801 | |
msgid "Cannot create socket" | |
msgstr "" | |
-#: src/message.c:792 | |
+#: src/message.c:803 | |
msgid "Metaserver not running HTTP or connection denied" | |
msgstr "" | |
t@@ -2659,7 +2659,7 @@ msgstr "" | |
msgid "Reckon I'll just have to shoot you for your own good." | |
msgstr "" | |
-#: src/AIPlayer.c:448 | |
+#: src/AIPlayer.c:447 | |
msgid "" | |
"This binary has been compiled without networking support, and thus cannot " | |
"act as an AI player.\n" | |
diff --git a/src/AIPlayer.c b/src/AIPlayer.c | |
t@@ -107,7 +107,7 @@ void AISetName(Player *AIPlay) { | |
text=g_strdup_printf("AI) %s",AINames[brandom(0,NUMNAMES)]); | |
SetPlayerName(AIPlay,text); | |
g_free(text); | |
- SendClientMessage(NULL,C_NONE,C_NAME,NULL,GetPlayerName(AIPlay),AIPlay); | |
+ SendNullClientMessage(AIPlay,C_NONE,C_NAME,NULL,GetPlayerName(AIPlay)); | |
g_print(_("Using name %s\n"),GetPlayerName(AIPlay)); | |
} | |
t@@ -116,16 +116,16 @@ int HandleAIMessage(char *Message,Player *AIPlay) { | |
/* "Message" for AI player "AIPlay". Returns 1 if the game should */ | |
/* be ended as a result, 0 otherwise. */ | |
char *Data,Code,AICode,WasFighting; | |
- Player *From,*To,*tmp; | |
+ Player *From,*tmp; | |
GSList *list; | |
gchar *prstr,*prstr2; | |
struct timeval tv; | |
gboolean Handled; | |
- if (ProcessMessage(Message,AIPlay,&From,&AICode,&Code,&To, | |
+ if (ProcessMessage(Message,AIPlay,&From,&AICode,&Code, | |
&Data,FirstClient)==-1) { | |
g_warning("Bad network message. Oops."); return 0; | |
} | |
- Handled=HandleGenericClientMessage(From,AICode,Code,To,Data,NULL); | |
+ Handled=HandleGenericClientMessage(From,AICode,Code,AIPlay,Data,NULL); | |
switch(Code) { | |
case C_ENDLIST: | |
g_print(_("Players in this game:-\n")); | |
t@@ -143,7 +143,7 @@ int HandleAIMessage(char *Message,Player *AIPlay) { | |
AIPlay->Flags |= FIGHTING+CANSHOOT; | |
} | |
if (TotalGunsCarried(AIPlay)>0 && AIPlay->Health>MINSAFEHEALTH) { | |
- SendClientMessage(AIPlay,C_NONE,C_FIGHTACT,NULL,"F",AIPlay); | |
+ SendClientMessage(AIPlay,C_NONE,C_FIGHTACT,NULL,"F"); | |
} else { | |
AIJet(AIPlay); | |
} | |
t@@ -155,7 +155,7 @@ int HandleAIMessage(char *Message,Player *AIPlay) { | |
g_print("%s: %s\n",GetPlayerName(From),Data); | |
break; | |
case C_MSGTO: | |
- g_print("%s->%s: %s\n",GetPlayerName(From),GetPlayerName(To),Data); | |
+ g_print("%s->%s: %s\n",GetPlayerName(From),GetPlayerName(AIPlay),Data… | |
break; | |
case C_JOIN: | |
g_print(_("%s joins the game.\n"),Data); break; | |
t@@ -180,7 +180,7 @@ int HandleAIMessage(char *Message,Player *AIPlay) { | |
WasFighting=FALSE; | |
if (From==&Noone) { | |
if (AIPlay->Flags & FIGHTING) WasFighting=TRUE; | |
- ReceivePlayerData(Data,To); | |
+ ReceivePlayerData(Data,AIPlay); | |
} else { | |
ReceivePlayerData(Data,From); /* spy reports */ | |
} | |
t@@ -219,7 +219,7 @@ int HandleAIMessage(char *Message,Player *AIPlay) { | |
return 1; | |
default: | |
if (!Handled) g_message("%s^%c^%s%s\n",GetPlayerName(From),Code, | |
- GetPlayerName(To),Data); | |
+ GetPlayerName(AIPlay),Data); | |
break; | |
} | |
return 0; | |
t@@ -275,7 +275,7 @@ void AIDealDrugs(Player *AIPlay) { | |
AIPlay->CoatSize+=Num; | |
AIPlay->Cash+=Num*AIPlay->Drugs[Highest].Price; | |
text=g_strdup_printf("drug^%d^%d",Highest,-Num); | |
- SendClientMessage(AIPlay,C_NONE,C_BUYOBJECT,NULL,text,AIPlay); | |
+ SendClientMessage(AIPlay,C_NONE,C_BUYOBJECT,NULL,text); | |
g_free(text); | |
} | |
if (AIPlay->Drugs[Highest].Price != 0 && | |
t@@ -291,7 +291,7 @@ void AIDealDrugs(Player *AIPlay) { | |
text=g_strdup_printf("drug^%d^%d",Highest,Num); | |
AIPlay->CoatSize-=Num; | |
AIPlay->Cash-=Num*AIPlay->Drugs[Highest].Price; | |
- SendClientMessage(AIPlay,C_NONE,C_BUYOBJECT,NULL,text,AIPlay); | |
+ SendClientMessage(AIPlay,C_NONE,C_BUYOBJECT,NULL,text); | |
g_free(text); | |
} | |
} | |
t@@ -318,12 +318,12 @@ void AIGunShop(Player *AIPlay) { | |
(prstr=FormatPrice(Gun[i].Price))); | |
g_free(prstr); | |
text=g_strdup_printf("gun^%d^1",i); | |
- SendClientMessage(AIPlay,C_NONE,C_BUYOBJECT,NULL,text,AIPlay); | |
+ SendClientMessage(AIPlay,C_NONE,C_BUYOBJECT,NULL,text); | |
g_free(text); | |
} | |
} | |
} while (Bought); | |
- SendClientMessage(AIPlay,C_NONE,C_DONE,NULL,NULL,AIPlay); | |
+ SendClientMessage(AIPlay,C_NONE,C_DONE,NULL,NULL); | |
} | |
void AIJet(Player *AIPlay) { | |
t@@ -343,7 +343,7 @@ void AIJet(Player *AIPlay) { | |
} | |
while (NewLocation==AIPlay->IsAt) NewLocation=brandom(0,NumLocation); | |
sprintf(text,"%d",NewLocation); | |
- SendClientMessage(AIPlay,C_NONE,C_REQUESTJET,NULL,text,AIPlay); | |
+ SendClientMessage(AIPlay,C_NONE,C_REQUESTJET,NULL,text); | |
} | |
void AIPayLoan(Player *AIPlay) { | |
t@@ -352,19 +352,19 @@ void AIPayLoan(Player *AIPlay) { | |
gchar *prstr; | |
if (AIPlay->Cash-AIPlay->Debt >= MINSAFECASH) { | |
prstr=pricetostr(AIPlay->Debt); | |
- SendClientMessage(AIPlay,C_NONE,C_PAYLOAN,NULL,prstr,AIPlay); | |
+ SendClientMessage(AIPlay,C_NONE,C_PAYLOAN,NULL,prstr); | |
g_free(prstr); | |
g_print(_("Debt of %s paid off to loan shark\n"), | |
(prstr=FormatPrice(AIPlay->Debt))); | |
g_free(prstr); | |
} | |
- SendClientMessage(AIPlay,C_NONE,C_DONE,NULL,NULL,AIPlay); | |
+ SendClientMessage(AIPlay,C_NONE,C_DONE,NULL,NULL); | |
} | |
void AISendAnswer(Player *From,Player *To,char *answer) { | |
/* Sends the answer "answer" from AI player "From" to the server, */ | |
/* claiming to be for player "To". Also prints the answer on the screen. */ | |
- SendClientMessage(From,C_NONE,C_ANSWER,To,answer,From); puts(answer); | |
+ SendClientMessage(From,C_NONE,C_ANSWER,To,answer); puts(answer); | |
} | |
void AIHandleQuestion(char *Data,char AICode,Player *AIPlay,Player *From) { | |
t@@ -438,8 +438,7 @@ void AISendRandomMessage(Player *AIPlay) { | |
N_("Zzzzz... are you dealing in candy or what?"), | |
N_("Reckon I'll just have to shoot you for your own good.") | |
}; | |
- SendClientMessage(AIPlay,C_NONE,C_MSG,NULL, | |
- _(RandomInsult[brandom(0,5)]),AIPlay); | |
+ SendClientMessage(AIPlay,C_NONE,C_MSG,NULL,_(RandomInsult[brandom(0,5)])); | |
} | |
#else /* NETWORKING */ | |
diff --git a/src/curses_client.c b/src/curses_client.c | |
t@@ -379,7 +379,7 @@ static int jet(Player *Play,char AllowReturn) { | |
curs_set(0); | |
sprintf(text,"%d",c-'1'); | |
DisplayMode=DM_NONE; | |
- SendClientMessage(Play,C_NONE,C_REQUESTJET,NULL,text,Play); | |
+ SendClientMessage(Play,C_NONE,C_REQUESTJET,NULL,text); | |
return 1; | |
} | |
} | |
t@@ -426,7 +426,7 @@ static void DropDrugs(Player *Play) { | |
c=atoi(buf); g_free(buf); | |
if (c>0) { | |
g_string_sprintf(text,"drug^%d^%d",i,-c); | |
- SendClientMessage(Play,C_NONE,C_BUYOBJECT,NULL,text->str,Play); | |
+ SendClientMessage(Play,C_NONE,C_BUYOBJECT,NULL,text->str); | |
} | |
break; | |
} | |
t@@ -477,7 +477,7 @@ static void DealDrugs(Player *Play,char Buy) { | |
c=atoi(input); g_free(input); g_free(text); | |
if (c>=0) { | |
text=g_strdup_printf("drug^%d^%d",DrugNum,c); | |
- SendClientMessage(Play,C_NONE,C_BUYOBJECT,NULL,text,Play); | |
+ SendClientMessage(Play,C_NONE,C_BUYOBJECT,NULL,text); | |
g_free(text); | |
} | |
} else { | |
t@@ -487,7 +487,7 @@ static void DealDrugs(Player *Play,char Buy) { | |
c=atoi(input); g_free(input); g_free(text); | |
if (c>=0) { | |
text=g_strdup_printf("drug^%d^%d",DrugNum,-c); | |
- SendClientMessage(Play,C_NONE,C_BUYOBJECT,NULL,text,Play); | |
+ SendClientMessage(Play,C_NONE,C_BUYOBJECT,NULL,text); | |
g_free(text); | |
} | |
} | |
t@@ -531,22 +531,22 @@ static void GiveErrand(Player *Play) { | |
if (Play->Bitches.Carried>0 || c=='C') switch (c) { | |
case 'S': | |
To=ListPlayers(Play,TRUE,_("Whom do you want to spy on? ")); | |
- if (To) SendClientMessage(Play,C_NONE,C_SPYON,To,NULL,Play); | |
+ if (To) SendClientMessage(Play,C_NONE,C_SPYON,To,NULL); | |
break; | |
case 'T': | |
To=ListPlayers(Play,TRUE, | |
_("Whom do you want to tip the cops off to? ")); | |
- if (To) SendClientMessage(Play,C_NONE,C_TIPOFF,To,NULL,Play); | |
+ if (To) SendClientMessage(Play,C_NONE,C_TIPOFF,To,NULL); | |
break; | |
case 'G': | |
attrset(PromptAttr); | |
addstr(_(" Are you sure? ")); | |
c=GetKey(_("YN"),"YN",FALSE,TRUE); | |
- if (c=='Y') SendClientMessage(Play,C_NONE,C_SACKBITCH,NULL,NULL,Play); | |
+ if (c=='Y') SendClientMessage(Play,C_NONE,C_SACKBITCH,NULL,NULL); | |
break; | |
case 'C': | |
if (Play->Flags & SPYINGON) { | |
- SendClientMessage(Play,C_NONE,C_CONTACTSPY,NULL,NULL,Play); | |
+ SendClientMessage(Play,C_NONE,C_CONTACTSPY,NULL,NULL); | |
} | |
break; | |
} | |
t@@ -567,7 +567,11 @@ static void change_name(Player *Play,char nullname) { | |
gchar *NewName; | |
NewName=nice_input(_("New name: "),23,0,0,NULL); | |
if (NewName[0]) { | |
- SendClientMessage(nullname ? NULL : Play,C_NONE,C_NAME,NULL,NewName,Play… | |
+ if (nullname) { | |
+ SendNullClientMessage(Play,C_NONE,C_NAME,NULL,NewName); | |
+ } else { | |
+ SendClientMessage(Play,C_NONE,C_NAME,NULL,NewName); | |
+ } | |
SetPlayerName(Play,NewName); | |
} | |
g_free(NewName); | |
t@@ -588,8 +592,7 @@ void HandleClientMessage(char *Message,Player *Play) { | |
gboolean Handled; | |
/* Ignore To: field - all messages will be for Player "Play" */ | |
- if (ProcessMessage(Message,Play,&From,&AICode,&Code,NULL, | |
- &Data,FirstClient)==-1) { | |
+ if (ProcessMessage(Message,Play,&From,&AICode,&Code,&Data,FirstClient)==-1)… | |
return; | |
} | |
t@@ -694,20 +697,20 @@ void HandleClientMessage(char *Message,Player *Play) { | |
i=GetKey(wrd,wrd,FALSE,TRUE); | |
wrd=g_strdup_printf("%c",i); | |
SendClientMessage(Play,C_NONE,C_ANSWER, | |
- From==&Noone ? NULL : From,wrd,Play); | |
+ From==&Noone ? NULL : From,wrd); | |
g_free(wrd); | |
break; | |
case C_LOANSHARK: | |
LoanShark(Play); | |
- SendClientMessage(Play,C_NONE,C_DONE,NULL,NULL,Play); | |
+ SendClientMessage(Play,C_NONE,C_DONE,NULL,NULL); | |
break; | |
case C_BANK: | |
Bank(Play); | |
- SendClientMessage(Play,C_NONE,C_DONE,NULL,NULL,Play); | |
+ SendClientMessage(Play,C_NONE,C_DONE,NULL,NULL); | |
break; | |
case C_GUNSHOP: | |
GunShop(Play); | |
- SendClientMessage(Play,C_NONE,C_DONE,NULL,NULL,Play); | |
+ SendClientMessage(Play,C_NONE,C_DONE,NULL,NULL); | |
break; | |
case C_UPDATE: | |
if (From==&Noone) { | |
t@@ -865,7 +868,7 @@ void GunShop(Player *Play) { | |
Play->Guns[c2].Carried--; | |
} | |
text=g_strdup_printf("gun^%d^%d",c2,c=='B' ? 1 : -1); | |
- SendClientMessage(Play,C_NONE,C_BUYOBJECT,NULL,text,Play); | |
+ SendClientMessage(Play,C_NONE,C_BUYOBJECT,NULL,text); | |
g_free(text); | |
print_status(Play,0); | |
} | |
t@@ -891,7 +894,7 @@ void LoanShark(Player *Play) { | |
nice_wait(); | |
} else { | |
SendClientMessage(Play,C_NONE,C_PAYLOAN,NULL, | |
- (prstr=pricetostr(money)),Play); | |
+ (prstr=pricetostr(money))); | |
g_free(prstr); | |
break; | |
} | |
t@@ -926,7 +929,7 @@ void Bank(Player *Play) { | |
break; | |
} else { | |
SendClientMessage(Play,C_NONE,C_DEPOSIT,NULL, | |
- (prstr=pricetostr(money)),Play); | |
+ (prstr=pricetostr(money))); | |
g_free(prstr); | |
break; | |
} | |
t@@ -1406,7 +1409,7 @@ static void Curses_DoGame(Player *Play) { | |
SendAbilities(Play); | |
SetPlayerName(Play,buf); | |
- SendClientMessage(NULL,C_NONE,C_NAME,NULL,buf,Play); | |
+ SendNullClientMessage(Play,C_NONE,C_NAME,NULL,buf); | |
g_free(buf); g_free(OldName); | |
text=g_string_new(""); | |
t@@ -1566,7 +1569,7 @@ static void Curses_DoGame(Player *Play) { | |
if (want_to_quit()==1) { | |
DisplayMode=DM_NONE; | |
clear_bottom(); | |
- SendClientMessage(Play,C_NONE,C_WANTQUIT,NULL,NULL,Play); | |
+ SendClientMessage(Play,C_NONE,C_WANTQUIT,NULL,NULL); | |
} | |
} else if (c=='L' && Network) { | |
attrset(PromptAttr); | |
t@@ -1576,7 +1579,7 @@ static void Curses_DoGame(Player *Play) { | |
ListPlayers(Play,FALSE,NULL); | |
} else if (i=='S') { | |
DisplayMode=DM_NONE; | |
- SendClientMessage(Play,C_NONE,C_REQUESTSCORE,NULL,NULL,Play); | |
+ SendClientMessage(Play,C_NONE,C_REQUESTSCORE,NULL,NULL); | |
} | |
} else if (c=='P' && Network) { | |
tmp=ListPlayers(Play,TRUE, | |
t@@ -1585,7 +1588,7 @@ static void Curses_DoGame(Player *Play) { | |
attrset(TextAttr); clear_line(22); | |
TalkMsg=nice_input("Talk: ",22,0,0,NULL); | |
if (TalkMsg[0]) { | |
- SendClientMessage(Play,C_NONE,C_MSGTO,tmp,TalkMsg,Play); | |
+ SendClientMessage(Play,C_NONE,C_MSGTO,tmp,TalkMsg); | |
buf=g_strdup_printf("%s->%s: %s",GetPlayerName(Play), | |
GetPlayerName(tmp),TalkMsg); | |
display_message(buf); | |
t@@ -1597,7 +1600,7 @@ static void Curses_DoGame(Player *Play) { | |
attrset(TextAttr); clear_line(22); | |
TalkMsg=nice_input(_("Talk: "),22,0,0,NULL); | |
if (TalkMsg[0]) { | |
- SendClientMessage(Play,C_NONE,C_MSG,NULL,TalkMsg,Play); | |
+ SendClientMessage(Play,C_NONE,C_MSG,NULL,TalkMsg); | |
buf=g_strdup_printf("%s: %s",GetPlayerName(Play),TalkMsg); | |
display_message(buf); | |
g_free(buf); | |
t@@ -1616,7 +1619,7 @@ static void Curses_DoGame(Player *Play) { | |
if (TotalGunsCarried(Play)>0 && Play->Flags&CANSHOOT) { | |
buf=g_strdup_printf("%c",c); | |
Play->Flags &= ~CANSHOOT; | |
- SendClientMessage(Play,C_NONE,C_FIGHTACT,NULL,buf,Play); | |
+ SendClientMessage(Play,C_NONE,C_FIGHTACT,NULL,buf); | |
g_free(buf); | |
} | |
break; | |
t@@ -1624,14 +1627,14 @@ static void Curses_DoGame(Player *Play) { | |
if (TotalGunsCarried(Play)==0 && Play->Flags&CANSHOOT) { | |
buf=g_strdup_printf("%c",c); | |
Play->Flags &= ~CANSHOOT; | |
- SendClientMessage(Play,C_NONE,C_FIGHTACT,NULL,buf,Play); | |
+ SendClientMessage(Play,C_NONE,C_FIGHTACT,NULL,buf); | |
g_free(buf); | |
} | |
break; | |
case 'Q': | |
if (want_to_quit()==1) { | |
DisplayMode=DM_NONE; clear_bottom(); | |
- SendClientMessage(Play,C_NONE,C_WANTQUIT,NULL,NULL,Play); | |
+ SendClientMessage(Play,C_NONE,C_WANTQUIT,NULL,NULL); | |
} | |
break; | |
} | |
t@@ -1643,7 +1646,7 @@ static void Curses_DoGame(Player *Play) { | |
case 'Q': | |
if (want_to_quit()==1) { | |
DisplayMode=DM_NONE; clear_bottom(); | |
- SendClientMessage(Play,C_NONE,C_WANTQUIT,NULL,NULL,Play); | |
+ SendClientMessage(Play,C_NONE,C_WANTQUIT,NULL,NULL); | |
} | |
break; | |
} | |
diff --git a/src/gtk_client.c b/src/gtk_client.c | |
t@@ -191,8 +191,7 @@ void NewGame(GtkWidget *widget,gpointer data) { | |
} | |
void ListScores(GtkWidget *widget,gpointer data) { | |
- SendClientMessage(ClientData.Play,C_NONE,C_REQUESTSCORE,NULL,NULL, | |
- ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_REQUESTSCORE,NULL,NULL); | |
} | |
void ListInventory(GtkWidget *widget,gpointer data) { | |
t@@ -287,8 +286,7 @@ void HandleClientMessage(char *pt,Player *Play) { | |
GtkWidget *MenuItem; | |
GSList *list; | |
-/* Ignore To: field as all messages should be for "Play" */ | |
- if (ProcessMessage(pt,Play,&From,&AICode,&Code,NULL,&Data,FirstClient)==-1)… | |
+ if (ProcessMessage(pt,Play,&From,&AICode,&Code,&Data,FirstClient)==-1) { | |
return; | |
} | |
t@@ -481,7 +479,7 @@ static void FightCallback(GtkWidget *widget,gpointer data)… | |
(Answer=='S' && TotalGunsCarried(Play)==0))) { | |
Play->Flags &= ~CANSHOOT; | |
text=g_strdup_printf("%c",Answer); | |
- SendClientMessage(Play,C_NONE,C_FIGHTACT,NULL,text,Play); | |
+ SendClientMessage(Play,C_NONE,C_FIGHTACT,NULL,text); | |
g_free(text); | |
} | |
break; | |
t@@ -772,8 +770,7 @@ static void JetCallback(GtkWidget *widget,gpointer data) { | |
NewLocation = GPOINTER_TO_INT(data); | |
gtk_widget_destroy(JetDialog); | |
text=g_strdup_printf("%d",NewLocation); | |
- SendClientMessage(ClientData.Play,C_NONE,C_REQUESTJET,NULL, | |
- text,ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_REQUESTJET,NULL,text); | |
g_free(text); | |
} | |
t@@ -908,8 +905,7 @@ static void DealOKCallback(GtkWidget *widget,gpointer data… | |
text=g_strdup_printf("drug^%d^%d",DealDialog.DrugInd, | |
data==BT_BUY ? amount : -amount); | |
- SendClientMessage(ClientData.Play,C_NONE,C_BUYOBJECT,NULL, | |
- text,ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_BUYOBJECT,NULL,text); | |
g_free(text); | |
gtk_widget_destroy(DealDialog.dialog); | |
t@@ -1095,8 +1091,7 @@ void DealGuns(GtkWidget *widget,gpointer data) { | |
MessageBox(dialog,Title,_("You don't have any to sell!"),MB_OK); | |
} else { | |
g_string_sprintf(text,"gun^%d^%d",GunInd,data==BT_BUY ? 1 : -1); | |
- SendClientMessage(ClientData.Play,C_NONE,C_BUYOBJECT,NULL,text->str, | |
- ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_BUYOBJECT,NULL,text->str); | |
} | |
g_free(Title); | |
g_string_free(text,TRUE); | |
t@@ -1113,7 +1108,7 @@ static void QuestionCallback(GtkWidget *widget,gpointer … | |
Answer = GPOINTER_TO_INT(data); | |
text[0]=(gchar)Answer; text[1]='\0'; | |
- SendClientMessage(ClientData.Play,C_NONE,C_ANSWER,To,text,ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_ANSWER,To,text); | |
gtk_widget_destroy(dialog); | |
} | |
t@@ -1189,7 +1184,7 @@ void StartGame() { | |
Play->fd=ClientSock; | |
SendAbilities(Play); | |
SetPlayerName(Play,ClientData.PlayerName); | |
- SendClientMessage(NULL,C_NONE,C_NAME,NULL,ClientData.PlayerName,Play); | |
+ SendNullClientMessage(Play,C_NONE,C_NAME,NULL,ClientData.PlayerName); | |
InGame=TRUE; | |
UpdateMenus(); | |
if (Network) { | |
t@@ -1886,14 +1881,13 @@ gint MessageBox(GtkWidget *parent,const gchar *Title, | |
} | |
static void SendDoneMessage(GtkWidget *widget,gpointer data) { | |
- SendClientMessage(ClientData.Play,C_NONE,C_DONE,NULL,NULL,ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_DONE,NULL,NULL); | |
} | |
static void TransferPayAll(GtkWidget *widget,GtkWidget *dialog) { | |
gchar *text; | |
text=pricetostr(ClientData.Play->Debt); | |
- SendClientMessage(ClientData.Play,C_NONE,C_PAYLOAN,NULL, | |
- text,ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_PAYLOAN,NULL,text); | |
g_free(text); | |
gtk_widget_destroy(dialog); | |
} | |
t@@ -1932,7 +1926,7 @@ static void TransferOK(GtkWidget *widget,GtkWidget *dial… | |
} | |
text=pricetostr(money); | |
SendClientMessage(ClientData.Play,C_NONE, | |
- Debt ? C_PAYLOAN : C_DEPOSIT,NULL,text,ClientData.Play); | |
+ Debt ? C_PAYLOAN : C_DEPOSIT,NULL,text); | |
g_free(text); | |
gtk_widget_destroy(dialog); | |
} | |
t@@ -2082,7 +2076,7 @@ static void TalkSend(GtkWidget *widget,struct TalkStruct… | |
msg=g_string_new(""); | |
if (AllPlayers) { | |
- SendClientMessage(ClientData.Play,C_NONE,C_MSG,NULL,text,ClientData.Play… | |
+ SendClientMessage(ClientData.Play,C_NONE,C_MSG,NULL,text); | |
g_string_sprintf(msg,"%s: %s",GetPlayerName(ClientData.Play),text); | |
PrintMessage(msg->str); | |
} else { | |
t@@ -2091,8 +2085,7 @@ static void TalkSend(GtkWidget *widget,struct TalkStruct… | |
row=GPOINTER_TO_INT(selection->data); | |
Play=(Player *)gtk_clist_get_row_data(GTK_CLIST(TalkData->clist),row); | |
if (Play) { | |
- SendClientMessage(ClientData.Play,C_NONE,C_MSGTO,Play, | |
- text,ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_MSGTO,Play,text); | |
g_string_sprintf(msg,"%s->%s: %s",GetPlayerName(ClientData.Play), | |
GetPlayerName(Play),text); | |
PrintMessage(msg->str); | |
t@@ -2218,11 +2211,9 @@ static void ErrandOK(GtkWidget *widget,GtkWidget *clist… | |
row=GPOINTER_TO_INT(selection->data); | |
Play=(Player *)gtk_clist_get_row_data(GTK_CLIST(clist),row); | |
if (ErrandType==ET_SPY) { | |
- SendClientMessage(ClientData.Play,C_NONE,C_SPYON,Play, | |
- NULL,ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_SPYON,Play,NULL); | |
} else { | |
- SendClientMessage(ClientData.Play,C_NONE,C_TIPOFF,Play, | |
- NULL,ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_TIPOFF,Play,NULL); | |
} | |
gtk_widget_destroy(dialog); | |
} | |
t@@ -2307,8 +2298,7 @@ void SackBitch(GtkWidget *widget,gpointer data) { | |
"by this %s may be lost!)"),Names.Guns, | |
Names.Drugs,Names.Bitch); | |
if (MessageBox(ClientData.window,title,text,MB_YES|MB_NO)==MB_YES) { | |
- SendClientMessage(ClientData.Play,C_NONE,C_SACKBITCH,NULL,NULL, | |
- ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_SACKBITCH,NULL,NULL); | |
} | |
g_free(caps); g_free(text); g_free(title); | |
} | |
t@@ -2404,7 +2394,7 @@ static void NewNameOK(GtkWidget *widget,GtkWidget *windo… | |
text=gtk_editable_get_chars(GTK_EDITABLE(entry),0,-1); | |
if (text[0]) { | |
SetPlayerName(ClientData.Play,text); | |
- SendClientMessage(NULL,C_NONE,C_NAME,NULL,text,ClientData.Play); | |
+ SendNullClientMessage(ClientData.Play,C_NONE,C_NAME,NULL,text); | |
gtk_widget_destroy(window); | |
} | |
g_free(text); | |
t@@ -2501,8 +2491,7 @@ void UpdatePlayerLists() { | |
} | |
void GetSpyReports(GtkWidget *Widget,gpointer data) { | |
- SendClientMessage(ClientData.Play,C_NONE,C_CONTACTSPY,NULL,NULL, | |
- ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_CONTACTSPY,NULL,NULL); | |
} | |
static void DestroySpyReports(GtkWidget *widget,gpointer data) { | |
diff --git a/src/message.c b/src/message.c | |
t@@ -50,33 +50,46 @@ | |
handled by the server. All communication is conducted via. TCP by means | |
of plain text newline-delimited messages. | |
- Message structure:- | |
- From^To^ACData | |
+ New message structure:- | |
+ Other^ACData | |
- From,To: Player names identifying the sender and intended recipient of | |
- the message. Either field may be blank, although the server will | |
- usually reject incoming messages if they are not properly | |
- identified with a correct "From" field. | |
+ Other: The ID of the player at the "other end" of the connection; | |
+ for messages received by the client, this is the player from | |
+ which the message originates, while for messages received by | |
+ the server, it's the player to which to deliver the message. | |
A: One-letter code; used by AI players to identify the message subtype | |
(check AIPlayer.h) | |
C: One-letter code to identify the message type (check message.h) | |
Data: Message-dependent information | |
+ | |
+ For compatibility with old clients and servers, the old message structure | |
+ is still supported:- | |
+ From^To^ACData | |
+ | |
+ From,To: Player names identifying the sender and intended recipient of | |
+ the message. Either field may be blank, although the server will | |
+ usually reject incoming messages if they are not properly | |
+ identified with a correct "From" field. | |
+ A,C,Data: As above, for the new message structure | |
+ | |
For example, a common message is the "printmessage" message (message code | |
C is C_PRINTMESSAGE), which simply instructs the client to display "Data". | |
Any ^ characters within Data are replaced by newlines on output. So in orde… | |
- for the server to instruct player "Fred" to display "Hello world" it would | |
- send the message:- | |
- ^Fred^AAHello world | |
- Note that the server has left the From field blank, and has specified the | |
- AI code 'A' - defined in AIPlayer.h as C_NONE (i.e. an "unimportant" | |
- message) as well as the main code 'A', defined as C_PRINTMESSAGE in | |
- message.h | |
- | |
- When the network is down, a server is simulated locally. Client to server | |
- messages are simply passed directly to the server message handling routine | |
- in serverside.c, while server to client messages are queued in MessageList | |
- and read by the do_game loop within dopewars.c */ | |
+ for the server to instruct player "Fred" (ID 1) to display "Hello world" it | |
+ would send the message:- | |
+ ^AAHello world (new format) | |
+ ^Fred^AAHello world (old format) | |
+ Note that the server has left the Other (or From) field blank, and has | |
+ specified the AI code 'A' - defined in AIPlayer.h as C_NONE (i.e. an | |
+ "unimportant" message) as well as the main code 'A', defined as | |
+ C_PRINTMESSAGE in message.h. Note also that the destination player (Fred) | |
+ is not specified in the new format; the player is identified by the socket | |
+ through which the message is transmitted. | |
+ | |
+ When the network is down, a server is simulated locally. Messages from | |
+ the client are passed directly to the server message handling routine, | |
+ and vice versa. */ | |
GSList *FirstClient; | |
t@@ -84,17 +97,34 @@ void (*ClientMessageHandlerPt) (char *,Player *) = NULL; | |
void (*SocketWriteTestPt) (Player *,gboolean) = NULL; | |
void SendClientMessage(Player *From,char AICode,char Code, | |
- Player *To,char *Data,Player *BufOwn) { | |
+ Player *To,char *Data) { | |
+/* Sends a message from player "From" to player "To" via. the server. */ | |
+/* AICode, Code and Data define the message. */ | |
+ DoSendClientMessage(From,AICode,Code,To,Data,From); | |
+} | |
+ | |
+void SendNullClientMessage(Player *From,char AICode,char Code, | |
+ Player *To,char *Data) { | |
+/* Sends a message from player "From" to player "To" via. the server, */ | |
+/* sending a blank name for "From" (this is required with the old message */ | |
+/* format, up to and including the first successful C_NAME message, but */ | |
+/* has no effect with the new format. AICode, Code and Data define the */ | |
+/* message. */ | |
+ DoSendClientMessage(NULL,AICode,Code,To,Data,From); | |
+} | |
+ | |
+void DoSendClientMessage(Player *From,char AICode,char Code, | |
+ Player *To,char *Data,Player *BufOwn) { | |
/* Send a message from client player "From" with computer code "AICode", */ | |
/* human-readable code "Code" and data "Data". The message is sent to the */ | |
-/* server, identifying itself as for "To". From, To, or Data may be NULL. */ | |
+/* server, identifying itself as for "To". "BufOwn" identifies the player */ | |
+/* which owns the buffers used for the actual wire connection. With the */ | |
+/* new message format, "From" is ignored. From, To, or Data may be NULL. */ | |
GString *text; | |
Player *ServerFrom; | |
g_assert(BufOwn!=NULL); | |
text=g_string_new(NULL); | |
if (HaveAbility(BufOwn,A_PLAYERID)) { | |
- if (From) g_string_sprintf(text,"%d",From->ID); | |
- g_string_append_c(text,'^'); | |
if (To) g_string_sprintfa(text,"%d",To->ID); | |
g_string_sprintfa(text,"^%c%c%s",AICode,Code,Data ? Data : ""); | |
} else { | |
t@@ -102,7 +132,6 @@ void SendClientMessage(Player *From,char AICode,char Code, | |
To ? GetPlayerName(To) : "",AICode,Code, | |
Data ? Data : ""); | |
} | |
- | |
#if NETWORKING | |
if (!Network) { | |
#endif | |
t@@ -140,23 +169,37 @@ void SendQuestion(Player *From,char AICode, | |
void SendServerMessage(Player *From,char AICode,char Code, | |
Player *To,char *Data) { | |
/* Sends a message from the server to client player "To" with computer */ | |
-/* code "AICode", human-readable code "Code" and data "Data". The message */ | |
-/* will claim to be from or on behalf of player "From" */ | |
+/* code "AICode", human-readable code "Code" and data "Data", claiming */ | |
+/* to be from player "From" */ | |
GString *text; | |
- if (!Network) { | |
- text=g_string_new(""); | |
- if (From) g_string_sprintf(text,"%d",From->ID); | |
- g_string_append_c(text,'^'); | |
- if (To) g_string_sprintfa(text,"%d",To->ID); | |
+ text=g_string_new(NULL); | |
+ if (HaveAbility(To,A_PLAYERID)) { | |
+ if (From) g_string_sprintfa(text,"%d",From->ID); | |
g_string_sprintfa(text,"^%c%c%s",AICode,Code,Data ? Data : ""); | |
+ } else { | |
+ g_string_sprintf(text,"%s^%s^%c%c%s",From ? GetPlayerName(From) : "", | |
+ To ? GetPlayerName(To) : "",AICode,Code, | |
+ Data ? Data : ""); | |
+ } | |
+#if NETWORKING | |
+ if (!Network) { | |
+#endif | |
if (ClientMessageHandlerPt) { | |
(*ClientMessageHandlerPt)(text->str,(Player *)(FirstClient->data)); | |
} | |
- g_string_free(text,TRUE); | |
- } else SendClientMessage(From,AICode,Code,To,Data,To); | |
+#if NETWORKING | |
+ } else { | |
+ WriteToConnectionBuffer(To,text->str); | |
+ if (SocketWriteTestPt) (*SocketWriteTestPt)(To,TRUE); | |
+ } | |
+#endif | |
+ g_string_free(text,TRUE); | |
} | |
void InitAbilities(Player *Play) { | |
+/* Sets up the "abilities" of player "Play". Abilities are used to extend */ | |
+/* the protocol; if both the client and server share an ability, then the */ | |
+/* protocol extension can be used. */ | |
int i; | |
/* Clear all abilities */ | |
for (i=0;i<A_NUM;i++) { | |
t@@ -172,16 +215,21 @@ void InitAbilities(Player *Play) { | |
} | |
void SendAbilities(Player *Play) { | |
+/* Sends abilities of player "Play" to the other end of the client-server */ | |
+/* connection. */ | |
int i; | |
gchar Data[A_NUM+1]; | |
if (!Network) return; | |
for (i=0;i<A_NUM;i++) Data[i]= (Play->Abil.Local[i] ? '1' : '0'); | |
Data[A_NUM]='\0'; | |
if (Server) SendServerMessage(NULL,C_NONE,C_ABILITIES,Play,Data); | |
- else SendClientMessage(Play,C_NONE,C_ABILITIES,NULL,Data,Play); | |
+ else SendClientMessage(Play,C_NONE,C_ABILITIES,NULL,Data); | |
} | |
void ReceiveAbilities(Player *Play,gchar *Data) { | |
+/* Fills in the "remote" abilities of player "Play" using the message data */ | |
+/* in "Data". These are the abilities of the server/client at the other */ | |
+/* end of the connection. */ | |
int i,Length; | |
InitAbilities(Play); | |
if (!Network) return; | |
t@@ -192,6 +240,9 @@ void ReceiveAbilities(Player *Play,gchar *Data) { | |
} | |
void CombineAbilities(Player *Play) { | |
+/* Combines the local and remote abilities of player "Play". The resulting */ | |
+/* shared abilities are used to determine when protocol extensions can be */ | |
+/* used. */ | |
int i; | |
for (i=0;i<A_NUM;i++) { | |
Play->Abil.Shared[i]= (Play->Abil.Remote[i] && Play->Abil.Local[i]); | |
t@@ -199,12 +250,18 @@ void CombineAbilities(Player *Play) { | |
} | |
gboolean HaveAbility(Player *Play,gint Type) { | |
+/* Returns TRUE if ability "Type" is one of player "Play"'s shared abilities */ | |
if (Type<0 || Type>=A_NUM) return FALSE; | |
else return (Play->Abil.Shared[Type]); | |
} | |
#if NETWORKING | |
gchar *ReadFromConnectionBuffer(Player *Play) { | |
+/* Reads a newline-terminated message from "Play"'s read buffer. The message */ | |
+/* is removed from the buffer, and returned as a null-terminated string (the */ | |
+/* terminating newline is removed). If no complete message is waiting, NULL */ | |
+/* is returned. The string is dynamically allocated, and must be g_free'd by */ | |
+/* the caller. */ | |
ConnBuf *conn; | |
int MessageLen; | |
char *SepPt; | |
t@@ -226,6 +283,9 @@ gchar *ReadFromConnectionBuffer(Player *Play) { | |
} | |
gboolean ReadConnectionBufferFromWire(Player *Play) { | |
+/* Reads any waiting data on the TCP/IP connection for player "Play" into */ | |
+/* the player's read buffer. Returns FALSE if the connection was closed, */ | |
+/* or if the read buffer's maximum size was reached. */ | |
ConnBuf *conn; | |
int CurrentPosition,BytesRead; | |
conn=&Play->ReadBuf; | |
t@@ -254,6 +314,11 @@ gboolean ReadConnectionBufferFromWire(Player *Play) { | |
} | |
void WriteToConnectionBuffer(Player *Play,gchar *data) { | |
+/* Writes the null-terminated string "data" to "Play"'s connection buffer. */ | |
+/* The message is automatically newline-terminated. Fails to write the */ | |
+/* message without error if the buffer reaches its maximum size (although */ | |
+/* this error will be detected when the buffer is attempted to be written */ | |
+/* to the wire, below) */ | |
int AddLength,NewLength; | |
ConnBuf *conn; | |
conn=&Play->WriteBuf; | |
t@@ -272,6 +337,9 @@ void WriteToConnectionBuffer(Player *Play,gchar *data) { | |
} | |
gboolean WriteConnectionBufferToWire(Player *Play) { | |
+/* Writes any waiting data in "Play"'s connection buffer to the wire. */ | |
+/* Returns TRUE on success, or FALSE if the buffer's maximum length is */ | |
+/* reached, or the remote end has closed the connection. */ | |
ConnBuf *conn; | |
int CurrentPosition,BytesSent; | |
conn=&Play->WriteBuf; | |
t@@ -675,43 +743,36 @@ void ShutdownNetwork() { | |
Client=Network=Server=FALSE; | |
} | |
-int ProcessMessage(char *Msg,Player *Play,Player **From,char *AICode,char *Cod… | |
- Player **To,char **Data,GSList *First) { | |
+int ProcessMessage(char *Msg,Player *Play,Player **Other,char *AICode, | |
+ char *Code,char **Data,GSList *First) { | |
/* Given a "raw" message in "Msg" and a pointer to the start of the linked */ | |
/* list of known players in "First", sets the other arguments to the message */ | |
/* fields. Data is returned as a pointer into the message "Msg", and should */ | |
/* therefore NOT be g_free'd. "Play" is a pointer to the player which is */ | |
-/* receiving the message. Returns 0 on success, -1 on failure. */ | |
+/* receiving the message. "Other" is the player that is identified by the */ | |
+/* message; for messages to clients, this will be the player "From" which */ | |
+/* the message claims to be, while for messages to servers, this will be */ | |
+/* the player "To" which to send messages. Returns 0 on success, -1 on */ | |
+/* failure. */ | |
gchar *pt,*buf; | |
guint ID; | |
*AICode=*Code=C_NONE; | |
+ *Other=&Noone; | |
pt=Msg; | |
- buf=GetNextWord(&pt,NULL); | |
- if (From) { | |
- if (HaveAbility(Play,A_PLAYERID)) { | |
- if (buf[0]) { | |
- ID=atoi(buf); | |
- *From=GetPlayerByID(ID,First); | |
- } else *From=&Noone; | |
- } else { | |
- *From=GetPlayerByName(buf,First); | |
- } | |
- if (!(*From)) return -1; | |
- } | |
- | |
- buf=GetNextWord(&pt,NULL); | |
- if (To) { | |
- if (HaveAbility(Play,A_PLAYERID)) { | |
- if (buf[0]) { | |
- ID=atoi(buf); | |
- *To=GetPlayerByID(ID,First); | |
- } else *To=&Noone; | |
- } else { | |
- *To=GetPlayerByName(buf,First); | |
+ if (HaveAbility(Play,A_PLAYERID)) { | |
+ buf=GetNextWord(&pt,NULL); | |
+ if (buf[0]) { | |
+ ID=atoi(buf); | |
+ *Other=GetPlayerByID(ID,First); | |
} | |
- if (!(*To)) return -1; | |
+ } else { | |
+ buf=GetNextWord(&pt,NULL); | |
+ if (Client) *Other=GetPlayerByName(buf,First); | |
+ buf=GetNextWord(&pt,NULL); | |
+ if (Server) *Other=GetPlayerByName(buf,First); | |
} | |
+ if (!(*Other)) return -1; | |
if (strlen(pt)>=2) { | |
*AICode=pt[0]; | |
diff --git a/src/message.h b/src/message.h | |
t@@ -93,7 +93,11 @@ | |
#define DT_PRICES 'D' | |
void SendClientMessage(Player *From,char AICode,char Code, | |
- Player *To,char *Data,Player *BufOwn); | |
+ Player *To,char *Data); | |
+void SendNullClientMessage(Player *From,char AICode,char Code, | |
+ Player *To,char *Data); | |
+void DoSendClientMessage(Player *From,char AICode,char Code, | |
+ Player *To,char *Data,Player *BufOwn); | |
void SendServerMessage(Player *From,char AICode,char Code, | |
Player *To,char *Data); | |
void SendPrintMessage(Player *From,char AICode,Player *To,char *Data); | |
t@@ -133,8 +137,8 @@ char *SetupNetwork(gboolean NonBlocking); | |
char *FinishSetupNetwork(); | |
void ShutdownNetwork(); | |
void SwitchToSinglePlayer(Player *Play); | |
-int ProcessMessage(char *Msg,Player *Play,Player **From,char *AICode,char *Cod… | |
- Player **To,char **Data,GSList *First); | |
+int ProcessMessage(char *Msg,Player *Play,Player **Other,char *AICode, | |
+ char *Code,char **Data,GSList *First); | |
void ReceiveDrugsHere(char *text,Player *To); | |
gboolean HandleGenericClientMessage(Player *From,char AICode,char Code, | |
Player *To,char *Data,char *DisplayMode); | |
diff --git a/src/serverside.c b/src/serverside.c | |
t@@ -210,8 +210,7 @@ void HandleServerMessage(gchar *buf,Player *Play) { | |
int i; | |
price_t money; | |
-/* Ignore client's From: field - should always be "Play" */ | |
- if (ProcessMessage(buf,Play,NULL,&AICode,&Code,&To,&Data,FirstServer)==-1) { | |
+ if (ProcessMessage(buf,Play,&To,&AICode,&Code,&Data,FirstServer)==-1) { | |
g_warning("Bad message"); | |
return; | |
} | |
diff --git a/src/win32_client.c b/src/win32_client.c | |
t@@ -241,8 +241,7 @@ static void HandleClientMessage(char *pt,Player *Play) { | |
gchar *text; | |
LRESULT Answer; | |
GSList *list; | |
-/* Ignore server's To: field; use "Play" instead */ | |
- if (ProcessMessage(pt,Play,&From,&AICode,&Code,NULL,&Data,FirstClient)==-1)… | |
+ if (ProcessMessage(pt,Play,&From,&AICode,&Code,&Data,FirstClient)==-1) { | |
return; | |
} | |
Handled=HandleGenericClientMessage(From,AICode,Code,Play,Data,&DisplayMode); | |
t@@ -321,7 +320,7 @@ static void HandleClientMessage(char *pt,Player *Play) { | |
if (Answer!=0) { | |
text=g_strdup_printf("%c",(char)Answer); | |
SendClientMessage(Play,C_NONE,C_ANSWER, | |
- From==&Noone ? NULL : From,text,Play); | |
+ From==&Noone ? NULL : From,text); | |
g_free(text); | |
} | |
break; | |
t@@ -365,7 +364,7 @@ static void StartGame() { | |
Play->fd=ClientSock; | |
SendAbilities(Play); | |
SetPlayerName(Play,ClientData.PlayerName); | |
- SendClientMessage(NULL,C_NONE,C_NAME,NULL,ClientData.PlayerName,Play); | |
+ SendNullClientMessage(Play,C_NONE,C_NAME,NULL,ClientData.PlayerName); | |
InGame=TRUE; | |
UpdateControls(); | |
if (Network) { | |
t@@ -528,8 +527,7 @@ BOOL CALLBACK TalkWndProc(HWND hwnd,UINT msg,UINT wParam, | |
SetWindowText(MessageWnd,""); | |
message=g_string_new(""); | |
if (IsDlgButtonChecked(hwnd,CB_TALKALL)==BST_CHECKED) { | |
- SendClientMessage(ClientData.Play,C_NONE,C_MSG,NULL,text, | |
- ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_MSG,NULL,text); | |
g_string_sprintf(message,"%s: %s", | |
GetPlayerName(ClientData.Play),text); | |
PrintMessage(message->str); | |
t@@ -545,7 +543,7 @@ BOOL CALLBACK TalkWndProc(HWND hwnd,UINT msg,UINT wParam, | |
if (LBResult!=LB_ERR && LBResult) { | |
Play=(Player *)LBResult; | |
SendClientMessage(ClientData.Play,C_NONE,C_MSGTO, | |
- Play,text,ClientData.Play); | |
+ Play,text); | |
g_string_sprintf(message,"%s->%s: %s", | |
GetPlayerName(ClientData.Play), | |
GetPlayerName(Play),text); | |
t@@ -667,7 +665,7 @@ BOOL CALLBACK GunShopWndProc(HWND hwnd,UINT msg,UINT wPara… | |
g_string_sprintf(text,"gun^%d^%d",GunInd, | |
LOWORD(wParam)==BT_BUYGUN ? 1 : -1); | |
SendClientMessage(ClientData.Play,C_NONE,C_BUYOBJECT, | |
- NULL,text->str,ClientData.Play); | |
+ NULL,text->str); | |
} | |
g_free(Title); | |
g_string_free(text,TRUE); | |
t@@ -680,8 +678,7 @@ BOOL CALLBACK GunShopWndProc(HWND hwnd,UINT msg,UINT wPara… | |
case WM_DESTROY: | |
GunShopWnd=NULL; | |
EnableWindow(ClientData.Window,TRUE); | |
- SendClientMessage(ClientData.Play,C_NONE,C_DONE,NULL,NULL, | |
- ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_DONE,NULL,NULL); | |
return TRUE; | |
} | |
return FALSE; | |
t@@ -754,7 +751,7 @@ BOOL CALLBACK NewNameWndProc(HWND hwnd,UINT msg,UINT wPara… | |
text=g_new(char,buflen+1); | |
GetWindowText(EditWnd,text,buflen+1); | |
SetPlayerName(ClientData.Play,text); | |
- SendClientMessage(NULL,C_NONE,C_NAME,NULL,text,ClientData.Play); | |
+ SendNullClientMessage(ClientData.Play,C_NONE,C_NAME,NULL,text); | |
g_free(text); | |
DestroyWindow(hwnd); | |
return TRUE; | |
t@@ -824,7 +821,7 @@ BOOL CALLBACK TransferWndProc(HWND hwnd,UINT msg,UINT wPar… | |
text=pricetostr(money); | |
SendClientMessage(ClientData.Play,C_NONE, | |
Type==C_LOANSHARK ? C_PAYLOAN : C_DEPOSIT, | |
- NULL,text,ClientData.Play); | |
+ NULL,text); | |
g_free(text); | |
SendMessage(hwnd,WM_CLOSE,0,0); | |
return TRUE; | |
t@@ -832,8 +829,7 @@ BOOL CALLBACK TransferWndProc(HWND hwnd,UINT msg,UINT wPar… | |
break; | |
case WM_CLOSE: | |
EndDialog(hwnd,0); | |
- SendClientMessage(ClientData.Play,C_NONE,C_DONE,NULL,NULL, | |
- ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_DONE,NULL,NULL); | |
return TRUE; | |
} | |
return FALSE; | |
t@@ -987,8 +983,7 @@ static BOOL CALLBACK DealWndProc(HWND hwnd,UINT msg,UINT w… | |
amount=atoi(Num); | |
text=g_strdup_printf("drug^%d^%d",DrugInd, | |
DealType==BT_BUY ? amount : -amount); | |
- SendClientMessage(ClientData.Play,C_NONE,C_BUYOBJECT,NULL,text, | |
- ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_BUYOBJECT,NULL,text); | |
g_free(text); | |
EndDialog(hwnd,0); return TRUE; | |
} else if (HIWORD(wParam)==BN_CLICKED && LOWORD(wParam)==ID_CANCEL) { | |
t@@ -1049,8 +1044,7 @@ static BOOL CALLBACK JetWndProc(HWND hwnd,UINT msg,UINT … | |
EndDialog(hwnd,0); | |
NewLocation=(gint)(LOWORD(wParam)); | |
text=g_strdup_printf("%d",NewLocation); | |
- SendClientMessage(ClientData.Play,C_NONE,C_REQUESTJET,NULL,text, | |
- ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_REQUESTJET,NULL,text); | |
g_free(text); | |
return TRUE; | |
} | |
t@@ -1139,7 +1133,7 @@ static BOOL CALLBACK ErrandWndProc(HWND hwnd,UINT msg,UI… | |
Play=(Player *)LBResult; | |
SendClientMessage(ClientData.Play,C_NONE, | |
ErrandType==ID_SPY ? C_SPYON : C_TIPOFF, | |
- Play,NULL,ClientData.Play); | |
+ Play,NULL); | |
EndDialog(hwnd,0); return TRUE; | |
} | |
} | |
t@@ -1492,14 +1486,14 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,UINT w… | |
"by this bitch may be lost!)", | |
"Sack Bitch",MB_YESNO)==IDYES) { | |
SendClientMessage(ClientData.Play,C_NONE,C_SACKBITCH, | |
- NULL,NULL,ClientData.Play); | |
+ NULL,NULL); | |
} | |
break; | |
case ID_GETSPY: | |
if (SpyReportsWnd) DestroyWindow(SpyReportsWnd); | |
SpyReportsWnd=NULL; | |
SendClientMessage(ClientData.Play,C_NONE,C_CONTACTSPY, | |
- NULL,NULL,ClientData.Play); | |
+ NULL,NULL); | |
break; | |
case ID_LISTPLAYERS: | |
if (PlayerListWnd) { | |
t@@ -1525,7 +1519,7 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,UINT wPa… | |
break; | |
case ID_LISTSCORES: | |
SendClientMessage(ClientData.Play,C_NONE,C_REQUESTSCORE, | |
- NULL,NULL,ClientData.Play); | |
+ NULL,NULL); | |
break; | |
case ID_ABOUT: | |
DialogBox(hInst,MAKEINTRESOURCE(AboutDialog),hwnd,AboutWndProc); | |
t@@ -1558,8 +1552,7 @@ static BOOL CALLBACK FightWndProc(HWND hwnd,UINT msg,WPA… | |
text[0]='F'; | |
} | |
text[1]='\0'; | |
- SendClientMessage(ClientData.Play,C_NONE,C_FIGHTACT,NULL,text, | |
- ClientData.Play); | |
+ SendClientMessage(ClientData.Play,C_NONE,C_FIGHTACT,NULL,text); | |
return TRUE; | |
case BT_RUN: | |
EnableWindow(ClientData.Window,TRUE); |