Jump to content
  • 0
Sign in to follow this  
thanna

Can someone convert this and make it as a plugin

Question

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  :o

Edited by thanna

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.