Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!
Selamlar.
Kendim için yaptığım ufak bir eklenti. Kullanmak isteyen olur mu bilmem, paylaşması benden gerisi size kalmış.
Pet atak ve level sistemlerini de paylaşmayı düşünüyorum.
Not: Aşağıda yazılı olan tüm kodları
petsystem.cpp açın
en başta bulun:
altına ekleyin
bulun:
kod bloğunu silip aşağıdaki şekilde değiştirin:
questlua_pet.cpp açın
en başa ekleyin
bulun
kod bloğunun altına ekleyin:
bulun
altına ekleyin
Game src ile işimiz bitti kapatabilirsiniz.
Navicat tablosu için mysql query kodu :
Eklemek için Navicat giriş yaptıktan sonra üst menüde "Query" göreceksiniz, ona tıklayın
Quest_functions içine ekleyin
Quest:
Quest içinde lua dilinin string özelliğini kullandım, aşağıda gördüğünüz şekilde özel karakterleri bulup engelleyebilirsiniz.
Türkçe karakterleri engellemiştim kaldırdım, verdiğim kodlar da tr karakter problemi yoktur.
Yukarıda :
tt > tek tırnak işareti
ct > iki nokta üst üste
nk > tek nokta
vg > virgül
aynı şekilde diğer karakterleri (yıldız sharp vs.) engellersiniz.
Verilen pet ismi tüm petler için geçerlidir.
Kodları değiştirdim, normal kodlarda verilen isim anında petin üstünde yazıyor fakat her pet için ayrı ayrı yapmamız gerekiyor bu da gereksiz diye düşündüm.
Not: Pet ismi quest içinde maximum 12 karakter olarak ayarlı ama mysql tablosu 24 karaktere kadar açık.
İsterseniz 12'yi değiştirip 24'e kadar çıkarabilirsiniz.
Kendim için yaptığım ufak bir eklenti. Kullanmak isteyen olur mu bilmem, paylaşması benden gerisi size kalmış.
Pet atak ve level sistemlerini de paylaşmayı düşünüyorum.
Not: Aşağıda yazılı olan tüm kodları
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
satır kayması olmadan alabilirsiniz. petsystem.cpp açın
en başta bulun:
Kod:
#include "item.h"
altına ekleyin
Kod:
#include "db.h"
bulun:
Kod:
void CPetActor::SetName(const char* name)
kod bloğunu silip aşağıdaki şekilde değiştirin:
Kod:
void CPetActor::SetName(const char* name)
{
std::string petName = m_pkOwner->GetName();
if (0 != m_pkOwner &&
0 == name &&
0 != m_pkOwner->GetName())
{
petName += "'s Pet";
}
else
petName += name;
char sorgu[512];
snprintf(sorgu, sizeof(sorgu), "SELECT name FROM pet_name WHERE id = %u", m_pkOwner->GetPlayerID());
std::auto_ptr<SQLMsg> cekgelsin( DBManager::instance().DirectQuery(sorgu) );
if (cekgelsin->Get()->uiNumRows != 0)
{
MYSQL_ROW row = mysql_fetch_row(cekgelsin->Get()->pSQLResult);
char petad[CHARACTER_NAME_MAX_LEN + 1];
strlcpy(petad, row[0], sizeof(petad));
petName = petad;
}
if (true == IsSummoned())
m_pkChar->SetName(petName);
m_name = petName;
}
questlua_pet.cpp açın
en başa ekleyin
Kod:
#include "db.h"
bulun
Kod:
int pet_spawn_effect(lua_State* L)
kod bloğunun altına ekleyin:
Kod:
int pet_namever(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr() ;
if ( lua_isstring(L, 1) != true )
{
lua_pushnumber(L, 1);
return 1;
}
const char * szName = lua_tostring(L, 1);
char sorgu[512];
snprintf(sorgu, sizeof(sorgu), "REPLACE INTO pet_name VALUES(%u, '%s')", ch->GetPlayerID(), szName);
std::auto_ptr<SQLMsg> yolla( DBManager::instance().DirectQuery(sorgu) );
if (yolla->Get()->uiAffectedRows != 0)
{
lua_pushboolean(L, 3);
return 3;
}
return 4;
}
bulun
Kod:
{ "spawn_effect", pet_spawn_effect },
altına ekleyin
Kod:
{ "adver", pet_namever },
Game src ile işimiz bitti kapatabilirsiniz.
Navicat tablosu için mysql query kodu :
Eklemek için Navicat giriş yaptıktan sonra üst menüde "Query" göreceksiniz, ona tıklayın
Kod:
DROP TABLE IF EXISTS `pet_name`;
CREATE TABLE `pet_name` (
`id` int(11) NOT NULL DEFAULT '0',
`name` varchar(24) CHARACTER SET utf8 COLLATE utf8_turkish_ci NOT NULL DEFAULT 'NONAME',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci;
Quest_functions içine ekleyin
Kod:
pet.adver
Quest:
Kod:
quest ademin begin
state start begin
when 71115.use begin
say_title("yeni isim ver")
local str = input()
if str == "" or str == nill then
say_title("Kutuyu bos birakma")
return
end
if string.len(str) <= 0 or string.len(str) > 12 then
say_title("isim en fazla 12 karakter olabilir")
return
end
local tt = "%'"
local ct = "%:"
local nk = "%."
local vg = "%,"
if string.find(str, tt) or string.find(str, ct) or string.find(str, nk) or string.find(str, vg) then
say_title("ozel isaret kullanamazsin")
return
end
local t = pet.adver(str)
say_title("pet adi degistirildi. peti gonder")
if t == 1 then
say_title("kutuyu bos bırakma")
return
elseif t == 2 then
say_title("12 karakteri gecme")
return
elseif t == 3 then
say_title("isim degisti")
end
end
end
end
Quest içinde lua dilinin string özelliğini kullandım, aşağıda gördüğünüz şekilde özel karakterleri bulup engelleyebilirsiniz.
Türkçe karakterleri engellemiştim kaldırdım, verdiğim kodlar da tr karakter problemi yoktur.
Kod:
local tt = "%'"
local ct = "%:"
local nk = "%."
local vg = "%,"
Yukarıda :
tt > tek tırnak işareti
ct > iki nokta üst üste
nk > tek nokta
vg > virgül
aynı şekilde diğer karakterleri (yıldız sharp vs.) engellersiniz.
Verilen pet ismi tüm petler için geçerlidir.
Kodları değiştirdim, normal kodlarda verilen isim anında petin üstünde yazıyor fakat her pet için ayrı ayrı yapmamız gerekiyor bu da gereksiz diye düşündüm.
Not: Pet ismi quest içinde maximum 12 karakter olarak ayarlı ama mysql tablosu 24 karaktere kadar açık.
İsterseniz 12'yi değiştirip 24'e kadar çıkarabilirsiniz.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 2
- Görüntüleme
- 69
