-
Posts
194 -
Credits
0 -
Joined
-
Last visited
-
Days Won
4 -
Feedback
0%
Content Type
Articles
Profiles
Forums
Store
Everything posted by guytis
-
Hi, here is the 100% decompiled CItem::EnchantItem function Config::ExceptionMailing: it is never false L2Server.exe C4 In case anyone needs it. bool CItem::EnchantItem(CItem *scroll, CItem *pItem, User* pUser) { pUser_ = pUser; pItem_ = pItem; scroll_ = scroll; if ( !pItem_ ) { return false; } pSID = pItem_->d.pSID; nEnchantLevel = pSID->nEnchantLevel; SlotType = (pSID->nSlotType >> 15) & 1; if ( !(pItem_->vtable->base.Config::ExceptionMailing)) { if ( nEnchantLevel < 3 ) goto SUCCESS; if ( nEnchantLevel >= 20 ) { prob = 0.0; } else { if ( SlotType ) chance = WeaponEnchantTable[nEnchantLevel] * 100.0; else chance = ArmorEnchantTable[nEnchantLevel] * 100.0; prob = 100.0 - chance; } if ( nEnchantLevel >= 15 ) prob = prob * 0.5; random = rand(); dice = 100.0 - 0.0; if ( nEnchantLevel < 20 && prob >= random / 32767.0 * (100.0 - 0.0) + 0.0 ) { CLog::Add(&g_winlog, LOG_REQUEST, L"armor enchant success, prev enchanted[%d], dice[%f], prob[%f]", nEnchantLevel, random / 32767.0 * dice + 0.0, prob); goto SUCCESS; } CLog::Add(&g_winlog, LOG_REQUEST, L"armor enchant fail, prev enchanted[%d], dice[%f], prob[%f]", nEnchantLevel, random / 32767.0 * dice + 0.0, prob); goto FAIL; } pII = pItem_->d.pII; if ( pII->nCrystalType < CrystalC || !LOBYTE(pII->magicWeapon) ) { prob_1 = 70.0; if ( nEnchantLevel < 3 ) goto SUCCESS; if ( nEnchantLevel >= 15 ) prob_1 = 35.0; random_1 = rand(); if ( prob_1 >= random_1 / 32767.0 * (100.0 - 0.0) + 0.0 ) { CLog::Add(&g_winlog, LOG_REQUEST, L"weapon enchant success, prev enchanted[%d], dice[%f], prob[%f]", nEnchantLevel, random_1 / 32767.0 * (100.0 - 0.0) + 0.0, prob_1); goto SUCCESS; } CLog::Add(&g_winlog, LOG_REQUEST, L"weapon enchant fail, prev enchanted[%d], dice[%f], prob[%f]", nEnchantLevel, random_1 / 32767.0 * (100.0 - 0.0) + 0.0, prob_1); goto FAIL; } prob_2 = 40.0; if ( nEnchantLevel >= 3 ) { if ( nEnchantLevel >= 15 ) prob_2 = 20.0; random_2 = rand(); if ( prob_2 >= random_2 / 32767.0 * (100.0 - 0.0) + 0.0 ) { CLog::Add(&g_winlog, LOG_REQUEST, L"magic weapon enchant success, prev enchanted[%d], dice[%f], prob[%f]", nEnchantLevel, random_2 / 32767.0 * (100.0 - 0.0) + 0.0, prob_2); goto SUCCESS; } CLog::Add(&g_winlog, LOG_REQUEST, L"magic weapon enchant fail, prev enchanted[%d], dice[%f], prob[%f]", nEnchantLevel, random_2 / 32767.0 * (100.0 - 0.0) + 0.0, prob_2); FAIL: etcType = scroll_->d.pII->etcType; if ( etcType == EtcItemBlessedScrollEnchantWeapon || etcType == EtcItemBlessedScrollEnchantArmor ) { User::SendSystemMessage(pUser_->socket, id_1517__Fallo_en_el_encantamiento_blessed_El_valor_del_encantamiento_del_item_se_convirtio_a_0); CDB::RequestEnchantItem(&g_CDB, scroll_, pItem_, 0, pUser_); } else { CSocket::Send(pUser_->socket, "cdddddd", 100i64); CDB::RequestEnchantItemFail(&g_CDB, scroll_, pItem_, pUser_); } goto END; } SUCCESS: if ( nEnchantLevel ) { CSocket::Send(pUser_->socket, "cdddddd", 100i64); } else { v25 = 3; v24 = 1; CSocket::Send(pUser_->socket, "cdddd", 100i64, 62i64, v24, v25, pItem_->d.pSID->nItemID); } CDB::RequestEnchantItem(&g_CDB, scroll_, pItem_, nEnchantLevel + 1, pUser_); END: return false; } WeaponEnchantTable dq 0 ; DATA XREF: CItem__EnchantItem+27B↑r .rdata:0000000000A06B88 align 20h .rdata:0000000000A06BA0 dq 0.3333333333333333 .rdata:0000000000A06BA8 dq 0.6666666666666666 .rdata:0000000000A06BB0 dq 0.75 .rdata:0000000000A06BB8 dq 0.8 .rdata:0000000000A06BC0 dq 0.8333333333333334 .rdata:0000000000A06BC8 dq 0.8571428571428571 .rdata:0000000000A06BD0 dq 0.875 .rdata:0000000000A06BD8 dq 0.8888888888888888 .rdata:0000000000A06BE0 dq 0.9 .rdata:0000000000A06BE8 dq 0.9090909090909091 .rdata:0000000000A06BF0 dq 0.9166666666666666 .rdata:0000000000A06BF8 dq 0.9230769230769231 .rdata:0000000000A06C00 dq 0.9285714285714286 .rdata:0000000000A06C08 dq 0.9333333333333333 .rdata:0000000000A06C10 dq 0.9375 .rdata:0000000000A06C18 dq 0.9411764705882353 .rdata:0000000000A06AE0 ArmorEnchantTable dq 0 ; DATA XREF: CItem__EnchantItem:loc_628E83↑r .rdata:0000000000A06AE8 dq 0 .rdata:0000000000A06AF0 dq 0 .rdata:0000000000A06AF8 dq 0.3333333333333333 .rdata:0000000000A06B00 dq 0.6666666666666666 .rdata:0000000000A06B08 dq 0.75 .rdata:0000000000A06B10 dq 0.8 .rdata:0000000000A06B18 dq 0.8333333333333334 .rdata:0000000000A06B20 dq 0.8571428571428571 .rdata:0000000000A06B28 dq 0.875 .rdata:0000000000A06B30 dq 0.8888888888888888 .rdata:0000000000A06B38 dq 0.9 .rdata:0000000000A06B40 dq 0.9090909090909091 .rdata:0000000000A06B48 dq 0.9166666666666666 .rdata:0000000000A06B50 dq 0.9230769230769231 .rdata:0000000000A06B58 dq 0.9285714285714286 .rdata:0000000000A06B60 dq 0.9333333333333333 .rdata:0000000000A06B68 dq 0.9375 .rdata:0000000000A06B70 dq 0.9411764705882353 .rdata:0000000000A06B78 dq 0.9444444444444444
-
Tool Webhost SQL Connection PHP Tester
guytis replied to DenArt Designs's topic in Server Shares & Files [L2OFF]
I read them and they disgust me ... xD -
Received this message from INNOVA - Real or Fake?
guytis replied to AdenaBrinks's topic in General Discussion [English]
exelent, close all servers :P -
Tell me who help?
-
I never helped anyone
-
hahaha wants to earn money getting everything for free haha .. my god.
-
Share To learn IDA and C ++ ! Surprise !!
guytis replied to guytis's topic in Server Shares & Files [L2OFF]
you have to have fun too, it's not just work and work hehe -
Share To learn IDA and C ++ ! Surprise !!
guytis replied to guytis's topic in Server Shares & Files [L2OFF]
Hayy Ulises Ulises y de bueno no tenes nada jaja, no seas taradito que me hablas de una web imbecil,, jajaj lo que vos hiciste en una web yo lo extendi en una dll y las subs las metes por npc xD, ningun retrasado aca en argentina todabia lo hiso.. y vos no vas a ser el segundo!! veni a visitar a emi cuando quieras, cada uno es libre de hacer lo que quiere! por lo menos demostrar tu grado de ignorancia que tenes que amenazar a una persona invisible en internet porque no tenes recursos para defenderte con palabras... anda a seguir limpiando baños negro mugriento :D avisame cuando vengas que te voy a ver, MO-GO-LI-CO -
Share To learn IDA and C ++ ! Surprise !!
guytis replied to guytis's topic in Server Shares & Files [L2OFF]
JAJAJ LOS QUE LEEN SE QUEDAN CON LA DUDA, PERO LO MAS IMPORTANTE ES QUE YO LO SE! SOS UN MOGOLICO JAJJA, YO DARLE ESCRITORIO A ALGUIEN? PEDIR AYUDA'? JAJJA... SI RE GORDITO SOY JAJA.. SOS UN POBRE INFELIZ... SABELO... JAMAS VAS A HACER LA PLATA QUE HICIMOS! XD SEGUI PARTICIPANDO, BUSCANDO POR ESTE FORO A VER QUE GILADA PODES ENCONTRAR JAJJA Y TE ACLARO, NO ES TAN IMPORTANTE SABER CUANTO ES 1+1 SINO, SABER CUANTO ES LA MITAD DE 2+2 SALUDOS FRACASADO, HABLA CON EMILIANO! Y VENI A CHUPARME LA PIJA SI TE DEJAN PASAR, FRACASADO!!! TODO GRACIAS A LAS DONAS!!, JAJAJ VOS QUE TE COMPRASTE? UNA BICICLETA? JAJJAJA -
Share To learn IDA and C ++ ! Surprise !!
guytis replied to guytis's topic in Server Shares & Files [L2OFF]
jajajja das risa niño rata seguro que sos un mogolico que se la cree, vos no le podes robar ni 5 pesos a tu mama y me vas a robar files a mi? jjaaj sos un burro, GIL, HIJO DE MIL PUTA, Y A TU VIEJA ME LA COJO CUANDO QUIERAS!! , ANDA A CHUPARLE LA PIJA A EMILIANO Y QUE TE DIGA DONDE ENCONTRARME JAJAJ MOGOLICO! SEGURO TUS VIEJOS SE DROGABAN MIENTRAS TE GESTARON, NO HYA OTRA EXPLICACION! PELOTUDO. -
So you publish things you don't even know what they are? This is rubbish that is useless ...
-
Discussion Create a password account
guytis replied to duartegabriel's topic in Server Development Discussion [L2OFF]
donk -
Discussion Create a password account
guytis replied to duartegabriel's topic in Server Development Discussion [L2OFF]
i say int A =10; int Z = inval(A / 3 ); int U = Z x 3; //U === 9 If you think I'm wrong, grab a book first. Donkey -
Discussion Create a password account
guytis replied to duartegabriel's topic in Server Development Discussion [L2OFF]
its logic 3 * 3 not 10 its sarcasm... -
Discussion Create a password account
guytis replied to duartegabriel's topic in Server Development Discussion [L2OFF]
intval(10 / 3) reverse 3*3 = 10 good -
Help //setparam PVPs [C4]
guytis replied to surr0und's question in Request Server Development Help [L2OFF]
only delete crest for cached function deletePledgeCrest($pledgeId){ $buf = pack("cV", 0x19, $pledgeId); return $this->Send($buf); } -
Thanks to all these people, L2 died. Congratulations keep helping hehe The person is asking them to set up a free business and help. how deluded they are ...
-
Help Inventroy slot problem (Vanganth)
guytis replied to elfeush's question in Request Server Development Help [L2OFF]
yes yes int ItemListFix(PCHAR buf, int bufLen, CItem *pItem, WORD ItemType, DWORD ObjectID, DWORD ItemID, DWORD Count, WORD ItemType2, WORD CustomType1, WORD IsEquiped, DWORD BodyPart, WORD EnchantLevel, WORD CustomType2) { //Old FMT: "hdddhhhdhh" const char *format = "hdddhhhdhhdd"; //New IL Format DWORD AugmentationID = 0; DWORD Mana = 0; // DWORD itemId = 0; // DWORD SlotType = 0; if(pItem->IsValidItem()) { AugmentationID = pItem->nAugmentationID; Mana = pItem->nManaLeft / 60; // SlotType = pItem->pSID->nSlotType; // itemId = pItem->pSID->nItemID; // g_Log.Add(CLog::Error, "---------ItemListFix------"); // g_Log.Add(CLog::Error, "nItemId: [%d] nItemType[%d]",itemId,SlotType ); // g_Log.Add(CLog::Error, "ItemType: [%d] ItemType2[%d] CustomType1[%d] BodyPart[%d] CustomType2[%d]",ItemType,ItemType2,CustomType1,BodyPart,CustomType2 ); // g_Log.Add(CLog::Error, "---------------------------"); if (BodyPart ==1) BodyPart = 262144; } return Assemble(buf, bufLen, format, ItemType, ObjectID, ItemID, Count, ItemType2 ,CustomType1, IsEquiped, BodyPart, EnchantLevel, CustomType2, AugmentationID, Mana); } -
Help Inventroy slot problem (Vanganth)
guytis replied to elfeush's question in Request Server Development Help [L2OFF]
fix #include "StdAfx.h" #include "Packets.h" int InventoryUpdateFix(PCHAR buf, int bufLen, CItem *pItem, WORD UpdateType, WORD ItemType, DWORD ObjectID, DWORD ItemID, DWORD Count, WORD ItemType2, WORD CustomType1, WORD IsEquiped, DWORD BodyPart, WORD EnchantLevel, WORD CustomType2) { // Old FMT: "hhdddhhhdhh" const char *format = "hhdddhhhdhhdd"; //New IL Format DWORD AugmentationID = 0; DWORD Mana = 0; // DWORD itemId = 0; // DWORD SlotType = 0; if(pItem->IsValidItem()) { AugmentationID = pItem->nAugmentationID; Mana = pItem->nManaLeft/60; // SlotType = pItem->pSID->nSlotType; // itemId = pItem->pSID->nItemID; // g_Log.Add(CLog::Error, "----InventoryUpdateFix----"); // g_Log.Add(CLog::Error, "nItemId: [%d] nItemType[%d]",itemId,SlotType ); // g_Log.Add(CLog::Error, "UpdateType: [%d] ItemType2[%d] CustomType1[%d] BodyPart[%d] CustomType2[%d]",UpdateType,ItemType2,CustomType1,BodyPart,CustomType2 ); // g_Log.Add(CLog::Error, "--------------------------"); + if (BodyPart ==1) + BodyPart = 262144; } return Assemble(buf, bufLen, format, UpdateType, ItemType, ObjectID, ItemID, Count, ItemType2 ,CustomType1, IsEquiped, BodyPart, EnchantLevel, CustomType2, AugmentationID, Mana); } -
Help //setparam PVPs [C4]
guytis replied to surr0und's question in Request Server Development Help [L2OFF]
These are the commands that can be used with setparam if ( wcsicmp(v4, L"level") ) { if ( wcsicmp(v4, L"str") ) { if ( wcsicmp(v4, L"dex") ) { if ( wcsicmp(v4, L"con") ) { if ( wcsicmp(v4, L"int") ) { if ( wcsicmp(v4, L"men") ) { if ( wcsicmp(v4, L"wit") ) { if ( wcsicmp(v4, L"undying") ) { if ( wcsicmp(v4, L"exp") ) { if ( wcsicmp(v4, L"sp") ) { if ( wcsicmp(v4, L"org_hp") ) { if ( wcsicmp(v4, L"org_mp") ) { if ( wcsicmp(v4, L"org_hp_regen") ) { if ( wcsicmp(v4, L"org_speed") ) { if ( wcsicmp(v4, L"noise") ) { if ( wcsicmp(v4, L"base_physical_attack") ) { if ( wcsicmp(v4, L"base_attack_speed") ) { if ( wcsicmp(v4, L"base_critical") ) { if ( wcsicmp(v4, L"magic_attack") ) { if ( wcsicmp(v4, L"magic_defend") ) { if ( wcsicmp(v4, L"pk_counter") ) { v13 = v35; if ( !wcsicmp(v4, L"social") ) v13 = 25i64; } -
Request L2OFF Exp loss formula
guytis replied to Rootware's question in Request Server Development Help [L2OFF]
I think so since sub_424B90 calls something from CWorld. I guess so. -
Request L2OFF Exp loss formula
guytis replied to Rootware's question in Request Server Development Help [L2OFF]
I have this in case it helps you. pSD = this_->base.d.pSD; nRace = pSD->nRace; nSex = pSD->nSex; nClass = pSD->nClass; nLevel = pSD->nLevel; nExp = pSD->nExp; if ( LOBYTE(this_->base.d.f_height_damage) && !dword_C6B880 ) { if ( BYTE5(this_->base.d.shieldDefenceRate) && (v70 = v80, v71 = v81, v72 = v82, (v28 = sub_424B90(&unk_C476F0, &v70, 11)) != 0) ) { ExpP1 = GetExpDiePenalty(this_->base.d.pSD->nLevel) * *(v28 + 432); this_->base.d.unk_BA0 = ExpP1; nExp = User::ExpDown(this_, ExpP1); v66 = *(v28 + 440); } else if ( v14 ) { if ( v16 ) { this_->base.d.unk_BA0 = 0; } else { ExpP2 = GetExpDiePenalty(this_->base.d.pSD->nLevel) * 0.25; this_->base.d.unk_BA0 = ExpP2; nExp = User::ExpDown(this_, ExpP2); if ( pEnemy_ ) { pEnemyUser = (pEnemy_->vtable->base.base.MemoryObject__CastUser)(pEnemy_); if ( pEnemyUser ) { pledge = User::GetPledge(pEnemyUser); pledge2 = User::GetPledge(this_); if ( pledge || pledge2 ) CPledge::UpdateSiegeKillDeathPoint(pledge, pledge2); } } } } else { v34 = GetExpDiePenalty(this_->base.d.pSD->nLevel); this_->base.d.unk_BA0 = v34; nExp = User::ExpDown(this_, v34); } } -
Request L2OFF Exp loss formula
guytis replied to Rootware's question in Request Server Development Help [L2OFF]
In C4 exe.... 0x545280 double __fastcall GetExpDiePenalty(int level) { double levelFactor; // xmm2_8 levelFactor = 10.0 - (double)(level - 1) * 0.125; if ( levelFactor <= 4.0 ) levelFactor = 4.0; return 0.0 - (double)(g_expPenalty[level] - g_expPenalty[level - 1]) * (levelFactor / 100.0); }