introduce premium account system as a real premmium account for donators while regular features like travling and spells are free

This commit is contained in:
ErikasKontenis 2021-04-17 17:33:22 +03:00
parent 37aedf0555
commit 6fda4d4663
15 changed files with 78 additions and 95 deletions

View File

@ -80,7 +80,7 @@ mysqlSock = ""
-- Misc. -- Misc.
allowChangeOutfit = true allowChangeOutfit = true
freePremium = true freePremium = false
kickIdlePlayerAfterMinutes = 15 kickIdlePlayerAfterMinutes = 15
maxMessageBuffer = 8 maxMessageBuffer = 8

View File

@ -5,31 +5,34 @@
<outfit type="0" looktype="137" name="Hunter" premium="no" unlocked="yes" enabled="yes" /> <outfit type="0" looktype="137" name="Hunter" premium="no" unlocked="yes" enabled="yes" />
<outfit type="0" looktype="138" name="Mage" premium="no" unlocked="yes" enabled="yes" /> <outfit type="0" looktype="138" name="Mage" premium="no" unlocked="yes" enabled="yes" />
<outfit type="0" looktype="139" name="Knight" premium="no" unlocked="yes" enabled="yes" /> <outfit type="0" looktype="139" name="Knight" premium="no" unlocked="yes" enabled="yes" />
<outfit type="0" looktype="140" name="Noblewoman" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="0" looktype="140" name="Noblewoman" premium="no" unlocked="yes" enabled="yes" />
<outfit type="0" looktype="141" name="Summoner" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="0" looktype="141" name="Summoner" premium="no" unlocked="yes" enabled="yes" />
<outfit type="0" looktype="142" name="Warrior" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="0" looktype="142" name="Warrior" premium="no" unlocked="yes" enabled="yes" />
<outfit type="0" looktype="147" name="Barbarian" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="0" looktype="147" name="Barbarian" premium="no" unlocked="yes" enabled="yes" />
<outfit type="0" looktype="148" name="Druid" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="0" looktype="148" name="Druid" premium="no" unlocked="yes" enabled="yes" />
<outfit type="0" looktype="149" name="Wizard" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="0" looktype="149" name="Wizard" premium="no" unlocked="yes" enabled="yes" />
<outfit type="0" looktype="150" name="Oriental" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="0" looktype="150" name="Oriental" premium="no" unlocked="yes" enabled="yes" />
<outfit type="0" looktype="155" name="Pirate" premium="yes" unlocked="no" enabled="yes" /> <outfit type="0" looktype="155" name="Pirate" premium="no" unlocked="no" enabled="yes" />
<outfit type="0" looktype="156" name="Assassin" premium="yes" unlocked="no" enabled="yes" /> <outfit type="0" looktype="156" name="Assassin" premium="no" unlocked="no" enabled="yes" />
<outfit type="0" looktype="157" name="Beggar" premium="yes" unlocked="no" enabled="yes" /> <outfit type="0" looktype="157" name="Beggar" premium="no" unlocked="no" enabled="yes" />
<outfit type="0" looktype="158" name="Shaman" premium="yes" unlocked="no" enabled="yes" /> <outfit type="0" looktype="158" name="Shaman" premium="no" unlocked="no" enabled="yes" />
<outfit type="0" looktype="161" name="Witch" premium="yes" unlocked="yes" enabled="yes" />
<!-- Male outfits --> <!-- Male outfits -->
<outfit type="1" looktype="128" name="Citizen" premium="no" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="128" name="Citizen" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="129" name="Hunter" premium="no" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="129" name="Hunter" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="130" name="Mage" premium="no" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="130" name="Mage" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="131" name="Knight" premium="no" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="131" name="Knight" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="132" name="Nobleman" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="132" name="Nobleman" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="133" name="Summoner" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="133" name="Summoner" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="134" name="Warrior" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="134" name="Warrior" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="143" name="Barbarian" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="143" name="Barbarian" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="144" name="Druid" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="144" name="Druid" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="145" name="Wizard" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="145" name="Wizard" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="146" name="Oriental" premium="yes" unlocked="yes" enabled="yes" /> <outfit type="1" looktype="146" name="Oriental" premium="no" unlocked="yes" enabled="yes" />
<outfit type="1" looktype="151" name="Pirate" premium="yes" unlocked="no" enabled="yes" /> <outfit type="1" looktype="151" name="Pirate" premium="no" unlocked="no" enabled="yes" />
<outfit type="1" looktype="152" name="Assassin" premium="yes" unlocked="no" enabled="yes" /> <outfit type="1" looktype="152" name="Assassin" premium="no" unlocked="no" enabled="yes" />
<outfit type="1" looktype="153" name="Beggar" premium="yes" unlocked="no" enabled="yes" /> <outfit type="1" looktype="153" name="Beggar" premium="no" unlocked="no" enabled="yes" />
<outfit type="1" looktype="154" name="Shaman" premium="yes" unlocked="no" enabled="yes" /> <outfit type="1" looktype="154" name="Shaman" premium="no" unlocked="no" enabled="yes" />
<outfit type="1" looktype="162" name="Monk" premium="yes" unlocked="yes" enabled="yes" />
</outfits> </outfits>

View File

@ -16,40 +16,13 @@ function onLogin(player)
nextUseStaminaTime[player.uid] = 0 nextUseStaminaTime[player.uid] = 0
-- Promotion -- Promotion
if player:isPremium() then
if player:getVocation():getId() ~= 0 and player:getVocation():getId() < 5 and player:getStorageValue(30018) == 1 then if player:getVocation():getId() ~= 0 and player:getVocation():getId() < 5 and player:getStorageValue(30018) == 1 then
player:setVocation(player:getVocation():getId() + 4) player:setVocation(player:getVocation():getId() + 4)
end end
else
if player:getVocation():getId() ~= 0 and player:getVocation():getId() > 4 then
player:setVocation(player:getVocation():getId() - 4)
end
end
-- Outfits
if not player:isPremium() then
if player:getSex() == PLAYERSEX_FEMALE then
local outfit = player:getOutfit()
if outfit.lookType > 139 then
player:setOutfit({lookType = 136, lookHead = 78, lookBody = 106, lookLegs = 58, lookFeet = 95})
end
else
local outfit = player:getOutfit()
if outfit.lookType > 131 then
player:setOutfit({lookType = 128, lookHead = 78, lookBody = 106, lookLegs = 58, lookFeet = 95})
end
end
end
-- Premium system -- Premium system
if player:isPremium() then if player:isPremium() then
player:setStorageValue(43434, 1) player:setStorageValue(43434, 1)
elseif player:getStorageValue(43434) == 1 then
player:setStorageValue(43434, 0)
if player:getVocation():getId() > 0 then
player:teleportTo({x = 32369, y = 32241, z = 7})
player:setTown(Town("Thais"))
end
end end
-- Events -- Events

View File

@ -343,6 +343,10 @@ function Player:onGainExperience(source, exp, rawExp)
end end
end end
if self:isPremium() then
exp = exp * (1 + 10 / 100)
end
return exp return exp
end end

View File

@ -1,5 +1,5 @@
function onStepIn(creature, item, position, fromPosition) function onStepIn(creature, item, position, fromPosition)
if creature:isPlayer() and creature:getPlayer():getStorageValue(323) == 1 and creature:getPlayer():isPremium() and creature:getPlayer():getItemCount(5021) >= 1 then if creature:isPlayer() and creature:getPlayer():getStorageValue(323) == 1 and creature:getPlayer():getItemCount(5021) >= 1 then
doRelocate(item:getPosition(),{x = 32498, y = 31621, z = 06}) doRelocate(item:getPosition(),{x = 32498, y = 31621, z = 06})
item:getPosition():sendMagicEffect(11) item:getPosition():sendMagicEffect(11)
Game.sendMagicEffect({x = 32498, y = 31621, z = 06}, 11) Game.sendMagicEffect({x = 32498, y = 31621, z = 06}, 11)

View File

@ -1,5 +1,5 @@
function onStepIn(creature, item, position, fromPosition) function onStepIn(creature, item, position, fromPosition)
if creature:isPlayer() and creature:getPlayer():getStorageValue(323) == 1 and creature:getPlayer():isPremium() and creature:getPlayer():getItemCount(5021) >= 1 then if creature:isPlayer() and creature:getPlayer():getStorageValue(323) == 1 and creature:getPlayer():getItemCount(5021) >= 1 then
doRelocate(item:getPosition(),{x = 32664, y = 32735, z = 06}) doRelocate(item:getPosition(),{x = 32664, y = 32735, z = 06})
item:getPosition():sendMagicEffect(11) item:getPosition():sendMagicEffect(11)
Game.sendMagicEffect({x = 32664, y = 32735, z = 06}, 11) Game.sendMagicEffect({x = 32664, y = 32735, z = 06}, 11)

View File

@ -1,8 +1,5 @@
function onStepIn(creature, item, position, fromPosition) function onStepIn(creature, item, position, fromPosition)
if creature:isPlayer() and not creature:getPlayer():isPremium() then
doRelocate(item:getPosition(),{x = item:getPosition().x + 3, y = item:getPosition().y, z = 07})
Game.sendMagicEffect(item:getPosition(), 13)
end
end end
function onAddItem(item, tileitem, position) function onAddItem(item, tileitem, position)

View File

@ -125,7 +125,8 @@ VANISH,! -> "Good bye."
%1,1<%1,"light","shovel" -> Type=5710, Amount=%1, Price=300*%1, "You want sell %A light shovels for %P gold?", Topic=2 %1,1<%1,"light","shovel" -> Type=5710, Amount=%1, Price=300*%1, "You want sell %A light shovels for %P gold?", Topic=2
Topic=2,"yes",Count(Type)>=Amount -> "Ok. Here is your money.", Delete(Type), CreateMoney Topic=2,"yes",Count(Type)>=Amount,RealPremium -> "Ok. Here is your money.", Delete(Type), CreateMoney
Topic=2,"yes",Count(Type)>=Amount -> "I'm sorry %N, but I only serve premium account customers."
Topic=2,"yes" -> "You not have one." Topic=2,"yes" -> "You not have one."
Topic=2,"yes",Amount>1 -> "Sorry, you do not have that many." Topic=2,"yes",Amount>1 -> "Sorry, you do not have that many."
Topic=2 -> "Maybe you sell it next time." Topic=2 -> "Maybe you sell it next time."

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<spells> <spells>
<!-- Sorcerer Spells --> <!-- Sorcerer Spells -->
<instant name="Force Strike" words="exori mort" maglv="2" mana="20" prem="1" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/force strike.lua"> <instant name="Force Strike" words="exori mort" maglv="2" mana="20" prem="0" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/force strike.lua">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
@ -23,25 +23,25 @@
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
</instant> </instant>
<instant name="Ultimate Explosion" words="exevo gran mas vis" maglv="40" mana="800" selftarget="1" prem="1" needlearn="0" script="spells/ultimate explosion.lua"> <instant name="Ultimate Explosion" words="exevo gran mas vis" maglv="40" mana="800" selftarget="1" prem="0" needlearn="0" script="spells/ultimate explosion.lua">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
</instant> </instant>
<!-- Druid Spells --> <!-- Druid Spells -->
<instant name="Heal Friend" words="exura sio" maglv="7" mana="70" prem="1" aggressive="0" blockwalls="1" needtarget="1" playernameparam="1" params="1" needlearn="0" script="spells/heal friend.lua"> <instant name="Heal Friend" words="exura sio" maglv="7" mana="70" prem="0" aggressive="0" blockwalls="1" needtarget="1" playernameparam="1" params="1" needlearn="0" script="spells/heal friend.lua">
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</instant> </instant>
<instant name="Undead Legion" words="exana mas mort" maglv="15" mana="400" prem="1" aggressive="1" needlearn="0" script="spells/undead legion.lua"> <instant name="Undead Legion" words="exana mas mort" maglv="15" mana="400" prem="0" aggressive="1" needlearn="0" script="spells/undead legion.lua">
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</instant> </instant>
<instant name="Mass Healing" words="exura gran mas res" maglv="19" mana="120" prem="1" aggressive="0" needlearn="0" script="spells/mass healing.lua"> <instant name="Mass Healing" words="exura gran mas res" maglv="19" mana="120" prem="0" aggressive="0" needlearn="0" script="spells/mass healing.lua">
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</instant> </instant>
<instant name="Poison Storm" words="exevo gran mas pox" maglv="28" mana="400" prem="1" aggressive="1" needlearn="0" script="spells/poison storm.lua"> <instant name="Poison Storm" words="exevo gran mas pox" maglv="28" mana="400" prem="0" aggressive="1" needlearn="0" script="spells/poison storm.lua">
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</instant> </instant>
@ -49,17 +49,17 @@
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</instant> </instant>
<instant name="Wild Growth" words="exevo grav vita" maglv="13" mana="150" prem="1" cooldown="1000" range="3" direction="1" blocktype="all" needlearn="0" script="spells/wild growth.lua"> <instant name="Wild Growth" words="exevo grav vita" maglv="13" mana="150" prem="0" cooldown="1000" range="3" direction="1" blocktype="all" needlearn="0" script="spells/wild growth.lua">
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</instant> </instant>
<!-- Knight Spells --> <!-- Knight Spells -->
<instant name="Challenge" words="exeta res" maglv="4" mana="90" prem="1" aggressive="0" needlearn="0" script="spells/challenge.lua"> <instant name="Challenge" words="exeta res" maglv="4" mana="90" prem="0" aggressive="0" needlearn="0" script="spells/challenge.lua">
<vocation name="Elite Knight" /> <vocation name="Elite Knight" />
</instant> </instant>
<instant name="Berserk" words="exori" maglv="5" manapercent="4" prem="1" needweapon="1" needlearn="0" script="spells/berserk.lua"> <instant name="Berserk" words="exori" maglv="5" manapercent="4" prem="0" needweapon="1" needlearn="0" script="spells/berserk.lua">
<vocation name="Knight" /> <vocation name="Knight" />
<vocation name="Elite Knight" /> <vocation name="Elite Knight" />
</instant> </instant>
@ -101,7 +101,7 @@
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
<vocation name="Elite Knight" /> <vocation name="Elite Knight" />
</instant> </instant>
<instant name="Magic Rope" words="exani tera" maglv="1" mana="20" prem="1" aggressive="0" selftarget="1" needlearn="0" script="spells/magic rope.lua"> <instant name="Magic Rope" words="exani tera" maglv="1" mana="20" prem="0" aggressive="0" selftarget="1" needlearn="0" script="spells/magic rope.lua">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Paladin" /> <vocation name="Paladin" />
@ -129,7 +129,7 @@
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
</instant> </instant>
<instant name="Levitate" words="exani hur" maglv="3" mana="50" prem="1" aggressive="0" params="1" needlearn="0" function="Levitate"> <instant name="Levitate" words="exani hur" maglv="3" mana="50" prem="0" aggressive="0" params="1" needlearn="0" function="Levitate">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Paladin" /> <vocation name="Paladin" />
@ -139,13 +139,13 @@
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
<vocation name="Elite Knight" /> <vocation name="Elite Knight" />
</instant> </instant>
<instant name="Energy Strike" words="exori vis" maglv="4" mana="20" prem="1" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/energy strike.lua"> <instant name="Energy Strike" words="exori vis" maglv="4" mana="20" prem="0" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/energy strike.lua">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</instant> </instant>
<instant name="Poison Strike" words="exori pox" maglv="2" mana="20" prem="1" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/poison strike.lua"> <instant name="Poison Strike" words="exori pox" maglv="2" mana="20" prem="0" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/poison strike.lua">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
@ -169,13 +169,13 @@
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
</instant> </instant>
<instant name="Flame Strike" words="exori flam" maglv="3" mana="20" prem="1" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/flame strike.lua"> <instant name="Flame Strike" words="exori flam" maglv="3" mana="20" prem="0" cooldown="1000" range="3" direction="1" blockwalls="1" needlearn="0" script="spells/flame strike.lua">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</instant> </instant>
<instant name="Haste" words="utani hur" maglv="4" mana="60" prem="1" aggressive="0" selftarget="1" needlearn="0" script="spells/haste.lua"> <instant name="Haste" words="utani hur" maglv="4" mana="60" prem="0" aggressive="0" selftarget="1" needlearn="0" script="spells/haste.lua">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Paladin" /> <vocation name="Paladin" />
@ -193,7 +193,7 @@
<vocation name="Paladin" /> <vocation name="Paladin" />
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
</instant> </instant>
<instant name="Strong Haste" words="utani gran hur" maglv="8" mana="100" prem="1" aggressive="0" selftarget="1" needlearn="0" script="spells/strong haste.lua"> <instant name="Strong Haste" words="utani gran hur" maglv="8" mana="100" prem="0" aggressive="0" selftarget="1" needlearn="0" script="spells/strong haste.lua">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
@ -211,13 +211,13 @@
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</instant> </instant>
<instant name="Cancel Invisibility" words="exana ina" maglv="12" mana="250" prem="1" aggressive="0" selftarget="1" needlearn="0" script="spells/cancel invisibility.lua"> <instant name="Cancel Invisibility" words="exana ina" maglv="12" mana="250" prem="0" aggressive="0" selftarget="1" needlearn="0" script="spells/cancel invisibility.lua">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</instant> </instant>
<instant name="Ultimate Light" words="utevo vis lux" maglv="12" mana="140" prem="1" aggressive="0" selftarget="1" needlearn="0" script="spells/ultimate light.lua"> <instant name="Ultimate Light" words="utevo vis lux" maglv="12" mana="140" prem="0" aggressive="0" selftarget="1" needlearn="0" script="spells/ultimate light.lua">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
@ -281,17 +281,17 @@
<vocation name="Paladin" /> <vocation name="Paladin" />
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
</conjure> </conjure>
<conjure name="Conjure Bolt" words="exevo con mort" maglv="6" mana="70" soul="0" prem="1" conjureId="3446" conjureCount="10" needlearn="0" function="conjureItem"> <conjure name="Conjure Bolt" words="exevo con mort" maglv="6" mana="70" soul="0" prem="0" conjureId="3446" conjureCount="10" needlearn="0" function="conjureItem">
<vocation name="Paladin" /> <vocation name="Paladin" />
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
</conjure> </conjure>
<conjure name="Conjure Power Bolt" words="exevo con vis" maglv="14" mana="200" soul="0" prem="1" conjureId="3450" conjureCount="2" needlearn="0" function="conjureItem"> <conjure name="Conjure Power Bolt" words="exevo con vis" maglv="14" mana="200" soul="0" prem="0" conjureId="3450" conjureCount="2" needlearn="0" function="conjureItem">
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
</conjure> </conjure>
<conjure name="Conjure Infernal Bolt" words="exevo con mort flam" maglv="16" mana="180" soul="0" prem="1" conjureId="6528" conjureCount="1" needlearn="0" function="conjureItem"> <conjure name="Conjure Infernal Bolt" words="exevo con mort flam" maglv="16" mana="180" soul="0" prem="0" conjureId="6528" conjureCount="1" needlearn="0" function="conjureItem">
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
</conjure> </conjure>
<conjure name="Enchant Staff" words="exeta vis" maglv="22" mana="80" prem="1" conjureId="3321" reagentId="3289" needlearn="0" function="conjureItem"> <conjure name="Enchant Staff" words="exeta vis" maglv="22" mana="80" prem="0" conjureId="3321" reagentId="3289" needlearn="0" function="conjureItem">
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
</conjure> </conjure>
<conjure name="Poison Field" words="adevo grav pox" maglv="2" mana="50" soul="0" reagentId="3147" conjureId="3172" conjureCount="3" needlearn="0" function="conjureRune"> <conjure name="Poison Field" words="adevo grav pox" maglv="2" mana="50" soul="0" reagentId="3147" conjureId="3172" conjureCount="3" needlearn="0" function="conjureRune">
@ -322,7 +322,7 @@
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</conjure> </conjure>
<conjure name="Fireball" words="adori flam" maglv="5" mana="60" soul="0" prem="1" reagentId="3147" conjureId="3189" conjureCount="3" needlearn="0" function="conjureRune"> <conjure name="Fireball" words="adori flam" maglv="5" mana="60" soul="0" prem="0" reagentId="3147" conjureId="3189" conjureCount="3" needlearn="0" function="conjureRune">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
<vocation name="Paladin" /> <vocation name="Paladin" />
@ -346,7 +346,7 @@
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</conjure> </conjure>
<conjure name="Poison Bomb" words="adevo mas pox" maglv="8" mana="130" soul="0" prem="1" reagentId="3147" conjureId="3173" conjureCount="2" needlearn="0" function="conjureRune"> <conjure name="Poison Bomb" words="adevo mas pox" maglv="8" mana="130" soul="0" prem="0" reagentId="3147" conjureId="3173" conjureCount="2" needlearn="0" function="conjureRune">
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</conjure> </conjure>
@ -356,7 +356,7 @@
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</conjure> </conjure>
<conjure name="Soulfire" words="adevo res flam" maglv="13" mana="150" soul="0" prem="1" reagentId="3147" conjureId="3195" conjureCount="2" needlearn="0" function="conjureRune"> <conjure name="Soulfire" words="adevo res flam" maglv="13" mana="150" soul="0" prem="0" reagentId="3147" conjureId="3195" conjureCount="2" needlearn="0" function="conjureRune">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
@ -380,7 +380,7 @@
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</conjure> </conjure>
<conjure name="Energy Bomb" words="adevo mas vis" maglv="18" mana="220" soul="0" prem="1" reagentId="3147" conjureId="3149" conjureCount="2" needlearn="0" function="conjureRune"> <conjure name="Energy Bomb" words="adevo mas vis" maglv="18" mana="220" soul="0" prem="0" reagentId="3147" conjureId="3149" conjureCount="2" needlearn="0" function="conjureRune">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
</conjure> </conjure>
@ -410,7 +410,7 @@
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</conjure> </conjure>
<conjure name="Animate Dead" words="adana mort" maglv="7" mana="300" soul="0" prem="1" reagentId="3147" conjureId="3203" conjureCount="2" needlearn="0" function="conjureRune"> <conjure name="Animate Dead" words="adana mort" maglv="7" mana="300" soul="0" prem="0" reagentId="3147" conjureId="3203" conjureCount="2" needlearn="0" function="conjureRune">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
@ -428,7 +428,7 @@
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
</conjure> </conjure>
<conjure name="Desintegrate" words="adito tera" maglv="8" mana="100" soul="0" prem="1" reagentId="3147" conjureId="3197" blocking="false" conjureCount="3" needlearn="0" function="conjureRune"> <conjure name="Desintegrate" words="adito tera" maglv="8" mana="100" soul="0" prem="0" reagentId="3147" conjureId="3197" blocking="false" conjureCount="3" needlearn="0" function="conjureRune">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Paladin" /> <vocation name="Paladin" />
@ -436,11 +436,11 @@
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
<vocation name="Royal Paladin" /> <vocation name="Royal Paladin" />
</conjure> </conjure>
<conjure name="Magic Wall" words="adevo grav tera" maglv="14" mana="250" soul="0" prem="1" reagentId="3147" conjureId="3180" conjureCount="4" needlearn="0" function="conjureRune"> <conjure name="Magic Wall" words="adevo grav tera" maglv="14" mana="250" soul="0" prem="0" reagentId="3147" conjureId="3180" conjureCount="4" needlearn="0" function="conjureRune">
<vocation name="Sorcerer" /> <vocation name="Sorcerer" />
<vocation name="Master Sorcerer" /> <vocation name="Master Sorcerer" />
</conjure> </conjure>
<conjure name="Paralyze" words="adana ani" maglv="35" mana="600" soul="0" prem="1" reagentId="3147" conjureId="3165" conjureCount="1" needlearn="0" function="conjureRune"> <conjure name="Paralyze" words="adana ani" maglv="35" mana="600" soul="0" prem="0" reagentId="3147" conjureId="3165" conjureCount="1" needlearn="0" function="conjureRune">
<vocation name="Druid" /> <vocation name="Druid" />
<vocation name="Elder Druid" /> <vocation name="Elder Druid" />
</conjure> </conjure>

View File

@ -44,11 +44,9 @@
<talkaction words="/queryhouses" separator=" " script="query_houses.lua" /> <talkaction words="/queryhouses" separator=" " script="query_houses.lua" />
<!-- player talkactions --> <!-- player talkactions -->
<talkaction words="!buypremium" script="buyprem.lua"/>
<talkaction words="!buyhouse" script="buyhouse.lua"/> <talkaction words="!buyhouse" script="buyhouse.lua"/>
<talkaction words="!sellhouse" separator=" " script="sellhouse.lua" /> <talkaction words="!sellhouse" separator=" " script="sellhouse.lua" />
<talkaction words="!leavehouse" script="leavehouse.lua"/> <talkaction words="!leavehouse" script="leavehouse.lua"/>
<talkaction words="!changesex" script="changesex.lua"/>
<talkaction words="!uptime" script="uptime.lua"/> <talkaction words="!uptime" script="uptime.lua"/>
<talkaction words="!deathlist" script="deathlist.lua"/> <talkaction words="!deathlist" script="deathlist.lua"/>
<talkaction words="!kills" script="kills.lua"/> <talkaction words="!kills" script="kills.lua"/>

View File

@ -140,6 +140,9 @@ bool BehaviourDatabase::loadConditions(ScriptReader& script, NpcBehaviour* behav
} else if (identifier == "premium") { } else if (identifier == "premium") {
condition->type = BEHAVIOUR_TYPE_ISPREMIUM; condition->type = BEHAVIOUR_TYPE_ISPREMIUM;
searchTerm = true; searchTerm = true;
} else if (identifier == "realpremium") {
condition->type = BEHAVIOUR_TYPE_ISREALPREMIUM;
searchTerm = true;
} else if (identifier == "pvpenforced") { } else if (identifier == "pvpenforced") {
condition->type = BEHAVIOUR_TYPE_PVPENFORCED; condition->type = BEHAVIOUR_TYPE_PVPENFORCED;
searchTerm = true; searchTerm = true;
@ -801,6 +804,9 @@ bool BehaviourDatabase::checkCondition(const NpcBehaviourCondition* condition, P
} }
break; break;
case BEHAVIOUR_TYPE_ISPREMIUM: case BEHAVIOUR_TYPE_ISPREMIUM:
break;
case BEHAVIOUR_TYPE_ISREALPREMIUM:
if (!player->isPremium()) { if (!player->isPremium()) {
return false; return false;
} }

View File

@ -72,6 +72,7 @@ enum NpcBehaviourType_t
BEHAVIOUR_TYPE_KNIGHT, // get/set vocation BEHAVIOUR_TYPE_KNIGHT, // get/set vocation
BEHAVIOUR_TYPE_PALADIN, // get/set vocation BEHAVIOUR_TYPE_PALADIN, // get/set vocation
BEHAVIOUR_TYPE_ISPREMIUM, // is account premium BEHAVIOUR_TYPE_ISPREMIUM, // is account premium
BEHAVIOUR_TYPE_ISREALPREMIUM, // is REALLY account premium because many isPremium features are for free players also
BEHAVIOUR_TYPE_PVPENFORCED, // get world type pvpenforced BEHAVIOUR_TYPE_PVPENFORCED, // get world type pvpenforced
BEHAVIOUR_TYPE_MALE, // is player male BEHAVIOUR_TYPE_MALE, // is player male
BEHAVIOUR_TYPE_FEMALE, // is player female BEHAVIOUR_TYPE_FEMALE, // is player female

View File

@ -329,7 +329,7 @@ ChatChannel* Chat::createChannel(const Player& player, uint16_t channelId)
case CHANNEL_PRIVATE: { case CHANNEL_PRIVATE: {
//only 1 private channel for each premium player //only 1 private channel for each premium player
if (!player.isPremium() || getPrivateChannel(player)) { if (getPrivateChannel(player)) {
return nullptr; return nullptr;
} }
@ -522,7 +522,7 @@ ChannelList Chat::getChannelList(const Player& player)
} }
} }
if (!hasPrivate && player.isPremium()) { if (!hasPrivate) {
list.push_front(&dummyPrivate); list.push_front(&dummyPrivate);
} }
return list; return list;

View File

@ -1725,7 +1725,7 @@ bool Game::playerBroadcastMessage(Player* player, const std::string& text) const
void Game::playerCreatePrivateChannel(uint32_t playerId) void Game::playerCreatePrivateChannel(uint32_t playerId)
{ {
Player* player = getPlayerByID(playerId); Player* player = getPlayerByID(playerId);
if (!player || !player->isPremium()) { if (!player) {
return; return;
} }

View File

@ -1852,7 +1852,7 @@ void ProtocolGame::sendOutfitWindow()
protocolOutfits.emplace_back(outfit.name, outfit.lookType, addons); protocolOutfits.emplace_back(outfit.name, outfit.lookType, addons);
if (CLIENT_VERSION_780 <= clientVersion && clientVersion <= CLIENT_VERSION_792) { if (CLIENT_VERSION_780 <= clientVersion && clientVersion <= CLIENT_VERSION_792) {
if (protocolOutfits.size() == 15) { // Game client doesn't allow more than 15 outfits in 780-792 if (protocolOutfits.size() == 20) { // Game client doesn't allow more than 15 outfits in 780-792
break; break;
} }
} }