|
You last visited: Today at 11:21
Advertisement
How to have more than 1 So-Ok event, modify its rewards and activate bonus experience
Discussion on How to have more than 1 So-Ok event, modify its rewards and activate bonus experience within the SRO PServer Guides & Releases forum part of the SRO Private Server category.
02/21/2021, 19:34
|
#1
|
elite*gold: 0
Join Date: Aug 2013
Posts: 1,532
Received Thanks: 835
|
How to have more than 1 So-Ok event, modify its rewards and activate bonus experience
Hi.
So recently I found a way to add multiple So-Ok events at once and I decided to share it.
I haven't seen any tutorial on this subject so I decided to make one.
I know I'm a slowpoke with this one and it's kinda useless, but I think it's a fun thing to have and if somebody benefits from this I'm more than happy.
1. What are So-Ok events ?
From time to time Joymax has been releasing these types of events, located at So-OK in every town.
Whether it's to celebrate a holiday or an event, something was almost always there at So-Ok.
Today I'll only be focusing on Jewel Box events because other events seem to be buggy and I'm no expert on lua. And I also haven't tried them, so feel free to experiment.
You can get really creative and use other .lua scripts, perhaps make a daily event? Like the Lamp quest from iSRO.
It's usually collect and turn in the items to redeem your prize.
I'll provide the list with all the vSRO events down there. (EventList.txt)
2. Can you modify the rewards?
Yes.
However the event itself seems to be hard-coded.
Here's how to modify the rewards inside the .lua :
Basically, item code from RefObjCommon (itemdataxxx.txt, client side).
So, the reason the last 2 reward items are the same is because I had been testing to see if I get the last reward item for half a day and I couldn't obtain it so I think it's bugged.
The rest of the text from the .lua is pretty self explanatory.
This is the win rate for the last but one reward item: 9900
I find that 9900 is the sweet spot when it comes to rewarding the last but one item.
However, in a server with thousands of people you might want to up that number a litte bit more.
The original value is 9990 which is ridiculously high.
3. How to duplicate and have more than 1 event ?
Well, you could decompile the .sct itself. However, I have found that it's messing up with your .sct and .lua script.
I have attached the whole script folder (JewelBoxEventTakenFromATurkishWebsite.rar) so that you can modify whatever quest and event you'd like to. You can find the script folder pretty much everywhere.
Now, let's go back to EventList.txt (textevent.txt from your media) and pick one.
110221. Why? Because I wanted to add a Jewel Box event to my server and this one seems to be what I'm looking for.
Of course, you can switch things up and try with other events, too. Maybe they work.
But there's one issue, 110221 is already used on my first event !
In my case, I'll pick another Jewel Box event :
I want 2 Jewel Box events so what can I do ?
Copy-paste the @SN_QEV_110221.lua inside the folder, and rename it to another event from the event list. In my case, my second file will be called @SN_QEV_081217.lua
Open it and replace (CTRL+H in notepad++) 110221 with your own unique number.
Whatever number you like. I have 666 and 777 on my server.
However, the EventID (10185) has to be different because I want a 2nd event, remember?
So I'm going to replace 10185 to 081217
My first event (EventID from the .lua) is 10185 so I will look for another Jewel Box event code. In this case I have this 081217 from the EventList
So now 10185 and 081217 are my 2 Jewel Box events.
Lastly, open @EventList.lua and add them there :
After you're done with all of this, run make_event.bat and make_eventlist.bat and move your files to ServerFolder\Script\VIETNAM
4. NPC Text.
Open your .lua event.
This is the part that it has to deal with the text itself.
As you can see.
The list goes on, you get the idea. Some text aspects of this NPC also come from textquest_otherstring, textquest_queststring and textquest_speech&name.
Also, add an \n to have some line breaks so your text doesn't look clogged up.
Results on my own server (I have 3 collect events that reward you with items ranging from experience/skill experience scrolls, to useful things to help one level up) :


My events :
In case the link above shuts down:
SN_QEV_081217.lua
PHP Code:
function QEV_CH_EVENT_KISAENG_777()
EventID = 81217
SetEventOne(EventID, "SN_QEV_CH_EVENT_KISAENG_777", 1, 1, 1)
SetEventTwo(2, "SN_TALK_QEV_CH_EVENT_KISAENG_090716_B", "SN_TALK_COMMON_EXIT")
NPC_COUNT = 1
LuaInsertNpc(NPC_COUNT, "NPC_SD_M_AREA_EYPTSOLIDER_1")
InsertPayItemCodeName(13, "ITEM_EVENT_HWAN_POTION", "ITEM_ETC_E090930_EVATION_SUPER_SCROLL", "ITEM_MALL_RESURRECTION_100P_SCROLL", "ITEM_EVENT_SILVER_TIME_SERVICE_TICKET_1D", "ITEM_EVENT_SKILL_SILVER_TIME_SERVICE_TICKET_1D", "ITEM_COS_C_RUDOLPH", "ITEM_ETC_E050314_MINT", "ITEM_MALL_DAMAGE_INC_ABS_20P_SCROLL", "ITEM_MALL_REVERSE_RETURN_SCROLL", "ITEM_MALL_LOTTERYX1", "ITEM_ETC_E090930_HIT_SUPER_SCROLL", "ITEM_ETC_ARCHEMY_REINFORCE_PROB_UP_B_09", "ITEM_ETC_ARCHEMY_REINFORCE_PROB_UP_B_09")
InsertPayItemRatio(13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
LuaInsertDropItem(1, "ITEM_ETC_E071225_SANTASOCKS", 1.5)
InsertMenuStringList("NPC_SD_M_AREA_EYPTSOLIDER_1", 5, "EVENT_MENUSTRING_GREETING", "SN_NPC_SD_M_AREA_EYPTSOLIDER_1_QS", "EVENT_MENUSTRING_REQUEST_ACCEPT_QUEST", "SN_TALK_QEV_CH_EVENT_KISAENG_090716_A", "EVENT_MENUSTRING_NOT_ACHIEVED", "SN_TALK_QEV_CH_EVENT_KISAENG_090716_E", "EVENT_MENUSTRING_INVENTORY_FULL", "SN_TALK_QEV_CH_EVENT_KISAENG_090716_D", "EVENT_MENUSTRING_ACHIEVED", "SN_TALK_QEV_CH_EVENT_KISAENG_090716_C")
CONVERSATION_SINGLE = 0
LuaInsertFunctionStringList(1, "CONVERSATION_SINGLE", "KISAENG_777_Conversation")
end
function KISAENG_777_ItemCheck()
if 0 < LuaEventInQuireSameItem(0, "ITEM_ETC_E071225_SANTASOCKS", INQUIRE_SAMEITEM_OP_COUNT_FIRST_ITEM, -1) then
return 0
else
return 1
end
end
function KISAENG_777_ItemDel()
if 0 < LuaEventInQuireSameItem(0, "ITEM_ETC_E071225_SANTASOCKS", INQUIRE_SAMEITEM_OP_COUNT_ALL_SAMEITEM, 0) then
slot = LuaEventInQuireSameItem(0, "ITEM_ETC_E071225_SANTASOCKS", INQUIRE_SAMEITEM_OP_FIND_FIRST_SLOT, 0)
LuaDelItem_EXT(0, slot, 1, SYSOP_REASON_Event, 0)
end
end
function KISAENG_777_GiveEventRewardItem()
bGiveItemNum = 0
btErrorCode = 0
SYSOP_REASON_Event = 0
EventID = 81217
Gender = 0
if LuaGetPlayerGender() == 0 then
Gender = 1
end
RewardItemMax = 13
RewardItemCount = {
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1
}
RewardItemRatio = {
0,
800,
1600,
2400,
3200,
4000,
4800,
5600,
6400,
7200,
8000,
9990
}
nEmptySlotCount = LuaGetCountEmptyInventory(0, -1)
if 1 > nEmptySlotCount then
return
else
for j = 1, nEmptySlotCount do
if KISAENG_777_ItemCheck() == 0 then
nGive = LuaRanged_rand_n(1, 10000)
if nGive > 9900 then
LuaAddItem_EXT(EventID, 0, RewardItemCount[i], SYSOP_REASON_Event, FALSE, FALSE, 12 + Gender)
else
for i = 1, RewardItemMax - 2 do
if nGive > RewardItemRatio[i] and nGive <= RewardItemRatio[i + 1] then
LuaAddItem_EXT(EventID, 0, RewardItemCount[i], SYSOP_REASON_Event, FALSE, FALSE, i)
KISAENG_777_ItemDel()
end
end
end
else
break
end
end
end
end
function KISAENG_777_Conversation(EventID_Sub, CharName)
CONVERSATION_START = 0
CONVERSATION_RESPONSE = 2
EventID = 81217
EventID_Message = EventID_Sub
NpcHandlerNum = LuaNpcHandlerNum()
if CONVERSATION_START == EventID_Sub and CharName == "NPC_SD_M_AREA_EYPTSOLIDER_1" then
CurPage = 1
LuaSetCurPage(CurPage)
CurString = 5
SelectionList_CommonIndex = 0
Button = 2
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
end
if CONVERSATION_RESPONSE == EventID_Sub then
if LuaGetCurPage() == 1 then
MenuOffset = LuaGetEventMenuResponse()
MenuOffset = MenuOffset - TALK_RESPONSE_LIST_BASE
if MenuOffset == 0 then
if KISAENG_777_ItemCheck() == 0 then
if 0 < LuaGetCountEmptyInventory(0, -1) then
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 3
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
KISAENG_777_GiveEventRewardItem()
return
else
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 2
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
end
else
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 1
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
end
elseif MenuOffset == 1 then
LuaTerminateMenu()
return
end
else
LuaTerminateMenu()
return
end
end
end
SN_QEV_090317.lua
PHP Code:
function QEV_CH_EVENT_KISAENG_666()
EventID = 90317
SetEventOne(EventID, "SN_QEV_CH_EVENT_KISAENG_666", 1, 1, 1)
SetEventTwo(2, "SN_TALK_QEV_CH_EVENT_KISAENG_090715_B", "SN_TALK_COMMON_EXIT")
NPC_COUNT = 1
LuaInsertNpc(NPC_COUNT, "NPC_CH_EVENT_KISAENG1")
InsertPayItemCodeName(13, "ITEM_ETC_100EXP_BASIC", "ITEM_ETC_50EXP_BASIC", "ITEM_ETC_E080723_SKILL_EXP_5", "ITEM_ETC_E080723_SKILL_EXP_10", "ITEM_ETC_E080723_SKILL_EXP_15", "ITEM_ETC_E080723_SKILL_EXP_20", "ITEM_MALL_MOVE_SPEED_UP_50", "ITEM_MALL_REVERSE_RETURN_SCROLL", "ITEM_ETC_JAPAN_CAMPAIGN_GOLD_TIME_3D", "ITEM_ETC_JAPAN_CAMPAIGN_SKILL_GOLD_TIME_3D", "ITEM_MALL_HP_INC_2000_POTION", "ITEM_COS_P_WINTER_SNOWMAN_SCROLL", "ITEM_COS_P_WINTER_SNOWMAN_SCROLL")
InsertPayItemRatio(13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
LuaInsertDropItem(1, "ITEM_ETC_E090121_LUCKYBOX", 1.5)
InsertMenuStringList("NPC_CH_EVENT_KISAENG1", 5, "EVENT_MENUSTRING_GREETING", "SN_NPC_CH_EVENT_KISAENG1_QS", "EVENT_MENUSTRING_REQUEST_ACCEPT_QUEST", "SN_TALK_QEV_CH_EVENT_KISAENG_090715_A", "EVENT_MENUSTRING_NOT_ACHIEVED", "SN_TALK_QEV_CH_EVENT_KISAENG_090715_E", "EVENT_MENUSTRING_INVENTORY_FULL", "SN_TALK_QEV_CH_EVENT_KISAENG_090715_D", "EVENT_MENUSTRING_ACHIEVED", "SN_TALK_QEV_CH_EVENT_KISAENG_090715_C")
CONVERSATION_SINGLE = 0
LuaInsertFunctionStringList(1, "CONVERSATION_SINGLE", "KISAENG_666_Conversation")
end
function KISAENG_666_ItemCheck()
if 0 < LuaEventInQuireSameItem(0, "ITEM_ETC_E090121_LUCKYBOX", INQUIRE_SAMEITEM_OP_COUNT_FIRST_ITEM, -1) then
return 0
else
return 1
end
end
function KISAENG_666_ItemDel()
if 0 < LuaEventInQuireSameItem(0, "ITEM_ETC_E090121_LUCKYBOX", INQUIRE_SAMEITEM_OP_COUNT_ALL_SAMEITEM, 0) then
slot = LuaEventInQuireSameItem(0, "ITEM_ETC_E090121_LUCKYBOX", INQUIRE_SAMEITEM_OP_FIND_FIRST_SLOT, 0)
LuaDelItem_EXT(0, slot, 1, SYSOP_REASON_Event, 0)
end
end
function KISAENG_666_GiveEventRewardItem()
bGiveItemNum = 0
btErrorCode = 0
SYSOP_REASON_Event = 0
EventID = 90317
Gender = 0
if LuaGetPlayerGender() == 0 then
Gender = 1
end
RewardItemMax = 13
RewardItemCount = {
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1
}
RewardItemRatio = {
0,
800,
1600,
2400,
3200,
4000,
4800,
5600,
6400,
7200,
8000,
9990
}
nEmptySlotCount = LuaGetCountEmptyInventory(0, -1)
if 1 > nEmptySlotCount then
return
else
for j = 1, nEmptySlotCount do
if KISAENG_666_ItemCheck() == 0 then
nGive = LuaRanged_rand_n(1, 10000)
if nGive > 9900 then
LuaAddItem_EXT(EventID, 0, RewardItemCount[i], SYSOP_REASON_Event, FALSE, FALSE, 12 + Gender)
else
for i = 1, RewardItemMax - 2 do
if nGive > RewardItemRatio[i] and nGive <= RewardItemRatio[i + 1] then
LuaAddItem_EXT(EventID, 0, RewardItemCount[i], SYSOP_REASON_Event, FALSE, FALSE, i)
KISAENG_666_ItemDel()
end
end
end
else
break
end
end
end
end
function KISAENG_666_Conversation(EventID_Sub, CharName)
CONVERSATION_START = 0
CONVERSATION_RESPONSE = 2
EventID = 90317
EventID_Message = EventID_Sub
NpcHandlerNum = LuaNpcHandlerNum()
if CONVERSATION_START == EventID_Sub and CharName == "NPC_CH_EVENT_KISAENG1" then
CurPage = 1
LuaSetCurPage(CurPage)
CurString = 5
SelectionList_CommonIndex = 0
Button = 2
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
end
if CONVERSATION_RESPONSE == EventID_Sub then
if LuaGetCurPage() == 1 then
MenuOffset = LuaGetEventMenuResponse()
MenuOffset = MenuOffset - TALK_RESPONSE_LIST_BASE
if MenuOffset == 0 then
if KISAENG_666_ItemCheck() == 0 then
if 0 < LuaGetCountEmptyInventory(0, -1) then
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 3
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
KISAENG_666_GiveEventRewardItem()
return
else
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 2
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
end
else
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 1
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
end
elseif MenuOffset == 1 then
LuaTerminateMenu()
return
end
else
LuaTerminateMenu()
return
end
end
end
SN_QEV_110221.lua
PHP Code:
function QEV_CH_EVENT_KISAENG_110221()
EventID = 10185
SetEventOne(EventID, "SN_QEV_CH_EVENT_KISAENG_110221", 1, 1, 1)
SetEventTwo(2, "SN_TALK_QEV_CH_EVENT_KISAENG_090714_B", "SN_TALK_COMMON_EXIT")
NPC_COUNT = 1
LuaInsertNpc(NPC_COUNT, "NPC_CH_EVENT_KISAENG1")
InsertPayItemCodeName(13, "ITEM_ETC_E080723_HPMP_1000", "ITEM_EVENT_HP_INC_2800_POTION", "ITEM_EVENT_MP_INC_2800_POTION", "ITEM_EVENT_HP_INC_4100_POTION", "ITEM_EVENT_MP_INC_4100_POTION", "ITEM_ETC_E080723_MENTAL_SCROLL", "ITEM_MALL_REPAIR_HAMMER", "ITEM_ETC_ARCHEMY_MAGICSTONE_STR_09", "ITEM_ETC_ARCHEMY_MAGICSTONE_INT_09", "ITEM_ETC_E041225_CANDY_RED", "ITEM_ETC_E041225_CANDY_BLUE", "ITEM_COS_P_EXTENSION", "ITEM_COS_P_EXTENSION")
InsertPayItemRatio(13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
LuaInsertDropItem(1, "ITEM_ETC_E050618_TREASUREBOX", 1.5)
InsertMenuStringList("NPC_CH_EVENT_KISAENG1", 5, "EVENT_MENUSTRING_GREETING", "SN_NPC_CH_EVENT_KISAENG1_QS", "EVENT_MENUSTRING_REQUEST_ACCEPT_QUEST", "SN_TALK_QEV_CH_EVENT_KISAENG_090714_A", "EVENT_MENUSTRING_NOT_ACHIEVED", "SN_TALK_QEV_CH_EVENT_KISAENG_090714_E", "EVENT_MENUSTRING_INVENTORY_FULL", "SN_TALK_QEV_CH_EVENT_KISAENG_090714_D", "EVENT_MENUSTRING_ACHIEVED", "SN_TALK_QEV_CH_EVENT_KISAENG_090714_C")
CONVERSATION_SINGLE = 0
LuaInsertFunctionStringList(1, "CONVERSATION_SINGLE", "KISAENG_110221_Conversation")
end
function KISAENG_110221_ItemCheck()
if 0 < LuaEventInQuireSameItem(0, "ITEM_ETC_E050618_TREASUREBOX", INQUIRE_SAMEITEM_OP_COUNT_FIRST_ITEM, -1) then
return 0
else
return 1
end
end
function KISAENG_110221_ItemDel()
if 0 < LuaEventInQuireSameItem(0, "ITEM_ETC_E050618_TREASUREBOX", INQUIRE_SAMEITEM_OP_COUNT_ALL_SAMEITEM, 0) then
slot = LuaEventInQuireSameItem(0, "ITEM_ETC_E050618_TREASUREBOX", INQUIRE_SAMEITEM_OP_FIND_FIRST_SLOT, 0)
LuaDelItem_EXT(0, slot, 1, SYSOP_REASON_Event, 0)
end
end
function KISAENG_110221_GiveEventRewardItem()
bGiveItemNum = 0
btErrorCode = 0
SYSOP_REASON_Event = 0
EventID = 10185
Gender = 0
if LuaGetPlayerGender() == 0 then
Gender = 1
end
RewardItemMax = 13
RewardItemCount = {
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1
}
RewardItemRatio = {
0,
800,
1600,
2400,
3200,
4000,
4800,
5600,
6400,
7200,
8000,
9990
}
nEmptySlotCount = LuaGetCountEmptyInventory(0, -1)
if 1 > nEmptySlotCount then
return
else
for j = 1, nEmptySlotCount do
if KISAENG_110221_ItemCheck() == 0 then
nGive = LuaRanged_rand_n(1, 10000)
if nGive > 9900 then
LuaAddItem_EXT(EventID, 0, RewardItemCount[i], SYSOP_REASON_Event, FALSE, FALSE, 12 + Gender)
else
for i = 1, RewardItemMax - 2 do
if nGive > RewardItemRatio[i] and nGive <= RewardItemRatio[i + 1] then
LuaAddItem_EXT(EventID, 0, RewardItemCount[i], SYSOP_REASON_Event, FALSE, FALSE, i)
KISAENG_110221_ItemDel()
end
end
end
else
break
end
end
end
end
function KISAENG_110221_Conversation(EventID_Sub, CharName)
CONVERSATION_START = 0
CONVERSATION_RESPONSE = 2
EventID = 10185
EventID_Message = EventID_Sub
NpcHandlerNum = LuaNpcHandlerNum()
if CONVERSATION_START == EventID_Sub and CharName == "NPC_CH_EVENT_KISAENG1" then
CurPage = 1
LuaSetCurPage(CurPage)
CurString = 5
SelectionList_CommonIndex = 0
Button = 2
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
end
if CONVERSATION_RESPONSE == EventID_Sub then
if LuaGetCurPage() == 1 then
MenuOffset = LuaGetEventMenuResponse()
MenuOffset = MenuOffset - TALK_RESPONSE_LIST_BASE
if MenuOffset == 0 then
if KISAENG_110221_ItemCheck() == 0 then
if 0 < LuaGetCountEmptyInventory(0, -1) then
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 3
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
KISAENG_110221_GiveEventRewardItem()
return
else
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 2
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
end
else
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 1
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
end
elseif MenuOffset == 1 then
LuaTerminateMenu()
return
end
else
LuaTerminateMenu()
return
end
end
end
5. How to activate bonus experience time depending on the hours set by yourself.
The event is pretty straight forward : between X and Y you can get more experience.
1. Remove the dashes in front of the event from server.cfg
2. Set the experience bonus.
3. Schedule it in SMC.
Enable it:
How much bonus experience to give (Edit: This works ONLY FOR THE WINTER EVENT, sorry) :
Schedule it :
Check if it works : Schedule it to 12:00 PM for example, but make sure your server is up and running BEFORE 12:00 PM to see if the changes have taken effect.
I cannot have it displayed in game, I don't know the lines responsible for announcing that the event has started, perhaps somebody could post them.
Screenshot, .txt files and the script folder here:
|
|
|
02/21/2021, 19:44
|
#2
|
elite*gold: 0
Join Date: Feb 2012
Posts: 59
Received Thanks: 4
|
Holy moly... Event abuser... let's goooo!
Really appreciate this guide!
|
|
|
02/21/2021, 21:45
|
#3
|
elite*gold: 0
Join Date: Aug 2014
Posts: 667
Received Thanks: 568
|
much appreciated
|
|
|
02/21/2021, 22:24
|
#4
|
elite*gold: 0
Join Date: Nov 2020
Posts: 170
Received Thanks: 61
|
Good job
|
|
|
02/22/2021, 01:58
|
#5
|
elite*gold: 0
Join Date: Oct 2019
Posts: 195
Received Thanks: 81
|
Looks great , thanks for sharing
|
|
|
02/22/2021, 02:04
|
#6
|
elite*gold: 150
Join Date: Jan 2020
Posts: 268
Received Thanks: 283
|
thanks for sharing <3
|
|
|
02/23/2021, 14:19
|
#7
|
elite*gold: 0
Join Date: May 2017
Posts: 1,081
Received Thanks: 224
|
Nice and thanks for share it
|
|
|
02/24/2021, 16:07
|
#8
|
elite*gold: 0
Join Date: May 2020
Posts: 60
Received Thanks: 33
|
good topic and thanks for it <3
|
|
|
07/07/2021, 09:22
|
#9
|
elite*gold: 0
Join Date: Aug 2013
Posts: 1,532
Received Thanks: 835
|
Thanks.
I wish more people would use the So-Ok events :/
|
|
|
07/08/2021, 07:51
|
#10
|
elite*gold: 0
Join Date: Jan 2009
Posts: 972
Received Thanks: 453
|
Nice!
Also there are some tables that you can play with
1. _RefEventReward
2._RefEventRewardItems
_RefEventReward
Note :EventID must be unique and shouldn't be used in any other .lua file otherwise won't work
_RefEventRewardItems
NOTE:
1. the ID must be the same in .lua file
2. EventCodeName must be the same as .lua quest name
3. ItemCodeName - refObjCommon item codename
4. PayCount - if the item is stackable f.e potions, you can set the stack to the limit that you have in refObjItem
5. AchieveRatio - no idea how that works
6. RentItemCodeName - you can set items from RefRentItem table, which can expire if you set a time and will be deleted by the server
7. IsRecharging - means if ( as in my image it's set to 500) the item is consumed, if you talk again to the quest npc , let's say you consumed 50 potions, it will give it back, if you don't consume the item, you will get the error notice " couldn't receive the supply bla bla "
8 & 9. min / max lvl - if you set the min lvl to 50 , whoever is under lvl 50 , they won't be able to get the reward, or if you set the max lvl to 100 and the player is 101 , same error
about params I don't know what exactly they are , it's set to 0 , cuz there is "xxx"
if you set it to 1 , you have to fulfil also the second tab with a param ?
about .lua files , you can get it from any csro-r system , just extract the .sct files and recycle it
here is the lua quest code for that event :
Code:
function QEV_LEVEL_EU_POTION()
EventID = 40007
SetEventOne(EventID, "SN_QEV_LEVEL_EU_POTION", 1, 1, 0)
SetEventTwo(2, "SN_TALK_QEV_LEVEL_EU_POTION_B", "SN_TALK_COMMON_EXIT")
NPC_COUNT = 1
LuaInsertNpc(NPC_COUNT, "NPC_LEVEL_SUPPLIES_POTION_EU")
InsertMenuStringList("NPC_LEVEL_SUPPLIES_POTION_EU", 5, "EVENT_MENUSTRING_GREETING", "SN_NPC_LEVEL_SUPPLIES_POTION_EU_QS", "EVENT_MENUSTRING_REQUEST_ACCEPT_QUEST", "SN_TALK_QEV_LEVEL_EU_POTION_A", "EVENT_MENUSTRING_NOT_ACHIEVED", "SN_TALK_QEV_LEVEL_EU_POTION_E", "EVENT_MENUSTRING_INVENTORY_FULL", "SN_TALK_QEV_LEVEL_EU_POTION_D", "EVENT_MENUSTRING_ACHIEVED", "SN_TALK_QEV_LEVEL_EU_POTION_C")
CONVERSATION_SINGLE = 0
LuaInsertFunctionStringList(1, "CONVERSATION_SINGLE", "QEV_LEVEL_EU_POTION_Conversation")
end
function QEV_LEVEL_EU_POTION_Conversation(EventID_Sub, CharName)
CONVERSATION_START = 0
CONVERSATION_RESPONSE = 2
EventID = 40007
EventID_Message = EventID_Sub
NpcHandlerNum = LuaNpcHandlerNum()
if CONVERSATION_START == EventID_Sub then
if LuaGetPlayerLevel() > 100 then
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 1
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
else
CurPage = 3
LuaSetCurPage(CurPage)
LuaShowEventRewardWindow(CurPage, EventID, NpcHandlerNum)
end
end
if CONVERSATION_RESPONSE == EventID_Sub then
if LuaGetCurPage() == 3 then
LuabSetPayEvent(EventID)
return
else
LuaTerminateMenu()
return
end
end
end
eventList :
LuaInsertEvent(TYPE_ID, "Event.sct", "QEV_LEVEL_EU_POTION")
and you can get something like this
just use your creativity
you can restrict many things like : race , gender and class
|
|
|
07/08/2021, 09:06
|
#11
|
elite*gold: 0
Join Date: Aug 2013
Posts: 1,532
Received Thanks: 835
|
Quote:
Originally Posted by leo2111
Nice!
Also there are some tables that you can play with
1. _RefEventReward
2._RefEventRewardItems
_RefEventReward
Note :EventID must be unique and shouldn't be used in any .lua file otherwise won't work
_RefEventRewardItems
NOTE:
1. the ID must be the same in .lua file
2. EventCodeName must be the same as .lua quest name
3. ItemCodeName - refObjCommon item codename
4. PayCount - if the item is stackable f.e potions, you can set the stack to the limit that you have in refObjItem
5. AchieveRatio - no idea how that works
6. RentItemCodeName - you can set items from RefRentItem table, which can expire if you set a time and will be deleted by the server
7. IsRecharging - means if ( as in my image it's set to 500) the item is consumed, if you talk again to the quest npc , let's say you consumed 50 potions, it will give it back, if you don't consume the item, you will get the error notice " couldn't receive the supply bla bla "
8 & 9. min / max lvl - if you set the min lvl to 50 , whoever is under lvl 50 , they won't be able to get the reward, or if you set the max lvl to 100 and the player is 101 , same error
about params I don't know what exactly they are , it's set to 0 , cuz there is "xxx"
if you set it to 1 , you have to fulfil also the second tab with a param ?
about .lua files , you can get it from any csro-r system , just extract the .sct files and recycle it
here is the lua quest code for that event :
Code:
function QEV_LEVEL_EU_POTION()
EventID = 40007
SetEventOne(EventID, "SN_QEV_LEVEL_EU_POTION", 1, 1, 0)
SetEventTwo(2, "SN_TALK_QEV_LEVEL_EU_POTION_B", "SN_TALK_COMMON_EXIT")
NPC_COUNT = 1
LuaInsertNpc(NPC_COUNT, "NPC_LEVEL_SUPPLIES_POTION_EU")
InsertMenuStringList("NPC_LEVEL_SUPPLIES_POTION_EU", 5, "EVENT_MENUSTRING_GREETING", "SN_NPC_LEVEL_SUPPLIES_POTION_EU_QS", "EVENT_MENUSTRING_REQUEST_ACCEPT_QUEST", "SN_TALK_QEV_LEVEL_EU_POTION_A", "EVENT_MENUSTRING_NOT_ACHIEVED", "SN_TALK_QEV_LEVEL_EU_POTION_E", "EVENT_MENUSTRING_INVENTORY_FULL", "SN_TALK_QEV_LEVEL_EU_POTION_D", "EVENT_MENUSTRING_ACHIEVED", "SN_TALK_QEV_LEVEL_EU_POTION_C")
CONVERSATION_SINGLE = 0
LuaInsertFunctionStringList(1, "CONVERSATION_SINGLE", "QEV_LEVEL_EU_POTION_Conversation")
end
function QEV_LEVEL_EU_POTION_Conversation(EventID_Sub, CharName)
CONVERSATION_START = 0
CONVERSATION_RESPONSE = 2
EventID = 40007
EventID_Message = EventID_Sub
NpcHandlerNum = LuaNpcHandlerNum()
if CONVERSATION_START == EventID_Sub then
if LuaGetPlayerLevel() > 100 then
CurPage = 2
SelectionList_CommonIndex = 1
Button = 1
LuaSetCurPage(CurPage)
CurString = 1
LuaShowMenu(CurString, EventID, SelectionList_CommonIndex, Button, NpcHandlerNum)
return
else
CurPage = 3
LuaSetCurPage(CurPage)
LuaShowEventRewardWindow(CurPage, EventID, NpcHandlerNum)
end
end
if CONVERSATION_RESPONSE == EventID_Sub then
if LuaGetCurPage() == 3 then
LuabSetPayEvent(EventID)
return
else
LuaTerminateMenu()
return
end
end
end
eventList :
LuaInsertEvent(TYPE_ID, "Event.sct", "QEV_LEVEL_EU_POTION")
and you can get something like this

just use your creativity
you can restrict many things like : race , gender and class
|
Whoa, thanks a bunch!
This is going to open the door to a more interactive game-play (if only SRO p-server owners would implement it).
|
|
|
07/30/2021, 19:56
|
#12
|
elite*gold: 0
Join Date: Jul 2021
Posts: 3
Received Thanks: 0
|
Hi bro Im trying this event but I don't make. do you help me for this event my server?
|
|
|
07/30/2021, 20:16
|
#13
|
elite*gold: 0
Join Date: Aug 2013
Posts: 1,532
Received Thanks: 835
|
Quote:
Originally Posted by womentii
Hi bro Im trying this event but I don't make. do you help me for this event my server?
|
I'm sorry but I no longer deal with SRO anymore, however you have all of the info that you need in this thread.
What's your issue exactly?
|
|
|
07/30/2021, 20:23
|
#14
|
elite*gold: 0
Join Date: Jul 2021
Posts: 3
Received Thanks: 0
|
thanks for back answer me. I can't find the items you have added on my own server and I'm also wondering why you don't give the tasks as a txt. Currently, jewelbox and snowflake are running in my game. I want to add christmast and other events
|
|
|
07/31/2021, 06:26
|
#15
|
elite*gold: 0
Join Date: Aug 2013
Posts: 1,532
Received Thanks: 835
|
Quote:
Originally Posted by womentii
thanks for back answer me. I can't find the items you have added on my own server and I'm also wondering why you don't give the tasks as a txt. Currently, jewelbox and snowflake are running in my game. I want to add christmast and other events
|
The items are in RefObjItem & itemdata_xxx.txt
You have everything in your client files.
Items: RefObjitem & itemdata_xxx.txt
Events: eventdata.txt
Events: copy-paste the jewel box and assign it a new ID from eventdata.txt
etc., you have everything in the thread.
|
|
|
 |
|
Similar Threads
|
[Selling] D s4 G2 s5 99 point 9 runes page more than 100 CHamp and more than 50 skin
03/02/2015 - League of Legends Trading - 2 Replies
EUW SERVEr
|
[Help - Helfen]Modify/Remove horse bonus - Ändern / Entfernen Pferd Bonus
12/12/2012 - Metin2 Private Server - 0 Replies
Sorry for no perfect english skills.
Hello community, i needed to know how to modify or remove the bonus the horse gives us when we mount them, you see? Vit, Int, Str and Des, like in official metins... When we mount the horse we gain addicional status and they are removed when we unmount them. However, this won't happen if we mount the new mounts like the Lion, the Wolf the Tiger and the Boar! We gain the status and they don't go away when we unmount them! This bug could be used by the...
|
gate waves end rewards+event rewards
09/15/2012 - DarkOrbit - 35 Replies
i give a list of all rewards of gate's end events. olsow the waves of the gate's to safe peaple some work .
i'm not chure i post it in the right section. feel free to drag it to the right one.
i hope this helped some peaple. greets. *kaat*
1. alpha gate:
NPC waves
40 Streuners
|
[Release] Activate/Un-Activate NPC by Command.
12/11/2008 - CO2 PServer Guides & Releases - 20 Replies
So ive seen alot of you wanted this, well here it is, coded this in about 4minutes total and never tested it,so you will probably be the first one.
So, all you actually do is to make the server check if xxx is activated, if it is, it shows the real npc chat, if it isnt, it tells you that it isnt. And you activate/unactivate the xxx with a command. Well here you are:
In General.cs , under : public static System.Timers.Timer Thetimer;
public static bool CanTalkToNPC = false;
|
All times are GMT +1. The time now is 11:24.
|
|