搜索
 找回密码
 加入

发个编写EVT英文的解释

cege 2009-11-9 21:56:46 1370
Introduction
So, you're probably asking yourself, "what is EVT Coding?" EVT coding is the coding language for any quest-related things to do with Knight Online. It has tons of potential, and I'll be explaining what all the functions/commands do and how you would use them.

I'm warning you right now, this is a bit of a long read and EVT coding is very time consuming, so unless you've got time, I wouldn't bother.
Functions/Commands
Basic things you should know :

A is used anytime you're using a IF / Check function

E is used anytime you're using an event function

; is used for commenting - Example
E RUN_EVENT 10601 ; You can write notes here..

-1 is used for noting a space that isn't used, if you're not using one of the supplied spaces you'll have to put a -1.

ALL of EVT Coding must be done in capital letters.




Code:
Event Functions


ROB_EXAM
GIVE_ITEM_INPUT_COUNT
ROB_ITEM_INPUT_COUNT
OPEN_INPUT_COUNT
LOG_OLYMPIC_ACCOUNT
CHECK_OLYMPIC_ACCOUNT
MOVE_MIDDLE_STATUE
GIVE_LOGTIME_ITEM
CHECK_LOGTIME_ACCOUNT
GIVE_KJWAR_ITEM
CHECK_KJWAR_ACCOUNT
CHECK_PCBANG_OWNER
GIVE_PCBANG_ITEM
CHECK_PCBANG_ITEM
SHOW_PCBANG_ITEM
CHANGE_MANNER
EMIGRATION_ACCEPT
STATE_CHANGE
ZONE_CHANGE_PARTY
ROB_ALLITEM_PARTY
SEND_WEBPAGE_ADDRESS
CHANGE_NAME
STAT_POINT_FREE
SKILL_POINT_FREE
CHANGE_LOYALTY
ZONE_CHANGE_CLAN
ROLL_DICE
CHANGE_POSITION
PROMOTE_KNIGHT
DESTROY_ITEM
EXP_CHANGE
LEVEL_UP
STAT_POINT_DISTRIBUTE
SKILL_POINT_DISTRIBUTE
PROMOTE_USER_NOVICE
ZONE_CHANGE
KISS_USER
RUN_EXCHANGE
GIVE_PROMOTION_QUEST
PROMOTE_USER
SAVE_EVENT
GIVE_PPCARD_ITEM
RETURN
REQUEST_PERSONAL_RANK_REWARD
REQUEST_REWARD
ROB_NOAH
SAVE_COM_EVENT
LOG_COUPON_ITEM
GIVE_NOAH
OPEN_EDITBOX
ROB_ITEM
GIVE_ITEM
RUN_EVENT
SELECT_MSG
SAY

Code:
IF Functions(Functions for checking something)

CHECK_BEEF_ROAST_NO_VICTORY
CHECK_BEEF_ROAST_ELMORAD_VICTORY
CHECK_BEEF_ROAST_KARUS_VICTORY
CHECK_EXAM_COUNT
CHECK_WEIGHT_INPUT_COUNT
CHECK_EXIST_ITEM_INPUT_COUNT
CHECK_INPUT_COUNT
CHECK_MIDDLE_STATUE_NOCAPTURE
CHECK_MIDDLE_STATUE_CAPTURE
CHECK_CLAN_RANKING
CHECK_LOYALTY_RANK
CHECK_LOYALTY_RANK_MONTHLY
CHECK_EMPTY_SLOT
CHECK_STAT_TOTAL
CHECK_SKILL_TOTAL
CHECK_NO_CASTLE
CHECK_CASTLE
CHECK_MONSTER_CHALLENGE_USERCOUNT
CHECK_MONSTER_CHALLENGE_TIME
CHECK_MANNER
CHECK_NO_CLAN
CHECK_CLAN
CHECK_DICE
CHECK_KNIGHT
CHECK_CLAN_GRADE
CHECK_NO_CHIEF
CHECK_CHIEF
CHECK_LOYALTY
CHECK_NOCLASS
CHECK_ITEMCHANGE_NUM
CHECK_EXCHANGE
CHECK_PROMOTION_ELIGIBLE
CHECK_EXIST_EVENT
CHECK_NOEXIST_EVENT
CHECK_NOEXIST_ITEM_OR
CHECK_NOEXIST_ITEM_AND
CHECK_EXIST_ITEM_OR
CHECK_EXIST_ITEM_AND
CHECK_PPCARD_TYPE
CHECK_PPCARD_SERIAL
CHECK_NATION
CHECK_NOAH
EXIST_COM_EVENT
NOEXIST_COM_EVENT
HOWMUCH_ITEM
CHECK_LV
RAND
CHECK_EDITBOX
CHECK_WEIGHT
CHECK_CLASS
CHECK_NOEXIST_ITEM
CHECK_EXIST_ITEM
CHECK_SKILL_POINT
CHECK_OVER_WEIGHT
CHECK_UNDER_WEIGHT


Function explanations
CHANGE_MANNER
Used for removing or adding Manner points.
Use: E CHANGE_MANNER 10000 ; Will give you 10,000 Manner points
E CHANGE_MANNER -10000 ; Will remove 10,000 Manner points
ZONE_CHANGE_PARTY
Used to TP your whole party to another zone.
Use: E ZONE_CHANGE_PARTY 21 350 350 ; Will tp your party to Moradon, with coordinates of 350 350. Zone ID, X, Y
SEND_WEBPAGE_ADDRESS
Will open a in-game browser to the link specified in 'Web_address_us.tbl'
Use: E SEND_WEBPAGE_ADDRESS 4 ; This will open up the webpage which has the index of 4 in your Web_Address_us.tbl file, the first column is the index number.
CHANGE_NAME
Used for the Name Change Scroll, will change your name instantly in-game.
Use: E CHANGE_NAME ; Simple as that, you will need a Name change stored procedure under the name of 'CHANGE_NEW_ID'
STAT_POINT_FREE
Will restat your character.
Use: E STAT_POINT_FREE ;
SKILL_POINT_FREE
Will reskill your character.
Use: E SKILL_POINT_FREE ;
CHANGE_LOYALTY
Used to Add/Remove National Points
Use: E CHANGE_LOYALTY 500 ; Will add 500 National Points to your character.
CHANGE_LOYALTY -500 ; Will remove 500 national points from your character.
ZONE_CHANGE_CLAN
Used to TP your clan to a different zone.
Use: E ZONE_CHANGE_CLAN 21 350 350 ; Will teleport your clan to Moradon, with a X,Y coordinate of 350,350.
Parameters : Zone ID, X, Y.
ROLL_DICE
Used to roll the dice, used for randomizing.
Use: E ROLL_DICE 20 ; Will roll the dice with up to 20 possible values (1-20), Will be explained more later.
CHANGE_POSITION
Used for the Key Quest NPCs, changes the NPC location. Note: This ONLY works if you have the TrapNumbers set up for the NPC.
Use: E CHANGE_POSITION ; That's all you need, then it'll TP It to the next Trap Number set in your K_NPCPOS, it cycles through that.
PROMOTE_KNIGHT
Used for promoting your clan, used when turning in your brain of centaur
Use: E PROMOTE_KNIGHT
EXP_CHANGE
Used for giving a character experience points.
Use: E EXP_CHANGE 500 ; Will give the character 500 XP
LEVEL_UP
Will level up the character.
Use: E LEVEL_UP ;
PROMOTE_USER_NOVICE
Will give you your level 10 specialty.
Use: E PROMOTE_USER_NOVICE ;
ZONE_CHANGE
Will teleport the character to a different zone/location.
Use: E ZONE_CHANGE 21 350 350 ; Will teleport your character to Moradon, with coordinates of 350,350
Parameters: Zone ID, X, Y
KISS_USER
The NPC will kiss you and give you a Kiss Item
Use: E KISS_USER ;
RUN_EXCHANGE
Will run a item exchange (ITEM_EXCHANGE table in the database)
Use: E RUN_EXCHANGE 36300 ; 36300 - Index number from ITEM_EXCHANGE table.
GIVE_PROMOTION_QUEST
Gives you the quest to get your Masters Quest
Use: E GIVE_PROMOTION_QUEST ;
SAVE_EVENT
Saves the quest data into the database, lets you check whether or not the quest has been done.
Use: E SAVE_EVENT QuestNumber 0/1/2
Examples:
E SAVE_EVENT 30 1 ; Will make you start Quest 30. You use Save 1 when you brief them about the quest, once they accept it, it should give them a save 1
E SAVE_EVENT 30 2 ; Will make their quest count as finished. Once they've gathered all of the requirements for their quest, you do save 2 so they can no longer do that quest anymore
REQUEST_PERSONAL_RANK_REWARD
Gives you your cash reward for being one of the top NP holders
Use: E REQUEST_PERSONAL_RANK_REWARD
ROB_NOAH
Takes noah from the Character.
Use: E ROB_NOAH 15000 ; Will take 15,000 noah from the character
GIVE_NOAH
Gives the character Noah.
Use: E GIVE_NOAH 15000 ; Will give your character 15,000 noah
ROB_ITEM
Will delete the item specified from the inventory.
Use: E ROB_ITEM ItemIDHere ; Example : E ROB_ITEM 10100000
GIVE_ITEM
Will give the item specified.
Use: E GIVE_ITEM ItemIDHere ; Example : E GIVE_ITEM 10100000 1
RUN_EVENT
[i]RUN_EVENT Is mainly used for linking one event into multiple ones, will be shown in detail more below.[i]
Use: E RUN_EVENT 30601



IF / Check Functions
CHECK_EMPTY_SLOT
Used to check if you have an empty slot in your inventory.
Use: E CHECK_EMPTY_SLOT 0 ; Doing this will check if your inventory is full.
CHECK_STAT_TOTAL
Will let you check how many stat points a person has between two numbers.
Use: A CHECK_STAT_TOTAL 300 500 ; Will check if the char has between 300 and 500 points
CHECK_SKILL_TOTAL
Will let you check how many stat points a person has between two numbers.
Use: A CHECK_SKILL_TOTAL 100 110 ; Will check to see if the person has skill points between 100 and 110.
CHECK_MANNER
Used for checking if the user has a certain amount of manner.
Use: A CHECK_MANNER 500 2100000000 ; Checks if you have at-least 500 Manner points.
CHECK_DICE
Used in conjunction with the ROLL_DICE command, you use the CHECK_DICE to tell it what to do when it lands on that certain dice number
Use: A CHECK_DICE 1 ; If dice is 1, do this ..
CHECK_CLAN_GRADE
Used to check the clan's grade, can check if they're between Grade 1-3, Grade 4-5 etc.
Use: A CHECK_CLAN_GRADE 1 3 ; Checks if the clan is between grade 1 and 3.
CHECK_LOYALTY
Checks if you have the right amount of loyalty between the two numbers specified
Use: A CHECK_LOYALTY 100 1000 ; Checks if you have between 100 and 1000 Loyalty.
CHECK_NOCLASS
Checks to see if you're not in the specified classes
Use: A CHECK_NOCLASS 107 207 -1 -1 -1 -1 ; Now, the -1's mean a value that's not going to be used, there are 6 possible values for this, and we only specified 2, so we put a -1 where we aren't using anything. This is basically saying, It's checking if you're not a Human or Orc Rogue that's not mastered.
CHECK_PROMOTION_ELIGIBLE
Checks to see if you're eligible to get your masters quest.
Use: A CHECK_PROMOTION_ELIGIBLE ;
CHECK_EXIST_EVENT
You can use this to check if the quest has been ever been started, been accepted and not finished, or has been completed.
Use:
A CHECK_EXIST_EVENT 30 0 ; If event 30 hasn't been received/started, continue..
A CHECK_EXIST_EVENT 30 1 ; If the event 30 has been received, but not finished, continue..
A CHECK_EXIST_EVENT 30 2 ; Checks to see if the event 30 has been finished or not.

CHECK_NATION
Used to check a characters nation.
Use: A CHECK_NATION 1 ; Checks to see if the character is an orc, swap the 1 out for a 2 for checking if the character is a Human.
CHECK_NOAH
Used to check if the character has noah between the two numbers specified
Use: A CHECK_NOAH 25000 2100000000 ; Will check to see if you have atleast 25,000 Noahs.
HOWMUCH_ITEM
Used to check how much of an item you have, only works for stackable items.
Use: A HOWMUCH_ITEM 379007000 0 20 ; Will check if you have between 0 and 20 of the Item : 379007000.
A HOWMUCH_ITEM 379007000 21 9999 ; Will check if you have atleast 21 of the item.

CHECK_LV
Used to check if you're between the levels specified
Use: A CHECK_LV 1 9 ; Will check if you're between level 1 through 9.
CHECK_WEIGHT
Used to check if you have enough room for the item you want to give.
Use: A CHECK_WEIGHT 379007000 10 ; Will check if you have enough room for that item with a stacksize of 10.
CHECK_CLASS
Used to check if you're in the specified classes, can specify up to 6 classes.
Use: A CHECK_CLASS 102 107 108 202 207 208 ; Checks if you're a Beginner Rogue, Rogue, or a Mastered rogue.
A CHECK_CLASS 107 207 -1 -1 -1 -1 ; Checks if you are a Rogue, Orc or Karus. Since only 2 of the slots are used, we place four -1's.

CHECK_NOEXIST_ITEM
Used to check if you don't have an item.
Use: A CHECK_NOEXIST_ITEM 205002007 1 ; Checks if you don't have the item : 205002007
CHECK_EXIST_ITEM
Used to check if you have an item.
Use: A CHECK_EXIST_ITEM 205002007 1 ; Checks if you have the item : 205002007



If I missed some of them above, that means I haven't taken the time to figure out what it does. I'm sure if you spend some time on it you'll be able to figure them all out, but I really couldn't care too much about the rest to bother.

3 回复

cege
2009-10-31 23:16:47
楼主
点击查看详情
Examples and Explanations

Okay, lets say we want to make a NPC where you can turn in a Fragment in for some Bifrost items. I'm only going to use one fragment for this demonstration to save me some time and trouble. I'm going to try and explain everything in detail and hopefully you'll be able to understand how everything works.

Originally Posted by IceMan
First, the item IDs that we'll be using.

389160000         Fragment of Arrogance

119301000         Sherion
159301000         Lugias
139301000         Avedon
169301000         Helenid Cross Bow
189601000         Hell Blood
189602000         Garp
189603000         Elysium
199301000         Holy Animor

EVENT 22001
E SELECT_MSG 16084 61000 60000 42010 60001 42020 60002 42030 60003 22040 60004 42050 60005 42060 60006 42070 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ;
END


Now, this is our menu for the Chaotic Generator. First things first, to link a NPC to a certain part of EVT coding, it starts with the EVENT number. In this case, 22001 is linked to 137 byType(In your K_NPC table). There is no real link as to why it's like that, I believe we found out that it was hard-coded into the ebenezer. Now lets move on to the Menu(SELECT_MSG), I'll explain what each one is.

16084 - The ID Number of the NPC(It doesn't need to be correct, it's just for notes.)
61000 - The main text you find at the top when you open a menu, this information is located in 'Quest_Talk_us.tbl'
60000 - The first button in the menu, this is located in 'Quest_Menu_us.tbl'
42010 - This is the first event number you want to have, the menu button you just made above refers to this event.
60001 - This is the second button on the menu, again located in 'Quest_Menu_us.tbl'
52020 - Again, this is the event's number and it refers to the button you made above.
Basically, the same thing keeps going on until you have the whole menu finished.

Now, you should have your Quest_Menu_us.tbl looking something like this now..(Note, we'll only be using the Fragment of Avarice in this guide, but I figured I'd show you how it would be done if you were to make the full thing.)

60000        Fragment of Arrogance
60001        Fragment of Gluttony
60002        Fragment of Rage
60003        Fragment of Sloth
60004        Fragment of Lechery
60005        Fragment of Jealousy
60006        Fragment of Avarice

And your Quest_Talk_us.tbl looking like this.

61000        Welcome to the Chaotic Generator, you can turn in your fragments here for a chance at getting Bifrost Items.
61001 Sorry, you don't have the required fragment.


Okay, the tbls are set, now lets do the database-sided stuff. We'll need to add an exchange into the ITEM_EXCHANGE table.

Your table should look something like below :

Quote:
40001        15012        Chaotic Generator Sherion 101        389160000        1        0        0        0        0        0        0        0        0        119301000        1000        111210001        2000 111110001        2000        246001001        2000        246002001        3000
40002        15012        Chaotic Generator Lugias 101        389160000        1        0        0        0        0        0        0        0        0        159301000        1000        151210001        2000 151110001        2000        206001001        2000        206002001        3000
40003        15012        Chaotic Generator Avedon 101        389160000        1        0        0        0        0        0        0        0        0        119301000        1000        111210001        2000 111110001        2000        246001001        2000        246002001        3000
40004        15012        Chaotic Generator Helenid Cross Bow 101        389160000        1        0        0        0        0        0        0        0        0        169301000        1000        168410001 2000        168310001        2000        246001001        2000        246002001        3000
40005        15012        Chaotic Generator Hell Blood 101        389160000        1        0        0        0        0        0        0        0        0        189601000        1000        181110001        2000 181010001        2000        266001001        2000        266002001        3000
40006        15012        Chaotic Generator Garp 101        389160000        1        0        0        0        0        0        0        0        0        189602000        1000        181110001        2000 181010001        2000        266001001        2000        266002001        3000
40007        15012        Chaotic Generator Elysium 101        389160000        1        0        0        0        0        0        0        0        0        189603000        1000        181110001        2000 181010001        2000        266001001        2000        266002001        3000


Now, the database is done, the TBLs are done, now we need to do the EVT part of it all.

So, first we start off with the Menu.

EVENT 22001
E SELECT_MSG 16084 61000 60000 42010 60001 42020 60002 42030 60003 22040 60004 42050 60005 42060 60006 42070 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ;
END


Now, 42010 is the Fragment of Avarice, so we'll only be doing that one for now.

EVENT 42010 ; Fragment of Avarice
E RUN_EVENT 42011 ; The RUN_EVENT's basically make one event expand into many others, and links them together, great for checking multiple things.
E RUN_EVENT 42012
END

EVENT 42011 ; First we'll check to see if the item doesn't exist, if it doesn't, End, and display a message.
A HOWMUCH_ITEM 389160000 0 0
E SAY -1 -1 61001 -1 -1 -1 -1 -1 -1 -1
E RETURN
END

EVENT 42012 ; Now we'll check to see if they have a fragment, if you have atleast 1 fragment, roll the dice and run the events.
A HOWMUCH_ITEM 389160000 1 9999
E ROLL_DICE 7 ; Roll a dice 7 times(The number of items we have)
E RUN_EVENT 42013
E RUN_EVENT 42014
E RUN_EVENT 42015
E RUN_EVENT 42016
E RUN_EVENT 42017
E RUN_EVENT 42018
E RUN_EVENT 42019
END

EVENT 42013 ; DICE FOR SHERION
A CHECK_DICE 1
E RUN_EXCHANGE 40001
END

EVENT 42014 ; DICE FOR LUGIAS
A CHECK_DICE 2
E RUN_EXCHANGE 40002
END

EVENT 42015 ; DICE FOR AVEDON
A CHECK_DICE 3
E RUN_EXCHANGE 40003
END

EVENT 42016 ; DICE FOR HELENOID
A CHECK_DICE 4
E RUN_EXCHANGE 40004
END

EVENT 42017 ; DICE FOR HELL BLOOD
A CHECK_DICE 5
E RUN_EXCHANGE 40005
END

EVENT 42018 ; DICE FOR GARP
A CHECK_DICE 6
E RUN_EXCHANGE 40006
END

EVENT 42019 ; DICE FOR ELYSIUM
A CHECK_DICE 7
E RUN_EXCHANGE 40007
END


That's it for that script, you should now be able to finish a Chaotic Generator for your server.




Now I'm just going to make some random examples to explain a few of the functions

Just a simple script below, checks if you have an item, then gives you exp.




Originally Posted by IceMan
TBLs should look something like below :

Quest_Talk_us.tbl
62000        Quest NPC information here.
62003        You'll need to bring me 10 crystals, 10 opals, and 10 crude sapphires and you'll be rewarded with 10,000,000 Experience Points.
62009        Sorry, you've already completed this quest.
62010        Sorry, you don't have the required Items.
62011        You have to accept the quest before finishing your quest.


Quest_Menu_us.tbl

61000        Quest 1
61001        Quest 2
61002        Quest 3
61003        Quest 4
61004        Quest 5
61005        Quest 6
61006        Quest 7
61007        Accept Quest
61008        Finish Quest

Now, again since this is just an example, I'm only going to make one quest.

EVENT 22001
E SELECT_MSG 16084 62000 61000 45010 61001 45020 61002 45030 61003 45040 61004 45050 61005 45060 61006 45070 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ;
END

EVENT 45020
E SELECT_MSG 16084 62000 61007 45021 61008 45022 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END

EVENT 45021 ; Accepting the quest
E RUN_EVENT 43001
E RUN_EVENT 43002
END

EVENT 43001 ;; event 30 is one of the beginner quests, Worms, or bandicoots.. I forget. You can disable those and just make your own quests in it's place.
A CHECK_EXIST_EVENT 30 0 ; Check to see if you haven't Accepted the quest, or completed it.
E SAVE_EVENT 30 1
E SAY -1 -1 62003 -1 -1 -1 -1 -1 -1 -1
E RETURN
END

EVENT 43002 ; Check to see if you've already completed the quest
A CHECK_EXIST_EVENT 30 2
E SAY -1 -1 62009 -1 -1 -1 -1 -1 -1 -1
E RETURN
END

EVENT 45022 ; Turning in the quest and getting reward.
E RUN_EVENT 43004
E RUN_EVENT 43005
E RUN_EVENT 43006
END

EVENT 43004; Check to see if they've completed the quest yet
A CHECK_EXIST_EVENT 30 2
E SAY -1 -1 62009 -1 -1 -1 -1 -1 -1 -1
E RETURN
END

EVENT 43005
A CHECK_EXIST_EVENT 30 1
A HOWMUCH_ITEM 389074000 0 9
A HOWMUCH_ITEM 389075000 0 9
A HOWMUCH_ITEM 389076000 0 9
E SAY -1 -1 62010 -1 -1 -1 -1 -1 -1 -1
E RETURN
END

EVENT 43006
A CHECK_EXIST_EVENT 30 1
A HOWMUCH_ITEM 389074000 10 9999
A HOWMUCH_ITEM 389075000 10 9999
A HOWMUCH_ITEM 389076000 10 9999
E EXP_CHANGE 10000000
END

EVENT 43007
A CHECK_EXIST_EVENT 30 0
E SAY -1 -1 62011 -1 -1 -1 -1 -1 -1 -1
E RETURN
END
v123
2009-11-1 14:12:26
不懂看。。
214550663
2009-11-9 21:56:46
我真的觉得这个不错。感谢LZ分享
高级模式
游客