1. If 문이란?
if는 소스부터 스크립트 데이터베이스등 많은곳에서 쓰이는 구문입니다
if ((명령) (부등식) (해당값) 이란 원리인데 모든 스크립트에서 쓰인다고 봐도 무난한
제일 기초적인 구문이지요 (뭐 mes가 왕초일지도?)
이것의 사용범위에대해 논해보고자 합니다
2. 활용법
많은분들이 If의 사용법을 재대로 못익히고 계십니다
까딱해봐야 직업 , 돈 , 아이템 , 레벨정도밖게 사용 안하시고 계신데.. 이거 큰 실수입니다
그리고 if까지 쓰는건 좋은데.. 그 이후 사용법도 재대로 알고계신분이 없습니다
여러가지 재미있는 예제을 볼까요?
if (char_id == 150100) goto good1;
케릭터 고유번호가 15100이면 good1로 가라 이소립니다
이것의 사용범위는 잘 생각해본다면.. 서버 시작지점에 냅두고
100번째 단위로 선물을 주는겁니다 (기본이 15000입니다) 뭐 101번째 손님이게 되겠군요!
뭐 오자마자 101번쨰 손님이라고 선물받으면 기분이 나쁠거같진 않네요 (악용하는 유저들이 나오겠지만..)
그럼 다음예제~
if (char_id == 150100) getitem 501,100;
똑같습니다 하지만 바로 그냥 아이템을 펑 줘버립니다
물론 101번째 손님에게만 주겠죠? goto는 if뒤에만 있을 법칙도없고 if뒤엔 goto만 있어야된단 법칙도 없습니다
뒤에 뭐든붙여도 상관없어요!
그럼 또 다음예제~
if(getskilllv(1)<8) mes " 앗! 너는 기초기능을 다 익히지 못했잖아?";
뭐 두번쨰랑 비슷하지만 체크하는게 조금 틀리군요
getskyllv는 익힌스킬을 체크하는 명령어입니다 즉, 1번코드의 스킬이 8개 이하라는 소리!
이때 mes에 담긴말을 한다 이거죠 mes대신 menu을 써서 메뉴을 갈려버리게 해도 되겠죠?
그럼 데이터베이스로 넘어가볼까요?
4210,배회하는자_카드,배회하는자 카드,6,,10,10,,,,,,,,4,,,,,{ if(BaseClass == Job_Thief) bonus bFlee,20; if(isequipped(4172,4257,4230,4272)) goto THIEF_SET; bonus3 bAutoSpell,219,1,10; end; THIEF_SET: bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,5; bonus2 bSPDrainValue,1,0; if(BaseClass == Job_Thief) bonus bNoGemStone,0; }
예제카드는 배회하는자 카드입니다
자~ 일단 if문이 여러개 보이지요?
첫번쨰는 if(BaseClass == Job_Thief)네요? 도둑만 bonus bFlee,20; 의 효과가 나온다..
바로뒤에 뭔가있네요? if(isequipped(4172,4257,4230,4272)) goto THIEF_SET;
장비된아이템 4172 4257 4230 4272을 착용하면 Thief_set으로 넘어가라 이거군요!
바로뒤에 인티머 오토스텔메뉴가보이고 end; 가 있으니.. 결국은 장비가 안되있다면 인티머 오토스펠기능만 나오고 효과증가는 종료..란 소리가 되겠군요
바로뒤에 Thief_set: 가 있군요 아까의 장비들을 모두착용했다면 이쪽으로 넘어와서 bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,5; bonus2 bSPDrainValue,1,0; 의 효과을 얻게되게 되었습니다
또 if문이군요? 그것도 맨처음에 나온구문.. 도둑체크입니다
도둑이라면 마지막옵션까지.. 아니면 bonus2 bSPDrainValue,1,0; 의 옵션까지 들어가게 됩니다
그렇다면 데이터베이스에서 If문의 신선한 사용법을 익혀볼까요?
10000,예제아이템,예제아이템,6,,10,10,,,,,,,,4,,,,,{ if(abcd) == 1) bonus bFlee,1000;}
예제는 카드로 하겠습니다 (장비도 똑같이하면되요~)
자.. 그럼 어디 살펴볼까요?
abcd는 갑자기 어디서 튀어나온거냐? 바로 변수값입니다
변수값은 set 변수,값; (ex : set abcd,1;)로 스크립트나 아이템으로 지정해주실수 있답니다
이건 abcd란 변수가 1이라면 회피가 1천이나 올라버리는 사기카드가 되겠군요
이딴걸 어디다 써먹냐? 하시는분들이 있는데..
사용범위라면! 일정 퀘스트 클리어후 똑같은 장비을껴도 추가 옵션을 더줄수도 있고!
환생후 더주는것도 가능하며! 머리만 쪼금 쥐어짜면 멋진 활용방법이 많습니다
여기까지 두서없는 가이드였습니다
잘 모르겠다면 기초지식이 깔려있지 않는것이니 좀더 공부하세요!
언제까지나 다른사람의 자료만 퍼다써선 서버발전은 기대하기 힘듭니다
자신은 스크립트 , 데이터베이스 다 퍼다쓰면서 왜 유저가 안올까? 란 생각하시는분들!
공부하셔서 좋은서버을 만들어놓고 왜 안올까 고민해보세요 서버가 좋으면 알아서 유저들은 끌려옵니다
[출처] if문 사용방법 스크립트(NPC)에 사용|작성자 Wz 강냉이
'게임 관련 정보 > 라그나로크' 카테고리의 다른 글
간단한 SQL 및 TxT 세이브파일 백업하기 (0) | 2012.12.01 |
---|---|
스크립트 관련 함수메서드 (0) | 2012.12.01 |
기본적 NPC 제작 방법 (0) | 2012.12.01 |
※ 스크립트 작성 시 비교연산자 에 대한 가이드 (0) | 2012.12.01 |
스크립트 작성시 논리연산자에 대한 가이드 (0) | 2012.12.01 |