From af4346b14bddc2920b7de3cd7e7036f7a5fcc4ef Mon Sep 17 00:00:00 2001 From: RD42 <42702181+dashr9230@users.noreply.github.com> Date: Sun, 22 Oct 2023 01:43:00 +0800 Subject: [PATCH] [bot] Implement command line parser --- bot/bot.ncb | Bin 19456 -> 35840 bytes bot/bot.suo | Bin 8192 -> 9216 bytes bot/bot.vcproj | 3 ++ bot/main.cpp | 95 +++++++++++++++++++++++++++++++++++++++++++++++-- bot/main.h | 22 ++++++++++++ 5 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 bot/main.h diff --git a/bot/bot.ncb b/bot/bot.ncb index dd1a4aeddb0aa526827b26635b56963afb00e602..cff0b9a6001a654c775edf95876c6661618aeb6c 100644 GIT binary patch literal 35840 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 X4y~bggQh delta 460 zcmZpe!PGE=ae@Y?FarZa1Q0W9PK=q)JTbt4=>fxLL6-N-lNDI_86{v$0ntxDHH^gu z#taG|)r>&M#_(>lpwDaONje;x89RP3%S_QTWK1Y9NM!^n*z(Y+Do@y zm?tH$Y-Z{B!#t^kgXufNWUi8*hTK5K0YLl?s;L7=gA76jAXmMC3b1clZEKrtvR*npT9h(UTm@*puzAm##MW+3L?=(rm0 PV4&+i00Rt00AmaQVKh6 zgx329?821@;_OAKTgAF`A%Z`^O&01R@jH{rI19;v@7}rJnRD(v-#PX1`o-5HN+3o= zaiD1zlmR7rV=KD5seTnIC^F?kZN_N1CKE=#{H2u*11{#|o_1K)1DbrGf7hl!%DH{@ z!U#T20jGgHFba$TXMnT7I8Xr20TaL^a2~h-G?BHred)&=V?v1tz9R~jcjqoESPrLL z!Xq2OQpBl%pX{+#s2o;6gngvl2$kHl0Us@`XgSP*K|k4ues)OKr<2ug#Ae0gidt0g zYpd0#kbsx%Nxm3*K3WX%IiNWd8R8Ly7^V|CX(ZrDgFguHyVyRyJZb)X`|2C}*!1@1 ztbShtOp#XTE?IPkZ=r>DHqj_4O`}oRor>nGtBatw%%;Q*vZw2cDf{1o77RR2Y z-z5xC6}-?hxtCs+yXKIzGFSc$5zkB`vo5~aYuOEvyo{I{`oDm)3xJHnZa{%#2sGQEV^|0aYE{K{*x5E$#*K>bgF9#>fZWMskd KM8)KGqW3S``voWf delta 511 zcmYjOJ4gdT5S?8&x-sV^7cn0N34Xvz6eKDr97I(7!~|_b3nf?xqT&yu%@qN`&P-z= zh=`R4#_Khpg^ghB6cG!1n-pSUoQ)syie=}$nKv`L)}UpccX8X~S++ML(_%q44=Nt( z`4cMxf{t4vDm`>75YUh<_#tA_`A6hL6IxDzn~qoUr81_=E%ud(H?j*E;dmYFMXRz8 zZ-PB(SEPzDs#Cs2GgZ6hifINBdI@RgU1J<0?si<$W11wTvP8waey<54+$E%)cTchS z5Pwmrg+dDl)k)!eIKys7GR4kLRR$a++lFokLz{!riVD$63oD&)ciQ27zdU=voCsmo zNNH6>s+kptq`AE*KEUwP8sf{>l8KH>Nv8qo9!ob-j;j@5pvFb6BJQ9J>X zYN=J2g#;|o?MUsp2+I^wfLA`hp-0D`FWLPSU-@~kz=Y&v@IPlhkYaCkGPuLA%R~QA*Mp{~&%UX12#h#8zX1$Tp7sC$ diff --git a/bot/bot.vcproj b/bot/bot.vcproj index 4fef2e1..17532db 100644 --- a/bot/bot.vcproj +++ b/bot/bot.vcproj @@ -114,6 +114,9 @@ + + diff --git a/bot/main.cpp b/bot/main.cpp index a322a59..0f1c2e2 100644 --- a/bot/main.cpp +++ b/bot/main.cpp @@ -1,7 +1,98 @@ -int main() +#include "main.h" + +GAME_SETTINGS tSettings; + +void InitSettingsFromCommandLine(char * szCmdLine); + +//---------------------------------------------------- + +/* + Argument format: + "-h %s -p %d -n %s -m %s" + + -h -> either server's bind address or 127.0.0.1 + -p -> server's port number + -n -> NPC's name + -m -> script name +*/ +int main (int argc, char** argv) { + char szCmdLine[1024]; + memset(szCmdLine,0,1024); + + int cmdcnt=1; + if(argc > 1) { + while(cmdcnt != argc) { + strcat(szCmdLine, argv[cmdcnt]); + strcat(szCmdLine, " "); + cmdcnt++; + } + } + InitSettingsFromCommandLine(szCmdLine); + // TODO: main // Absolutely no indication it is named npc or bot... + return 0; -} \ No newline at end of file +} + +//---------------------------------------------------- + +void SetStringFromCommandLine(char* szCmdLine, char* szString); + +void InitSettingsFromCommandLine(char * szCmdLine) +{ + logprintf(szCmdLine); + + memset(&tSettings,0,sizeof(GAME_SETTINGS)); + + while(*szCmdLine) { + + if(*szCmdLine == '-' || *szCmdLine == '/') { + szCmdLine++; + switch(*szCmdLine) { + case 'z': + szCmdLine++; + SetStringFromCommandLine(szCmdLine,tSettings.szConnectPass); + break; + case 'h': + szCmdLine++; + SetStringFromCommandLine(szCmdLine,tSettings.szConnectHost); + break; + case 'p': + szCmdLine++; + SetStringFromCommandLine(szCmdLine,tSettings.szConnectPort); + break; + case 'n': + szCmdLine++; + SetStringFromCommandLine(szCmdLine,tSettings.szNickName); + break; + case 'm': + szCmdLine++; + SetStringFromCommandLine(szCmdLine,tSettings.szModeName); + break; + } + } + + szCmdLine++; + } +} + +//---------------------------------------------------- + +void SetStringFromCommandLine(char* szCmdLine, char* szString) +{ + while(*szCmdLine == ' ') szCmdLine++; + while(*szCmdLine && + *szCmdLine != ' ' && + *szCmdLine != '-' && + *szCmdLine != '/') + { + *szString = *szCmdLine; + szString++; szCmdLine++; + } + *szString = '\0'; +} + +//---------------------------------------------------- diff --git a/bot/main.h b/bot/main.h new file mode 100644 index 0000000..76479dd --- /dev/null +++ b/bot/main.h @@ -0,0 +1,22 @@ +#pragma once + +#ifdef WIN32 + #define WIN32_LEAN_AND_MEAN + + #include +#else +#endif + +#define MAX_SETTINGS_STRING 256 + +typedef struct _GAME_SETTINGS { + CHAR szConnectPass[MAX_SETTINGS_STRING+1]; + CHAR szConnectHost[MAX_SETTINGS_STRING+1]; + CHAR szConnectPort[MAX_SETTINGS_STRING+1]; + CHAR szNickName[MAX_SETTINGS_STRING+1]; + CHAR szModeName[MAX_SETTINGS_STRING+1]; +} GAME_SETTINGS; + +#include +#include +