thanna
Members-
Content Count
212 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by thanna
-
As the titles says, I seen this on rathena and use it on my old emulator but I wonder if it is possible to convert this to hercules and can someone please convert this to a plugin, because the plugin feature is much better due to updating the emulator can conflict source codes, thanks in advance Index: src/map/ping.c===================================================================--- src/map/ping.c (revision 0)+++ src/map/ping.c (working copy)@@ -0,0 +1,89 @@+#ifdef _DEBUG+#define new DEBUG_NEW+#undef THIS_FILE+static char THIS_FILE[] = __FILE__;+#endif++#include <WINSOCK2.H>+#define DEF_BUF_SIZE 1024 +#define IP_HEADER_SIZE 20 +#define ICMP_HEADER_SIZE 12 +typedef struct _ICMP_HEADER +{ + BYTE bType;+ BYTE bCode;+ USHORT nCheckSum;+ USHORT nId;+ USHORT nSequence;+ UINT nTimeStamp;+}ICMP_HEADER, *PICMP_HEADER; +USHORT GetCheckSum(LPBYTE lpBuff, DWORD dwSize)+{+ DWORD dwCheckSum = 0;+ USHORT* lpWord = (USHORT*)lpBuff; + while(dwSize > 1) + { + dwCheckSum += *lpWord++;+ dwSize -= 2;+ } + if(dwSize ==1) + dwCheckSum += *((LPBYTE)lpBuff);+ dwCheckSum = (dwCheckSum >> 16) + (dwCheckSum & 0XFFFF);+ return (USHORT)(~dwCheckSum); +} +BOOL Ping(char* lpDestIP, int *nRet_, int *nTime_)+{+ int nTime = 0;+ int ret = 0;+ char ICMPPack[ICMP_HEADER_SIZE] = {0};+ char szRcvBuff[DEF_BUF_SIZE] = {0};+ int i = 0;+ int nRet = 0;+ int nLen = 0;+ int nError = 0;+ SOCKET s;+ PICMP_HEADER pRcvHeader;+ SOCKADDR_IN SourceSockAddr;+ SOCKADDR_IN DestSockAddr;+ PICMP_HEADER pICMPHeader;+ DestSockAddr.sin_family = AF_INET;+ DestSockAddr.sin_addr.S_un.S_addr = inet_addr(lpDestIP);+ DestSockAddr.sin_port = htons(0);+ pICMPHeader = (PICMP_HEADER)ICMPPack; + pICMPHeader->bType = 8;+ pICMPHeader->bCode = 0;+ pICMPHeader->nId = (USHORT)GetCurrentProcessId();+ pICMPHeader->nCheckSum = 0;+ pICMPHeader->nTimeStamp = 0;+ s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);+ nTime = 1000;+ ret = setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char*)&nTime, sizeof(nTime));+ for(i=0; i <1; i++) + { + pICMPHeader->nCheckSum = 0;+ pICMPHeader->nSequence = i;+ pICMPHeader->nTimeStamp = GetTickCount();+ pICMPHeader->nCheckSum = GetCheckSum((LPBYTE)(ICMPPack), ICMP_HEADER_SIZE);+ nRet = sendto(s, ICMPPack, ICMP_HEADER_SIZE, 0, (SOCKADDR*)&DestSockAddr, sizeof(DestSockAddr)); + if(nRet == SOCKET_ERROR)+ { + return FALSE;+ } + nLen = sizeof(SOCKADDR_IN);+ if(nRet == SOCKET_ERROR)+ {+ return FALSE;+ }+ nRet = recvfrom(s, szRcvBuff,DEF_BUF_SIZE,0,(SOCKADDR*)&SourceSockAddr,&nLen);+ if(nRet == SOCKET_ERROR)+ {+ return FALSE;+ }+ pRcvHeader = (PICMP_HEADER)(szRcvBuff + IP_HEADER_SIZE);+ nTime = GetTickCount() - pRcvHeader->nTimeStamp;+ //printf("Return Message: %s bytes=%d time=%dmsn", inet_ntoa(SourceSockAddr.sin_addr), nRet, nTime);+ *nRet_ = nRet;+ *nTime_ = nTime;+ }+ return TRUE;+} No newline at end of fileIndex: src/map/script.c===================================================================--- src/map/script.c (revision 17101)+++ src/map/script.c (working copy)@@ -17323,6 +17323,25 @@ return 0; } +#include "ping.c"+BUILDIN_FUNC(ping) {+ //+ const char *name;+ char _cmd[500];+ int nRet=0, nTime=0;+ //+ //+ name = script_getstr(st,2);+ Ping((char *)name, &nRet, &nTime);+ if( nRet <= 0 || nTime < 0 )+ sprintf(_cmd,"Return Message: %s fail to connect", (char *)name);+ else+ sprintf(_cmd,"Return Message: %s bytes=%d time=%dmsn", (char *)name, nRet, nTime);+ //+ script_pushstrcopy(st, _cmd);+ return 0;+}+ // declarations that were supposed to be exported from npc_chat.c #ifdef PCRE_SUPPORT BUILDIN_FUNC(defpattern);@@ -17334,6 +17353,7 @@ /// script command definitions /// for an explanation on args, see add_buildin_func struct script_function buildin_func[] = {+ BUILDIN_DEF(ping,"s"), // NPC interaction BUILDIN_DEF(mes,"s*"), BUILDIN_DEF(next,""), Edit: Can you move this to the Plugin section, sorry
-
I would stay with C too, instead of requesting recoding the emulator adapting to the programming language that almost all of us know, I would prefer adapting to its language which is C, learning it is better than asking someone to make it for you
-
failed to authenticate 5011 / alt enter not working
thanna replied to asrockw7's question in Client-Side Support
I would suggest that you use this small client that sir Judas release, its stable and work's fine http://herc.ws/board/topic/38-latest-kro-installation-small-client-package/ -
update your herculse sir, all that errors will be fixed
-
tested this patch and it works fine, hercules can be easily run on low end pc without and problems at all, thanks Ind and hercules community for the great work
-
that would be good sir
-
lol very cool update and very cool sig
-
i am using 32bit Im using windows XP, maybe theres a .net framework required for this
-
sir is it for 64 bit only?
-
I tried it running but an error showed up saying R.o.L.ex is not a valid win32 application
-
in hercules anyone can share their ideas not only just core dev's are making the emulator thats why hercules is the best community that there is
-
I read it too somehow its a little bit confusing
-
is there a better way of adding source mod which will not conflict on the upcoming hercules updates? if there is can someone teach it to me, thanks in advance
-
Basic Complete Renewal Data English Folder
thanna replied to Alexandria's topic in Client-Side Releases
hello Ms.Alexandria, I would like to ask if your data folder is the one used in this small client that sir Judas posted in this link http://herc.ws/board/topic/38-latest-kro-installation-small-client-package/ -
great 10/10 nice work mate
-
thanks, looking forward on helping and learning from Hercules community
-
thanks for the warm welcome
-
thanks mate
-
Hi I'm thanna, its been a long time since I make a new server and I've waited years to finish my college decree and come back to develop a new server, I was a little confuse on how to start again but as I see this newly developed emulator Im interested and willing to help and learn, I hope that we'll help each other on this community -Thanna