mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-05-16 00:09:21 +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.
|
-- Misc.
|
||||||
allowChangeOutfit = true
|
allowChangeOutfit = true
|
||||||
freePremium = true
|
freePremium = false
|
||||||
kickIdlePlayerAfterMinutes = 15
|
kickIdlePlayerAfterMinutes = 15
|
||||||
maxMessageBuffer = 8
|
maxMessageBuffer = 8
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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
|
|
||||||
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
|
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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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."
|
||||||
|
@ -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>
|
||||||
|
@ -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"/>
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user