Informacion de gracias

Show post that are related to the Thank-O-Matic. It will show the messages where you become a Thank You from an other users.


Messages - tammadall

@tammadall folder not exists in link, fixs this my friend

I will check the files on my PC again.
Since the hard disk I lost some information has gone.
P.S. If anyone has already download it, keep it up, upload new ones, thanks a lot.

Gracias:

on: July 15, 2018, 02:31:47 PM 2 MuOnline / Kits / [KITS] RUDOLPH [MUAWAY]

[KITS] RUDOLPH [MUAWAY]




.:: DESCARGAS ::.




CONTRASEÑA ARCHIVOS : tuservermu.com.ve


CRÉDITOS Zanclair

Gracias:

on: July 11, 2018, 08:59:08 AM 3 MuOnline / Soporte / Ayudas / Re: Skin DarkSoul Rojo

De esto es de lo que estás hablando.



http://tuservermu.com.ve/index.php?topic=13039.0

mmm si ese color , pero si no me equivoco ese es el Grand Soul , yo busco dark soul  rebote volando

Puedes editar los colores en .ozj O glow.gld

Gracias:

on: July 08, 2018, 11:15:15 PM 4 MuOnline / Kits / [KITS] MEGA GOLDAR

[KITS] MEGA GOLDAR




.:: DESCARGAS ::.




CONTRASEÑA ARCHIVOS : tuservermu.com.ve


CRÉDITOS Jaime Lucas

Gracias:

on: July 08, 2018, 11:09:49 PM 5 MuOnline / Kits / [KITS] POWER RANGERS SEASON I

[KITS] POWER RANGERS SEASON I




.:: DESCARGAS ::.




CONTRASEÑA ARCHIVOS : tuservermu.com.ve


CRÉDITOS Jaime Lucas

Gracias:

on: June 29, 2018, 09:59:59 AM 6 MuOnline / Wings / [PACK] ⚡ Wings Dekaron Multi-Color ⚡

[PACK] ⚡ Wings Dekaron Multi-Color ⚡










.:: DESCARGAS ::.




CONTRASEÑA ARCHIVOS : tuservermu.com.ve


CRÉDITOS
Peteti 3D Maker
@tammadall


What of the 4 Muonline.bak you are using?
What editor do you create the account?
Since it does not let me create account having configured the editor, thx Sir.

- MuOnlineTSM.bak
- try use mu account create or editor other.

Gracias:

Files is Stable???

Not work 100% and test it.

SOURCE?

No Source (PDB)

Gracias:


🎯 [FILES] MUSERVER WEBZEN SEASON 12 EPISODE 1 [KOREA] 🎯


















.:: DESCARGAS ::.




CONTRASEÑA ARCHIVOS : tuservermu.com.ve

Gracias:

jonamix, Crowley, bedamusa, juliecito23, xharoldxs, Hugo, bollerito, Wendigo, xsasuke19x, albinkorn, 347stb972, choidk, kimbao17, agentefox, amordevil, deadmu, mauter5, ledzem, andresagw, brunomobile, ivanbv, oliverkael, andrea, juanse23, nguyechien5520, billy, jhon311, ragezone, GATITO, SIRDGARU, mareeks96321, ChanQ, Artshloma, manugnr, MacHiDa, punkeen, Dolohov, ratza2003, onlinezajzaj, Oroch, ashlay, dkcross, harry130, Nhocgano1, mayfly, wachinnet, hardluck, Stockes, coletox, lemiks, hummus, geverton, KmTz, nhoanhkhoquen, FireNikolas, haziel, zafiroztea, hardthug, NoobDK, AriesM@ster, gnosvaldo, valusmu, mario2015, iuryxd, Generacion, vietanhlsl, blakelee1208, Kingdomboy01, MAlban, kamesenin, n3uk14, vdragon1, phumynice, fbeltran2390, Kriss001, Sheldtox, terk1526, freitasvip, DIOSES, mario12, Juliyo23, 161012, debari11, ADMPolo, agtanalata, alexfy, alemao, ausmann, me19900, vicente201, RiiiDer, SnOwZF, YueDegan, bach102, jhoancito, fyre, con12, troioi, victhorinox, golka, tamuz, ADMtec, thecronos24, joserc, Adonai, rando, pacocaanoob, yoohz, xxunpilixx, Delsh, beibei, okilove23, neverclubza, ikqrote, pclcaetano, joangelisjpc, carlosl3ove, term1nat0r, ronald15, Bruno3D, wgd25x, supponente, mixuer, tcbagame, first28, minhai, HostingWer, bkpunk, antoniobk, forlifeza, jhnjohnny, andrades, dinomat, MichaelxD, migell123, sky586, tebitho, matiudark, bidola, quetreo, leaguetao, xSuffering, elisnar, hiena, samsunggon, ngluan, cao19830723cao, deathless, YOUNGJU KIM, darkjano, underpro, riverdinegro, yhoon, MuOnlineWebZen, Partexiz, dante01, warleyxxp, fantoma, sanbox, peck66, gabriel2085, flywee, masmurote, eperke, dagang, xxxlexxx, Rutilo Alem, spartacus, cryzz03, patrickpk, krak123, Hanx, InFamous, prano, kksky, dab30, wfl0417, fixwn, Ashita111235, hugab1, scfmt, seedmaker, remamakiller, Deidad, quanhongle, iSh4dow, moises1531, alexytoo, sanders1013, quyanxu, datcom, TheAliensDJ, thetaict, ezequiel, xxmenonxx, cronos002, Kapocha33, alexis01, ZabiinoOo, jeffzkie69, Santi, Skrillex, ARCKANO, zacros21, erickmalfoy, WARLORD, Anemone, siz1212, reubs, clerigz, CAPITOL, kleison05, majoca10, 1muarcadia1, dainam, lolis, tiki22, wolffrox, darkroh, DjGamer, KundunMu, Kikecamera, Pyke, fabilus, higlans, nujd00, darktemplemu, Gunnar, izgamez, Skillz, djagripnos, diegah

on: June 28, 2018, 12:24:44 AM 10 MuOnline / Set / [SET] ⚔️ ATIN ⚔️

[SET] ⚔️ ATIN ⚔️










.:: DESCARGAS ::.




CONTRASEÑA ARCHIVOS : tuservermu.com.ve


CRÉDITOS
L.Henrique - R&H Makers

on: June 27, 2018, 11:44:44 PM 11 MuOnline / Set / [SET] 👹 OGRE 👹

[SET] 👹 OGRE 👹




.:: DESCARGAS ::.




CONTRASEÑA ARCHIVOS : tuservermu.com.ve


CRÉDITOS
Peteti - R&H Makers

on: June 27, 2018, 11:24:44 PM 12 MuOnline / Set / [SET] 😈 DEMON - F 😈

[SET] 😈 DEMON - F 😈




.:: DESCARGAS ::.




CONTRASEÑA ARCHIVOS : tuservermu.com.ve


CRÉDITOS
L.Henrique - R&H Makers

on: June 23, 2018, 08:19:48 AM 13 MuOnline / Season6 / Re: IGCN Season 6 Ep 3 Full Package Server

How to fix open "IGC.EssentialTools.exe" not working ? //Thank :)


and error Code : 60000


Click No

Gracias:

cómo deshabilitar el botón Quest (T)
Presione la tecla "T"


como desativar o botão Quest (T)
Pressione na tecla "T"


How to disable button Quest(T)
Press on "T" Key


Source Code or OllyDBG



Gracias:

on: June 21, 2018, 10:40:59 AM 15 MuOnline / Kits / [KITS] 🔥 B L U E D R A G O N - 2k18 🔥

[KITS] 🔥 B L U E D R A G O N - 2k18 🔥




.:: DESCARGAS ::.




CONTRASEÑA ARCHIVOS : tuservermu.com.ve


CRÉDITOS L.Henrique
CRÉDITOS Zanclair

on: June 19, 2018, 01:59:52 AM 16 MuOnline / Launcher / Re: MU Launcher + Autoupdate + Webzen Template

### NEW UPDATE 1.1 IN FIRST POST ###

Gracias:

on: June 19, 2018, 12:04:16 AM 17 MuOnline / Launcher / MU Launcher + Autoupdate + Webzen Template

MU Launcher + Autoupdate + Webzen Template

autoupdate with CRC32
use Generator.exe follow step 1, 2 and copy update folder to your website folder.

change weburl and update url in mu.ini

Code: [Select]
[LAUNCHER]
weburl = http://127.0.0.1/update/launcher.php
updateurl = http://127.0.0.1/update/



=============================================================================================

### NEW UPDATE 1.1 ###

Last update before i removed all this shit.
Citar
- cleaned all server text
- removed test progress bar
- added Season 12 support ( LauncherOption.if). (mu.ini: S12 = 1)
- Added mutex: "#32770"
without quote. used for check launcher running or not.

Change weburl and update url in mu.ini
Citar
[LAUNCHER]
S12 = 0
updateurl = http://127.0.0.1/update/

.:: DESCARGAS ::.


### NEW LINK UPDATE 1.1 ###

.NET 4.0 VERSION

CREDITS : MyHeart (RZ)

Gracias:

xinmortal, Partexiz, lordicus, karolytha, DaiveSN, muslum, jorge2016, infernalix, lalo, kaizer94, ronalksp, cobyzero06, LuisCracks, Yoh, wilsxd, socolas, rodrigoo22, lcthesecond, joselagos, mateo4304, Pudge, khoalu, ikwail02, jeffzkie69, matiaslawwliet, yocasi, pravednik, megamakay, Anemone, lacovic, amocthong1, Facundo Jara, blakelee1208, josuedj, joangelis, NoobDK, mechaloco, Joseleao, rwul91, TroYans, iuryxd, MrSoftware, moises1531, Dariox84, terk1526, ivaancruzz, Zantetzuke, higlans, MalukoCv, bigbygamer, darkdemo, RyukZ, nguyechien5520, hangvu911, Elizalde, samus, iworz, jereecaab, Bruno3D, Mazepa, jokermuz, TheKing027, cleide, Pokepili, AndrisMtz, PCelTech, axel121, wesley, romariols, vagoz, xpollox101, Emanukk, LosTT, SoraGaming, EzeQ, elangelave, jhoancito, Sunriset, yoohz, drakken143, mubhz, nemesis28, Pinponw, EdinsonVI, Sheldtox, heas, thecronos24, HeroxMu, RiiiDer, roma, fabrixd, dreams, hardthug, Mr-K, quetreo, gang, gbsouzaofc, martinmaya, PsyCx, datcom, Alex, TORRES, tito99, flukebear, javier2018, Mulander, underpro, sagat202, dab30, tharlion, sirzeek, rando, magtjr, oscaralexanderable, Elfary, BouncemeMU, Francis993, equispe, adinhaa, punkxista, pborges2018, lauchagg, rachidy, m4rk1510, tiki22, keizEZ, Part1zanBelarus, kaiser, Minos2301, leao3600, GGloudD, Kate, LanzSystem, LuciferXT, Nexus, wfl0417, yNot, z3r0x, antoniodel, PhantomKr, tebitho, TheAliensDJ, d3mon, clerigz, DjGamer, djagripnos, nujd00, areliux, ezequiel, vavabr, Cloud, mastermcy, FreeStyle, ZabiinoOo, Gaboo;
You must log on GS to see if it has an error

you must give us more informacion about gameserevr logs, so we can have some idea about tour issue

I checked it and did not find any. This is the latest. [GS LOG]
Code: [Select]
[09:21:43] [ Crywolf ][ ApplyDBInfo] OccupationState : 1
[09:21:54] connect : [11400][192.168.1.100]
[09:21:55] Password : ("`qwe8745wq”10404k1Pk2jcET48mxL3b) Account: admin
[09:21:55] join send : (11400)admin
[09:21:55] Login (192.168.1.100): (admin) Number: 0 / DB: 642
error-L2: His class is not allowed to use the skill
(admin)(tested) Set Event GM
[GameMaster] (admin)(tested) Connected
[09:21:57] (11400)(admin)(tested) Character select
[09:21:57] [ShieldSystem][CalcSDPoint] [admin][tested] user SD Gage : 5434
[09:21:57] [MapServerMng] CheckMoveMapSvr() - M

And DataServer LOG Error.
Code: [Select]
[09:21:59] EXEC SP_LEFT_ENTERCOUNT_BC 'dmin', 'tested', '0'
[09:21:59] EXEC SP_LEFT_ENTERCOUNT_ILLUSIONTEMPLE 'dmin', 'tested', '0'
[09:22:01] EXEC SP_LEFT_ENTERCOUNT_BC ' dmin', 'tested', '0'
[09:22:24] GetQueuedCompletionStatus failed with error 64
[09:22:24] CloseClient(0)
[09:22:24]  0 server delete

I think the problem might be in this one. [giocp.cpp] Based "GetQueuedCompletionStatus failed with error 64" ?

Code: [Select]
//GameServer 1.00.90 JPN - Completed
#include "stdafx.h"
#include <winsock2.h>
#include "spe.h"
#include "giocp.h"
#include "logproc.h"
#include "GameMain.h"
#include "GameServer.h"
#include "user.h"
#ifdef CHEATGUARD
#include "CheatGuard.h"
#endif
#include "ConnectEx.h"
#include "OfflineTrade.h"
#ifdef __MAKELO__
#include "OfflineAttack.h"
#endif
#ifdef OFFEXP
#include "OffExp.h"
#endif

enum {
RECV_IO,
SEND_IO
} SOCKET_FLAG;

HANDLE g_CompletionPort;
DWORD g_dwThreadCount;
enum SOCKET_FLAG;
CRITICAL_SECTION criti;
HANDLE g_ThreadHandles[MAX_IO_THREAD_HANDLES];
int g_ServerPort;
HANDLE g_IocpThreadHandle;
LPBYTE ExSendBuf;

SOCKET g_Listen = INVALID_SOCKET;

void GiocpInit()
{
ExSendBuf=new BYTE[MAX_EXSENDBUF_SIZE];
}

void GiocpDelete()
{
delete[] ExSendBuf;
}

int CreateGIocp(int server_port)
{
DWORD ThreadID;

g_ServerPort = server_port;
if ((g_IocpThreadHandle = CreateThread(NULL, 0, IocpServerWorker, (LPVOID)NULL,
0, &ThreadID)) == NULL)
{
LogAdd("CreateThread() failed with error %d", GetLastError());
return FALSE;
}
return TRUE;
}

void DestroyGIocp()
{
LogAddTD("Error-L10");

closesocket(g_Listen);

for (DWORD dwCPU=0; dwCPU < g_dwThreadCount;dwCPU++ )
{
TerminateThread( g_ThreadHandles[dwCPU] , 0);
}

TerminateThread(g_IocpThreadHandle, 0);

if ( g_CompletionPort != NULL )
{
CloseHandle(g_CompletionPort);
g_CompletionPort=NULL;
}

}

//1.01.03
int IsHackTool(BYTE headcode, int size, int uIndex, BYTE xcode)
{
char temp[1000];
int iOutPacketCount;
int iOutPacketTotalSize;
int iOutEncryptPacketCount;
// ----
if( uIndex < 0 || uIndex >= OBJMAX )
{
return 0;
}
// ----
iOutPacketCount = 0;
iOutEncryptPacketCount = 0;
iOutPacketTotalSize = 0;
gObj[uIndex].m_kRecvPacketStatistics.GetStatistics(iOutPacketCount, iOutEncryptPacketCount, (DWORD&)iOutPacketTotalSize);
// ----
if( gObj[uIndex].m_kRecvPacketStatistics.Process() == PacketStatistics::PS_RESET )
{
temp[0] = 0;
wsprintfA(temp, "PacketCount = %d, iOutEncryptPacketCount = %d, PacketTotalSize = %d",
iOutPacketCount, iOutEncryptPacketCount, iOutPacketTotalSize);
//TRACE_LOG(temp);
}
// ----
#ifdef CHEATGUARD
if( iOutPacketCount > g_CheatGuard.m_PacketsPerSecond )
{
g_CheatGuard.WriteLog("[%s][%s] [PacketTool] Packets Per Second = %d", gObj[uIndex].AccountID, gObj[uIndex].Name, iOutPacketCount);
g_CheatGuard.Disconnect(uIndex);
//LogAddC(2, "[HACKTOOL] : Packets Per Second = %dip = %s account:%s name:%s HEAD:%x (%s,%d) State:%d",
// iOutPacketCount, gObj[uIndex].Ip_addr, gObj[uIndex].AccountID, gObj[uIndex].Name, headcode,
// __FILE__, __LINE__, gObj[uIndex].Connected);
return 1;
}
#endif
if( headcode == 0xC3 || headcode == 0xC8 )
{
return 0;
}
// ----
//Not need check for 0xC3...
gObj[uIndex].m_kRecvPacketStatistics.AddPacketInfo(xcode == 0xC3 || xcode == 0xC4, size);
// ----
return 0;
}

int CreateListenSocket()
{
sockaddr_in InternetAddr;
int nRet;

g_Listen=WSASocket(AF_INET, SOCK_STREAM, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED);

if ( g_Listen == -1 )
{
LogAdd("WSASocket() failed with error %d", WSAGetLastError() );
return 0;
}
else
{
InternetAddr.sin_family=AF_INET;
InternetAddr.sin_addr.S_un.S_addr=htonl(0);
InternetAddr.sin_port=htons(g_ServerPort);
nRet=bind(g_Listen, (sockaddr*)&InternetAddr, 16);

if ( nRet == -1 )
{
MsgBox(lMsg.Get(MSGGET(2, 55)));
SendMessage(ghWnd, WM_CLOSE, 0,0); // Kill aplication
return 0 ;
}
else
{
nRet=listen(g_Listen, 5);
if (nRet == -1)
{
LogAdd("listen() failed with error %d", WSAGetLastError());
return 0;
}
else
{
return 1;
}
}
}
}

DWORD WINAPI IocpServerWorker(LPVOID p)
{
SYSTEM_INFO SystemInfo;
DWORD ThreadID;
SOCKET Accept;
int nRet;
int ClientIndex;
SOCKADDR_IN cAddr;
IN_ADDR cInAddr;
int cAddrlen = sizeof( cAddr );
LPPER_SOCKET_CONTEXT lpPerSocketContext = NULL;
DWORD RecvBytes;
DWORD Flags=0;

InitializeCriticalSection(&criti);
GetSystemInfo(&SystemInfo);

g_dwThreadCount = SystemInfo.dwNumberOfProcessors * 2;
__try
{

g_CompletionPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
if ( g_CompletionPort == NULL)
{
LogAdd("CreateIoCompletionPort failed with error: %d", GetLastError());
__leave;
}

for(DWORD dwCPU = 0; dwCPU < g_dwThreadCount; dwCPU++)
{
HANDLE ThreadHandle;
// Create a server worker thread and pass the completion port to the thread.

ThreadHandle = CreateThread(NULL, 0, ServerWorkerThread, g_CompletionPort, 0, &ThreadID);
if ( ThreadHandle == NULL)
{
LogAdd("CreateThread() failed with error %d", GetLastError());
__leave;
}
g_ThreadHandles[dwCPU] = ThreadHandle;
CloseHandle(ThreadHandle);

}

if (!CreateListenSocket() )
__leave;


while(TRUE)
{
Accept = WSAAccept(g_Listen, (LPSOCKADDR)&cAddr, &cAddrlen, NULL, 0);
if (Accept==SOCKET_ERROR)
{
EnterCriticalSection(&criti);
LogAdd("WSAAccept() failed with error %d", WSAGetLastError());
LeaveCriticalSection(&criti);
continue;
}
EnterCriticalSection(&criti);

memcpy( &cInAddr, &cAddr.sin_addr.s_addr, 4 );

ClientIndex = gObjAddSearch(Accept, inet_ntoa(cInAddr) );

if ( ClientIndex == -1 )
{
LogAddL("error-L2 : ClientIndex = -1");
closesocket(Accept);
LeaveCriticalSection(&criti);
continue;
}

if (UpdateCompletionPort(Accept, ClientIndex, 1) == 0 )
{
LogAddL("error-L1 : %d %d CreateIoCompletionPort failed with error %d", Accept, ClientIndex, GetLastError() );
closesocket(Accept);
LeaveCriticalSection(&criti);
continue;
}

if (gObjAdd(Accept, inet_ntoa(cInAddr), ClientIndex) == -1 )
{
LogAddL("error-L1 : %d %d gObjAdd() failed with error %d", Accept, ClientIndex, GetLastError() );
LeaveCriticalSection(&criti);
closesocket(Accept);
continue;
}

memset(&gObj[ClientIndex].PerSocketContext->IOContext[0].Overlapped, 0, sizeof(OVERLAPPED));
memset(&gObj[ClientIndex].PerSocketContext->IOContext[1].Overlapped, 0, sizeof(OVERLAPPED));
gObj[ClientIndex].PerSocketContext->IOContext[0].wsabuf.buf = gObj[ClientIndex].PerSocketContext->IOContext[0].Buffer;
gObj[ClientIndex].PerSocketContext->IOContext[0].wsabuf.len = MAX_IO_BUFFER_SIZE;
gObj[ClientIndex].PerSocketContext->IOContext[0].nTotalBytes = 0;
gObj[ClientIndex].PerSocketContext->IOContext[0].nSentBytes = 0;
gObj[ClientIndex].PerSocketContext->IOContext[0].nWaitIO    = 0;
gObj[ClientIndex].PerSocketContext->IOContext[0].nSecondOfs = 0;
gObj[ClientIndex].PerSocketContext->IOContext[0].IOOperation = RECV_IO;

gObj[ClientIndex].PerSocketContext->IOContext[1].wsabuf.buf = gObj[ClientIndex].PerSocketContext->IOContext[0].Buffer;
gObj[ClientIndex].PerSocketContext->IOContext[1].wsabuf.len = MAX_IO_BUFFER_SIZE;
gObj[ClientIndex].PerSocketContext->IOContext[1].nTotalBytes= 0;
gObj[ClientIndex].PerSocketContext->IOContext[1].nSentBytes = 0;
gObj[ClientIndex].PerSocketContext->IOContext[1].nWaitIO    = 0;
gObj[ClientIndex].PerSocketContext->IOContext[1].nSecondOfs = 0;
gObj[ClientIndex].PerSocketContext->IOContext[1].IOOperation = SEND_IO;
gObj[ClientIndex].PerSocketContext->m_socket = Accept;
gObj[ClientIndex].PerSocketContext->nIndex   = ClientIndex;

nRet = WSARecv(Accept, &(gObj[ClientIndex].PerSocketContext->IOContext[0].wsabuf), 1, &RecvBytes, &Flags,
&(gObj[ClientIndex].PerSocketContext->IOContext[0].Overlapped), NULL);

if( nRet == SOCKET_ERROR && WSAGetLastError() != ERROR_IO_PENDING )
{
LogAdd("error-L1 : WSARecv() failed with error %d", WSAGetLastError());
gObj[ClientIndex].PerSocketContext->IOContext[0].nWaitIO = 4;
CloseClient(gObj[ClientIndex].PerSocketContext, FALSE);
LeaveCriticalSection(&criti);
continue;
}

gObj[ClientIndex].PerSocketContext->IOContext[0].nWaitIO = 1;
gObj[ClientIndex].PerSocketContext->dwIOCount++;

LeaveCriticalSection(&criti);
SCPJoinResultSend(ClientIndex, 1);

}
}
__finally 
{
if( g_CompletionPort )
{
for (DWORD i = 0; i < g_dwThreadCount; i++)
PostQueuedCompletionStatus(g_CompletionPort, 0, 0, NULL);
}
if( g_CompletionPort )
{
CloseHandle(g_CompletionPort);
g_CompletionPort = NULL;
}
if (g_Listen != INVALID_SOCKET) 
{
            closesocket(g_Listen); 
            g_Listen = INVALID_SOCKET;
}
}
return TRUE;
}

DWORD WINAPI ServerWorkerThread(LPVOID CompletionPortID)
{
HANDLE CompletionPort = (HANDLE) CompletionPortID;
DWORD dwIoSize;
DWORD RecvBytes;
DWORD Flags;
DWORD dwSendNumBytes = 0;
BOOL bSuccess = FALSE;
int nRet;
#ifdef _WIN64
ULONG_PTR ClientIndex=0;
#else
DWORD ClientIndex=0;
#endif

LPPER_SOCKET_CONTEXT lpPerSocketContext = NULL;
LPOVERLAPPED lpOverlapped = NULL;
LPPER_IO_CONTEXT lpIOContext = NULL;

while( true )
{
bSuccess = GetQueuedCompletionStatus( CompletionPort, &dwIoSize, /*(LPDWORD)*/&ClientIndex, &lpOverlapped, INFINITE );

if( !bSuccess )
{
if( lpOverlapped != NULL )
{
int aError = GetLastError();
if ( (aError != ERROR_NETNAME_DELETED) && (aError != ERROR_CONNECTION_ABORTED) && (aError != ERROR_OPERATION_ABORTED) && (aError != 0x79) )
{
EnterCriticalSection(&criti);
LogAdd("Error Thread : GetQueueCompletionStatus( %d )", GetLastError());
LeaveCriticalSection(&criti);
return 0;
}
}
}

EnterCriticalSection(&criti);
lpPerSocketContext = gObj[ClientIndex].PerSocketContext;

lpPerSocketContext->dwIOCount--;

if( dwIoSize == 0 )
{
LogAdd("Connection Closed, dwIoSize == 0 (Index:%d)", lpPerSocketContext->nIndex);
CloseClient(lpPerSocketContext, 0);
LeaveCriticalSection(&criti);
continue;
}

lpIOContext = (LPPER_IO_CONTEXT)lpOverlapped;

if( lpIOContext == NULL ) continue;
if( lpIOContext->IOOperation == SEND_IO )
{
lpIOContext->nSentBytes += dwIoSize;

if( lpIOContext->nSentBytes >= lpIOContext->nTotalBytes )
{
lpIOContext->nWaitIO = 0;
if( lpIOContext->nSecondOfs > 0 )
{
IoSendSecond(lpPerSocketContext);
}
}
else
{
IoMoreSend(lpPerSocketContext);
}
}
else if( lpIOContext->IOOperation == RECV_IO )
{
RecvBytes = 0;

lpIOContext->nSentBytes += dwIoSize;

if( RecvDataParse(lpIOContext, lpPerSocketContext->nIndex) == FALSE )
{
LogAdd("error-L1 : Socket Header error %d, %d", WSAGetLastError(), lpPerSocketContext->nIndex);
CloseClient(lpPerSocketContext, 0);
LeaveCriticalSection(&criti);
continue;
}

lpIOContext->nWaitIO = 0;
Flags = 0;
ZeroMemory(&(lpIOContext->Overlapped), sizeof(OVERLAPPED));

lpIOContext->wsabuf.len = MAX_IO_BUFFER_SIZE-lpIOContext->nSentBytes;
lpIOContext->wsabuf.buf = lpIOContext->Buffer+lpIOContext->nSentBytes;
lpIOContext->IOOperation = RECV_IO;

nRet = WSARecv(lpPerSocketContext->m_socket, &(lpIOContext->wsabuf), 1, &RecvBytes, &Flags,
&(lpIOContext->Overlapped), NULL);

if( nRet == SOCKET_ERROR && (WSAGetLastError() != ERROR_IO_PENDING) )
{
LogAdd("WSARecv() failed with error %d", WSAGetLastError());
//lpIOContext->nWaitIO = 2;
CloseClient( lpPerSocketContext, FALSE);
LeaveCriticalSection(&criti);
continue;
}

lpPerSocketContext->dwIOCount++;
lpIOContext->nWaitIO = 1;
}
LeaveCriticalSection(&criti);
}
return TRUE;
}

BOOL RecvDataParse(LPPER_IO_CONTEXT lpIOContext, int uIndex)
{
if ( lpIOContext->nSentBytes < 3 )
{
return TRUE;
}

LPBYTE recvbuf;
int lOfs = 0;
int size = 0;
BYTE headcode;
BYTE xcode = 0;
BYTE byDec[7024];

recvbuf = (LPBYTE)lpIOContext->Buffer;

while ( 1 )
{
if( recvbuf[lOfs] == 0xC1 || recvbuf[lOfs] == 0xC3 )
{
PBMSG_HEAD* lphead = (PBMSG_HEAD*)(recvbuf+lOfs);
size = lphead->size;
headcode = lphead->headcode;
xcode = recvbuf[lOfs];
}
else if( recvbuf[lOfs] == 0xC2 || recvbuf[lOfs] == 0xC4 ) //
{
PWMSG_HEAD* lphead = (PWMSG_HEAD*)(recvbuf+lOfs);
size = ((WORD)(lphead->sizeH)<<8);
size    |= (WORD)(lphead->sizeL);
headcode = lphead->headcode;
xcode = recvbuf[lOfs];
}
else  // ว์ด๕ฐก ธยม๖ พสดูธ้..
{
LogAdd("error-L1 : Header error (%s %d)lOfs:%d, size:%d",
__FILE__, __LINE__, lOfs,
lpIOContext->nSentBytes);
lpIOContext->nSentBytes = 0;
return FALSE;
}
if ( size <= 0 )
{
LogAdd("error-L1 : size %d",size);
return FALSE;
}

if ( size <= lpIOContext->nSentBytes )
{
if ( xcode == 0xC3 )
{
int iSize = g_SimpleModulusCS.Decrypt( byDec+2,(recvbuf+lOfs+2), size-2);

if ( iSize < 0 )
{

}
else
{
PBMSG_HEAD* lphead = (PBMSG_HEAD*)(byDec+1);
headcode = lphead->headcode;
BYTE subhead = byDec[2];
byDec[1] = 0xC1;
byDec[2] = ((BYTE)iSize)+2;

CStreamPacketEngine_Server PacketStream;

PacketStream.Clear();

if ( PacketStream.AddData(byDec+1, iSize+2) == 0 )
{
LogAddC(2, "error-L1 : CStreamPacketEngine Adding Error : ip = %s account:%s name:%s HEAD:%x (%s,%d) State:%d",
gObj[uIndex].Ip_addr,
gObj[uIndex].AccountID,
gObj[uIndex].Name,
headcode,
__FILE__, __LINE__,
gObj[uIndex].Connected);
return FALSE;
}

if ( PacketStream.ExtractPacket(byDec) != 0 )
{
LogAddC(2, "error-L1 : CStreamPacketEngine ExtractPacket Error : ip = %s account:%s name:%s HEAD:%x (%s,%d) State:%d",
gObj[uIndex].Ip_addr,
gObj[uIndex].AccountID,
gObj[uIndex].Name,
headcode,
__FILE__, __LINE__,
gObj[uIndex].Connected);
return FALSE;
}

if ( xcode == 0xC3 && headcode == 0xC5 )
{
LogAdd("พฯศฃฦะลถ : [0x%x]" , headcode);
}

if( IsHackTool(headcode, size, uIndex, xcode) == 1 )
{
return FALSE;
}
ProtocolCore(headcode, byDec, iSize, uIndex, 1, subhead);
}
}

else if ( xcode == 0xC4 )
{
int iSize = g_SimpleModulusCS.Decrypt( byDec+3, (recvbuf+lOfs+3), size-3);
if ( iSize < 0 )
{

}
else
{
BYTE* pDecBuf = byDec+1;
BYTE subhead = byDec[3];
byDec[1] = 0xC2;
WORD wsize = ((WORD)iSize)+3;
byDec[2] = SET_NUMBERH(wsize);
byDec[3] = SET_NUMBERL(wsize);

CStreamPacketEngine_Server PacketStream;

PacketStream.Clear();
if ( PacketStream.AddData(byDec+1, iSize+3) == 0 )
{
LogAddC(2, "error-L1 : CStreamPacketEngine Adding Error : ip = %s account:%s name:%s HEAD:%x (%s,%d) State:%d",
gObj[uIndex].Ip_addr,
gObj[uIndex].AccountID,
gObj[uIndex].Name,
headcode,
__FILE__,
__LINE__,
gObj[uIndex].Connected);
return FALSE;
}

if ( PacketStream.ExtractPacket(byDec) != 0 )
{
LogAddC(2, "error-L1 : CStreamPacketEngine ExtractPacket Error : ip = %s account:%s name:%s HEAD:%x (%s,%d) State:%d",
gObj[uIndex].Ip_addr,
gObj[uIndex].AccountID,
gObj[uIndex].Name,
headcode,
__FILE__,
__LINE__,
gObj[uIndex].Connected);
return FALSE;
}

headcode = pDecBuf[2];

if ( xcode == 0xC4 && headcode == 0xC5 )
{
LogAdd("พฯศฃฦะลถ : [0x%x]" , headcode);
}
if( IsHackTool(headcode, size, uIndex, xcode) == TRUE )
{
return FALSE;
}
ProtocolCore(headcode, byDec, iSize, uIndex, 1, subhead);
}
}
else
{
CStreamPacketEngine_Server ps;
ps.Clear();

if ( ps.AddData(recvbuf+lOfs, size) == 0 )
{
LogAddC(2, "error-L1 : CStreamPacketEngine Adding Error : ip = %s account:%s name:%s HEAD:%x (%s,%d) State:%d",
gObj[uIndex].Ip_addr,
gObj[uIndex].AccountID,
gObj[uIndex].Name,
headcode,
__FILE__, __LINE__,
gObj[uIndex].Connected);
return FALSE;
}

if ( ps.ExtractPacket(byDec) != 0 )
{
LogAddC(2, "error-L1 : CStreamPacketEngine ExtractPacket Error : ip = %s account:%s name:%s HEAD:%x (%s,%d) State:%d",
gObj[uIndex].Ip_addr,
gObj[uIndex].AccountID,
gObj[uIndex].Name,
headcode,
__FILE__, __LINE__,
gObj[uIndex].Connected);
return FALSE;
}
if( IsHackTool(headcode, size, uIndex, xcode) == TRUE )
{
return FALSE;
}
ProtocolCore(headcode, byDec, size, uIndex, 0, -1);
}

lOfs += size;
lpIOContext->nSentBytes  -= size;

if ( lpIOContext->nSentBytes <= 0 )
{
break;
}
}
else if ( lOfs > 0 )
{
if ( lpIOContext->nSentBytes < 1 )
{
LogAdd("error-L1 : recvbuflen 1 %s %d", __FILE__, __LINE__);
break;
}

if ( lpIOContext->nSentBytes < MAX_IO_BUFFER_SIZE )
{
memcpy(recvbuf, &recvbuf[lOfs], lpIOContext->nSentBytes);
LogAdd("Message copy %d", lpIOContext->nSentBytes);
//break;
}
break;

}
else
{
break;
}

}

return true;
}

int DataSend(int aIndex, LPBYTE lpMsg, DWORD dwSize)
{
DWORD SendBytes;
LPPER_SOCKET_CONTEXT lpPerSocketContext;
LPBYTE SendBuf;

if ( aIndex < OBJ_STARTUSERINDEX )
{
return true;
}

EnterCriticalSection(&criti);

if ( ((aIndex < 0)? FALSE : (aIndex > OBJMAX-1)? FALSE : TRUE )  == FALSE )
{
LogAdd("error-L2 : Index(%d) %x %x %x ", dwSize, lpMsg[0], lpMsg[1], lpMsg[2]);
LeaveCriticalSection(&criti);
return false;
}

if ( lpMsg[0] == 0xC3 || lpMsg[0] == 0xC4 )
{
int ret;
BYTE btsize;

if ( lpMsg[0] == 0xC3 )
{
btsize = lpMsg[1];
lpMsg[1]=gNSerialCheck[aIndex].GetSendSerial();
ret = g_SimpleModulusSC.Encrypt(&ExSendBuf[2], &lpMsg[1], dwSize-1);
ExSendBuf[0] = 0xC3;
ExSendBuf[1] = ret + 2;
SendBuf = ExSendBuf;
dwSize = ret + 2;
lpMsg[1] = btsize;
}
else
{
btsize = lpMsg[2];
lpMsg[2] = gNSerialCheck[aIndex].GetSendSerial();
ret = g_SimpleModulusSC.Encrypt(&ExSendBuf[3], &lpMsg[2], dwSize-2);
ExSendBuf[0] = 0xC4;
ExSendBuf[1] = SET_NUMBERH(ret +3 );
ExSendBuf[2] = SET_NUMBERL(ret+3);
SendBuf = ExSendBuf;
dwSize = ret + 3;
lpMsg[2] = btsize;
}
}
else
{
SendBuf = lpMsg;
}

if ( gObj[aIndex].Connected < PLAYER_CONNECTED )
{
LeaveCriticalSection(&criti);
return FALSE;
}

lpPerSocketContext= gObj[aIndex].PerSocketContext;

if ( dwSize > sizeof(lpPerSocketContext->IOContext[0].Buffer))
{
LogAdd("Error : Max msg(%d) %s %d", dwSize, __FILE__, __LINE__);
CloseClient(aIndex);
LeaveCriticalSection(&criti);
return false;
}

LPPER_IO_CONTEXT lpIoCtxt = (LPPER_IO_CONTEXT)&lpPerSocketContext->IOContext[1];

if ( lpIoCtxt->nWaitIO > 0 )
{
if ( ( lpIoCtxt->nSecondOfs + dwSize ) > MAX_IO_BUFFER_SIZE-1 )
{
LogAdd("(%d)error-L2 MAX BUFFER OVER %d %d %d [%s][%s]",
aIndex, lpIoCtxt->nTotalBytes, lpIoCtxt->nSecondOfs,
dwSize, gObj[aIndex].AccountID, gObj[aIndex].Name);

lpIoCtxt->nWaitIO = 0;
CloseClient(aIndex);
LeaveCriticalSection(&criti);
return true;
}

memcpy( &lpIoCtxt->BufferSecond[lpIoCtxt->nSecondOfs], SendBuf, dwSize);
lpIoCtxt->nSecondOfs += dwSize;
LeaveCriticalSection(&criti);
return true;
}

lpIoCtxt->nTotalBytes = 0;

if ( lpIoCtxt->nSecondOfs > 0 )
{
memcpy(lpIoCtxt->Buffer, lpIoCtxt->BufferSecond, lpIoCtxt->nSecondOfs);
lpIoCtxt->nTotalBytes = lpIoCtxt->nSecondOfs;
lpIoCtxt->nSecondOfs = 0;
}

if ( (lpIoCtxt->nTotalBytes+dwSize) > MAX_IO_BUFFER_SIZE-1 )
{
LogAdd("(%d)error-L2 MAX BUFFER OVER %d %d [%s][%s]",
aIndex, lpIoCtxt->nTotalBytes, dwSize,
gObj[aIndex].AccountID, gObj[aIndex].Name);

lpIoCtxt->nWaitIO = 0;
CloseClient(aIndex);
LeaveCriticalSection(&criti);
return FALSE;
}

memcpy( &lpIoCtxt->Buffer[lpIoCtxt->nTotalBytes], SendBuf, dwSize);
lpIoCtxt->nTotalBytes += dwSize;
lpIoCtxt->wsabuf.buf = (char*)&lpIoCtxt->Buffer;
lpIoCtxt->wsabuf.len = lpIoCtxt->nTotalBytes;
lpIoCtxt->nSentBytes = 0;
lpIoCtxt->IOOperation = SEND_IO;

if ( WSASend( gObj[aIndex].m_socket, &lpIoCtxt->wsabuf , 1, &SendBytes, 0, &lpIoCtxt->Overlapped, NULL) == -1 )
{
if ( WSAGetLastError() != WSA_IO_PENDING )
{
lpIoCtxt->nWaitIO = 0;


if ( lpIoCtxt->wsabuf.buf[0] == 0xC1 )
{
LogAdd("(%d)WSASend(%d) failed with error [%x][%x] %d %s ",
__LINE__, aIndex, (BYTE)lpIoCtxt->wsabuf.buf[0],
(BYTE)lpIoCtxt->wsabuf.buf[2], WSAGetLastError(), gObj[aIndex].Ip_addr);
}
else if ( lpIoCtxt->wsabuf.buf[0] == 0xC2 )
{
LogAdd("(%d)WSASend(%d) failed with error [%x][%x] %d %s ",
__LINE__, aIndex, (BYTE)lpIoCtxt->wsabuf.buf[0],
(BYTE)lpIoCtxt->wsabuf.buf[3], WSAGetLastError(), gObj[aIndex].Ip_addr);
}
CloseClient(aIndex);
LeaveCriticalSection(&criti);
return false;
}
}
else
{
lpPerSocketContext->dwIOCount ++;
}


lpIoCtxt->nWaitIO = 1;
LeaveCriticalSection(&criti);
return true;
}

int IoSendSecond(LPPER_SOCKET_CONTEXT lpPerSocketContext)
{
DWORD SendBytes;
int aIndex;
EnterCriticalSection(&criti);
aIndex = lpPerSocketContext->nIndex;
LPPER_IO_CONTEXT lpIoCtxt = (LPPER_IO_CONTEXT)&lpPerSocketContext->IOContext[1];

if ( lpIoCtxt->nWaitIO > 0 )
{
LeaveCriticalSection(&criti);
return false;
}

lpIoCtxt->nTotalBytes = 0;
if ( lpIoCtxt->nSecondOfs > 0 )
{
memcpy(lpIoCtxt->Buffer, lpIoCtxt->BufferSecond, lpIoCtxt->nSecondOfs);
lpIoCtxt->nTotalBytes = lpIoCtxt->nSecondOfs;
lpIoCtxt->nSecondOfs = 0;
}
else
{
LeaveCriticalSection(&criti);
return false;
}

lpIoCtxt->wsabuf.buf = (char*)&lpIoCtxt->Buffer;
lpIoCtxt->wsabuf.len = lpIoCtxt->nTotalBytes;
lpIoCtxt->nSentBytes = 0;
lpIoCtxt->IOOperation = SEND_IO;

if ( WSASend(gObj[aIndex].m_socket, &lpIoCtxt->wsabuf, 1, &SendBytes, 0, &lpIoCtxt->Overlapped, NULL) == -1 )
{
if ( WSAGetLastError() != WSA_IO_PENDING )
{
LogAdd("WSASend(%d) failed with error %d %s ", __LINE__, WSAGetLastError(), gObj[aIndex].Ip_addr);
CloseClient(aIndex);
LeaveCriticalSection(&criti);
return false;
}
}
else
{
lpPerSocketContext->dwIOCount ++;
}

lpIoCtxt->nWaitIO = 1;
LeaveCriticalSection(&criti);

return true;
}


int IoMoreSend(LPPER_SOCKET_CONTEXT lpPerSocketContext)
{
DWORD SendBytes;
int aIndex;

EnterCriticalSection(&criti);
aIndex = lpPerSocketContext->nIndex;
LPPER_IO_CONTEXT lpIoCtxt = (LPPER_IO_CONTEXT)&lpPerSocketContext->IOContext[1];

if ( (lpIoCtxt->nTotalBytes - lpIoCtxt->nSentBytes) < 0 )
{
LeaveCriticalSection(&criti);
return false;
}

lpIoCtxt->wsabuf.buf = (char*)&lpIoCtxt->Buffer[lpIoCtxt->nSentBytes];
lpIoCtxt->wsabuf.len = lpIoCtxt->nTotalBytes - lpIoCtxt->nSentBytes;
lpIoCtxt->IOOperation = SEND_IO;

if ( WSASend(gObj[aIndex].m_socket, &lpIoCtxt->wsabuf, 1, &SendBytes, 0, &lpIoCtxt->Overlapped, NULL) == -1 )
{
if ( WSAGetLastError() != WSA_IO_PENDING )
{
LogAdd("WSASend(%d) failed with error %d %s ", __LINE__, WSAGetLastError(), gObj[aIndex].Ip_addr);
CloseClient(aIndex);
LeaveCriticalSection(&criti);
return false;
}
}
else
{
lpPerSocketContext->dwIOCount ++;
}


lpIoCtxt->nWaitIO = 1;
LeaveCriticalSection(&criti);
return true;
}


BOOL UpdateCompletionPort(SOCKET sd, int ClientIndex, BOOL bAddToList)
{
LPPER_SOCKET_CONTEXT lpPerSocketContext = NULL;

HANDLE cp = CreateIoCompletionPort((HANDLE)sd, g_CompletionPort, (DWORD)ClientIndex, 0);
   
if (cp == NULL)
{
LogAdd("CreateIoCompletionPort: %d", GetLastError() );
return FALSE;
}

gObj[ClientIndex].PerSocketContext->dwIOCount = 0;
return TRUE;
}


void CloseClient ( LPPER_SOCKET_CONTEXT lpPerSocketContext, BOOL bGraceful )
{
int index = -1;
index = lpPerSocketContext->nIndex ;

if ( index >= OBJ_STARTUSERINDEX && index < OBJMAX )
{
#ifdef __CUSTOMS__
if( g_OfflineTrade.Update(index, 0) )
{
return;
}
#endif

#ifdef OFFEXP
if( OffExp.Update(index, 0) )
{
return;
}
#endif

#ifdef __MAKELO__
if( g_OfflineAttack.CharInfo[index].IsOffline )
{
gObj[index].CheckTick = GetTickCount();
return;
}
#endif
if ( gObj[index].m_socket != INVALID_SOCKET )
{
if (closesocket(gObj[index].m_socket) == -1 )
{
if ( WSAGetLastError() != 10038 )
{
return;
}
}

gObj[index].m_socket = INVALID_SOCKET;
}

gObjDel(index);
}
}

void CloseClient(int index)
{
if ( index < 0 || index > OBJMAX-1 )
{
LogAdd("error-L1 : CloseClient index error");
return;
}

if ( gObj[index].Connected == PLAYER_EMPTY )
{
LogAdd("error-L1 : CloseClient connect error");
return;
}

#ifdef __CUSTOMS__
if( g_OfflineTrade.Update(index, 0) )
{
return;
}
#endif

#ifdef OFFEXP
if( OffExp.Update(index, 0) )
{
return;
}
#endif

#ifdef __MAKELO__
if( g_OfflineAttack.CharInfo[index].IsOffline )
{
gObj[index].CheckTick = GetTickCount();
return;
}
#endif

EnterCriticalSection(&criti);

if ( gObj[index].m_socket != INVALID_SOCKET )
{
closesocket(gObj[index].m_socket );
gObj[index].m_socket = INVALID_SOCKET;
}
else
{
LogAdd("error-L1 : CloseClient INVALID_SOCKET");
}

LeaveCriticalSection(&criti);
}

void CloseClientEx(int index)
{
if ( index < 0 || index > OBJMAX-1 )
{
LogAdd("error-L1 : CloseClient index error");
return;
}

if ( gObj[index].Connected == PLAYER_EMPTY )
{
LogAdd("error-L1 : CloseClient connect error");
return;
}

EnterCriticalSection(&criti);

if ( gObj[index].m_socket != INVALID_SOCKET )
{
closesocket(gObj[index].m_socket );
gObj[index].m_socket = INVALID_SOCKET;
}
else
{
LogAdd("error-L1 : CloseClient INVALID_SOCKET");
}

LeaveCriticalSection(&criti);
}

void ResponErrorCloseClient(int index)
{
if ( index < 0 || index > OBJMAX-1 )
{
LogAdd("error-L1 : CloseClient index error");
return;
}

if ( gObj[index].Connected == PLAYER_EMPTY )
{
LogAdd("error-L1 : CloseClient connect error");
return;
}

#ifdef __CUSTOMS__
if( g_OfflineTrade.Update(index, 0) )
{
return;
}
#endif

#ifdef OFFEXP
if( OffExp.Update(index, 0) )
{
return;
}
#endif

#ifdef __MAKELO__
if( g_OfflineAttack.CharInfo[index].IsOffline )
{
gObj[index].CheckTick = GetTickCount();
return;
}
#endif

EnterCriticalSection(&criti);
closesocket(gObj[index].m_socket);
gObj[index].m_socket = INVALID_SOCKET;

if ( gObj[index].m_socket == INVALID_SOCKET )
{
LogAdd("error-L1 : CloseClient INVALID_SOCKET");
}

gObjDel(index);
LeaveCriticalSection(&criti);
}

Gracias:

Spain:
¿Alguien me puede ayudar a solucionar este problema? Tengo una pequeña recompensa. (Donar)


Portugal:
Alguém pode me ajudar a resolver esse problema? Eu tenho uma pequena recompensa. (Doar)


English:
Can someone help me solve this problem? I have a small reward. (Donate)





Puedo editar el código fuente simplemente señalando el error o sugiriendo una solución, porque puedo compilarlo yo mismo.

Tengo un pequeño dinero de recompensa para pagar que me ayudó a arreglarlo con éxito, pagaré a través de Paypal.

Gracias:

Paginas: [1] 2 3