Jump to content

Angelix

Community
  • Content Count

    520
  • Joined

  • Days Won

    69

Posts posted by Angelix


  1. 29 minutes ago, KONG said:

    I'll start! =)

    
    MisBeginTalk: "What? Death Weapons? Oh... This is a mystery, only one person have ever succeeded while many have died trying!"
    MisHelpTalk: "If you really want this, search for Guard - Zhou at [Spring Island - 3298,2534]."


     

    Fixing a typo:

    MisBeginTalk: "What? Death Weapons? Oh... This is a mystery, only one person has ever succeeded while many have died trying!"
    MisHelpTalk: "If you really want this, search for Guard - Zhou at [Spring Island - 3298,2534]."

     

    Next:

    Quest Name: The Way [Death Weapons]
    NPC: Guard - Zhou
    MisBeginTalk: "It's not a good idea, believe me! This power... Maybe you will never come back. Search inside Abaddon, Blacksmith Goldie can help you. This is all I can say."       
    MisNeed:  "Search and talk with Blacksmith - Goldie again."
    MisHelpTalk: "You can find Blacksmith - Goldie at Dark Forest Town"
     
    (COMPLETE_SHOW)
    NPC: Blacksmith Goldie
    MisResultTalk: "He talks about Abaddon? Hmm... This is starting to get interesting."

     

    • Like 2

  2. One way to make that would be them opening every two hours:

    SetMapEntryTime(map, "2006/10/18/14/0", "0/2/0", "0/0/30", "0/0/45")
    SetMapEntryTime(map, "2006/10/18/15/0", "0/2/0", "0/0/30", "0/0/45")

    That way they wouldn't overlap, but it's not what you wanted of one map being every two hours and another every three hours without overlapping.


  3. 47 minutes ago, Blanquitoh said:

    I know how the app acted (worked) *i think* ... but it is not how newbie devs see it, trust me... x)

    I see your point about "developers" not trusting V3ctor, but lets be honest, if they can't or didn't do the simplest thing of just modifying a single configuration file given by him, who would actually go and modify the code of a website and then give a link to V3ctor? I mean, it's a great concept, but who do you see that knows what to do about Lua scripts? If they can't learn that by themselves, why would they learn about php? People just tend to grab server files and they're already struggling with placing an NPC, what do you think will happen if making a personal website was a requirement to open a server? No one would open one. Very few people know how to create custom Lua scripts and even less know about PHP. 

    • Like 2

  4. 1 hour ago, KONG said:

    I checked this a few years ago. if I remember correctly, Game.exe have hardcoded Demonic Fruit values.

    If anyone needs guide to patch, feel free to pm.


    + few years ago, @Angelix released a ready-made FairySystem with tables to handle almost all related functionality with fairies.
    (all u needed to do was a simple dofile())
    Til now, I have not seen a single person use it besides me xD so Kudos to him! 

     

    Codes need to become shorter and simpler, not longer and harder.

    That file is somewhere in the pkoDev archive in MEGA just in case anyone wants it. It contains everything for rations, fruits, marriage and possession. 

    • Like 2

  5. So basically you want something like this?

    function SkillSp_Xlcz(SkillLevel)
    	return (30 + SkillLevel * 2)
    end
    function SkillCooldown_Xlcz(SkillLevel)
    	return (6000 - SkillLevel * 300)
    end
    function Skill_Xlcz_Begin(role, SkillLevel)
    	if Sp(role) - SkillSp_Xlcz(SkillLevel) < 0 then
    		SkillUnable(role)
    		return
    	end
    	Sp_Red(role, SkillSp_Xlcz(SkillLevel))
    end
    function Skill_Xlcz_End(ATKER, DEFER, SkillLevel)
    	if ValidCha(ATKER) == 0 or ValidCha(DEFER) == 0 then
    		return  
    	end
    	local LV_DIF = math.max((-1) * 10, math.min(10, Lv(TurnToCha(ATKER)) - Lv(TurnToCha(DEFER))))
    	local Damage = math.floor((10 + Sta(ATKER) * 2) * (1 + SkillLevel * 0.25) * (1 + LV_DIF * 0.025)) * 1.1
    	if (GetChaMapName(ATKER) == "garner2" or GetChaMapName(DEFER) == "garner2") and Is_NormalMonster(DEFER) == 0 then	
    		Damage = math.floor((MAGIC_Atk_Dmg(ATKER, DEFER)) * (1 + SkillLevel * 0.1))
    	end
    	Damage = Cuihua_Mofa(Damage, GetChaStateLv(ATKER, STATE_MLCH))
    	Damage = Damage + ElfSkill_MagicAtk(Damage, ATKER)
    	if GetChaAttr(ATKER, ATTR_CSAILEXP) > 0 and GetChaAttr(ATKER, ATTR_CSAILEXP) < 100 then
    		Damage = Damage * 1.055
    	end
    	if GetChaAttr(ATKER, ATTR_CSAILEXP) >= 100 and GetChaAttr(ATKER, ATTR_CSAILEXP) < 12100 then
    		Damage = Damage * (1.05 + math.floor(math.pow((GetChaAttr(ATKER, ATTR_CSAILEXP) / 100), 0.5)) * 0.005)
    	end
    	if IsPlayer(DEFER) == 0 then
    		local Percentage = GetChaAttr(DEFER, ATTR_HP) / GetChaAttr(DEFER, ATTR_MXHP)
    		Percentage = (1 - Percentage) * 0.5
    		Damage = Damage * (1 + Percentage)
    	end
    	Hp_Endure_Dmg(DEFER, Damage)
    	if IsPlayer(ATKER) == 1 and IsPlayer(DEFER) == 1 then
    		LG("Skill Log", GetChaDefaultName(ATKER), GetChaDefaultName(DEFER), GetChaMapName(ATKER), "Spiritual Bolt", SkillLevel, Damage)
    	end
    	Check_Ys_Rem(ATKER, DEFER)
    	CheckAttackState(ATKER, DEFER)
    	GivePetState(ATKER, DEFER)
    end

    An example would be:

    • Monster has 45,000 HP out of 50,000 max HP.
    • That means the monster has lost a 10% of their total HP.
    • We then multiply that percentage by 0.5 (otherwise known as dividing by 2).
    • We add a 1 to the above result, so it would be 1 + 0.05.
    • Then we multiply that by the damage already calculated from Spiritual Bolt.
    • An example would be that the user is dealing damage of 2,000, then multiplied by the above result, we now get 2,100.
    • This means, for every 10% of total HP that the monster has lost, the attacker's spiritual bolt damage is increased by 5%.

    That's what you meant? If so, then that's the script.

    • Like 2

  6. Things to consider:

    • Illusion Slash originally has its damaged increased by skill level and by attack speed of user.
      • How will you put that into play?
      • What do you mean by "damage will be based on how much HP is lost"? Since normally HP is lost after the damage.
      • Will you be trying to work with percentages or something like?
    • Dual Shot, same issues as above, except for that fact that it doesn't take into consideration the attack speed.
    • Spiritual Bolt initially depends on the spirit attribute from both (attacker and defender).
      • You're going to try an ignore defender's spirit and deal damage (maybe percentages as well?) based on monster's HP?

     

    • Like 1

  7. Hello! I come from the English part of the forum. I do not know Russian, but looking at scripts, I guess you are trying to do some percentages with attributes. Here is a script I did a while ago from a skill effect that involved reducing stats by percentages. There is a slight note, that some percentages are a bit off in player stats like attack and attack speed if I remember correctly. Hope it helps!

     

    Google translate:

    Spoiler

    Здравствуйте! Я родом из английской части форума. Я не знаю русского языка, но, глядя на скрипты, я предполагаю, что вы пытаетесь сделать некоторые проценты с атрибутами. Вот скрипт, я сделал некоторое время назад от навыка эффекта, который участвует восстанавливающего статистику по процентным. Существует небольшое примечание, что некоторые проценты являются откусил в статистике игрока, как атаки и скорость атаки, если я правильно помню. Надеюсь, поможет!

     

    function State_EmoYuYan2_Add(Player, StateLv)
    	local Defense = 0.05
    	local Movement = 0.15
    	local Attack = 0.1
    	local Speed = 0.25
    	
    	Defense = Defense * StateLv
    	Movement = Movement * StateLv
    	Attack = Attack * StateLv
    	Speed = Speed * StateLv
    	
    	local DEF = math.floor((DefSa(Player) + (-1 * Defense)) * ATTR_RADIX)
    	local MOV = math.floor((MspdSa(Player) + (-1 * Movement)) * ATTR_RADIX)
    	local MNATK = math.floor((MnatkSa(Player) + (-1 * Attack)) * ATTR_RADIX)
    	local MXATK = math.floor((MxatkSa(Player) + (-1 * Attack)) * ATTR_RADIX)
    	local ASPD = math.floor((AspdSa(Player) + (-1 * Speed)) * ATTR_RADIX)
    	
    	SetCharaAttr(DEF, Player, ATTR_STATEC_DEF)
    	SetCharaAttr(MOV, Player, ATTR_STATEC_MSPD)
    	SetCharaAttr(MNATK, Player, ATTR_STATEC_MNATK) 
    	SetCharaAttr(MXATK, Player, ATTR_STATEC_MXATK)
    	SetCharaAttr(ASPD, Player, ATTR_STATEC_ASPD)	
    	ALLExAttrSet(Player)
    end
    function State_EmoYuYan2_Rem(Player, StateLv)
    	local Defense = 0.05
    	local Movement = 0.15
    	local Attack = 0.1
    	local Speed = 0.25
    	
    	Defense = Defense * StateLv
    	Movement = Movement * StateLv
    	Attack = Attack * StateLv
    	Speed = Speed * StateLv
    	
    	local DEF = math.floor((DefSa(Player) - (-1 * Defense)) * ATTR_RADIX)
    	local MOV = math.floor((MspdSa(Player) - (-1 * Movement)) * ATTR_RADIX)
    	local MNATK = math.floor((MnatkSa(Player) - (-1 * Attack)) * ATTR_RADIX)
    	local MXATK = math.floor((MxatkSa(Player) - (-1 * Attack)) * ATTR_RADIX)
    	local ASPD = math.floor((AspdSa(Player) - (-1 * Speed)) * ATTR_RADIX)
    	
    	SetCharaAttr(DEF, Player, ATTR_STATEC_DEF)
    	SetCharaAttr(MOV, Player, ATTR_STATEC_MSPD)
    	SetCharaAttr(MNATK, Player, ATTR_STATEC_MNATK) 
    	SetCharaAttr(MXATK, Player, ATTR_STATEC_MXATK)
    	SetCharaAttr(ASPD, Player, ATTR_STATEC_ASPD)
    	ALLExAttrSet(Player)
    end

     

    • Like 2

  8. 49 minutes ago, Abdelrahman Hajjaj said:

    hi @KONG

    thnx for answering.

    as for the pet, idk it just wont work, when i i use the fairy body skill it consumes sp but wont increase any states (str,con,agi..etc.).

    and i just found that even the growth rate is not working even though i made the fairy growth rate 7000x the growth bar just wont budge

    that's weird..

     

    Have you modified anything related to fairies?


  9. 4 hours ago, xSeth said:

    lel man u forget the nab one gm Satan = Volcher/Yudha=Stoci/Heitor=Pain

    "300+" if u count 250+ alts on minning and tree u can say that 300+. If u count normal players u can say 10-15 max in the first days, then later was pk by 3-4 vs 3-4 + count alts like champs-sm-etc

     

    Also the funny part i ever heard  is that CA set effect + rank list = more tanky in ca.

    Lol from when that dumb thing is available ? I have NEVER EVER heard abut this crap lol , even in TOP 1-2/ Or any privates , first time i see here lol + i didn't realise any difference , i heard that Minov ss had full CA set + rank list but  for me it's was a trash, so i don't get it that "effect " lol

    And like i said before too if u want x1 srv rates go and fking advert it everywhere, facebook, all not spamm here and on discord lmao...

    Look at pko  after advert a lot time now he got 900 on , 890 alts minning/tree and pk is dead ther too 3-4 vs 4-5 lmao . But at least system show 900 on , and u r like " wow , omg 900 " and when u enter u see STALLS everywhere , every place , afk every1 24/7 , and only pk map CA u see " 5 inside " lmao .

    TOP is dead to keep x1 rates , every1 want PK srv

    IF even IGG didn't want create TOP 1 again , they might know it's not worth to do it so they just give up , but we will always see some nobs trying open srv and close after 1 week .

    You never see the Chaos Equipment effect in display since many servers go around the fact of giving overpowered equipment at the beginning (like level 65+) and players go for that since there's no need for equipment in Chaos Argent. There is a function in every server that if a player has a full set of equipment from Chaos Argent and is registered in the ranking from the NPC, that player will receive a bonus. If the player is in first rank, it will receive a 50% damage reduction, second receives a 40%, third a 30%, fourth a 20% and fifth a 10% damage reduction. 

    • Like 4

  10. Give this a try, place this:

    function QuestFunc(Player, Mission, Type, Func)
    	local Name = GetChaDefaultName(Player)
    	local Day = (tonumber(os.date("%Y")) * 10000) + (tonumber(os.date("%m")) * 100) + (tonumber(os.date("%d")))
    	local Week = (tonumber(os.date("%Y")) * 100) + (os.date("%V"))
    	if QuestLog[Name] == nil then
    		QuestLog[Name] = {}
    	end
    	if QuestLog[Name][Mission] == nil then
    		QuestLog[Name][Mission] = {}
    	end
    	if Type == "Daily" then
    		if QuestLog[Name][Mission][Day] == nil then
    			QuestLog[Name][Mission][Day] = false
    		end
    		if Func == "Check" then
    			if QuestLog[Name][Mission][Day] == false then
    				return LUA_TRUE
    			elseif QuestLog[Name][Mission][Day] == true then
    				return LUA_FALSE
    			end
    		elseif Func == "Completed" then
    			QuestLog[Name][Mission][Day] = true
    			return LUA_TRUE
    		end
    	elseif Type == "Weekly" then
    		if QuestLog[Name][Mission][Week] == nil then
    			QuestLog[Name][Mission][Week] = false
    		end
    		if Func == "Check" then
    			if QuestLog[Name][Mission][Week] == false then
    				return LUA_TRUE
    			elseif QuestLog[Name][Mission][Week] == true then
    				return LUA_FALSE
    			end
    		elseif Func == "Completed" then
    			QuestLog[Name][Mission][Week] = true
    			return LUA_TRUE
    		end
    	end
    end

    Before this function:

    function ConditionsTest( character, conditions, param1, param2, npc )
     ...
    end

     

    As for the other quests not working, that ain't up to me. You might have move something else.


  11. 8 hours ago, blazi10 said:

    What files are you using? Can u share me it? 

    i need Serialize.lua or something else to run daily quest?

    No, I won't share my files. I don't use serialize nor other files for the daily things. 

     

    Upload your MissionSdk, the script for the quest and any error log regarding those. 


  12. That's odd, I'm using the script in my files and no errors show up regarding that.

     

    Look, in my MissionSdk.lua

     

    function QuestFunc(Player, Mission, Type, Func)
    	local Name = GetChaDefaultName(Player)
    	local Day = (tonumber(os.date("%Y")) * 10000) + (tonumber(os.date("%m")) * 100) + (tonumber(os.date("%d")))
    	local Week = (tonumber(os.date("%Y")) * 100) + (os.date("%V"))
    	if QuestLog[Name] == nil then
    		QuestLog[Name] = {}
    	end
    	if QuestLog[Name][Mission] == nil then
    		QuestLog[Name][Mission] = {}
    	end
    	if Type == "Daily" then
    		if QuestLog[Name][Mission][Day] == nil then
    			QuestLog[Name][Mission][Day] = false
    		end
    		if Func == "Check" then
    			if QuestLog[Name][Mission][Day] == false then
    				return LUA_TRUE
    			elseif QuestLog[Name][Mission][Day] == true then
    				return LUA_FALSE
    			end
    		elseif Func == "Completed" then
    			QuestLog[Name][Mission][Day] = true
    			return LUA_TRUE
    		end
    	elseif Type == "Weekly" then
    		if QuestLog[Name][Mission][Week] == nil then
    			QuestLog[Name][Mission][Week] = false
    		end
    		if Func == "Check" then
    			if QuestLog[Name][Mission][Week] == false then
    				return LUA_TRUE
    			elseif QuestLog[Name][Mission][Week] == true then
    				return LUA_FALSE
    			end
    		elseif Func == "Completed" then
    			QuestLog[Name][Mission][Week] = true
    			return LUA_TRUE
    		end
    	end
    end

     


  13. 3 hours ago, Methz said:

    @Angelix you're right, but in theory, this should not work, since it is necessary to develop a part of logic. The part necessary to verify if all the equipment is active AFTER entering the initial condition of the effect. Something like this:

    
    if check_stone < 1 then -- Checking if the player has the Remove Effect Stone
        	if Dina_xl_ID==2577 and Dina_x2_ID==2817 then
    	    	local statelv = 1
    		    local statetime = 3600
    		   	AddState ( role , role , STATE_BBRING1 , statelv , statetime ) 	        
    		else -- Checking if the player has all items
    			local statelv_bbring1 = GetChaStateLv ( role , STATE_BBRING1 )
    	        if statelv_bbring1~=0 then
    	            RemoveState ( role , STATE_BBRING1 ) 
    	        end
            end

    I think this happens because we have two situations to remove the effect: player without all the items and player with the Remove Effect Stone. So we need to check these situations as well. 

     

    Of course the above code is awful and not optimized at all, but it's just to show the logic I'm thinking. Do you have any suggestions optimized and that works? I mean, without adapting the script you created, hahaha.

     

    Btw, I really enjoyed your script, thanks for sharing. I just didn't understand the function of math.random at the end. It's only a option?

    My script were created for that purpose, to simplify the process of creating more effects for equipment. 

     

    The randomness was place since in that thread they were talking about Kylin effect and it only has a 10% of activating. 


  14. Go ahead and try this script.

     

    	DefineMission(2003, "Daily Quest 1", 2003)
    	MisBeginTalk("Do you have a time? Can you get items from list For me? please. I will pay you")
    	MisBeginCondition(LvCheck, ">", 1)
    	MisBeginCondition(LvCheck, "<", 20)
    	MisBeginCondition(QuestFunc, 2003, "Daily", "Check")
    	MisBeginAction(AddMission, 2003)
    	MisBeginAction(AddTrigger, 20031, TE_GETITEM, 4404, 15)
    	MisBeginAction(AddTrigger, 20032, TE_GETITEM, 3116, 20)
    	MisBeginAction(AddTrigger, 20033, TE_GETITEM, 1577, 20)
    	MisBeginAction(AddTrigger, 20034, TE_GETITEM, 1653, 15)
    	MisCancelAction(ClearMission, 2003)
    
    	MisNeed(MIS_NEED_DESP, "Get Items from list")
    	MisNeed(MIS_NEED_ITEM, 4404, 15, 10, 15)
    	MisNeed(MIS_NEED_ITEM, 3116, 20, 20, 20)
    	MisNeed(MIS_NEED_ITEM, 1577, 20, 30, 20)
    	MisNeed(MIS_NEED_ITEM, 1653, 15, 40, 15)
    
    	MisPrize(MIS_PRIZE_Money, 10000)
    	MisPrizeSelAll()
    
    	MisResultTalk("Thank you, come back tommorow.")
    	MisHelpTalk("Are you waiting for? Go Get the items.")
    
    	MisResultAction(QuestFunc, 2003, "Daily", "Completed")
    	MisResultCondition(HasMission, 2003)
    	MisResultCondition(HasItem, 4404, 15)
    	MisResultCondition(HasItem, 3116, 20)
    	MisResultCondition(HasItem, 1577, 20)
    	MisResultCondition(HasItem, 1653, 15)
    	MisResultAction(TakeItem, 4404, 15)
    	MisResultAction(TakeItem, 3116, 20)
    	MisResultAction(TakeItem, 1577, 20)
    	MisResultAction(TakeItem, 1653, 15)
    	MisResultAction(AddExp, 300, 300)
    	MisResultAction(ClearMission, 2003)
    
    	InitTrigger()
    	TriggerCondition(1, IsItem, 4404)
    	TriggerAction(1, AddNextFlag, 2003, 10, 15)
    	RegCurTrigger(20031)
    
    	InitTrigger()
    	TriggerCondition(1, IsItem, 3116)
    	TriggerAction(1, AddNextFlag, 2003, 20, 20)
    	RegCurTrigger(20032)
    
    	InitTrigger()
    	TriggerCondition(1, IsItem, 1577)
    	TriggerAction(1, AddNextFlag, 2003, 30, 20)
    	RegCurTrigger(20033)
    
    	InitTrigger()
    	TriggerCondition(1, IsItem, 1653)
    	TriggerAction(1, AddNextFlag, 2003, 40, 15)
    	RegCurTrigger(20034)

    Also, I never modified that function. If you're having error, it can also be due to another mistype or something from other script, if so, please close your server completely, delete logs and then open again the server. If your issue persists, then go into the log folder and look for lua_err.txt and there should be an issue there.

×
×
  • Create New...