// ETH32 - an Enemy Territory cheat for windows // Copyright (c) 2007 eth32 team // www.cheatersutopia.com & www.nixcoders.org #include "eth32.h" struct { char *src; char *tgt; } langPairs[] = { { "en", "fr" }, { "en", "de" }, { "en", "nl" }, { "en", "it" }, { "en", "pt" }, { "en", "es" }, }; HANDLE trHandle = NULL; DWORD translateText(const char *lang1, const char *lang2, const char *text); void translateCommand(void) { static int pairs = sizeof(langPairs) / sizeof(langPairs[0]); int argc = Syscall.UI_Argc(); if (argc != 4) { orig_syscall(UI_PRINT, "^dERROR: ^nWrong syntax.\n"); orig_syscall(UI_PRINT, "^dUSAGE: ^n" ETH32_PREFIX "translate lang1 lang2 your text here\n"); return; } const char *lang1 = Syscall.UI_Argv(1); const char *lang2 = Syscall.UI_Argv(2); const char *text = Syscall.UI_Argv(3); Debug.Log("Pairs: %s %s [ %s ]", lang1, lang2, text); int c = 0; for (; c < pairs; c++) if (!strcmp(lang1, langPairs[c].src) && !strcmp(lang2, langPairs[c].tgt)) break; if (c == pairs) { orig_syscall(UI_PRINT, "^dERROR: ^nWrong language pair!\n"); return; } if (trHandle) { orig_syscall(UI_PRINT, "^dERROR: ^nAnother text is currently being translated, try again later.\n"); return; } orig_syscall(UI_PRINT, "^dTranslating..\n"); trHandle = CTHREAD(translateText(lang1, lang2, text)); } DWORD translateText(const char *lang1, const char *lang2, const char *text) { // query babelfish code will be here CloseHandle(trHandle); trHandle = NULL; return 0; }