Уроки разработки в MU Online: команды drop,add,post

Автор NZK, 2012 Сен. 02, 08:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] mu onlineассемблерmu разработкиdropкомандыpostaddvisual studio

NZK

Вот собственно и кодл ассемблера.
можно хукнуть в .dll , а .dll в GS

post :
Спойлер
void DataSendAll(unsigned char* Packet, int Length)
{
for (int i=6400; i<7400; i++)
if(gObjIsConnected(i))
DataSend(i, Packet, Length);
}

void SendPost(int wId, LPCSTR Command, LPCSTR Text)
{
if (!IsPost) return;
if (!gObjIsConnected(wId)) return;
if (!strcmpi(Command, "/Post"))
{
MessageOutput(wId, "[%s] Usando: /Post <Msg>.", szPrefix);
MessageOutput(wId, "[%s] Preco para usar Post: %d, Level Requerido: %d", szPrefix, PostCost, PostLevel);
return;
}
gObj_SetInfo(wId);
if (gObj.Level < PostLevel)
{
MessageOutput(wId, "[%s] Voce esta level baixo para usar o /post", szPrefix);
return;
}
if (gObj.Money < PostCost)
{
MessageOutput(wId, "[%s] Voce nao tem zen suficiente para usar o /post", szPrefix);
return;
}
BYTE *Packet;
char Message[100];
Packet = (BYTE*) malloc(200);
memset(Packet, 0x00, 200);
*Packet = 0xC1;
*(Packet+2) = 0x00;
memcpy((Packet+3), gObj.Nick, strlen(gObj.Nick));
sprintf(Message, "@@[post] %s", Text);
memcpy((Packet+13), Message, strlen(Message));
int Len = (strlen(Message) + 0x13);
*(Packet+1) = Len;
DataSendAll(Packet, Len);
int Amount = (gObj.Money - PostCost);
gObj_Write(wId, gObj_Money, Amount);
MoneySend(wId, Amount);
free (Packet);
}
[свернуть]







add:
Спойлер
void AddStats(int aIndex)
{
if (!IsAddCmd) return;
cObj->Init(aIndex);
if (!strcmpi(Message, "/add"))
{
MessageOutput(aIndex, "Useage: /add <Type> <Amount>");
MessageOutput(aIndex, "The price for Add is: %d, Maximum stats: %d", AddPrice, AddMax);
return;
}
if (cObj->Money < AddPrice)
{
MessageOutput(aIndex, "You are lacking zen! %d", AddPrice - cObj->Money);
return;
}
char Param1[100];
memset(Param1, 0x00, 100);
GetParam(1, Message, Param1);
int AddType = 0;
if (!strcmpi(Param1, "str")) AddType = 0xB8;
if (!strcmpi(Param1, "agi")) AddType = 0xBA;
if (!strcmpi(Param1, "vit")) AddType = 0xBC;
if (!strcmpi(Param1, "eng")) AddType = 0xBE;
if (!strcmpi(Param1, "cmd")) AddType = 0xD8;
if (!AddType)
{
MessageOutput(aIndex, "You have selected wrong type! The types are: str, agi, vit, eng, cmd");
return;
}
if (cObj->Class != 4 && AddType == 0xD8)
{
MessageOutput(aIndex, "Only Dark Lords can use the add cmd type.");
return;
}
char Param2[100];
memset(Param2, 0x00, 100);
GetParam(2, Message, Param2);
int StatsToAdd = atoi(Param2);
if (cObj->LvlUpPoints < StatsToAdd)
{
MessageOutput(aIndex, "You are lacking level up points! %d", StatsToAdd - cObj->LvlUpPoints);
return;
}
int NowStats = cObj->GetWord(AddType);
if ((StatsToAdd + NowStats) > AddMax)
{
MessageOutput(aIndex, "You are not allowed to add more than %d points!", AddMax);
return;
}
BYTE Packet[5] = {0xC1, 0x05, 0x0F3, 0x06};
Packet[4] = ((AddType % 16) ^ 8) / 2; // Nice algorithm by coNsept to convert from gObj Offsets to the add types :P
if (AddType == 0xD8) Packet[4] = 0x04;
if (StatsToAdd <= 100)
for (int i=0; i<StatsToAdd; i++)
CGLevelUpPointAdd(Packet, aIndex);
else
{
int Amount = (cObj->LvlUpPoints - StatsToAdd - 1);
cObj->SetInt(0xA4, Amount);
cObj->AddInt(AddType, StatsToAdd - 1);
CGLevelUpPointAdd(Packet, aIndex);
}
cObj->SetInt(0xB4, cObj->Money - AddPrice);
CGMoneySend(aIndex, cObj->Money - AddPrice);
cObj->Init(aIndex);
MessageOutput(aIndex, "You've added %d points. You have now %d points left.", StatsToAdd, cObj->LvlUpPoints);
if (StatsToAdd > 100)
MessageOutput(aIndex, "Please relog and your stats will be updated.");
[свернуть]




drop
Спойлер
{
if(strlen(msg) < 18)
{
return;
}

int spaces = 0;
for(int i=0; i < strlen(msg); i++)
{
if(msg == ' ')
spaces++;
}
if(spaces < 7)
return;

if(IsObjectGM(gObjId) == false)
{
return;
}

char * PosA;
PosA = strchr( msg , ' ' );

char * PosB;
PosB = strchr( PosA+1 , ' ' );

char * PosC;
PosC = strchr( PosB+1 , ' ' );

char * PosD;
PosD = strchr( PosC+1 , ' ' );

int ItemType, ItemNr, ItemLevel;
if(*(PosA+2) != ' ')
{
ItemType = (int)(*(PosA+1) - 48) * 10 + (int)(*(PosA+2) - 48);
}
else
{
ItemType = (*(PosA+1)) - 48;
}

if(*(PosB+2) != ' ')
{
ItemNr = (int)(*(PosB+1) - 48) * 10 + (int)(*(PosB+2) - 48);
}
else
{
ItemNr = (*(PosB+1)) - 48;
}

if(*(PosC+2) != ' ')
{
ItemLevel = (int)(*(PosC+1) - 48) * 10 + (int)(*(PosC+2) - 48);
}
else
{
ItemLevel = (*(PosC+1)) - 48;
}

int ItemSkill = (*(PosD+1)) - 48;
int ItemLuck = (*(PosD+3)) - 48;
int ItemOpt = (*(PosD+5)) - 48;
int ItemExc = (*(PosD+7)) - 48;


DWORD Item = ItemType * 512 + ItemNr;

InvItemCreate ( gObjId , GetObjectMap(gObjId) , GetObjectPosX(gObjId) ,  GetObjectPosY(gObjId) , Item , ItemLevel , 0 ,ItemSkill , ItemLuck,  ItemOpt , -1 , ItemExc , 0 );
GCServerMsgStringSend("[Make]: You have made an item.", gObjId, 1);
[свернуть]

NightWish

#1
Цитата: bespredeL от 2012 Сен. 02, 07:43  Вот собственно и кодл ассемблера.

Код чего?  :D

Это куски кода, можно найти почти в любом сурсе находящегося на форуме :)

Цитата: bespredeL от 2012 Сен. 02, 07:43  можно хукнуть в .dll , а .dll в GS

а как в *.dll хукнуть?  :trollface:

NZK


RedDawn

Цитата: state0ftrance от 2012 Сен. 02, 08:58  Код чего?  :D

Это куски кода, можно найти почти в любом сурсе находящегося на форуме :)



а как в *.dll хукнуть?  :trollface:

Устонови Visual Studio и вперед. :)

NightWish

#4
Цитата: MuEternaL от 2012 Сен. 02, 08:13  Устонови Visual Studio и вперед. :)
И что дальше делать? как в Visual Studio Хукнуть этот код? научишь? :D

epmak

тут не асьма а с++ обычный  сувается в дллку с сервером, но обычно такое ужо есть там

RedDawn

#6
Цитата: state0ftrance от 2012 Сен. 02, 10:45  И что дальше делать? как в Visual Studio Хукнуть этот код? научишь? :D

Может мне за тебя еще все сделать. :D
Если тебе надо, сам сделаешь.

NZK

да он меня подъебует))
знает  что я не знаю.
п.с. мне это и ненадо.

 

SmallHabit

Судя по
Цитироватьfor (int i=6400; i<7400; i++)
эти сурсы подойдут только в .18 версии гса и к ридлан сборке. Смысл было выкладывать эти сурсы, когда их уже несколько раз в разных вариациях заливали то тут то на рагзоне. :)

Похожие темы (5)

Сообщений: 37
Просмотров: 22835

Сообщений: 127
Просмотров: 40218

Сообщений: 32
Просмотров: 13786