' Eclipse Evolution 2.7 Scripting File ' Global Variables Public GameName Public MAX_MAPS Public MOTD ' Color Constants Public Const BLACK = 0 Public Const BLUE = 1 Public Const GREEN = 2 Public Const CYAN = 3 Public Const RED = 4 Public Const MAGENTA = 5 Public Const BROWN = 6 Public Const GREY = 7 Public Const DARKGREY = 8 Public Const BRIGHTBLUE = 9 Public Const BRIGHTGREEN = 10 Public Const BRIGHTCYAN = 11 Public Const BRIGHTRED = 12 Public Const PINK = 13 Public Const YELLOW = 14 Public Const WHITE = 15 ' Admin Constants Public Const ADMIN_MONITER = 1 Public Const ADMIN_MAPPER = 2 Public Const ADMIN_DEVELOPER = 3 Public Const ADMIN_CREATOR = 4 ' Executes when the server initially loads. Sub OnServerLoad() GameName = GetVar("Data.ini", "CONFIG", "GameName") MAX_MAPS = GetVar("Data.ini", "MAX", "MAX_MAPS") MOTD = GetVar("MOTD.ini", "MOTD", "Msg") End Sub ' Executes when the scripts are reloaded. Sub OnScriptReload() GameName = GetVar("Data.ini", "CONFIG", "GameName") MAX_MAPS = GetVar("Data.ini", "MAX", "MAX_MAPS") MOTD = GetVar("MOTD.ini", "MOTD", "Msg") End Sub ' Executes the MOTD is changed by the client. Sub ChangeMOTD() MOTD = GetVar("MOTD.ini", "MOTD", "Msg") End Sub ' Executes when a new character is created. Sub OnNewChar(Index, CharNum) Call putvar("/player/" & getplayername(index) & ".ini", "data", "new", 0) Call putvar("/player/" & getplayername(index) & ".ini", "data", "fname", 0) Call putvar("/player/" & getplayername(index) & ".ini", "data", "mode", 0) Call putvar("/player/" & getplayername(index) & ".ini", "data", "networth", 0) Call putvar("/player/" & getplayername(index) & ".ini", "data", "drones", 0) Call putvar("/player/" & getplayername(index) & ".ini", "data", "style", RAND(0,4)) Call putvar("/player/" & getplayername(index) & ".ini", "data", "colony", 0) Call putvar("/player/" & getplayername(index) & ".ini", "data", "people", 0) Call putvar("/player/" & getplayername(index) & ".ini", "ship", "repair", 0) Call putvar("/player/" & getplayername(index) & ".ini", "battle", "tactics", 10) Call putvar("/player/" & getplayername(index) & ".ini", "battle", "ion", 25) Call putvar("/player/" & getplayername(index) & ".ini", "dead", "map", 0) Call putvar("/player/" & getplayername(index) & ".ini", "dead", "x", 5) Call putvar("/player/" & getplayername(index) & ".ini", "dead", "y", 5) Call putvar("/player/" & getplayername(index) & ".ini", "player", "sprite", INT(getplayersprite(index))) Call putvar("/player/" & getplayername(index) & ".ini", "player", "class", 1) Call putvar("/player/" & getplayername(index) & ".ini", "ship", "repair", 0) Call putvar("/player/" & getplayername(index) & ".ini", "ship", "name", "Jump Pod") Call putvar("/player/" & getplayername(index) & ".ini", "skill", "engineer", 0) Call putvar("/player/" & getplayername(index) & ".ini", "skill", "mechanic", 0) Call putvar("/player/" & getplayername(index) & ".ini", "skill", "computer", 0) Call putvar("/player/" & getplayername(index) & ".ini", "skill", "chemist", 0) Call putvar("/player/" & getplayername(index) & ".ini", "skill", "refine", 0) End Sub ' Executes every second, based on the server time. Sub TimedEvent(Hours, Minutes, Seconds) If Minutes = 0 Then If Seconds = 0 Then Call AdminMsg("ECLIPSE/StarJumper ROCKS", YELLOW) End If End If End Sub ' Executes when a player presses the CONTROL key. Sub OnAttack(Index, Damage) Dim Target If Int(Damage) > 0 Then If Int(GetPlayerTarget(Index)) > 0 Then Target = GetPlayerTarget(Index) Call DamagePlayer(Index, Target, Damage) Else Target = GetPlayerTargetNPC(Index) Call DamageNPC(Index, Target, Damage) End If End If End Sub Sub OnArrowHit(Index, Damage) Dim Target If Int(Damage) > 0 Then If Int(GetPlayerTarget(Index)) > 0 Then Target = GetPlayerTarget(Index) Call DamagePlayer(Index, Target, Damage) Else Target = GetPlayerTargetNPC(Index) Call DamageNPC(Index, Target, Damage) End If End If End Sub Sub PlayerHit(Index, NPCNum, Damage) If Damage > 0 then Call NPCAttack(NPCNum, Index, Damage) End If End Sub ' Executes when a hotkey is pressed client-side. Sub HotScript(Index, KeyID) Select Case KeyID ' Executes when any player presses the PageUp key. Case 1 Call liftoff(index) ' Executes when any player presses the Delete key. Case 2 Call statmenu(index) Exit Sub ' Executes when players press the End key. Case 3 ' Executes when players press the PageDown key. Case 4 End Select End Sub End Select End Sub ' Executes when something on a custom menu is clicked. Sub MenuScripts(Index, Clicked_Index, Menu_Type) Dim MenuTitle Dim FieldMessage Dim drone Dim plam Dim own Dim pmax Dim tot Dim takd Dim revt Dim yver Dim people Dim clam Dim pomax Dim pot Dim pakd Dim pevt Dim pver MenuTitle = getplayermenuclicktitle(Index) FieldMessage = getplayermenuclickmsg(Index) Select Case Menu_Type Case 1 If MenuTitle = "Main" Then If Clicked_Index = 1 Then Call production(index) ElseIf Clicked_Index = 2 Then Call assault(index) ElseIf Clicked_Index = 3 Then Call raid(index) ElseIf Clicked_Index = 4 Then Call tactical(index) End If ElseIf MenuTitle = "Faction" Then If Clicked_Index = 1 Then Call putvar("/player/" & getplayername(index) & ".ini", "data", "fname", TRIM("United Worlds")) call putVar("/player/" & GetPlayerName(index) & ".ini", "data", "new", 1) Call sselect(index) ElseIf Clicked_Index = 2 Then Call putvar("/player/" & getplayername(index) & ".ini", "data", "fname", TRIM("Tulsar Empire")) call putVar("/player/" & GetPlayerName(index) & ".ini", "data", "new", 1) Call sselect(index) ElseIf Clicked_Index = 3 Then Call putvar("/player/" & getplayername(index) & ".ini", "data", "fname", TRIM("Argon Republic")) call putVar("/player/" & GetPlayerName(index) & ".ini", "data", "new", 1) Call sselect(index) End If ElseIf MenuTitle = "Special" Then If Clicked_Index = 1 Then Call Give_Currency(index, 1, 15000) call putVar("/player/" & GetPlayerName(index) & ".ini", "data", "new", 2) Call CustomMenuClose(Index) Call statmenu(index) ElseIf Clicked_Index = 2 Then Call Give_Currency(index, 1, 10000) call putVar("/player/" & GetPlayerName(index) & ".ini", "data", "new", 2) call putVar("/player/" & GetPlayerName(index) & ".ini", "skill", "engineer", 100) Call CustomMenuClose(Index) Call statmenu(index) ElseIf Clicked_Index = 3 Then Call Give_Currency(index, 1, 10000) call putVar("/player/" & GetPlayerName(index) & ".ini", "data", "new", 2) call Give_Item(index, 2, 0) call Give_Item(index, 3, 0) call Give_Item(index, 4, 0) call Give_Item(index, 5, 0) call Give_Item(index, 6, 0) call Give_Item(index, 7, 0) call Give_Item(index, 8, 0) call putVar("/player/" & GetPlayerName(index) & ".ini", "battle", "ion", 50) Call CustomMenuClose(Index) Call statmenu(index) ElseIf Clicked_Index = 4 Then Call Give_Currency(index, 1, 10000) call putVar("/player/" & GetPlayerName(index) & ".ini", "data", "new", 2) call putVar("/player/" & GetPlayerName(index) & ".ini", "battle", "tactics", 8) call putVar("/player/" & GetPlayerName(index) & ".ini", "data", "drones", 25) Call CustomMenuClose(Index) Call statmenu(index) End If End If Case 2 drone=getvar("/player/" & getplayername(index) & ".ini", "data", "drones") plam=getvar("/planet/" & getplayermap(index) & ".ini", "data", "drone") own=getvar("/planet/" & getplayermap(index) & ".ini", "data", "rule") pmax=getvar("/planet/" & getplayermap(index) & ".ini", "data", "dmax") tot=INT(FieldMessage)+INT(plam) takd=INT(drone)-INT(FieldMessage) revt=INT(FieldMessage)+INT(drone) yver=INT(plam)-INT(FieldMessage) people=getvar("/player/" & getplayername(index) & ".ini", "data", "people") clam=getvar("/planet/" & getplayermap(index) & ".ini", "data", "pop") pomax=getvar("/planet/" & getplayermap(index) & ".ini", "data", "pmax") pot=INT(FieldMessage)+INT(clam) pakd=INT(people)-INT(FieldMessage) pevt=INT(FieldMessage)+INT(people) pver=INT(clam)-INT(FieldMessage) If MenuTitle = "Main" Then If Clicked_Index = 1 Then If own=TRIM(getplayername(index)) Then If INT(FieldMessage) 1000 Then Call BattleMsg(Index, "You have maxed your speed!", BRIGHTRED, 0) Exit Sub End If Call SetPlayerSPEED(Index, GetPlayerSPEED(Index) + 1) Call BattleMsg(Index, "You have gained more speed!", WHITE, 0) End Select ' Remove one point after the sub in question is done Call SetPlayerPOINTS(Index, GetPlayerPOINTS(Index) - 1) End Sub ' Executes when a player steps onto a scripted tile. Sub ScriptedTile(Index, Script) Dim sname Dim map Dim xloc Dim yloc Dim sprite Dim repair Dim engine Dim hull Dim ship Dim cmap Dim cxloc Dim cyloc Dim psprite Dim loc Dim mcost Dim power Dim pmath Dim sdata Select Case Script Case 0 sname=getvar("/player/" & getplayername(index) & ".ini", "ship", "name") map=getvar("/loc/exit/" & Getplayermap(index) & ".ini", "data", "map") xloc=getvar("/loc/exit/" & Getplayermap(index) & ".ini", "data", "x") yloc=getvar("/loc/exit/" & Getplayermap(index) & ".ini", "data", "y") sprite=getvar("/ship/" & TRIM(sname) & ".ini", "data", "sprite") repair=getvar("/player/" & Getplayername(index) & ".ini", "ship", "repair") engine=getvar("/ship/" & TRIM(sname) & ".ini", "data", "engine") hull=getvar("/ship/" & TRIM(sname) & ".ini", "data", "hull") ship=getvar("/ship/" & TRIM(sname) & ".ini", "data", "class") If repair=1 Then call setplayersprite(index, 1) call setplayerspeed(index, 300) call setplayerhp(index, 300) call setplayermagi(index, 100) call setplayermp(index, 100) Call SetPlayerArmorSlot(Index, 0) Call SetPlayerWeaponSlot(Index, 0) Call SetPlayerHelmetSlot(Index, 0) Call SetPlayerShieldSlot(Index, 0) Call SetPlayerNecklaceSlot(Index, 0) Call SetPlayerRingSlot(Index, 0) Call SetPlayerLegsSlot(Index, 0) Call setplayerclass(index, 10) Call sendstats(index) call playerwarp(index, INT(map), INT(xloc), INT(yloc)) call putvar("/player/" & getplayername(index) & ".ini", "data", "mode", 1) Call battlemsg(index, "Your ship needs repair, Temporary JumpPod issued", RED, 1) Else Call setplayersprite(index, INT(sprite)) call setplayerspeed(index, INT(hull)) call setplayerhp(index, INT(hull)) call setplayermagi(index, INT(engine)) call setplayermp(index, INT(engine)) Call SetPlayerArmorSlot(Index, 0) Call SetPlayerWeaponSlot(Index, 0) Call SetPlayerHelmetSlot(Index, 0) Call SetPlayerShieldSlot(Index, 0) Call SetPlayerNecklaceSlot(Index, 0) Call SetPlayerRingSlot(Index, 0) Call SetPlayerLegsSlot(Index, 0) Call setplayerclass(index, INT(ship)) Call sendstats(index) call playerwarp(index, INT(map), INT(xloc), INT(yloc)) call putvar("/player/" & getplayername(index) & ".ini", "data", "mode", 1) End If Exit Sub Case 1 cmap=getvar("/loc/city/" & Getplayermap(index) & ".ini", "data", "map") cxloc=getvar("/loc/city/" & Getplayermap(index) & ".ini", "data", "x") cyloc=getvar("/loc/city/" & Getplayermap(index) & ".ini", "data", "y") psprite=getvar("/player/" & getplayername(index) & ".ini", "player", "sprite") Call setplayersprite(index, INT(psprite)) Call setplayerclass(index, 1) Call SetPlayerArmorSlot(Index, 0) Call SetPlayerWeaponSlot(Index, 0) Call SetPlayerHelmetSlot(Index, 0) Call SetPlayerShieldSlot(Index, 0) Call SetPlayerNecklaceSlot(Index, 0) Call SetPlayerRingSlot(Index, 0) Call SetPlayerLegsSlot(Index, 0) Call setplayerstr(index, 10) call setplayerspeed(index, 50) call setplayerdef(index, 0) call setplayerhp(index, 50) call setplayermagi(index, 0) call setplayermp(index, 0) Call sendstats(index) call putvar("/player/" & getplayername(index) & ".ini", "data", "mode", 0) call playerwarp(index, INT(cmap), INT(cxloc), INT(cyloc)) Exit Sub Case 2 sdata=getvar("/player/" & getplayername(index) & ".ini", "ship", "name") loc=GetVar("/loc/enter/" & getplayermap(index) & ".ini", "data", "map") mcost=getvar("/ship/" & TRIM(sdata) & ".ini", "data", "planet") power=getplayermp(index) pmath=INT(power)-INT(mcost) If getplayermp(index) >= INT(mcost) Then Call playerwarp(index, INT(loc), Rand(0, 40), Rand(0, 40)) call setplayermp(index, INT(pmath)) Else Call battlemsg(index, "Your power reserves are too low", RED, 1) End If Exit Sub Case Else Call PlayerMsg(Index, "No tile script found. Please contact an admin to solve this problem.", WHITE) Exit Sub End Select End Sub ' Executes when a player clicks on an OnClick tile. Sub OnClick(Index, Script) Select Case Script Case 0 Call PlayerMsg(Index, "This scripted tile has no apparent use.", WHITE) Exit Sub Case Else Call PlayerMsg(Index, "No tile script found. Please contact an admin to solve this problem.", WHITE) Exit Sub End Select End Sub ' Out-dated: Executes when a player chooses yes or no on a player prompt. Sub PlayerPrompt(Index, Prompt, Value) If Prompt = 6 Then Select Case Value Case 0 Call GlobalMsg("Hi This is a Yes answer!", CYAN) Case 1 Call GlobalMsg("This is case 1?", CYAN) End Select Else Select Case Value Case 0 Call GlobalMsg("Hi This is a No answer!", RED) Case 1 Call GlobalMsg("This is no case 1?", RED) End Select End If End Sub ' Out-dated: Executes query box responses. Sub QueryBox(Index, Prompt) Value = GetVar("responses.ini", "Responses", CStr(Index)) End Sub ' Executes every time a player drops an item. Sub OnItemDrop(Index, Map, ItemNum, ItemVal, ItemDur, ItemIndex, InvSlot) End Sub ' Executes each time a player changes map. Sub OnMapLoad(Index, OldMap, NewMap) Dim occupied Dim planet Dim gtic Dim ptic Dim atic Dim powner Dim pfac Dim yfac Dim plion Dim iond Dim plhp Dim dfion Dim pidam occupied=getvar("/planet/" & getplayermap(index) & ".ini", "data", "own") planet=getvar("/planet/" & getplayermap(index) & ".ini", "data", "planet") gtic=getvar("/planet/global.ini", "data", "tic") ptic=getvar("/planet/" & getplayermap(index) & ".ini", "data", "tic") atic=getvar("/planet/" & getplayermap(index) & ".ini", "data", "use") powner=getvar("/planet/" & getplayermap(index) & ".ini", "data", "rule") pfac=getvar("/player/" & powner & ".ini", "data", "fname") yfac=getvar("/player/" & getplayername(index) & ".ini", "data", "fname") plion=getvar("/planet/" & getplayermap(index) & ".ini", "build", "ion") iond=getvar("/player/" & powner & ".ini", "battle", "ion") plhp=getplayerhp(index) dfion=INT(plion*iond) pidam=INT(plhp)-INT(dfion) If occupied = 1 Then If planet = 1 Then If INT(gtic) > INT(ptic) Then Call putvar("/planet/" & getplayermap(index) & ".ini", "data", "use", INT(atic)+INT(gtic-ptic)) Call putvar("/planet/" & getplayermap(index) & ".ini", "data", "tic", INT(gtic)) Else End If Else End If If TRIM(pfac)=TRIM(yfac) Then Call battlemsg(index, "Incoming broadcast from Colony", WHITE, 0) Call battlemsg(index, "Welcome to " & Trim(powner) & "'s Colony", YELLOW, 0) Else If pidam > 0 Then Call battlemsg(index, "Incoming broadcast from Colony", WHITE, 0) Call battlemsg(index, "Leave " & Trim(powner) & "'s Colony at once!", YELLOW, 0) call battlemsg(index, "Your ship took " & INT(dfion) & " damage from Ion Cannons!", RED, 0) Call SetPlayerHP(Index, INT(pidam)) Else Call battlemsg(index, "Incoming broadcast from Colony", WHITE, 0) Call battlemsg(index, "Leave " & Trim(powner) & "'s Colony at once!", YELLOW, 0) call battlemsg(index, "Your ship took " & INT(dfion) & " damage from Ion Cannons!", RED, 0) Call OnDeath(index) End If End If Else End If End Sub ' Executes whenever an NPC is killed. ' Note: Death occurs as normal externally to this script. Sub OnNPCDeath(Index, Map, NPCNum, NPCIndex) Call BattleMsg(Index, "You killed a " & getnpcname(NPCNum) & ".", BRIGHTRED, 0) End Sub ' Executes when a player is killed by another. ' Note: Death occurs as normal externally to this script. Sub OnPVPDeath(Attacker, Victim) Call GlobalMsg(GetPlayerName(Victim) & " has been killed by " & GetPlayerName(Attacker), BRIGHTRED) End Sub ' Executes when a player dies in an arena by another player. Sub OnArenaDeath(Attacker, Victim) Dim Map Dim X Dim Y Dim Data1 Dim Data2 Dim Data3 Map = GetPlayerMap(Victim) X = GetPlayerX(Victim) Y = GetPlayerY(Victim) Call GlobalMsg(GetPlayerName(Victim) & " has been defeated in the arena by " & GetPlayerName(Attacker), BRIGHTRED) Call SetPlayerHP(Victim, GetPlayerMaXHP(Victim)) Call SetPlayerMP(Victim, GetPlayerMaXMP(Victim)) Call sendHp(Victim) Call sendMP(Victim) Data1 = GetTileData1(Map, X, Y) Data2 = GetTileData2(Map, X, Y) Data3 = GetTileData3(Map, X, Y) Call PlayerWarp(Victim, Data1, Data2, Data3) End Sub ' Executes whenever a player casts a scripted spell. Sub ScriptedSpell(Index, Script) Select Case Script Case 0 Call PlayerMsg(Index, "This scripted spell has no apparent use.", WHITE) Exit Sub Case Else Call PlayerMsg(Index, "No spell script found. Please contact an admin to solve this problem.", WHITE) Exit Sub End Select End Sub ' Executes whenever a scripted NPC does an action. Sub ScriptedNPC(Index, Script) Select Case Script Case 0 Call PlayerMsg(Index, "This scripted NPC has no apparent use.", WHITE) Exit Sub Case Else Call PlayerMsg(Index, "No NPC script found. Please contact an admin to solve this problem.", WHITE) Exit Sub End Select End Sub ' Executed whenever a slash command is sent to the server. Sub Commands(Index) Dim TextSay Dim PlayerID Dim MapNum ' Get the command and arguments from the cache. TextSay = Trim(GetVar("ScriptsCommand.ini", "TEMP", "Text" & Index)) ' Split the command into an array. All arguments are seperated by spaces. TextSay = Split(TextSay) Select Case TextSay(0) Case "/testscripts" Call TestMain(Index) Exit Sub Case "/help" Call PlayerMsg(Index, "Social Commands:", WHITE) Call PlayerMsg(Index, "'msghere = Broadcast Message", WHITE) Call PlayerMsg(Index, "-msghere = Emote Message", WHITE) Call PlayerMsg(Index, "!namehere msghere = Player Message", WHITE) Call PlayerMsg(Index, "Available Commands: /help, /info, /who, /fps, /inv, /stats, /train, /party, /join, /leave, /refresh", WHITE) Exit Sub Case "/calladmins" If GetPlayerAccess(Index) = 0 Then Call AdminMsg(GetPlayerName(Index) & " needs your help!", BRIGHTGREEN) Else Call PlayerMsg(Index, "You are an admin! You cannot call for help!", BRIGHTGREEN) End If Exit Sub Case "/admin" If GetPlayerAccess(Index) > 0 Then Call PlayerMsg(Index, "Social Commands:", WHITE) Call PlayerMsg(Index, """msghere = Global Admin Message", WHITE) Call PlayerMsg(Index, "=msghere = Private Admin Message", WHITE) Call PlayerMsg(Index, "Available Commands: /admin, /loc, /mapeditor, /warpmeto, /warptome, /warpto, /setsprite, /mapreport, /kick, /ban, /edititem, /respawn, /editnpc, /motd, /editshop, /ban, /editspell", WHITE) End If Exit Sub Case "/warpmeto" If GetPlayerAccess(Index) > 0 Then PlayerID = FindPlayer(TextSay(1)) If PlayerID > 0 Then Call PlayerWarp(Index, GetPlayerMap(PlayerID), GetPlayerX(PlayerID), GetPlayerY(PlayerID)) Call PlayerMsg(Index, "You have been warped to " & GetPlayerName(PlayerID) & ".", BROWN) Else Call PlayerMsg(Index, "Player is not online.", WHITE) End If End If Exit Sub Case "/warptome" If GetPlayerAccess(Index) > 0 Then PlayerID = FindPlayer(TextSay(1)) If PlayerID > 0 Then Call PlayerWarp(PlayerID, GetPlayerMap(Index), GetPlayerX(Index), GetPlayerY(Index)) Call PlayerMsg(PlayerID, "You have been warped to " & GetPlayerName(Index) & ".", BROWN) Else Call PlayerMsg(Index, "Player is not online.", WHITE) End If End If Exit Sub Case "/warpto" If GetPlayerAccess(Index) > 0 Then MapNum = TextSay(1) If MapNum > 0 And MapNum 0 Then Call PlayerMapDropItem(Index, GetPlayerWeaponSlot(Index), 0) End If If GetPlayerArmorSlot(Index) > 0 Then Call PlayerMapDropItem(Index, GetPlayerArmorSlot(Index), 0) End If If GetPlayerHelmetSlot(Index) > 0 Then Call PlayerMapDropItem(Index, GetPlayerHelmetSlot(Index), 0) End If If GetPlayerShieldSlot(Index) > 0 Then Call PlayerMapDropItem(Index, GetPlayerShieldSlot(Index), 0) End If If GetPlayerLegsSlot(Index) > 0 Then Call PlayerMapDropItem(Index, GetPlayerLegsSlot(Index), 0) End If If GetPlayerRingSlot(Index) > 0 Then Call PlayerMapDropItem(Index, GetPlayerRingSlot(Index), 0) End If If GetPlayerNecklaceSlot(Index) > 0 Then Call PlayerMapDropItem(Index, GetPlayerNecklaceSlot(Index), 0) End If End Sub ' Executes whenever somebody dies outside of an arena. Sub OnDeath(Index) Call playermsg(index, "You died!", RED) End Sub ' Executes whenever a scripted item is used or double clicked. Sub ScriptedItem(Index, Script) Select Case Script Case 0 Call biodome(index) Exit Sub Case 1 Call extractor(index) Exit Sub Case 2 Call dronebay(index) Exit Sub Case 3 Call dronefac(index) Exit Sub Case 4 Call research(index) Exit Sub Case 5 Call ion(index) Exit Sub Case 6 Call refine(index) Exit Sub Case 7 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Comet") call battlemsg(index, "New Ship-Comet", GREEN, 1) Call Take_Item(index, 12, 0) Exit Sub Case 8 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Comet V2") call battlemsg(index, "New Ship-Comet V2", GREEN, 1) Call Take_Item(index, 13, 0) Exit Sub Case 9 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Comet V3") call battlemsg(index, "New Ship-Comet V3", GREEN, 1) Call Take_Item(index, 14, 0) Exit Sub Case 10 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Spartan") call battlemsg(index, "New Ship-Spartan", GREEN, 1) Call Take_Item(index, 15, 0) Exit Sub Case 11 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Spartan Mark2") call battlemsg(index, "New Ship-Spartan Mark2", GREEN, 1) Call Take_Item(index, 16, 0) Exit Sub Case 12 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Spartan Mark3") call battlemsg(index, "New Ship-Spartan Mark3", GREEN, 1) Call Take_Item(index, 17, 0) Exit Sub Case 13 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Explorer") call battlemsg(index, "New Ship-Explorer", GREEN, 1) Call Take_Item(index, 18, 0) Exit Sub Case 14 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Explorer 2") call battlemsg(index, "New Ship-Explorer 2", GREEN, 1) Call Take_Item(index, 19, 0) Exit Sub Case 15 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Explorer 3") call battlemsg(index, "New Ship-Explorer 3", GREEN, 1) Call Take_Item(index, 20, 0) Exit Sub Case 16 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Falcon") call battlemsg(index, "New Ship-Falcon", GREEN, 1) Call Take_Item(index, 21, 0) Exit Sub Case 17 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Falcon Wing") call battlemsg(index, "New Ship-Falcon Wing", GREEN, 1) Call Take_Item(index, 22, 0) Exit Sub Case 18 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Falcon Claw") call battlemsg(index, "New Ship-Falcon Claw", GREEN, 1) Call Take_Item(index, 23, 0) Exit Sub Case 19 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Viper") call battlemsg(index, "New Ship-Viper", GREEN, 1) Call Take_Item(index, 24, 0) Exit Sub Case 20 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Viper X") call battlemsg(index, "New Ship-Viper X", GREEN, 1) Call Take_Item(index, 25, 0) Exit Sub Case 21 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Brute") call battlemsg(index, "New Ship-Brute", GREEN, 1) Call Take_Item(index, 26, 0) Exit Sub Case 22 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Brute III") call battlemsg(index, "New Ship-Brute III", GREEN, 1) Call Take_Item(index, 27, 0) Exit Sub Case 23 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Brute VI") call battlemsg(index, "New Ship-Brute VI", GREEN, 1) Call Take_Item(index, 28, 0) Exit Sub Case 24 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Corvette") call battlemsg(index, "New Ship-Corvette", GREEN, 1) Call Take_Item(index, 29, 0) Exit Sub Case 25 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "CorvetteV2") call battlemsg(index, "New Ship-CorvetteV2", GREEN, 1) Call Take_Item(index, 30, 0) Exit Sub Case 26 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "CorvetteV8") call battlemsg(index, "New Ship-CorvetteV8", GREEN, 1) Call Take_Item(index, 31, 0) Exit Sub Case 27 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Destroyer") call battlemsg(index, "New Ship-Destroyer", GREEN, 1) Call Take_Item(index, 32, 0) Exit Sub Case 28 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Destroyer V") call battlemsg(index, "New Ship-Destroyer V", GREEN, 1) Call Take_Item(index, 33, 0) Exit Sub Case 29 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Destroyer X") call battlemsg(index, "New Ship-Destroyer X", GREEN, 1) Call Take_Item(index, 34, 0) Exit Sub Case 30 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Pheonix") call battlemsg(index, "New Ship-Pheonix", GREEN, 1) Call Take_Item(index, 35, 0) Exit Sub Case 31 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Void") call battlemsg(index, "New Ship-Void", GREEN, 1) Call Take_Item(index, 36, 0) Exit Sub Case 32 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Demon") call battlemsg(index, "New Ship-Demon", GREEN, 1) Call Take_Item(index, 37, 0) Exit Sub Case 33 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Blood Wing") call battlemsg(index, "New Ship-Blood Wing", GREEN, 1) Call Take_Item(index, 38, 0) Exit Sub Case 34 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Nova Wing") call battlemsg(index, "New Ship-Nova Wing", GREEN, 1) Call Take_Item(index, 39, 0) Exit Sub Case 35 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Maxis") call battlemsg(index, "New Ship-Maxis", GREEN, 1) Call Take_Item(index, 40, 0) Exit Sub Case 36 call putVar("/player/" & GetPlayerName(index) & ".ini", "ship", "name", "Teknis") call battlemsg(index, "New Ship-Teknis", GREEN, 1) Call Take_Item(index, 41, 0) Exit Sub Case Else Call PlayerMsg(Index, "No item script found. Please contact an admin to solve this problem.", WHITE) Exit Sub End Select End Sub ' Map Attributes Sub SetBlank(Map, X, Y) Call SetAttribute(Map, X, Y, 0, 0, 0, 0, "", "", "") End Sub Sub SetBlock(Map, X, Y) Call SetAttribute(Map, X, Y, 1, 0, 0, 0, "", "", "") End Sub Sub SetWarp(Map, X, Y, WarpMap, WarpX, WarpY) Call SetAttribute(Map, X, Y, 2, WarpMap, WarpX, WarpY, "", "", "") End Sub Sub SetItem(Map, X, Y, ItemID, ItemValue) Call SetAttribute(Map, X, Y, 3, ItemID, ItemValue, 0, "", "", "") End Sub Sub SetNPCAvoid(Map, X, Y) Call SetAttribute(Map, X, Y, 4, 0, 0, 0, "", "", "") End Sub Sub SetKeY(Map, X, Y, KeyID, KeyTake) Call SetAttribute(Map, X, Y, 5, KeyID, KeyTake, 0, "", "", "") End Sub Sub SetKeYOpen(Map, X, Y, KeyX, KeyY, Message) Call SetAttribute(Map, X, Y, 6, KeyX, KeyY, 0, Message, "", "") End Sub Sub SetHeal(Map, X, Y) Call SetAttribute(Map, X, Y, 7, 0, 0, 0, "", "", "") End Sub Sub SetKill(Map, X, Y) Call SetAttribute(Map, X, Y, 8, 0, 0, 0, "", "", "") End Sub Sub SetShop(Map, X, Y, ShopID) Call SetAttribute(Map, X, Y, 9, ShopID, 0, 0, "", "", "") End Sub Sub SetClassBlock(Map, X, Y, Allow1, Allow2, Allow3) Call SetAttribute(Map, X, Y, 10, Allow, Allow2, Allow3, "", "", "") End Sub Sub SetArena(Map, X, Y, MapID, NewX, NewY) Call SetAttribute(Map, X, Y, 11, MapID, NewX, NewY, "", "", "") End Sub Sub SetSound(Map, X, Y, FileName) Call SetAttribute(Map, X, Y, 12, 0, 0, 0, FileName, "", "") End Sub Sub SetSpriteChange(Map, X, Y, SpriteID, ItemID, Cost) Call SetAttribute(Map, X, Y, 13, SpriteID, ItemID, Cost, "", "", "") End Sub Sub SetSign(Map, X, Y, Line1, Line2, Line3) Call SetAttribute(Map, X, Y, 14, 0, 0, 0, Line1, Line2, Line3) End Sub Sub SetDoor(Map, X, Y) Call SetAttribute(Map, X, Y, 15, 0, 0, 0, "", "", "") End Sub Sub SetNotice(Map, X, Y, Title, Text, FileName) Call SetAttribute(Map, X, Y, 16, 0, 0, 0, Title, Text, FileName) End Sub Sub SetScripted(Map, X, Y, Script) Call SetAttribute(Map, X, Y, 18, Script, 0, 0, "", "", "") End Sub Sub SetBank(Map, X, Y) Call SetAttribute(Map, X, Y, 23, 0, 0, 0, "", "", "") End Sub '******************************** Function GetPlayerDirX(index) If GetPlayerDir(index) = 0 Then GetPlayerDirX = GetPlayerX(index) ElseIf GetPlayerDir(index) = 1 Then GetPlayerDirX = GetPlayerX(index) ElseIf GetPlayerDir(index) = 2 Then GetPlayerDirX = GetPlayerX(index) - 1 ElseIf GetPlayerDir(index) = 3 Then GetPlayerDirX = GetPlayerX(index) + 1 End If End Function 'Returns the Y of the tile in front of the player Function GetPlayerDirY(index) If GetPlayerDir(index) = 0 Then GetPlayerDirY = GetPlayerY(index) - 1 ElseIf GetPlayerDir(index) = 1 Then GetPlayerDirY = GetPlayerY(index) + 1 ElseIf GetPlayerDir(index) = 2 Then GetPlayerDirY = GetPlayerY(index) ElseIf GetPlayerDir(index) = 3 Then GetPlayerDirY = GetPlayerY(index) End If End Function '******************************** Function F_CHECK_TAKE(index, number, value) Dim slot slot = 1 F_Check_Take =0 Do While slot < 25 If Getplayerinvitemnum( index, Int( slot ) ) = Int( number ) Then If GetPlayerInvItemValue(index, Int( slot ) ) >= Int(value) Then F_Check_Take=1 End If End If slot = slot + 1 Loop End Function '******************************** Sub Take_Item(index, number, value) Dim slot Dim taken Dim initial Dim final slot=1 taken=0 Do While Int(slot) < 25 If Int(taken)=0 Then If Getplayerinvitemnum(index,Int(slot)) = Int(number) Then If Int(getplayerinvitemvalue(index, Int(slot))) >= Int(value) Then initial = Int(getplayerinvitemvalue(index, Int(slot) ) ) final = Int(initial) - Int(value) If Int(final)