DragonNest/Server/ServerCommon/DNScriptAPICommon.h
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

820 lines
27 KiB
C++

#pragma once
class CDNUserBase;
class CDnNpc;
namespace DNScriptAPI
{
int CheckInvenForQuestReward(CDNUserBase* pUser, const TQuestReward& QuestReward, const bool bSelectedArray[]);
/*
desc : 다음 대사로 연결한다.
param : 유저(꼭 CDNUserSession*), NPC인덱스, 토크인덱스, 토크파일이름
return : void
*/
void api_npc_NextTalk(CDNUserBase* pUser, UINT nNpcObjectID, const char* szTalkIndex, const char* szTargetFile);
/*
desc : 다음 스크립트로 연결한다.
param : 유저(꼭 CDNUserSession*), NPC, 토크인덱스, 토크파일이름
return : void
*/
void api_npc_NextScript(CDNUserBase* pUser, CDnNpc* pNpc, UINT nNpcObjectID, const char* szTalkIndex, const char* szTargetFile);
/*
desc : 대사 파라메터를 세팅한다(스트링).
param : 유저, 파라메터키, 파라메터문자의 인덱스
return : -1 유저를 찾을수 없음, -2 파라메터 갯수가 넘어서서 더이상 세팅할수 없음. 1 이면 성공
sample :
저는 {%color} 색을 좋아합니다. 라는 문장을 만들때.
api_npc_SetParamString("{%color}, math.random(2) ); 이런식으로 만들어준다.
1은 TalkParamTable.xls 에 1 : 빨강, 2: 파랑 따로 기록 되어있어야한다.
주의: api_npc_SetParamString 으로 세팅한 파라메터는 api_npc_NextTalk 호출후 clear 되므로 api_npc_NextTalk 호출전에 세팅한다.
*/
int api_npc_SetParamString(CDNUserBase* pUser, const char* szParamKey, int nParamID);
/*
desc : 대사 파라메터를 세팅한다(정수).
param : 유저, 파라메터키, 정수값
return : -1 유저를 찾을수 없음, -2 파라메터 갯수가 넘어서서 더이상 세팅할수 없음. 1 이면 성공
sample :
저는 {%age} 살쯤에 숨지고 싶어요. 라는 문장을 만들때.
api_npc_SetParamInt("{%age}, math.random(30)+40 ); 이런식으로 만들어준다.
주의: api_npc_SetParamInt 으로 세팅한 파라메터는 api_npc_NextTalk 호출후 clear 되므로 api_npc_NextTalk 호출전에 세팅한다.
*/
int api_npc_SetParamInt(CDNUserBase* pUser, const char* szParamKey, int nValue);
/*
desc : 로그를 남긴다.
param : 로그 스트링 줄바꿈을 위해 \n 을 포함할것.
return : void
*/
void api_log_AddLog(const char* szLog);
/*
desc : 유저에게 로그를 남긴다. 유저채팅메세지로 전송해줌.
param : 로그 스트링 줄바꿈을 위해 \n 을 포함할것.
return : void
*/
void api_log_UserLog(CDNUserBase* pUser, const char* szLog);
/*
desc : 유저에게 퀘스트 관련 정보를 채팅으로 보내준다.
param :
return : void
*/
void api_quest_DumpQuest(CDNUserBase* pUser);
/*
desc : 유저에게 퀘스트를 부여 한다.
param : 유저, 퀘스트인덱스, 퀘스트 타입 QuestType_SubQuest = 1, QuestType_MainQuest = 2,
return : 1 : 성공, -1 : 유저를 찾을수 없음, -2 : 유저가 퀘스트를 가지고 있지 않음
*/
int api_quest_AddHuntingQuest(CDNUserBase* pUser, int nQuestID, int nQuestStep, int nJournalStep, int nCountingSlot, int nCountingType, int nCountingIndex, int nTargetCnt);
int api_quest_AddQuest(CDNUserBase* pUser, int nQuestID, int nQuestType);
/*
desc : 유저에게 퀘스트를 완료 시킨다.
param : 유저, 퀘스트인덱스, 현재 가지고 있는 퀘스트에서 지울것인지 (안지우면 플레이 횟수만 증가 시킨다.), 반복 가능 여부
return : -1 유저를 찾을수 없음, -2 퀘스트가 진행중이 아님
*/
int api_quest_CompleteQuest(CDNUserBase* pUser, int nQuestID, bool bDelPlayList);
/*
desc : 완료목록에 완료마킹이 되어있는 퀘스트인지?
param : 유저, 퀘스트인덱스
return : -1 유저를 찾을수 없음, 1 이면 완료마킹된 퀘스트, 0 이면 완료마킹 안됨
*/
int api_quest_IsMarkingCompleteQuest(CDNUserBase* pUser, int nQuestID);
/*
desc : 유저가 퀘스트를 가지고 있는지 확인한다.
param : 유저, 퀘스트인덱스
return : -1 유저를 찾을수 없음, -2 유저가 퀘스트를 가지고 있지 않음, -1 보다 크면 퀘스트를 가지고 잇음 ( 퀘스트 스텝을 리턴 )
*/
int api_quest_UserHasQuest(CDNUserBase* pUser, int nQuestID);
/*
desc : 유저가 몇개의 퀘스트를 진행중인지 확인한다.
param : 유저
return : -1 유저를 찾을수 없음, 그외에 현재 진행중인 퀘스트 갯수 리턴..
*/
int api_quest_GetPlayingQuestCnt(CDNUserBase* pUser);
/*
desc : npc 인덱스를 리턴한다.
param : Npc
return : -2 npc 를 찾을수 없음, 그외에는 npc인덱스
*/
int api_npc_GetNpcIndex(CDnNpc* pNpc);
/*
desc : 유저가 가지고 있는 퀘스트의 스텝, 저널 스텝을 세팅한다.
param : 유저, 퀘스트인덱스, 저널 스텝
return : -1 => 유저를 찾을수 없음 -2 => 유저가 퀘스트를 가지고 있지 않음. -3 저널 스텝 범위를 벗어남. 성공일 경우 1을 리턴
*/
int api_quest_SetQuestStepAndJournalStep(CDNUserBase* pUser, int nQuestID, short nQuestStep, int nJournalStep);
/*
desc : 유저가 가지고 있는 퀘스트의 퀘스트 스텝을 세팅한다.
param : 유저, 퀘스트인덱스, 퀘스트 스텝
return : -1 => 유저를 찾을수 없음 -2 => 유저가 퀘스트를 가지고 있지 않음. 성공일 경우 1을 리턴
*/
int api_quest_SetQuestStep(CDNUserBase* pUser, int nQuestID, short nQuestStep);
/*
desc : 유저가 가지고 있는 퀘스트의 퀘스트 스텝을 얻는다.
param : 유저, 퀘스트인덱스
return : -1 => 유저를 찾을수 없음 -2 => 유저가 퀘스트를 가지고 있지 않음., -1 보다 큰경우 현재 퀘스트의 스텝
*/
int api_quest_GetQuestStep(CDNUserBase* pUser, int nQuestID);
/*
desc : 유저가 가지고 있는 퀘스트의 저널 스텝을 세팅한다.
param : 유저, 퀘스트인덱스, 저널 스텝
return : -1 => 유저를 찾을수 없음 -2 => 유저가 퀘스트를 가지고 있지 않음. -3 저널 스텝 범위를 벗어남. 성공일 경우 1을 리턴
*/
int api_quest_SetJournalStep(CDNUserBase* pUser, int nQuestID, int nJournalStep);
/*
desc : 유저가 가지고 있는 퀘스트의 저널 스텝을 얻는다.
param : 유저, 퀘스트인덱스
return : -1 => 유저를 찾을수 없음 -2 => 유저가 퀘스트를 가지고 있지 않음., -1 보다 큰경우 현재 저널 스텝
*/
int api_quest_GetJournalStep(CDNUserBase* pUser, int nQuestID);
/*
desc : 유저가 가지고 있는 퀘스트의 메모의 특정 인덱스에 값을 세팅한다.
param : 유저, 메모인덱스, 메모값
return : -1 => 유저를 찾을수 없음. -2 => 유저가 퀘스트를 가지고 있지 않음. -3 메모 인덱스 범위를 벗어남. 성공일 경우 1을 리턴
*/
int api_quest_SetQuestMemo(CDNUserBase* pUser, int nQuestID, char nMemoIndex, int iVal);
/*
desc : 유저가 가지고 있는 퀘스트의 메모의 특정 인덱스의 값을 얻는다.
param : 유저, 메모인덱스
return : -1 => 유저를 찾을수 없음. -2 => 유저가 퀘스트를 가지고 있지 않음. -3 메모 인덱스 범위를 벗어남. -1 보다 큰경우 특정 메모 인덱스의 값
*/
int api_quest_GetQuestMemo(CDNUserBase* pUser, int nQuestID, char nMemoIndex);
/*
desc : 몬스터 잡거나, 아이템 얻는 갯수 카운팅 정보를 세팅하는 함수 이다.
param : 유저,
퀘스트인덱스,
카운팅정보 세팅 슬롯(0부터 49까지 50개의 세팅슬롯이 있음) ,
카운팅할 타입( CountingType_MyMonsterKill = 1, CountingType_AllMonsterKill = 2, CountingType_Item = 3),
카운팅할 것의 인덱스 0 ~ 60000 까지의 범위,
카운팅할 갯수
return : -1 => 유저를 찾을수 없음 -2 => 유저가 퀘스트를 가지고 있지 않음. -3 => 카운팅정보세팅슬롯 범위 초과 -4 => 카운팅타입 or 타겟카운트 범위 초과
example:
api_SetCountingInfo(유저아이디, 퀘스트아이디, 0, CountingType_MyMonsterKill, 10001, 10);
api_SetCountingInfo(유저아이디, 퀘스트아이디, 1, CountingType_MyMonsterKill, 10002, 5);
api_SetCountingInfo(유저아이디, 퀘스트아이디, 2, CountingType_MyMonsterKill, 10003, 20);
api_SetCountingInfo(유저아이디, 퀘스트아이디, 3, Item, 1001, 5);
api_SetCountingInfo(유저아이디, 퀘스트아이디, 4, Item, 1002, 1);
위와 같이 스크립트에서 호출 해줬을 경우 5개의 카운팅 조건이 세팅 되게 된다.
맨 윗줄의 뜻은 0번 슬롯에 10001번 몬스터를 10마리 잡으면 조건이 만족한다고 세팅한다.
위와같이 5개의 슬롯에 10001번 몬스터 10마리, 10002번 몬스터 5마리, 10003번 몬스터 20마리, 1001번 아이템 5개, 1002번 아이템 1개 라고 세팅 하였고
위 5개의 조건을 만족하게 되면. 퀘스트 스크립트의 OnComplete() 함수를 호출하게 된다.
*** 카운팅 갯수는 최대 30000 개이다.
*/
int api_quest_SetCountingInfo(CDNUserBase* pUser, int nQuestID, int nSlot, int nCountingType, int nCountingIndex, int nTargetCnt);
/*
desc : 세팅된 카운팅 정보를 클리어 한다.
param : 유저, 퀘스트 인덱스
return : -1 => 유저를 찾을수 없음 -2 => 퀘스트를 찾을수 없음,
*/
int api_quest_ClearCountingInfo(CDNUserBase* pUser, int nQuestID);
/*
desc : 세팅된 카운팅들이 모두 완료 되었는지 확인한다.
param : 유저, 아이템인덱스, 아이템 카운트
return : -1 => 유저를 찾을수 없음 -2 => 퀘스트를 찾을수 없음, -3이면 완료 안됨, 1 이면 모두 완료
*/
int api_quest_IsAllCompleteCounting(CDNUserBase* pUser, int nQuestID);
/*
desc : 유저에게 아이템을 넣을만한 인벤여유가 있는지 확인한다.
param : 유저, 아이템인덱스, 아이템 카운트
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 인벤 부족
*/
int api_user_CheckInvenForAddItem(CDNUserBase* pUser, int nItemIndex, int nItemCnt);
/*
desc : 유저에게 퀘스트 아이템 목록을 넣을만한 인벤여유가 있는지 확인한다.
param : 유저인덱스, 퀘스트 아이템 목록 (루아테이블, [<최대개수>]{퀘스트 아이템인덱스, 퀘스트 아이템 카운트} 가 한 쌍으로 <최대개수 (현재 10개)> 만큼 존재)
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 인벤 부족
example :
function grandmother_OnTalk(userObjID, npcObjID, npc_talk_index, npc_talk_target, questID)
local TableItem =
{
{ 1001, 10 }, -- 아이템 인덱스 (1001), 아이템 개수 (10)
{ 1002, 1 }, -- 아이템 인덱스 (1002), 아이템 개수 (1)
{ 1003, 5 }, -- 아이템 인덱스 (1003), 아이템 개수 (5)
};
if (api_user_CheckInvenForAddItemList(userObjID, TableParam) == 1) then
-- 성공
else
-- 실패
end
end
*/
int api_user_CheckInvenForAddItemList(CDNUserBase* pUser, lua_tinker::table ItemTable);
/*
desc : 유저에게 아이템을 지급한다.
param : 유저, 아이템인덱스, 아이템 카운트, 퀘스트 아이디
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 인벤 부족
*/
int api_user_AddItem(CDNUserBase* pUser, int nItemIndex, int nItemCnt, int nQuestID);
/*
desc : 유저에게서 아이템을 지운다.
param : 유저, 아이템인덱스, 아이템 카운트, 퀘스트 아이디
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 아이템 갯수 부족
*/
int api_user_DelItem(CDNUserBase* pUser, int nItemIndex, int nItemCnt, int nQuestID);
/*
desc : 유저에게서 아이템을 모두 지운다.
param : 유저, 아이템인덱스, 아이템 카운트, 퀘스트 아이디
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음
*/
int api_user_AllDelItem(CDNUserBase* pUser, int nItemIndex);
/*
desc : 유저가 아이템을 가지고 있는지 확인한다.
param : 유저, 아이템인덱스, 아이템 카운트
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 아이템 갯수 부족, 0 보다 크면 true ( 갯수를 리턴 )
*/
int api_user_HasItem(CDNUserBase* pUser, int nItemIndex, int nItemCnt);
/*
desc : 유저의 클래스 ID 를 얻는다.
param : 유저
return : -1 => 유저를 찾을수 없음, 그외는 ClasssID
*/
int api_user_GetUserClassID(CDNUserBase* pUser);
/*
desc : 유저의 Job ID 를 얻는다.
param : 유저
return : -1 => 유저를 찾을수 없음, 그외는 Job ID
*/
int api_user_GetUserJobID(CDNUserBase* pUser);
/*
desc : 유저의 level을 얻는다.
param : 유저
return : -1 => 유저를 찾을수 없음, 그외는 Level
*/
int api_user_GetUserLevel(CDNUserBase* pUser);
/*
desc : 유저 인벤토리의 빈칸수를 얻는다.
param : 유저
return : -1 => 유저를 찾을수 없음, 그외는 빈칸수
*/
int api_user_GetUserInvenBlankCount(CDNUserBase* pUser);
/*
desc : 유저 퀘스트 인벤토리의 빈칸수를 얻는다.
param : 유저
return : -1 => 유저를 찾을수 없음, 그외는 빈칸수
*/
int api_quest_GetUserQuestInvenBlankCount(CDNUserBase* pUser);
/*
desc : 유저에게 동영상을 재생 시킨다.
param : 유저, 동영상파일이름
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_user_PlayCutScene(CDNUserBase* pUser, UINT nNpcObjectID, int nCutSceneTableID, bool bIgnoreFadeIn);
/*
desc : 유저에게 창고를 열라고 알린다.
param : 유저
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenWareHouse(CDNUserBase* pUser, int iItemID=0 );
#if defined (PRE_MOD_GAMESERVERSHOP)
/*
desc : 유저에게 상점를 열라고 알린다.
param : 유저인덱스, 상점 ID
return : -1 => 유저를 찾을수 없음, -2 면 샵이 없음. 1이면 성공
*/
int api_ui_OpenShop(CDNUserBase* pUser, int nShopID, Shop::Type::eCode Type);
/*
desc : 유저에게 스킬 상점를 열라고 알린다.
param : 유저인덱스, 스킬 상점 ID
return : -1 => 유저를 찾을수 없음, -2 면 샵이 없음. 1이면 성공
*/
int api_ui_OpenSkillShop(CDNUserBase* pUser);
#endif
/*
desc : 유저에게 문장보옥 합성 창을 열라고 한다.
param : 유저
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenCompoundEmblem(CDNUserBase* pUser);
/*
desc : 유저에게 보옥 업그레이드 창을 열라고 알린다.
param : 유저
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenUpgradeJewel(CDNUserBase* pUser);
/*
desc : 유저에게 우편함을 열라고 시킨다.
param : 유저
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenMailBox(CDNUserBase* pUser);
/*
desc : 유저에게 문장 해제를 위해 문장차을 열라고 시킨다.
param : 유저인덱스
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenGlyphLift(CDNUserBase* pUser);
/*
desc : 유저에게 분해창을 열라고 시킨다.
param : 유저
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenDisjointItem(CDNUserBase* pUser);
/*
desc : 유저에게 아이템 합성창을 열라고 시킨다.
param : 유저, 아이템 합성 상점 ID
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenCompoundItem(CDNUserBase* pUser, int nCompoundShopID);
/*
desc : 유저에게 캐쉬 아이템 상점을 열라고 시킨다.
param : 유저
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenCashShop(CDNUserBase* pUser);
/*
desc : 유저에게 길드 관리 UI 대화상자를 열라고 시킨다.
param : 유저, 길드관리번호
return : -1 => 유저를 찾을수 없음, 1이면 성공
길드관리번호>
0 : 길드창설
1 : 길드해산
2 : 길드탈퇴
3 : 길드포인트
4 : 길드레벨업
*/
int api_ui_OpenGuildMgrBox(CDNUserBase* pUser, int nGuildMgrNo);
/*
desc : 일본 가챠폰 다이얼로그를 연다.
param : 사용될 가챠폰 인덱스
return : -1 => 유저를 찾을수 없음, -2 면 샵이 없음. 1이면 성공, -3 이면 디파인에 걸러짐..
*/
int api_ui_OpenGacha_JP(CDNUserBase* pUser, int nGachaShopID);
/*
desc : NPC 선물하기 다이얼로그를 연다.
param : 대화중인 Npc ID
return : -1 => 유저를 찾을수 없음. 1 이면 성공.
*/
int api_ui_OpenGiveNpcPresent(CDNUserBase* pUser, int nNpcID);
/*
desc : 기부 창을 연다.
param :
return : -1 => 유저를 찾을수 없음. 1이면 성공.
*/
int api_ui_OpenDonation(CDNUserBase* pUser);
/*
desc : 인벤토리 창을 연다.
param :
return : -1 => 유저를 찾을수 없음. 1이면 성공.
*/
int api_ui_OpenInventory(CDNUserBase* pUser);
#if defined(PRE_ADD_OPEN_QUEST_TEXTURE_DIALOG)
/*
desc : 텍스쳐 다이얼로그를 연다
param : 유저인덱스, 다이얼로그 데이터
return : -1 => 유저를 찾을수 없음. 1이면 성공.
*/
int api_Open_Texture_Dialog(CDNUserBase* pUser, SCOpenTextureDialog data);
/*
desc : 텍스쳐 다이얼로그를 닫는다
param : 유저인덱스, 다이얼로그 데이터
return : -1 => 유저를 찾을수 없음. 1이면 성공.
*/
int api_Close_Texture_Dialog(CDNUserBase* pUser, int nDlgID);
#endif
/*
desc : 유저에게 메세지를 출력하게 한다.
param : nType 은 메세지 출력 타입,
CHATTYPE_NORMAL => 1, // 일반적인 대화
CHATTYPE_PARTY => 2, // 파티 대화
CHATTYPE_PRIVATE => 3, // 귓속말
CHATTYPE_GUILD => 4, // 길드 대화
CHATTYPE_CHANNEL => 5, // 거래/채널 대화
CHATTYPE_SYSTEM => 6, // 시스템 메세지
nBaseStringIdx 는 기본 스트링
ParamTable 은 각 키워드의 치환 정보가 담겨있는 루아 테이블
return : -1 => 유저를 찾을수 없음, -2 타입이 없음 -3 메세지가 너무 김
example :
{%Hitter} 가 {item:2}를 장착한채 {%Target}를 때렸습니다. <-- uistring 6000번
"히터_사람" <-- uistring 6001번
"타겟_사마귀"<-- uistring 6002번
function grandmother_OnTalk(userObjID, npcObjID, npc_talk_index, npc_talk_target, questID)
local TableParam =
{
// 아래와 같이 {%Hitter} 라는 키워드는 uistring.xml 의 6001번으로 치환 된다.
{ "{%Hitter}", 1, 6001 },
{ "{%Target}", 1, 6002 },
};
// 만약 { "{%Hitter}", 2, 6001 }, 라면 6001 이란 정수가 문자열 "6001" 로 되어 치환된다.
api_UserMessage(userObjID, 1, 6000, TableParam);
end
*/
int api_user_UserMessage(CDNUserBase* pUser, int nType, int nBaseStringIdx, lua_tinker::table ParamTable);
/*
desc : 유저에게 심볼아이템을 추가한다.
param : 유저, 심볼아이템아이디, 갯수
return : -1 => 유저를 찾을수 없음, -2면 실패 1이면 성공
*/
int api_quest_AddSymbolItem(CDNUserBase* pUser, int nItemID, short wCount);
/*
desc : 유저에게 심볼아이템을 삭제한다.
param : 유저, 심볼아이템아이디, 갯수
return : -1 => 유저를 찾을수 없음, -2 면 실패, 1이면 성공
*/
int api_quest_DelSymbolItem(CDNUserBase* pUser, int nItemID, short wCount);
/*
desc : 유저가 심볼 아이템을 가지고 있는지 확인한다.
param : 유저, 아이템인덱스, 아이템 카운트
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 아이템 갯수 부족, 0 보다 크면 true ( 갯수를 리턴 )
*/
int api_quest_HasSymbolItem(CDNUserBase* pUser, int nItemIndex, int nItemCnt);
/*
desc : 유저에게 퀘스트 아이템을 넣을만한 인벤여유가 있는지 확인한다.
param : 유저, 퀘스트 아이템 인덱스, 퀘스트 아이템 카운트
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 인벤 부족
*/
int api_quest_CheckQuestInvenForAddItem(CDNUserBase* pUser, int nItemIndex, int nItemCnt);
/*
desc : 유저에게 퀘스트 아이템 목록을 넣을만한 인벤여유가 있는지 확인한다.
param : 유저, 퀘스트 아이템 목록 (루아테이블, [<최대개수>]{퀘스트 아이템인덱스, 퀘스트 아이템 카운트} 가 한 쌍으로 <최대개수 (현재 10개)> 만큼 존재)
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 인벤 부족
example :
function grandmother_OnTalk(userObjID, npcObjID, npc_talk_index, npc_talk_target, questID)
local TableItem =
{
{ 1001, 10 }, -- 아이템 인덱스 (1001), 아이템 개수 (10)
{ 1002, 1 }, -- 아이템 인덱스 (1002), 아이템 개수 (1)
{ 1003, 5 }, -- 아이템 인덱스 (1003), 아이템 개수 (5)
};
if (api_quest_CheckQuestInvenForAddItemList(userObjID, TableParam) == 1) then
-- 성공
else
-- 실패
end
end
*/
int api_quest_CheckQuestInvenForAddItemList(CDNUserBase* pUser, lua_tinker::table ItemTable);
/*
desc : 유저에게 퀘스트 아이템을 추가한다.
param : 유저, 퀘스트아이템아이디, 갯수, 퀘스트 아이디
return : -1 => 유저를 찾을수 없음, -2면 실패 1이면 성공
*/
int api_quest_AddQuestItem(CDNUserBase* pUser, int nItemID, short wCount, int nQuestID);
/*
desc : 유저에게 퀘스트 아이템을 삭제한다.
param : 유저, 퀘스트아이템아이디, 갯수, 퀘스트 아이디
return : -1 => 유저를 찾을수 없음, -2 면 실패, 1이면 성공
*/
int api_quest_DelQuestItem(CDNUserBase* pUser, int nItemID, short wCount, int nQuestID);
/*
desc : 유저에게 퀘스트 아이템을 모두 삭제한다.
param : 유저, 퀘스트아이템아이디
return : -1 => 유저를 찾을수 없음, -2 면 실패, 1이면 성공
*/
int api_quest_AllDelQuestItem(CDNUserBase* pUser, int nItemID);
/*
desc : 유저가 퀘스트 아이템을 가지고 있는지 확인한다.
param : 유저, 아이템인덱스, 아이템 카운트
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 아이템 갯수 부족, 0 보다 크면 true ( 갯수를 리턴 )
*/
int api_quest_HasQuestItem(CDNUserBase* pUser, int nItemIndex, int nItemCnt);
/*
desc : 유저에게 길드 생성창을 띄우라고 알린다.
param : 유저인덱스
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenGuildCreate(CDNUserBase* pUser);
/*
desc : 유저에게 퀘스트 보상창을 띄우라고 알린다.
param : 유저인덱스, 보상테이블, bActivate 가 true 면 고를수 있고 이면 그냥 보는 용도는 false로 쓴다.
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenQuestReward(CDNUserBase* pUser, int nRewardTableIndex, bool bActivate);
/*
desc : 유저에게 퀘스트 보상을 한다.
param : 유저, 보상테이블, 퀘스트 아이디, 보상체크번호
return : -1 => 유저를 찾을수 없음, -2 유저아이템객체 오류, -3 인벤 부족, -4 이면 테이블을 찾을수 없음, -5 보상 조건 체크 오류, 1 이면 성공
*/
int api_quest_RewardQuestUser(CDNUserBase* pUser, int nRewardTableIndext, int nQuestID, int nRewardCheck);
/*
desc : 해당 유저의 현재 맵번호를 구함
param : 유저
return : 맵번호 (1 이상), 그 외는 실패 ? (0 이하)
*/
int api_user_GetMapIndex(CDNUserBase* pUser);
/*
desc : 해당 유저의 최근 스테이지 완료 랭크를 구함
param : 유저인덱스
return : 스테이지 완료 랭크 (SSS : 0 / SS : 1 / S : 2 / A : 3 / B : 4 / C : 5 / D : 6), 그 외는 실패 ? (기본 -1)
*/
int api_user_GetLastStageClearRank(CDNUserBase* pUser);
/*
desc : 유저의 현재 소지금을 확인한다.
param : 유저, 체크할 값
return : -1 => 유저를 찾을 수 없음, -2 => 소지금이 부족함, 1 => 소지금이 충분함
*/
int api_user_EnoughCoin(CDNUserBase* pUser, int nCoin);
/*
desc : 유저의 현재 소지금을 확인한다.
param : 유저
return : -1 => 유저를 찾을수 없음, 0 이상 => 현재 소지금
*/
int api_user_GetCoin(CDNUserBase* pUser);
/*
desc : 유저의 특정 미션 취득 여부를 반환
param : 유저, 미션인덱스 (MISSIONMAX (현재 5000 → 0 ~ 4999))
return : -1 => 유저를 찾을수 없음, 0 => 해당 미션 없음, 1 포함 이외 => 해당 미션 존재
*/
int api_user_IsMissionGained(CDNUserBase* pUser, int nMissionIndex);
/*
desc : 유저의 특정 미션 완료 여부를 반환
param : 유저, 미션인덱스 (MISSIONMAX (현재 5000 → 0 ~ 4999))
return : -1 => 유저를 찾을수 없음, 0 => 해당 미션 없음, 1 포함 이외 => 해당 미션 존재
*/
int api_user_IsMissionAchieved(CDNUserBase* pUser, int nMissionIndex);
/*
desc : 유저가 창고에 아이템을 가지고 있는지 확인한다.
param : 유저, 아이템인덱스, 아이템 카운트
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 아이템 갯수 부족, 0 보다 크면 true ( 갯수를 리턴 )
*/
int api_user_HasItemWarehouse(CDNUserBase* pUser, int nItemIndex, int nItemCnt);
/*
desc : 유저가 장비에 아이템을 가지고 있는지 확인한다.
param : 유저, 아이템인덱스
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, 1 포함 그외 true
*/
int api_user_HasItemEquip(CDNUserBase* pUser, int nItemIndex);
/*
desc : 유저의 현재 길드 직급을 반환
param : 유저
return : 0 : 길드 없음 / 1 : 길드장 / 2 : 부길드장 / 3 : 선임길드원 / 4 : 일반길드원 / 5 : 신입길드원
*/
int api_guild_GetGuildMemberRole(CDNUserBase* pUser);
/*
desc : 유저가 가지고 있는 퀘스트의 메모의 특정 인덱스에 값을 1 증가시킴
param : 유저, 퀘스트번호, 메모인덱스
return : 증가된 퀘스트 메모값 (에러일 경우에는 LONG_MIN 반환)
*/
int api_quest_IncQuestMemo(CDNUserBase* pUser, int nQuestID, char nMemoIndex);
/*
desc : 유저가 가지고 있는 퀘스트의 메모의 특정 인덱스에 값을 1 감소시킴
param : 유저, 퀘스트번호, 메모인덱스
return : 증가된 퀘스트 메모값 (에러일 경우에는 LONG_MAX 반환)
*/
int api_quest_DecQuestMemo(CDNUserBase* pUser, int nQuestID, char nMemoIndex);
/*
desc : 유저에게 특정 전직 직업을 지정
param : 유저, 변경 전직 직업
return : -1 : 유저를 찾을수 없음 / -2 : 없는 전직 번호임 / -3 : 전직 불가 조건임 / 0 : 이미 같은 전직 직업임 / 1 : 전직 직업 변경 성공
*/
int api_user_SetUserJobID(CDNUserBase* pUser, int nJobID);
/*
desc : 유저의 전직 직업이 특정 전직 계열에 있는지 확인
param : 유저, 선행 전직 직업
return : -1 : 유저를 찾을수 없음 / 0 : 같은 계열이 아님 / 1 : 같은 계열이 맞음
*/
int api_user_IsJobInSameLine(CDNUserBase* pUser, int nBaseJobID);
/*
desc : 유저가 캐쉬 아이템을 가지고 있는지 확인한다.
param : 유저, 캐쉬아이템인덱스, 아이템 카운트
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, -3 아이템 갯수 부족, 0 보다 크면 true ( 갯수를 리턴 )
*/
int api_user_HasCashItem(CDNUserBase* pUser, int nItemIndex, int nItemCnt);
/*
desc : 유저가 장비에 캐쉬 아이템을 가지고 있는지 확인한다.
param : 유저, 캐쉬아이템인덱스
return : -1 => 유저를 찾을수 없음 -2 => 아이템을 찾을수 없음, 1 포함 그외 true
*/
int api_user_HasCashItemEquip(CDNUserBase* pUser, int nItemIndex);
/*
desc : 특정 카운팅 타입, ID 에 대해서 임의로 카운팅을 증가시킨다.
param : 유저,
카운팅할 타입 (CountingType_MyMonsterKill = 1, CountingType_AllMonsterKill = 2, CountingType_Item = 3),
카운팅할 것의 인덱스 (아이템 ID, 몬스터 ID 등등)
return : -1 => 유저를 찾을수 없음, 1 => 성공
*/
int api_quest_IncCounting(CDNUserBase* pUser, int nCountingType, int nCountingIndex);
/*
desc : 유저가 진행 가능 최대 퀘스트 수에 도달하였는지 여부를 반환한다.
param : 유저, 퀘스트인덱스
return : -1 : 유저를 찾을수 없음, 1 : 최대 퀘스트 수에 도달 함, 그외 : 아님
*/
int api_quest_IsPlayingQuestMaximum(CDNUserBase* pUser);
/*
desc : 특정 퀘스트를 강제 완료 시킨다. (진행 중이 아닌 퀘스트는 추가하여 완료)
param : 유저, 퀘스트인덱스, 퀘스트 코드 (0:일반 / 1:시간제), 마킹여부 (1:마킹/0:안함), 삭제여부 (1:삭제/0:않함), 반복여부 (1:반복/0:안함)
return : -1 : 유저를 찾을수 없음, 1 : 최대 퀘스트 수에 도달 함, 그외 : 아님
*/
int api_quest_ForceCompleteQuest(CDNUserBase* pUser, int nQuestID, int nQuestCode, int bDoMark, int bDoDelete, int bDoRepeat);
/*
desc : NPC 호의Point 를 얻어온다.
param : 유저, NpcID
return : -1 => 유저를 찾을수 없음, -2 => 시스템에러 그외 => 리턴값
*/
int api_npc_GetFavorPoint(CDNUserBase* pUser, int iNpcID);
/*
desc : NPC 악의Point 를 얻어온다.
param : 유저, NpcID
return : -1 => 유저를 찾을수 없음, -2 => 시스템에러 그외 => 리턴값
*/
int api_npc_GetMalicePoint(CDNUserBase* pUser, int iNpcID);
/*
desc : NPC 호의Percent 를 얻어온다.
param : 유저, NpcID
return : -1 => 유저를 찾을수 없음, -2 => 시스템에러 그외 => 리턴값
*/
int api_npc_GetFavorPercent(CDNUserBase* pUser, int iNpcID);
/*
desc : NPC 악의Percent 를 얻어온다.
param : 유저, NpcID
return : -1 => 유저를 찾을수 없음, -2 => 시스템에러 그외 => 리턴값
*/
int api_npc_GetMalicePercent(CDNUserBase* pUser, int iNpcID);
/*
desc : NPC 호의Point 를 가감한다.
param : 유저, NpcID, 가감값(- 넣으면 감소함)
return : -1 => 유저를 찾을수 없음, -2 => 시스템에러 그외 => 리턴값
*/
int api_npc_AddFavorPoint(CDNUserBase* pUser, int iNpcID, int val);
/*
desc : NPC 악의Point 를 가감한다.
param : 유저, NpcID, 가감값(- 넣으면 감소함)
return : -1 => 유저를 찾을수 없음, -2 => 시스템에러 그외 => 리턴값
*/
int api_npc_AddMalicePoint(CDNUserBase* pUser, int iNpcID, int val);
/*
desc : NPC 에게 보낼 선물 선택한 정보를 서버로 보내라고 클라이언트에게 요청.
param : 유저, NpcID
return : -1 => 유저를 찾을수 없음, -2 => 시스템에러 그외 => 리턴값
*/
int api_npc_SendSelectedPresent(CDNUserBase* pUser, int iNpcID);
/*
desc : NPC 에게 보낼 선물 선택한 정보를 서버로 보내라고 클라이언트에게 요청.
param : 유저, NpcID
return : -1 => 유저를 찾을수 없음, -2 => 시스템에러 그외 => 리턴값
*/
int api_npc_Rage(CDNUserBase* pUser, int iNpcID);
/*
desc : NPC 에게 보낼 선물 선택한 정보를 서버로 보내라고 클라이언트에게 요청.
param : 유저, NpcID
return : -1 => 유저를 찾을수 없음, -2 => 시스템에러 그외 => 리턴값
*/
int api_npc_Disappoint(CDNUserBase* pUser, int iNpcID);
/*
desc : 특정 사용자의 전체 스킬을 리셋시킨다.
param : 유저
return : -1 : 유저를 찾을수 없음, 1 : 성공
*/
int api_user_ResetSkill(CDNUserBase* pUser);
/*
desc : 유저가 가진 장비 아이템을 수리하고, 수리비용을 차감합니다.
param : 유저, 전체수리 유무(1-전체수리, 0-장착한아이템)
return : -1 : 유저를 찾을수 없음 / 0 : 수리할 아이템 없음 / 1 : 소지금 부족 / 2 : 아이템 수리 완료
*/
int api_user_RepairItem(CDNUserBase* pUser, int iAllRepair);
/*
desc : 유저에게 강화이동창을 열라고 시킨다.
param : 유저
return : -1 => 유저를 찾을수 없음, 1이면 성공
*/
int api_ui_OpenExchangeEnchant(CDNUserBase* pUser);
/*
desc : 해당 맵이 닫혀있는지 확인한다.
param : 유저, 맵 인덱스
return : 1 이면 오픈, 0 이면 클로즈
*/
int api_env_CheckCloseGateByTime(int iMapID);
/*
desc : 원격 퀘스트 완료 스텝을 등록 한다
param : 퀘스트인덱스, 스텝 인덱스
*/
void api_quest_SetRemoteComplete (int nQuestID, int nStep);
/*
desc : 월드버프 줄수 있는지 체크
param : 버프 아이템아이디
*/
int api_quest_WorldBuffCheck(int nItemID);
/*
desc : 월드버프를 줌
param : 버프 아이템아이디
*/
int api_quest_ApplyWorldBuff(CDNUserBase* pUser, int nItemID, int nMapIdx);
//rlkt_test
int api_Open_ChangeJobDialog(CDNUserBase* pUser);
};