- Katılım
- 5 Şub 2021
- Konular
- 55
- Mesajlar
- 187
- Çözüm
- 14
- Online süresi
- 14d 6h
- Reaksiyon Skoru
- 30
- Altın Konu
- 0
- TM Yaşı
- 5 Yıl 4 Ay 7 Gün
- Başarım Puanı
- 95
- MmoLira
- 229
- DevLira
- 3
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
merhaba arkadaşlar
Tunga'nın uzaktan biyolog sistemini eklerken build işleminde ''questlua_affect.cpp'' dosyasının kodlamasında sorun yaşıyorum eklemek istediğim kod bluğu ''alua'' bendeki ise ''int'' bu kodları acaba nasıl ekleyebilirim yardımcı olursanız çok memnun olurum...
[CODE lang="python" title="questlua_affect.cpp"]#include "stdafx.h"
#include "config.h"
#include "questmanager.h"
#include "sectree_manager.h"
#include "char.h"
#include "affect.h"
#include "db.h"
namespace quest
{
//
// "affect" Lua functions
//
int affect_add(lua_State * L)
{
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3))
{
sys_err("invalid argument");
return 0;
}
CQuestManager & q = CQuestManager::instance();
BYTE applyOn = (BYTE) lua_tonumber(L, 1);
LPCHARACTER ch = q.GetCurrentCharacterPtr();
if (applyOn >= MAX_APPLY_NUM || applyOn < 1)
{
sys_err("apply is out of range : %d", applyOn);
return 0;
}
if (ch->FindAffect(AFFECT_QUEST_START_IDX, applyOn)) // Äù½ºÆ®·Î ÀÎÇØ °°Àº °÷¿¡ È¿°ú°¡ °É·ÁÀÖÀ¸¸é ½ºÅµ
return 0;
long value = (long) lua_tonumber(L, 2);
long duration = (long) lua_tonumber(L, 3);
ch->AddAffect(AFFECT_QUEST_START_IDX, aApplyInfo[applyOn].bPointType, value, 0, duration, 0, false);
return 0;
}
int affect_remove(lua_State * L)
{
CQuestManager & q = CQuestManager::instance();
int iType;
if (lua_isnumber(L, 1))
{
iType = (int) lua_tonumber(L, 1);
if (iType == 0)
iType = q.GetCurrentPC()->GetCurrentQuestIndex() + AFFECT_QUEST_START_IDX;
}
else
iType = q.GetCurrentPC()->GetCurrentQuestIndex() + AFFECT_QUEST_START_IDX;
q.GetCurrentCharacterPtr()->RemoveAffect(iType);
return 0;
}
int affect_remove_bad(lua_State * L) // ³ª»Û È¿°ú¸¦ ¾ø¾Ú
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
ch->RemoveBadAffect();
return 0;
}
int affect_remove_good(lua_State * L) // ÁÁÀº È¿°ú¸¦ ¾ø¾Ú
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
ch->RemoveGoodAffect();
return 0;
}
int affect_add_hair(lua_State * L)
{
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3))
{
sys_err("invalid argument");
return 0;
}
CQuestManager & q = CQuestManager::instance();
BYTE applyOn = (BYTE) lua_tonumber(L, 1);
LPCHARACTER ch = q.GetCurrentCharacterPtr();
if (applyOn >= MAX_APPLY_NUM || applyOn < 1)
{
sys_err("apply is out of range : %d", applyOn);
return 0;
}
long value = (long) lua_tonumber(L, 2);
long duration = (long) lua_tonumber(L, 3);
ch->AddAffect(AFFECT_HAIR, aApplyInfo[applyOn].bPointType, value, 0, duration, 0, false);
return 0;
}
int affect_remove_hair(lua_State * L) // Çì¾î È¿°ú¸¦ ¾ø¾Ø´Ù.
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
CAffect* pkAff = ch->FindAffect( AFFECT_HAIR );
if ( pkAff != NULL )
{
lua_pushnumber(L, pkAff->lDuration);
ch->RemoveAffect( pkAff );
}
else
{
lua_pushnumber(L, 0);
}
return 1;
}
// ÇöÀç ij¸¯ÅͰ¡ AFFECT_TYPE affect¸¦ °®°íÀÖÀ¸¸é bApplyOn °ªÀ» ¹İȯÇÏ°í ¾øÀ¸¸é nilÀ» ¹İȯÇÏ´Â ÇÔ¼ö.
// usage : applyOn = affect.get_apply(AFFECT_TYPE)
int affect_get_apply_on(lua_State * L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if (!lua_isnumber(L, 1))
{
sys_err("invalid argument");
return 0;
}
DWORD affectType = lua_tonumber(L, 1);
CAffect* pkAff = ch->FindAffect(affectType);
if ( pkAff != NULL )
lua_pushnumber(L, pkAff->bApplyOn);
else
lua_pushnil(L);
return 1;
}
int affect_add_collect(lua_State * L)
{
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3))
{
sys_err("invalid argument");
return 0;
}
CQuestManager & q = CQuestManager::instance();
BYTE applyOn = (BYTE) lua_tonumber(L, 1);
LPCHARACTER ch = q.GetCurrentCharacterPtr();
if (applyOn >= MAX_APPLY_NUM || applyOn < 1)
{
sys_err("apply is out of range : %d", applyOn);
return 0;
}
long value = (long) lua_tonumber(L, 2);
long duration = (long) lua_tonumber(L, 3);
ch->AddAffect(AFFECT_COLLECT, aApplyInfo[applyOn].bPointType, value, 0, duration, 0, false);
return 0;
}
int affect_add_collect_point(lua_State * L)
{
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3))
{
sys_err("invalid argument");
return 0;
}
CQuestManager & q = CQuestManager::instance();
BYTE point_type = (BYTE) lua_tonumber(L, 1);
LPCHARACTER ch = q.GetCurrentCharacterPtr();
if (point_type >= POINT_MAX_NUM || point_type < 1)
{
sys_err("point is out of range : %d", point_type);
return 0;
}
long value = (long) lua_tonumber(L, 2);
long duration = (long) lua_tonumber(L, 3);
ch->AddAffect(AFFECT_COLLECT, point_type, value, 0, duration, 0, false);
return 0;
}
int affect_remove_collect(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if ( ch != NULL )
{
BYTE bApply = (BYTE)lua_tonumber(L, 1);
if ( bApply >= MAX_APPLY_NUM ) return 0;
bApply = aApplyInfo[bApply].bPointType;
long value = (long)lua_tonumber(L, 2);
const std::list<CAffect*>& rList = ch->GetAffectContainer();
const CAffect* pAffect = NULL;
for ( std::list<CAffect*>::const_iterator iter = rList.begin(); iter != rList.end(); ++iter )
{
pAffect = *iter;
if ( pAffect->dwType == AFFECT_COLLECT )
{
if ( pAffect->bApplyOn == bApply && pAffect->lApplyValue == value )
{
break;
}
}
pAffect = NULL;
}
if ( pAffect != NULL )
{
ch->RemoveAffect( const_cast<CAffect*>(pAffect) );
}
}
return 0;
}
int affect_remove_all_collect( lua_State* L )
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if ( ch != NULL )
{
ch->RemoveAffect(AFFECT_COLLECT);
}
return 0;
}
void RegisterAffectFunctionTable()
{
luaL_reg affect_functions[] =
{
{ "add", affect_add },
{ "remove", affect_remove },
{ "remove_bad", affect_remove_bad },
{ "remove_good", affect_remove_good },
{ "add_hair", affect_add_hair },
{ "remove_hair", affect_remove_hair },
{ "add_collect", affect_add_collect },
{ "add_collect_point", affect_add_collect_point },
{ "remove_collect", affect_remove_collect },
{ "remove_all_collect", affect_remove_all_collect },
{ "get_apply_on", affect_get_apply_on },
{ NULL, NULL }
};
CQuestManager::instance().AddLuaFunctionTable("affect", affect_functions);
}
};
[/CODE]
Tunga'nın uzaktan biyolog sistemini eklerken build işleminde ''questlua_affect.cpp'' dosyasının kodlamasında sorun yaşıyorum eklemek istediğim kod bluğu ''alua'' bendeki ise ''int'' bu kodları acaba nasıl ekleyebilirim yardımcı olursanız çok memnun olurum...
[CODE lang="python" title="questlua_affect.cpp"]#include "stdafx.h"
#include "config.h"
#include "questmanager.h"
#include "sectree_manager.h"
#include "char.h"
#include "affect.h"
#include "db.h"
namespace quest
{
//
// "affect" Lua functions
//
int affect_add(lua_State * L)
{
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3))
{
sys_err("invalid argument");
return 0;
}
CQuestManager & q = CQuestManager::instance();
BYTE applyOn = (BYTE) lua_tonumber(L, 1);
LPCHARACTER ch = q.GetCurrentCharacterPtr();
if (applyOn >= MAX_APPLY_NUM || applyOn < 1)
{
sys_err("apply is out of range : %d", applyOn);
return 0;
}
if (ch->FindAffect(AFFECT_QUEST_START_IDX, applyOn)) // Äù½ºÆ®·Î ÀÎÇØ °°Àº °÷¿¡ È¿°ú°¡ °É·ÁÀÖÀ¸¸é ½ºÅµ
return 0;
long value = (long) lua_tonumber(L, 2);
long duration = (long) lua_tonumber(L, 3);
ch->AddAffect(AFFECT_QUEST_START_IDX, aApplyInfo[applyOn].bPointType, value, 0, duration, 0, false);
return 0;
}
int affect_remove(lua_State * L)
{
CQuestManager & q = CQuestManager::instance();
int iType;
if (lua_isnumber(L, 1))
{
iType = (int) lua_tonumber(L, 1);
if (iType == 0)
iType = q.GetCurrentPC()->GetCurrentQuestIndex() + AFFECT_QUEST_START_IDX;
}
else
iType = q.GetCurrentPC()->GetCurrentQuestIndex() + AFFECT_QUEST_START_IDX;
q.GetCurrentCharacterPtr()->RemoveAffect(iType);
return 0;
}
int affect_remove_bad(lua_State * L) // ³ª»Û È¿°ú¸¦ ¾ø¾Ú
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
ch->RemoveBadAffect();
return 0;
}
int affect_remove_good(lua_State * L) // ÁÁÀº È¿°ú¸¦ ¾ø¾Ú
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
ch->RemoveGoodAffect();
return 0;
}
int affect_add_hair(lua_State * L)
{
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3))
{
sys_err("invalid argument");
return 0;
}
CQuestManager & q = CQuestManager::instance();
BYTE applyOn = (BYTE) lua_tonumber(L, 1);
LPCHARACTER ch = q.GetCurrentCharacterPtr();
if (applyOn >= MAX_APPLY_NUM || applyOn < 1)
{
sys_err("apply is out of range : %d", applyOn);
return 0;
}
long value = (long) lua_tonumber(L, 2);
long duration = (long) lua_tonumber(L, 3);
ch->AddAffect(AFFECT_HAIR, aApplyInfo[applyOn].bPointType, value, 0, duration, 0, false);
return 0;
}
int affect_remove_hair(lua_State * L) // Çì¾î È¿°ú¸¦ ¾ø¾Ø´Ù.
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
CAffect* pkAff = ch->FindAffect( AFFECT_HAIR );
if ( pkAff != NULL )
{
lua_pushnumber(L, pkAff->lDuration);
ch->RemoveAffect( pkAff );
}
else
{
lua_pushnumber(L, 0);
}
return 1;
}
// ÇöÀç ij¸¯ÅͰ¡ AFFECT_TYPE affect¸¦ °®°íÀÖÀ¸¸é bApplyOn °ªÀ» ¹İȯÇÏ°í ¾øÀ¸¸é nilÀ» ¹İȯÇÏ´Â ÇÔ¼ö.
// usage : applyOn = affect.get_apply(AFFECT_TYPE)
int affect_get_apply_on(lua_State * L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if (!lua_isnumber(L, 1))
{
sys_err("invalid argument");
return 0;
}
DWORD affectType = lua_tonumber(L, 1);
CAffect* pkAff = ch->FindAffect(affectType);
if ( pkAff != NULL )
lua_pushnumber(L, pkAff->bApplyOn);
else
lua_pushnil(L);
return 1;
}
int affect_add_collect(lua_State * L)
{
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3))
{
sys_err("invalid argument");
return 0;
}
CQuestManager & q = CQuestManager::instance();
BYTE applyOn = (BYTE) lua_tonumber(L, 1);
LPCHARACTER ch = q.GetCurrentCharacterPtr();
if (applyOn >= MAX_APPLY_NUM || applyOn < 1)
{
sys_err("apply is out of range : %d", applyOn);
return 0;
}
long value = (long) lua_tonumber(L, 2);
long duration = (long) lua_tonumber(L, 3);
ch->AddAffect(AFFECT_COLLECT, aApplyInfo[applyOn].bPointType, value, 0, duration, 0, false);
return 0;
}
int affect_add_collect_point(lua_State * L)
{
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3))
{
sys_err("invalid argument");
return 0;
}
CQuestManager & q = CQuestManager::instance();
BYTE point_type = (BYTE) lua_tonumber(L, 1);
LPCHARACTER ch = q.GetCurrentCharacterPtr();
if (point_type >= POINT_MAX_NUM || point_type < 1)
{
sys_err("point is out of range : %d", point_type);
return 0;
}
long value = (long) lua_tonumber(L, 2);
long duration = (long) lua_tonumber(L, 3);
ch->AddAffect(AFFECT_COLLECT, point_type, value, 0, duration, 0, false);
return 0;
}
int affect_remove_collect(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if ( ch != NULL )
{
BYTE bApply = (BYTE)lua_tonumber(L, 1);
if ( bApply >= MAX_APPLY_NUM ) return 0;
bApply = aApplyInfo[bApply].bPointType;
long value = (long)lua_tonumber(L, 2);
const std::list<CAffect*>& rList = ch->GetAffectContainer();
const CAffect* pAffect = NULL;
for ( std::list<CAffect*>::const_iterator iter = rList.begin(); iter != rList.end(); ++iter )
{
pAffect = *iter;
if ( pAffect->dwType == AFFECT_COLLECT )
{
if ( pAffect->bApplyOn == bApply && pAffect->lApplyValue == value )
{
break;
}
}
pAffect = NULL;
}
if ( pAffect != NULL )
{
ch->RemoveAffect( const_cast<CAffect*>(pAffect) );
}
}
return 0;
}
int affect_remove_all_collect( lua_State* L )
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if ( ch != NULL )
{
ch->RemoveAffect(AFFECT_COLLECT);
}
return 0;
}
void RegisterAffectFunctionTable()
{
luaL_reg affect_functions[] =
{
{ "add", affect_add },
{ "remove", affect_remove },
{ "remove_bad", affect_remove_bad },
{ "remove_good", affect_remove_good },
{ "add_hair", affect_add_hair },
{ "remove_hair", affect_remove_hair },
{ "add_collect", affect_add_collect },
{ "add_collect_point", affect_add_collect_point },
{ "remove_collect", affect_remove_collect },
{ "remove_all_collect", affect_remove_all_collect },
{ "get_apply_on", affect_get_apply_on },
{ NULL, NULL }
};
CQuestManager::instance().AddLuaFunctionTable("affect", affect_functions);
}
};
[/CODE]


