- Katılım
- 11 Ocak 2017
- Konular
- 2
- Mesajlar
- 16
- Reaksiyon Skoru
- 8
- Altın Konu
- 0
- Başarım Puanı
- 12
- TM Yaşı
- 9 Yıl 3 Ay 10 Gün
- MmoLira
- 1
- DevLira
- 0
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
@Frozen Shower;
@jumper21;
Sınırsız satın alma bugu fixi;
shop.cpp
//Arat
Kod:if (m_pkPC && !HasOwner())
//Değiştir (Hepsini aratıp değiştir)
Kod:if (m_pkPC)
Satılmayanları çekerken çekilen item eğer simya ise envantere geliyordu, fixi;
input_db.cpp
//Arat
Kod:[FONT=courier new] int iEmptyCell = ch->GetEmptyInventory(item->GetSize()); if (iEmptyCell == -1) { item->SetSkipSave(true); M2_DESTROY_ITEM(item); sys_log(1, "CollectOfflineShopItem from %s item[%u] full inv", ch->GetName(), pItems->id); break; }[/FONT]
//Altına Ekle
Kod:[FONT=courier new] if (item->IsDragonSoul()){ int pos; pos = ch->GetEmptyDragonSoulInventory(item); item->SetSockets(pItems->alSockets); item->SetAttributes(pItems->aAttr); item->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, pos)); ITEM_MANAGER::instance().FlushDelayedSave(item); ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DRAGON SOUL INVENTORY %s"), item->GetName()); continue;}[/FONT]
problem PyTuple_GetUnsignedLongLong kaynaklı.
PythonNetworkStreamModule.cpp açın
Kod:PyObject* netSendSafeboxWithdrawMoneyPacket(PyObject* poSelf, PyObject* poArgs)[/FONT][/FONT][/CENTER] [FONT=Verdana] [CENTER][FONT=Verdana]{ #ifdef __OFFLINE_SHOP__ uint64_t iMoney; if (!PyTuple_GetUnsignedLongLong(poArgs, 0, &iMoney)) return Py_BuildException(); #else int iMoney; if (!PyTuple_GetInteger(poArgs, 0, &iMoney)) return Py_BuildException(); #endif[/FONT] [FONT=Verdana] CPythonNetworkStream& rns=CPythonNetworkStream::Instance(); rns.SendSafeBoxMoneyPacket(SAFEBOX_MONEY_STATE_WITHDRAW, iMoney); TraceError("x money %d", iMoney); return Py_BuildNone(); }
burayı bulun böyle değiştirin
Kod:PyObject* netSendSafeboxWithdrawMoneyPacket(PyObject* poSelf, PyObject* poArgs)[/FONT][/FONT][/CENTER] [FONT=Verdana] [CENTER][FONT=Verdana]{ int iMoney; if (!PyTuple_GetInteger(poArgs, 0, &iMoney)) return Py_BuildException(); CPythonNetworkStream& rns=CPythonNetworkStream::Instance(); rns.SendSafeBoxMoneyPacket(SAFEBOX_MONEY_STATE_WITHDRAW, iMoney); TraceError("x money %d", iMoney); return Py_BuildNone(); }
tek kaybınız bir defa da 2t den fazla para çekemezsiniz ki zaten niye çekesiniz
Turkmmo Flood Engelleme
bu arada sen yazınca fark ettim ifndef miş o satır. yani orayı ellemesek de doğru çalışır. ifdefin not yani olumsuz olanı ifndef
bazıları + para + giyili + kilitli item vs.
safebox.h açın
setGold bulup değiştirin
Kod:void SetGold(int64_t llGold, BYTE type=0);[/FONT][/FONT][/CENTER] [FONT=Verdana] [CENTER][FONT=Verdana]
safebox.cpp açın setgold bulup değiştirin
Kod:#ifdef __OFFLINE_SHOP__[/FONT][/FONT][/CENTER] [FONT=Verdana] [CENTER][FONT=Verdana]void CSafebox::SetGold(int64_t llGold, BYTE type) { if (type) m_lGold += llGold; else m_lGold -= llGold;[/FONT] [FONT=Verdana] TPacketGCSafeboxMoneyChange pack; pack.bHeader = HEADER_GC_SAFEBOX_MONEY_CHANGE; pack.lMoney = m_lGold; m_pkChrOwner->GetDesc()->Packet(&pack, sizeof(pack)); }
input_db.cpp açın sb->SetGold bulup değiştirin
Kod:sb->SetGold(pcData->llAmount, pcData->bType);[/FONT][/FONT][/CENTER] [FONT=Verdana] [CENTER][FONT=Verdana]
İyi Forumlar
Moderatör tarafında düzenlendi:
En Çok Reaksiyon Alan Mesajlar
Koray, bence bu forumda ona karşı yeterince haksızlık ve iftira yapıldıktan sonra turkmmo'dan başka bir forumda paylaşım yapmak yerine yabancı forumlarda paylaşım yapmayı seçti. Eşitsizliğin ve ciddiyetsizliğin olmadığı yerde Koray ve onun gibi karakterli kişilerin durmayacağının bir nevi kanıtıdır bu. Ancak sağolsun, bizim milletimiz onu yabancı forumlarda da rahat bırakmıyor. Öğeyi görmek için üye olmalısınız.Öğeyi görmek için üye olmalısınız. bu durumda olduğu için belkide yabancı forumdaki paylaşımlarını burda yapmıyor. Belki de başka bir neden. Orasını tam bilemem. Çok iyi bildiğim bir şey var. Oda forumdaki geliştiricilerin paylaşımlarına saygı duyulması ve az da olsun paylaşımlarda biraz daha ciddiyet barındırılması. Milletçe warezi çok seviyoruz. Sonrasında diyoruz ki. Türklerden geliştirici çıkmıyor. Çıksa bile yabancı ülkelere gidiyor.
-------------------------------------
@Öğeyi görmek için üye olmalısınız. konuşalım bunu.
Ben zaten Python dilini Türkçe kullansın demiyorum. Veya Bütün kodları Türkçe yazsın demiyorum. Mesela oyunda gözükecek yazılar falan ingilizce dilinde. Ben bunu sordum. Fakat arkadaşlar mantıklı cevabını verdi. Diğer yorumlarda da nedenini anladım.
Lokalizasyon konusunda zaten yazdığınıza yorum yapmadım "Acaba sistemi o yazmadımı?" şeklinde bir yaklaşımda bulunursanız böyle bir şeye emek veren kişiyi zan altında bırakmış olursunuz yazılan kodlar çok temiz olması gereken standart da yazılmış Madem türkçe değil bunu kesin yabancı biri yazdı gibi bir tutum oluştuğu için forumdaki genel durumuda göz önünde bulundurarak bir yorum yaptım.
Geçen gün bir konuda gördüm adam tüm fonksiyonlarında KendiNicki1() KendiNicki2 şeklinde bir yazım standartı oluşturmuş bunu kendiniz kullanıyorsanız ve kamuya açık bir paylaşım yapmayacaksanız program sizin istediğin gibi yazın bizim için sıkıntı değil ancak yazdığınız program veya bir modül kamuya açık bir şekilde paylaşılacaksa standartlara uyulsun ki paylaşılan şey amacına ulaşsın birisi gördüğünde programı yazan kişinin ne yapmaya çalıştığını anlayabilsin.
Python burada sadece bir örnekti sadece bazı standartlar var dışına çıkılmaması gereken bu konuda forum geneline küçük bir sitemimdi bu
Abi sistemi 2 kez ekledim. 2 kezde sildim yok hayatımda gördüğüm en kötü sistem ya diğer offlineshoplar bile bundan iyidir.
bunu ekledin mi diğer sistemler düzgün çalışmıyor her şeyde hata aldım ya!
sistem zaten ayrı bir kafa ile kodlanmış hiç bir sistem ile uyumluluğu yok.
ep sistemi cheque sistemi buna uydurucam diye 2 gün uğraştım.
ayrıca sistem sunucu çökmesine çok sebep oluyor.
yalansa biri bana yalan desin.
o kadar şey yazdım kimse cevap vermedi.
sabitten kaldırın şu konuyu güzel falan yapılmış ama kodlar karman çorman daha dikkatli ve düzgün yazılabilecek basit bir sistemi karıştırmış durmuşlar kodlayan kişiye buda lafım.
varsa itirazı olan dinleriz.
Hepsi yanlış. Sistem temiz çalışıyor, birkaç eksiği var onları da vereyim ben buradan hadi:
item_manager.cpp
//Arat
Kod:#ifdef __OFFLINE_SHOP__ if (window == OFFLINE_SHOP || window == SAFEBOX_OFFLINE_SHOP){ t.owner = item->GetLastOwnerPID(); } else if (window == SAFEBOX || window == MALL) { t.owner =item->GetOwner()->GetDesc()->GetAccountTable().id; } else{ t.owner =item->GetOwner()->GetPlayerID(); } #else t.owner = (t.window == SAFEBOX || t.window == MALL) ? item->GetOwner()->GetDesc()->GetAccountTable().id : item->GetOwner()->GetPlayerID(); #endif
Değiştir:
Kod:if (window == OFFLINE_SHOP || window == SAFEBOX_OFFLINE_SHOP){t.owner = item->GetLastOwnerPID();} else{t.owner = (t.window == SAFEBOX || t.window == MALL) ? item->GetOwner()->GetDesc()->GetAccountTable().id : item->GetOwner()->GetPlayerID();}
Açıklama: 5 karakterli sistem kullananlar (maxmi 4.1 vb. gibi) 5. karakterden yani introselectte girdiğinde ilk gözüken karakterin bir solundaki karakterden depoya item koyulursa kaybolacaktır. Bu bunu çözecek ayrıca kök çözümünü de vereyim yoksa 5. karakterden pazar kurularsa depoya para gitmeyecektir. Bu sistemin eksikliği değil 5. karakter sistemini yapanın eksikliği kimse artık ona burdan söylüyorum:
char_change_empire.cpp
//Arat
Kod:DWORD CHARACTER::GetAID() const
Bloğu tamamen değiş (eğer 5 karakter kullanıyor iseniz kullanmıyorsanız zaten sorununuz yoktur)
Kod:DWORD CHARACTER::GetAID() const { if (GetDesc()){ const TAccountTable& rkTab = GetDesc()->GetAccountTable(); if (rkTab.id){return rkTab.id;} } char szQuery[1024+1]; DWORD dwAID = 0; snprintf(szQuery, sizeof(szQuery), "SELECT id FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u OR pid5=%u AND empire=%u", get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(),GetPlayerID(), GetPlayerID(), GetEmpire()); SQLMsg* pMsg = DBManager::instance().DirectQuery(szQuery); if (pMsg != NULL){ if (pMsg->Get()->uiNumRows == 0){ M2_DELETE(pMsg); return 0; } MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult); str_to_number(dwAID, row[0]); M2_DELETE(pMsg); return dwAID; } else{ return 0; } }
Ayrıca pazardan simya satın alınca envantere felan gelip kafayı yiyordu onunda çözümünü vereyim:
shop.cpp
//Arat
Kod:if (HasOwner()) { { item->SetSkipSave(false); item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos)); item->SetWindow(SAFEBOX_OFFLINE_SHOP); // Get new item to extra safebox ITEM_MANAGER::instance().SaveSingleItem(item); // Save item to extra safebox item->SetWindow(INVENTORY); // Set inventory window as temporary window ITEM_MANAGER::instance().SaveSingleItem(item); // Register delayed save request for inventory window char buf[512]; snprintf(buf, sizeof(buf), "%s %u %u %u", item->GetName(), m_dwOwnerPID, dwPrice, item->GetCount()); LogManager::instance().ItemLog(ch, item, "SHOP_BUY2", buf); snprintf(buf, sizeof(buf), "%s %u(%s) %u %u", item->GetName(), ch->GetPlayerID(), ch->GetName(), dwPrice, item->GetCount()); LogManager::instance().ItemLog(m_dwOwnerPID, 0, 0, item->GetID(), "SHOP_SELL2", buf, "", item->GetVnum()); }
//Değiştir (logları kapatmıştım isteyen açar zaten)
Kod:if (HasOwner()){ { item->SetSkipSave(false); if (item->IsDragonSoul()){item->AddToCharacter(ch, TItemPos(DRAGON_SOUL_INVENTORY, iEmptyPos));} else{item->AddToCharacter(ch, TItemPos(INVENTORY, iEmptyPos));} item->SetWindow(SAFEBOX_OFFLINE_SHOP); // Get new item to extra safebox ITEM_MANAGER::instance().SaveSingleItem(item); // Save item to extra safebox if (item->IsDragonSoul()){item->SetWindow(DRAGON_SOUL_INVENTORY);} else{item->SetWindow(INVENTORY);} // Set inventory window as temporary window ITEM_MANAGER::instance().SaveSingleItem(item); // Register delayed save request for inventory window /*char buf[512]; snprintf(buf, sizeof(buf), "%s %u %u %u", item->GetName(), m_dwOwnerPID, dwPrice, item->GetCount()); LogManager::instance().ItemLog(ch, item, "SHOP_BUY2", buf); snprintf(buf, sizeof(buf), "%s %u(%s) %u %u", item->GetName(), ch->GetPlayerID(), ch->GetName(), dwPrice, item->GetCount()); LogManager::instance().ItemLog(m_dwOwnerPID, 0, 0, item->GetID(), "SHOP_SELL2", buf, "", item->GetVnum());*/ }
Aklıma şimdilik bunlar geldi başka sorunlar olursa (sizin hatanız olmayan) yardımcı olurum buna veya @tslee61; hesabına mesja atın.
oyunda aktif çevrimdışı pazar ve aktif oyuncu var var ise, sen oyunu direkt olarak "reboot" yada "killall -9 game db" komutuyla kapatırsan cachede olan hiçbirşey kayıt olmadan database kapanır buda item kaybına offline shoplarda item silinmesine yol açar. sağlıklı olan shutdown dır önce tüm oyuncuları oyundan düşürürsün cacheden çıkarlar sonra oyunu kapatırsın ve kayıp yaşamassınOnla alakası yok. Direk reboot atarsam sadece oyun veritabanında en son kayıtlı olan eski haline döner.
Bu başka bir şey. Ben dinamik size ve is sold özelliğini filan kaldırdım. Bir tane kodu eksik yazmışım o yüzden..
Sistem bence baya başarılı. Kullanabilmek için bir kaç özellik eklemem lazım.. Onlara kasıyorum![]()
@Öğeyi görmek için üye olmalısınız.; Para çekme alma vb sorun var çöz bakam çok konuşuon sen uyuz oldum valla
Turkmmo Flood Engelleme
@Öğeyi görmek için üye olmalısınız.; Reis nasıl gidiyorya
tek para çekme şeysi kaldı başka bug kalmadı zaten deniyorum bug mug bulmaya calısıyorum sonra fixleri konuya ekliyoruz
- Katılım
- 24 Eki 2013
- Konular
- 294
- Mesajlar
- 5,939
- Online süresi
- 3ay 9g
- Reaksiyon Skoru
- 1,554
- Altın Konu
- 2
- Başarım Puanı
- 302
- TM Yaşı
- 12 Yıl 6 Ay 1 Gün
- MmoLira
- 3,027
- DevLira
- 21
Konuya ekledi Yedek Link Burdan Devam 
- Katılım
- 23 Ara 2016
- Konular
- 33
- Mesajlar
- 418
- Reaksiyon Skoru
- 64
- Altın Konu
- 0
- Başarım Puanı
- 47
- TM Yaşı
- 9 Yıl 3 Ay 29 Gün
- MmoLira
- 3
- DevLira
- 0
biraz içim burkuldu :S
- Katılım
- 16 Ağu 2009
- Konular
- 23
- Mesajlar
- 359
- Reaksiyon Skoru
- 18
- Altın Konu
- 0
- Başarım Puanı
- 70
- TM Yaşı
- 16 Yıl 8 Ay 10 Gün
- MmoLira
- 6
- DevLira
- 0
@alondark54; Teşekkürler sorunsuzsa öpücem seni 
Moderatör tarafında düzenlendi:
- Durum
- Üzgünüz bu konu cevaplar için kapatılmıştır...
Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)
Benzer konular
Altın Konu
Rüya Ruhu Sistemi
- Cevaplar
- 69
- Görüntüleme
- 12K
- Cevaplar
- 0
- Görüntüleme
- 630
- Cevaplar
- 22
- Görüntüleme
- 6K



