Çözüldü Great offshop sorunları

  • Konuyu açan Konuyu açan Kaiser
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 20
  • Gösterim Gösterim 1K
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

Kaiser

Admin
Admin
Geliştirici
Yardımsever Üye
Mesaj
3.934
Çözümler
378
Beğeni
3.969
Puan
1.849
Ticaret Puanı
0
Arkadaşlar kolay gelsin.

Great offline shop da şu sorunları yaşıyorum:

1- Pazarı kapattığımda pazardaki item envantere geri gelmiyor.
2- Verilen sql dosyalarını nasıl ekleyeceğimi tam olarak anlayamadım, Execute ile birini yükledim ancak diğeri yüklenmiyor eğer kullanan varsa bu konuda ayrıca yardımcı olursa sevinirim..
3- İtemlerin üstüne gelindiğinde bilgiler gösterilmiyor (client syserr)

Nasıl halledebilirim bunları ?

Kod:
Genişlet Daralt Kopyala
0503 23:15:11408 :: TypeError
0503 23:15:11408 :: :
0503 23:15:11408 :: OnOverInItem() takes exactly 2 arguments (4 given)
0503 23:15:11408 ::
 
Sistemi eklerken atladığınız yerler olmalı.
Syserr hatası şunu diyor. OnOverInItem fonksiyonu için 2 tane argüman atanmış ama 4 tane veriliyormuş. Çözümü için 2 tane daha argüman eklemeniz lazım.

Sql dosyalarının içinde yazan kodları syserr kayıtlarında olduğu gibi kod bloguna ekler misiniz?
 
Her aşamayı pür dikkat yaptım açıkcası pek ihtimal vermiyorum atlamış olmama ama her ihtimale karşı son çare olarak pack'i yeniden düzenlerim ne yapayım :) Bu konuda önerebileceğiniz bir dosya/blok düzenlemesi var mı acaba?

edit: İtem bilgilerinin görünmeme sorununu çözdüm. Fazlalık yapan bir blok varmış, onu sildim.. Şu an sadece marketi kapattığımda itemlerin gelmemesi sorunu var. Pazarımdaki itemlerin her birine sağ tıkladığımda tek tek envantere geliyor en sonuncusunu çektiğimde de sorunsuz kendisi kapanıyor. Ancak "Kapat" seçeneği ile yaptığımda kapanıyor ve itemler uçup gidiyor :D

Ayrıca sql dosyaları:

move_shops_from_ken.sql(not exist 'owner_id' in 'field_list' hatası verip yüklenmeyen)
SQL:
Genişlet Daralt Kopyala
INSERT INTO `player_gift` select NULL,`owner_id`, NOW(),'0000-00-00 00:00:00','WAIT', "Sklep", "Zamkniecie sklepu", `vnum`, `count`, `socket0`, `socket1`, `socket2`, `socket3`, `socket4`, `socket5`, `attrtype0`, `attrvalue0`, `attrtype1`, `attrvalue1`, `attrtype2`, `attrvalue2`, `attrtype3`, `attrvalue3`, `attrtype4`, `attrvalue4`, `attrtype5`, `attrvalue5`, `attrtype6`, `attrvalue6`, `applytype0`, `applyvalue0`, `applytype1`, `applyvalue1`, `applytype2`, `applyvalue2`, `applytype3`, `applyvalue3`, `applytype4`, `applyvalue4`, `applytype5`, `applyvalue5`, `applytype6`, `applyvalue6`, `applytype7`, `applyvalue7`  from offline_shop_item where status=0;
INSERT INTO `player`.`player_gift` select NULL,`id`, NOW(),'0000-00-00 00:00:00','WAIT', "Sklep", "Zamkniecie sklepu", 1, `mymoney`, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  from player where mymoney>0;

query.sql(yüklenen)
SQL:
Genişlet Daralt Kopyala
DROP TABLE IF EXISTS `player_shop`;
CREATE TABLE `player_shop` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `player_id` int(255) NOT NULL,
  `shop_vid` int(255) NOT NULL,
  `item_count` int(3) NOT NULL DEFAULT '0',
  `name` varchar(255) COLLATE utf8_polish_ci NOT NULL,
  `status` enum('OK','CLOSED') COLLATE utf8_polish_ci NOT NULL DEFAULT 'OK',
  `map_index` int(20) NOT NULL DEFAULT '0',
  `x` int(30) NOT NULL DEFAULT '0',
  `y` int(30) NOT NULL DEFAULT '0',
  `z` int(30) NOT NULL,
  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `date_close` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `ip` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '0.0.0.0',
  `gold` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '0',
  `cash` int(255) NOT NULL DEFAULT '0',
  `channel` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`,`shop_vid`)
) ENGINE=MyISAM;

DROP TABLE IF EXISTS `shop_cost`;
CREATE TABLE `shop_cost` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `time` int(255) NOT NULL DEFAULT '0',
  `time_type` enum('day','hour','normal_shop') NOT NULL DEFAULT 'day',
  `cost` int(255) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12;

-- ----------------------------
-- Records of shop_cost
-- ----------------------------
INSERT INTO `shop_cost` VALUES ('5', '0', 'normal_shop', '5000000');
INSERT INTO `shop_cost` VALUES ('6', '1', 'hour', '100000');
INSERT INTO `shop_cost` VALUES ('7', '2', 'hour', '500000');
INSERT INTO `shop_cost` VALUES ('8', '3', 'hour', '1000000');
INSERT INTO `shop_cost` VALUES ('9', '1', 'day', '1500000');
INSERT INTO `shop_cost` VALUES ('10', '2', 'day', '2000000');
INSERT INTO `shop_cost` VALUES ('11', '3', 'day', '2500000');


DROP TABLE IF EXISTS `shop_limit`;
CREATE TABLE `shop_limit` (
  `channel` int(2) DEFAULT NULL,
  `map_index` int(11) DEFAULT NULL,
  `shop_limit` varchar(255) DEFAULT NULL
) ENGINE=MyISAM;

DROP TABLE IF EXISTS `player_gift`;
CREATE TABLE `player_gift` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `owner_id` int(255) NOT NULL,
  `date_add` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `date_get` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `status` enum('WAIT','OK') COLLATE utf8_polish_ci NOT NULL DEFAULT 'WAIT',
  `from` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '0',
  `reason` text COLLATE utf8_polish_ci NOT NULL,
  `vnum` int(255) NOT NULL DEFAULT '0',
  `count` bigint(255) NOT NULL DEFAULT '1',
  `socket0` int(10) unsigned NOT NULL DEFAULT '0',
  `socket1` int(10) unsigned NOT NULL DEFAULT '0',
  `socket2` int(10) unsigned NOT NULL DEFAULT '0',
  `socket3` int(10) unsigned NOT NULL DEFAULT '0',
  `socket4` int(10) unsigned NOT NULL DEFAULT '0',
  `socket5` int(10) unsigned NOT NULL DEFAULT '0',
  `attrtype0` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue0` smallint(6) NOT NULL DEFAULT '0',
  `attrtype1` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue1` smallint(6) NOT NULL DEFAULT '0',
  `attrtype2` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue2` smallint(6) NOT NULL DEFAULT '0',
  `attrtype3` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue3` smallint(6) NOT NULL DEFAULT '0',
  `attrtype4` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue4` smallint(6) NOT NULL DEFAULT '0',
  `attrtype5` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue5` smallint(6) NOT NULL DEFAULT '0',
  `attrtype6` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue6` smallint(6) NOT NULL DEFAULT '0',
  `applytype0` tinyint(4) NOT NULL DEFAULT '0',
  `applyvalue0` smallint(6) NOT NULL DEFAULT '0',
  `applytype1` tinyint(4) NOT NULL DEFAULT '0',
  `applyvalue1` smallint(6) NOT NULL DEFAULT '0',
  `applytype2` tinyint(4) NOT NULL DEFAULT '0',
  `applyvalue2` smallint(6) NOT NULL DEFAULT '0',
  `applytype3` int(11) NOT NULL DEFAULT '0',
  `applyvalue3` int(11) NOT NULL DEFAULT '0',
  `applytype4` int(11) NOT NULL DEFAULT '0',
  `applyvalue4` int(11) NOT NULL DEFAULT '0',
  `applytype5` int(11) NOT NULL DEFAULT '0',
  `applyvalue5` int(11) NOT NULL DEFAULT '0',
  `applytype6` int(11) NOT NULL DEFAULT '0',
  `applyvalue6` int(11) NOT NULL DEFAULT '0',
  `applytype7` int(11) NOT NULL DEFAULT '0',
  `applyvalue7` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;
ALTER TABLE `player_gift` ADD UNIQUE `id` (`id`);

-- ----------------------------
-- Table structure for player_shop_items
-- ----------------------------
DROP TABLE IF EXISTS `player_shop_items`;
CREATE TABLE `player_shop_items` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `shop_id` int(255) NOT NULL,
  `player_id` int(255) NOT NULL DEFAULT '0',
  `vnum` int(255) NOT NULL DEFAULT '0',
  `count` int(20) NOT NULL DEFAULT '1',
  `pos` int(20) NOT NULL DEFAULT '0',
  `display_pos` int(20) NOT NULL DEFAULT '0',
  `price` bigint(255) NOT NULL DEFAULT '0',
  `socket0` int(10) unsigned NOT NULL DEFAULT '0',
  `socket1` int(10) unsigned NOT NULL DEFAULT '0',
  `socket2` int(10) unsigned NOT NULL DEFAULT '0',
  `socket3` int(10) unsigned NOT NULL DEFAULT '0',
  `socket4` int(10) unsigned NOT NULL DEFAULT '0',
  `socket5` int(10) unsigned NOT NULL DEFAULT '0',
  `attrtype0` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue0` smallint(6) NOT NULL DEFAULT '0',
  `attrtype1` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue1` smallint(6) NOT NULL DEFAULT '0',
  `attrtype2` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue2` smallint(6) NOT NULL DEFAULT '0',
  `attrtype3` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue3` smallint(6) NOT NULL DEFAULT '0',
  `attrtype4` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue4` smallint(6) NOT NULL DEFAULT '0',
  `attrtype5` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue5` smallint(6) NOT NULL DEFAULT '0',
  `attrtype6` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue6` smallint(6) NOT NULL DEFAULT '0',
  `applytype0` tinyint(4) NOT NULL DEFAULT '0',
  `applyvalue0` smallint(6) NOT NULL DEFAULT '0',
  `applytype1` tinyint(4) NOT NULL DEFAULT '0',
  `applyvalue1` smallint(6) NOT NULL DEFAULT '0',
  `applytype2` tinyint(4) NOT NULL DEFAULT '0',
  `applyvalue2` smallint(6) NOT NULL DEFAULT '0',
  `applytype3` int(11) NOT NULL DEFAULT '0',
  `applyvalue3` int(11) NOT NULL DEFAULT '0',
  `applytype4` int(11) NOT NULL DEFAULT '0',
  `applyvalue4` int(11) NOT NULL DEFAULT '0',
  `applytype5` int(11) NOT NULL DEFAULT '0',
  `applyvalue5` int(11) NOT NULL DEFAULT '0',
  `applytype6` int(11) NOT NULL DEFAULT '0',
  `applyvalue6` int(11) NOT NULL DEFAULT '0',
  `applytype7` int(11) NOT NULL DEFAULT '0',
  `applyvalue7` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;
 
Son düzenleme:
move_shops_from_ken.sql bunu yüklemenize gerek yok.
Ken offlineshoptan geçiş için yapılmış sanırsam. 2. verdiğiniz kodlar düzgün eklenmişse sorun yok

Bu konuda önerebileceğiniz bir dosya/blok düzenlemesi var mı acaba?
Bunu anlayamadım. :D


edit: İtem bilgilerinin görünmeme sorununu çözdüm. Fazlalık yapan bir blok varmış, onu sildim.. Şu an sadece marketi kapattığımda itemlerin gelmemesi sorunu var. Pazarımdaki itemlerin her birine sağ tıkladığımda tek tek envantere geliyor en sonuncusunu çektiğimde de sorunsuz kendisi kapanıyor. Ancak "Kapat" seçeneği ile yaptığımda kapanıyor ve itemler uçup gidiyor :D
Atladığınız yerler olabilir. Sistemin paylaşıldığı yerde yorumlara bakın buna benzer sorunları yaşan varsa geneldir
 
Gerekli düzenlemeleri ve eksiklikleri giderdim şu an bir sorun görünmüyor. Şu an "sorun değil" ama düzeltmek istediğim iki şey var.

1-Paket'e sağ tıkladığımda hem normal pazar ismi girilen pencere, hem de offshop için isim girilen pencere açılıyor. Anlatım dosyalarında paket kodunu arattım belki kod olarak yönlendirme bulursam ordan birini devredışı bırakırım diye fakat bulamadım. Sanırım src den yapılıyor..

2- Bir itemi pazara koyuyorum, o iteme verdiğim fiyat sabit kalıyor. Daha sonra reboot da atsam pazarı kapatıp tekrar da açsam o itemi tekrar pazara koyarken önceki yazdığım fiyat otomatik beliriyor.

Bir fikriniz var mı bu konuda?
 
Son düzenleme:
1- char_item.cpp’de paketler için kodlar tanımlanmış. Vnum değerini aratın görürsünüz.
2- Bi eşyayı diyelim 1k yang koydunuz ve diğerlerini koyarkende otomatik olarak 1k yazılı mı oluyor
 
1- Notepad++ ile tüm dosyalarda toplu arama şeklinde 50200(paket) kodunu aratıyorum fakat sonuç yok.
2- Mesela zehir kılıcını 1m'e siyah çeliği 2m'e koydum diyelim. Daha sonra tekrar bu itemleri koyarken zehiri sürüklediğimde otomatik olarak 1m, siyah çeliği sürüklediğimde yine otomatik olarak 2m şeklinde kendisi dolduruyor.
 
char_item.cpp açın ve aratın;
C++:
Genişlet Daralt Kopyala
case 50200:

Şuna benzer bi kod olması gerekiyor;
Kod:
Genişlet Daralt Kopyala
                            case 50200: // 보따리
                                if (IS_BOTARYABLE_ZONE(GetMapIndex()) == true)
                                {
                                    __OpenPrivateShop();
                                }
                                else
                                {
                                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("개인 상점을 열 수 없는 지역입니다"));
                                }
                                break;

Gelen kodda __OpenPrivateShop(); fonksiyonu çağrılıyor. Oda şu şekilde;
C++:
Genişlet Daralt Kopyala
void CHARACTER::__OpenPrivateShop()
{
    unsigned bodyPart = GetPart(PART_MAIN);
    switch (bodyPart)
    {
        case 0:
        case 1:
        case 2:
            ChatPacket(CHAT_TYPE_COMMAND, "OpenPrivateShop");
            break;
        default:
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("갑옷을 벗어야 개인 상점을 열 수 있습니다."));
            break;
    }
}
 
2. yazdıgınız şey client içerisine pricelist.cfg
27993 999999999
27994 999999999
şekilde oluşturuldugu için tekrar eklediginde o fiyatı yazıyor bu dosya adı başka olabilir veya başka bir yerde olabilir
 
char_item.cpp açın ve aratın;
C++:
Genişlet Daralt Kopyala
case 50200:

Şuna benzer bi kod olması gerekiyor;
Kod:
Genişlet Daralt Kopyala
                            case 50200: // 보따리
                                if (IS_BOTARYABLE_ZONE(GetMapIndex()) == true)
                                {
                                    __OpenPrivateShop();
                                }
                                else
                                {
                                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("개인 상점을 열 수 없는 지역입니다"));
                                }
                                break;

Gelen kodda __OpenPrivateShop(); fonksiyonu çağrılıyor. Oda şu şekilde;
C++:
Genişlet Daralt Kopyala
void CHARACTER::__OpenPrivateShop()
{
    unsigned bodyPart = GetPart(PART_MAIN);
    switch (bodyPart)
    {
        case 0:
        case 1:
        case 2:
            ChatPacket(CHAT_TYPE_COMMAND, "OpenPrivateShop");
            break;
        default:
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("갑옷을 벗어야 개인 상점을 열 수 있습니다."));
            break;
    }
}
Tam olarak ne yapmam gerekiyor acaba burada ? Blokları pasif hale getirdiğimde bu sefer pakete hiç tıklanmıyor. Kullandığım offshop'un da char_item.cpp ile ilgili bir düzenlemesi de yok oysa yani ellemedim hiç, kısa bir özet geçerseniz çok sevinirim :/

2. yazdıgınız şey client içerisine pricelist.cfg
27993 999999999
27994 999999999
şekilde oluşturuldugu için tekrar eklediginde o fiyatı yazıyor bu dosya adı başka olabilir veya başka bir yerde olabilir

Bahsettiğiniz .cfg yi bulamadım ancak moneyinputdialog.py de şöyle bir blok var alakası olabilir mi ?

Kod:
Genişlet Daralt Kopyala
## Input Slot
                {
                    "name" : "MoneyValue",
                    "type" : "text",

                    "x" : 0,
                    "y" : 59,
                    "text" : "999999999",
                    "text_horizontal_align" : "center",
                    "horizontal_align" : "center",
                },
 
Hayır orası degil pack içinde olacagını sanmıyorum. lib veya exenin bulundugu yeri kontrol edin
ismi pricelist olmayabilir pricelist olsada .cfg olmayabilir ama şey yapabilirsin notepad++ ile klasör içiersinde aratabilirsin
örnek
pazara 189 (Zehir kılıcı +9) koy parasını 9.999.999 yap
Notepad++> CTRL + F > dosyalarda bul
Dizin kısmına exenin bulundugu klasörü seç
Aranan kısmına 9999999 yaz veya 189 yaz belki bu şekilde o dosyayı bulursun dosya adını pack içiersinde arat kod kısmını bul
 
Son düzenleme:
Çok teşekkür ederim dediklerinizi yaptım ve ilgili blokları sildim. Şu an bu sorun ortadan kalkmış gibi görünüyor.
Ancak 1.sorun hala devam ediyor
 
char_iteme felan ekledigin kodları kontrol et paket ile ilgili kodlar belki vardır orada
 
Yukarıda da belirttiğim gibi offshopun kurulum dosyaları arasında char_item ile ilgili bir düzenleme yok. Yani char_item.cpp ye hiç dokunmadım.
char.cpp ve char.h ile ilgili düzenlemeler mevcut, onların da içinde zaten 50200 kodu geçmiyor. Ayrıyeten OpenPrivateShop() fonksiyonu da arattım ancak sonuç yok.
 
ikiside aynı komutu kullanıyor olabilir cmd dosyalarına ekledigin kodlara bir bak genelde /open_off olur bunu oyun içinde yaz offlineshop penceresi açılıyor ise pazar paketini oyundna kaldır envantere bir buton yap basınca /open_off komutunu girerek pencereyi otomatik açar
 
Teşekkür ederim dediğiniz gibi yaptım. Shop'u butona aktardım. Konu çok uzadı biliyorum ama son bir şey farkettim, pazara item koyarken 2T yi aşmasına rağmen koyulmaya devam ediyor, offshop'u ekledikten sonra varsayılan olan engel pasif olmuş herhalde. Bu konuda bir bilginiz var mı acaba ? İlk kendim uğraşayım dedim bir kaç saattir ama acemilikten olsa gerek nerden yapacağımı bulamadım bir türlü :D
 
var mıydı bu engel daha önceden var ise offlineshop dosyalarında GOLD_MAX aratın o satırları kontrol edin devredışı bırakmış olabilirsiniz
 
Hayır yoktu 0 altyapıya kurdum sistemi. Yani normalde olması gerektiği gibi pazara koyulan itemlerin fiyatı 2t yi aşınca uyarı vermesini ve engellemesini istiyorum.
 
Maalesef kod bilgim yok @Whistle yardımcı olma şansın var mı ?
 
shop_manager.cpp içinde hali hazırda engel komutu bulunuyor. Örnek koda bakarak engel getirebilirsiniz.
Dediğim kod bu;
C++:
Genişlet Daralt Kopyala
    const int64_t nTotalMoney = static_cast<int64_t>(ch->GetGold()) + static_cast<int64_t>(dwPrice);

    if (GOLD_MAX <= nTotalMoney)
    {
        sys_err("[OVERFLOW_GOLD] id %u name %s gold %u", ch->GetPlayerID(), ch->GetName(), ch->GetGold());
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20억냥이 초과하여 물품을 팔수 없습니다."));
        return;
    }
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst