mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-05-15 15:59:20 +02:00
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:
parent
37aedf0555
commit
6fda4d4663
@ -80,7 +80,7 @@ mysqlSock = ""
|
||||
|
||||
-- Misc.
|
||||
allowChangeOutfit = true
|
||||
freePremium = true
|
||||
freePremium = false
|
||||
kickIdlePlayerAfterMinutes = 15
|
||||
maxMessageBuffer = 8
|
||||
|
||||
|
@ -5,31 +5,34 @@
|
||||
<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="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="141" name="Summoner" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="142" name="Warrior" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="147" name="Barbarian" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="148" name="Druid" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="149" name="Wizard" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="150" name="Oriental" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="155" name="Pirate" premium="yes" unlocked="no" enabled="yes" />
|
||||
<outfit type="0" looktype="156" name="Assassin" premium="yes" unlocked="no" enabled="yes" />
|
||||
<outfit type="0" looktype="157" name="Beggar" premium="yes" unlocked="no" enabled="yes" />
|
||||
<outfit type="0" looktype="158" name="Shaman" premium="yes" unlocked="no" enabled="yes" />
|
||||
<outfit type="0" looktype="140" name="Noblewoman" premium="no" 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="no" 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="no" 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="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="0" looktype="155" name="Pirate" premium="no" 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="no" 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 -->
|
||||
<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="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="132" name="Nobleman" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="133" name="Summoner" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="134" name="Warrior" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="143" name="Barbarian" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="144" name="Druid" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="145" name="Wizard" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="146" name="Oriental" premium="yes" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="151" name="Pirate" premium="yes" unlocked="no" enabled="yes" />
|
||||
<outfit type="1" looktype="152" name="Assassin" premium="yes" unlocked="no" enabled="yes" />
|
||||
<outfit type="1" looktype="153" name="Beggar" premium="yes" unlocked="no" enabled="yes" />
|
||||
<outfit type="1" looktype="154" name="Shaman" premium="yes" unlocked="no" enabled="yes" />
|
||||
<outfit type="1" looktype="132" name="Nobleman" premium="no" 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="no" 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="no" 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="no" unlocked="yes" enabled="yes" />
|
||||
<outfit type="1" looktype="151" name="Pirate" premium="no" 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="no" 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>
|
||||
|
@ -16,40 +16,13 @@ function onLogin(player)
|
||||
nextUseStaminaTime[player.uid] = 0
|
||||
|
||||
-- Promotion
|
||||
if player:isPremium() then
|
||||
if player:getVocation():getId() ~= 0 and player:getVocation():getId() < 5 and player:getStorageValue(30018) == 1 then
|
||||
player:setVocation(player:getVocation():getId() + 4)
|
||||
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
|
||||
if player:getVocation():getId() ~= 0 and player:getVocation():getId() < 5 and player:getStorageValue(30018) == 1 then
|
||||
player:setVocation(player:getVocation():getId() + 4)
|
||||
end
|
||||
|
||||
-- Premium system
|
||||
if player:isPremium() then
|
||||
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
|
||||
|
||||
-- Events
|
||||
|
@ -343,6 +343,10 @@ function Player:onGainExperience(source, exp, rawExp)
|
||||
end
|
||||
end
|
||||
|
||||
if self:isPremium() then
|
||||
exp = exp * (1 + 10 / 100)
|
||||
end
|
||||
|
||||
return exp
|
||||
end
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
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})
|
||||
item:getPosition():sendMagicEffect(11)
|
||||
Game.sendMagicEffect({x = 32498, y = 31621, z = 06}, 11)
|
||||
|
@ -1,5 +1,5 @@
|
||||
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})
|
||||
item:getPosition():sendMagicEffect(11)
|
||||
Game.sendMagicEffect({x = 32664, y = 32735, z = 06}, 11)
|
||||
|
@ -1,8 +1,5 @@
|
||||
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
|
||||
|
||||
function onAddItem(item, tileitem, position)
|
||||
|
@ -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
|
||||
|
||||
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",Amount>1 -> "Sorry, you do not have that many."
|
||||
Topic=2 -> "Maybe you sell it next time."
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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="Master Sorcerer" />
|
||||
<vocation name="Druid" />
|
||||
@ -23,25 +23,25 @@
|
||||
<vocation name="Sorcerer" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
</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="Master Sorcerer" />
|
||||
</instant>
|
||||
|
||||
<!-- 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="Elder Druid" />
|
||||
</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="Elder Druid" />
|
||||
</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="Elder Druid" />
|
||||
</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="Elder Druid" />
|
||||
</instant>
|
||||
@ -49,17 +49,17 @@
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</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="Elder Druid" />
|
||||
</instant>
|
||||
|
||||
|
||||
<!-- 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" />
|
||||
</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="Elite Knight" />
|
||||
</instant>
|
||||
@ -101,7 +101,7 @@
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Elite Knight" />
|
||||
</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="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
@ -129,7 +129,7 @@
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</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="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
@ -139,13 +139,13 @@
|
||||
<vocation name="Royal Paladin" />
|
||||
<vocation name="Elite Knight" />
|
||||
</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="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</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="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
@ -169,13 +169,13 @@
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</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="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</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="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
@ -193,7 +193,7 @@
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</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="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
@ -211,13 +211,13 @@
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</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="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</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="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
@ -281,17 +281,17 @@
|
||||
<vocation name="Paladin" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</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="Royal Paladin" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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">
|
||||
@ -322,7 +322,7 @@
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</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="Master Sorcerer" />
|
||||
<vocation name="Paladin" />
|
||||
@ -346,7 +346,7 @@
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</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="Elder Druid" />
|
||||
</conjure>
|
||||
@ -356,7 +356,7 @@
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</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="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
@ -380,7 +380,7 @@
|
||||
<vocation name="Master Sorcerer" />
|
||||
<vocation name="Elder Druid" />
|
||||
</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="Master Sorcerer" />
|
||||
</conjure>
|
||||
@ -410,7 +410,7 @@
|
||||
<vocation name="Druid" />
|
||||
<vocation name="Elder Druid" />
|
||||
</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="Druid" />
|
||||
<vocation name="Master Sorcerer" />
|
||||
@ -428,7 +428,7 @@
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</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="Druid" />
|
||||
<vocation name="Paladin" />
|
||||
@ -436,11 +436,11 @@
|
||||
<vocation name="Elder Druid" />
|
||||
<vocation name="Royal Paladin" />
|
||||
</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="Master Sorcerer" />
|
||||
</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="Elder Druid" />
|
||||
</conjure>
|
||||
|
@ -44,11 +44,9 @@
|
||||
<talkaction words="/queryhouses" separator=" " script="query_houses.lua" />
|
||||
|
||||
<!-- player talkactions -->
|
||||
<talkaction words="!buypremium" script="buyprem.lua"/>
|
||||
<talkaction words="!buyhouse" script="buyhouse.lua"/>
|
||||
<talkaction words="!sellhouse" separator=" " script="sellhouse.lua" />
|
||||
<talkaction words="!leavehouse" script="leavehouse.lua"/>
|
||||
<talkaction words="!changesex" script="changesex.lua"/>
|
||||
<talkaction words="!uptime" script="uptime.lua"/>
|
||||
<talkaction words="!deathlist" script="deathlist.lua"/>
|
||||
<talkaction words="!kills" script="kills.lua"/>
|
||||
|
@ -140,6 +140,9 @@ bool BehaviourDatabase::loadConditions(ScriptReader& script, NpcBehaviour* behav
|
||||
} else if (identifier == "premium") {
|
||||
condition->type = BEHAVIOUR_TYPE_ISPREMIUM;
|
||||
searchTerm = true;
|
||||
} else if (identifier == "realpremium") {
|
||||
condition->type = BEHAVIOUR_TYPE_ISREALPREMIUM;
|
||||
searchTerm = true;
|
||||
} else if (identifier == "pvpenforced") {
|
||||
condition->type = BEHAVIOUR_TYPE_PVPENFORCED;
|
||||
searchTerm = true;
|
||||
@ -801,6 +804,9 @@ bool BehaviourDatabase::checkCondition(const NpcBehaviourCondition* condition, P
|
||||
}
|
||||
break;
|
||||
case BEHAVIOUR_TYPE_ISPREMIUM:
|
||||
|
||||
break;
|
||||
case BEHAVIOUR_TYPE_ISREALPREMIUM:
|
||||
if (!player->isPremium()) {
|
||||
return false;
|
||||
}
|
||||
|
@ -72,6 +72,7 @@ enum NpcBehaviourType_t
|
||||
BEHAVIOUR_TYPE_KNIGHT, // get/set vocation
|
||||
BEHAVIOUR_TYPE_PALADIN, // get/set vocation
|
||||
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_MALE, // is player male
|
||||
BEHAVIOUR_TYPE_FEMALE, // is player female
|
||||
|
@ -329,7 +329,7 @@ ChatChannel* Chat::createChannel(const Player& player, uint16_t channelId)
|
||||
|
||||
case CHANNEL_PRIVATE: {
|
||||
//only 1 private channel for each premium player
|
||||
if (!player.isPremium() || getPrivateChannel(player)) {
|
||||
if (getPrivateChannel(player)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@ -522,7 +522,7 @@ ChannelList Chat::getChannelList(const Player& player)
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasPrivate && player.isPremium()) {
|
||||
if (!hasPrivate) {
|
||||
list.push_front(&dummyPrivate);
|
||||
}
|
||||
return list;
|
||||
|
@ -1725,7 +1725,7 @@ bool Game::playerBroadcastMessage(Player* player, const std::string& text) const
|
||||
void Game::playerCreatePrivateChannel(uint32_t playerId)
|
||||
{
|
||||
Player* player = getPlayerByID(playerId);
|
||||
if (!player || !player->isPremium()) {
|
||||
if (!player) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1852,7 +1852,7 @@ void ProtocolGame::sendOutfitWindow()
|
||||
|
||||
protocolOutfits.emplace_back(outfit.name, outfit.lookType, addons);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user