Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Some of my scripts aren't working


dtdsora
 Share

Recommended Posts

LOTS of syntax errors, but, they are all gone, I didnt look through all of it, but your syntax is fixed…

```
' 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)

    If GetPlayerClass(index) = 0 Then
    Call SetPlayerSpell(index, 1, 1)
    End If

    If GetPlayerClass(index) = 1 Then
    Call SetPlayerSpell(index, 1, 1)
    End If

    If GetPlayerClass(index) = 2 Then
    Call SetPlayerSpell(index, 1, 1)
    End If

    If GetPlayerClass(index) = 3 Then
    Call SetPlayerSpell(index, 1, 1)
    Call SetPlayerSpell(index, 2, 2)
    End If

    If GetPlayerClass(index) = 4 Then
    Call SetPlayerSpell(index, 1, 1)
    End If

    If GetPlayerClass(index) = 5 Then
    Call SetPlayerSpell(index, 1, 1)
    End If

    If GetPlayerClass(index) = 6 Then
    Call SetPlayerSpell(index, 1, 1)
    End If

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("Visit www.fused-creations.com/Viri/Games for more of my games", 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

' Executes when any player presses the Delete key.
Case 2

' Executes when players press the End key.
Case 3

' Executes when players press the PageDown key.
Case 4

End Select
End Sub

' Executes when something on a custom menu is clicked.
Sub MenuScripts(Index, Clicked_Index, Menu_Type)
Dim MenuTitle
Dim FieldMessage

MenuTitle = getplayermenuclicktitle(Index)
FieldMessage = getplayermenuclickmsg(Index)

Select Case Menu_Type

Case 3
If Clicked_Index = 21 Then
                If GetVar("Scripts\Minigames.ini", "SLYMEHUNTER", "Game1Used") = 0 Then
                    Call PlayerWarp(Index, 99, 1, 1)
                    Call PutVar("Scripts\Minigames.ini", "SLYMEHUNTER", "Game1Used", 1)
                    Call PutVar("Scripts\charextras\" & GetPlayerName(Index) & ".ini", "MINIGAMES", "Game1", 1)
                    Call PutVar("Scripts\Minigames.ini", "SLYMEHUNTER", "Game1Timer", 60)
                    Call SetTimer("SlymeHunterTimer " & index, 1000)
                    Call PlayerMsg(Index, "You joined Slyme Hunter!", GREEN)
                    Call CustomMenuClose(Index)
                ElseIf GetVar("Scripts\Minigames.ini", "SLYMEHUNTER", "Game1Used") = 1 Then
                    Call PlayerMsg(Index, "Somebody has already joined Slyme Hunter!", GREEN)
                End If
            End If

End Select
End Sub

' Executes when a player logs into the game.
Sub JoinGame(Index)
If GetPlayerAccess(Index) = 0 Then
Call GlobalMsg(GetPlayerName(Index) & " has joined " & GameName & "!", GREY)
Else
Call GlobalMsg("Administrator " & GetPlayerName(Index) & " has joined " & GameName & "!", YELLOW)
End If

Call PlayerMsg(Index, "Welcome to " & GameName & "!", WHITE)

If LenB(MOTD) <> 0 Then
Call PlayerMsg(Index, "MOTD: " & MOTD, BRIGHTCYAN)
End If

Call SendWhosOnline(Index)

End Sub

' Executes when a player logs out of the game.
Sub LeftGame(Index)
If GetPlayerAccess(Index) = 0 Then
Call GlobalMsg(GetPlayerName(Index) & " has left " & GameName & "!", GREY)
Else
Call GlobalMsg("Administrator " & GetPlayerName(Index) & " has left " & GameName & "!", YELLOW)
End If
End Sub

' Executes when a players experience exceeds the next level requirement.
Sub PlayerLevelUp(Index)
Dim TotalExp

Do While GetPlayerExp(Index) >= GetPlayerNextLevel(Index)
TotalExp = GetPlayerExp(Index) - GetPlayerNextLevel(Index)
Call SetPlayerLevel(Index, GetPlayerLevel(Index) + 1)

Call SetPlayerPOINTS(Index, GetPlayerPOINTS(Index) + 1)
Call SetPlayerExp(Index, TotalExp)
Loop

Call BattleMsg(Index, "You have " & GetPlayerPOINTS(Index) & " stat points.", BRIGHTBLUE, 0)
End Sub

' Executes when a player uses one of the points given on an attribute to level up.
Sub UsingStatPoints(Index, PointType)
Select Case PointType
Case 0
If GetPlayerSTR(Index) + 1 > 1000 Then
Call BattleMsg(Index, "You have maxed your strength!", BRIGHTRED, 0)
Exit Sub
End If
Call SetPlayerSTR(Index, GetPlayerSTR(Index) + 1)
Call BattleMsg(Index, "You have gained more strength!", WHITE, 0)

Case 1
If GetPlayerDEF(Index) + 1 > 1000 Then
Call BattleMsg(Index, "You have maxed your defence!", BRIGHTRED, 0)
Exit Sub
End If
Call SetPlayerDEF(Index, GetPlayerDEF(Index) + 1)
Call BattleMsg(Index, "You have gained more defense!", WHITE, 0)

Case 2
If GetPlayerMAGI(Index) + 1 > 1000 Then
Call BattleMsg(Index, "You have maxed your magic!", BRIGHTRED, 0)
Exit Sub
End If
Call SetPlayerMAGI(Index, GetPlayerMAGI(Index) + 1)
Call BattleMsg(Index, "You have gained more magic!", WHITE, 0)

Case 3
If GetPlayerSPEED(Index) + 1 > 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)
Select Case Script
Case 0
Call PlayerMsg(Index, "This scripted tile has no apparent use.", WHITE)
Exit Sub

Case 1
      If GetPlayerLvl(index) >=  5 Then

          Call SetBlock(map, X, Y)
              Call SetAttribute(map, X, Y)
                                Call PlayerMsg(index, "You cannot become a Heavy Blade Adept Rouge yet![lvl 5 + needed]", 15)
  Else
    If GetPlayerLvl(index) <=  4 Then
        Call PlayerMsg(index, "Welcome to the Heavy Blade Adept Rouge Transfromation area", 15)
End If
End If
Case 2
    If GetPlayerLvl(index) >=  10 Then

            Call SetBlock(map, X, Y)
              Call SetAttribute(map, X, Y)
                                Call PlayerMsg(index, "You cannot become a Wavemaster Adept Rouge yet![lvl 10 + needed]", 15)
Else
      If GetPlayerLvl(index) <= 9 Then
        Call PlayerMsg(index, "Welcome to the Wavemaster Adept Rouge Transfromation area", 15)
End If
End If
Case 3
    If GetPlayerLvl(index) >= 15 Then

            Call SetBlock(map, X, Y)
              Call SetAttribute(map, X, Y)
                                Call PlayerMsg(index, "You cannot become a Pole Arm Adept Rouge yet![lvl 15 + needed]", 15)
Else
      If GetPlayerLvl(index) <= 14 Then
        Call PlayerMsg(index, "Welcome to the Pole Arm Adept Rouge Transfromation area", 15)
End If
End If
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)

End Sub

' Executes whenever an NPC is killed.
' Note: Death occurs as normal externally to this script.
Sub OnNPCDeath(Index, Map, NPCNum, NPCIndex)
Dim NpcStuff
  NpcStuff = GetVar("NpcInfo.ini", NPCNum & "", "Reputation")
Select Case NpcStuff
  Case "Good"
      Call LowerRep(Index)
      Call PlayerMsg(Index, "You killed a good NPC", RED)
  Case "Evil"
      Call RaiseRep(Index)
      Call PlayerMsg(Index, "You killed an evil NPC", RED)
  Case Else
      ' nothing XD
End Select

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 1
              MsgBox "I'm the quest tester. Please get me 50 (money).", 0, "Quest Start"
              If CanTake(Index, 1, 50) = False Then
                Call PlayerMsg(index, "You don't have the items required!", 12)
              Else
                Dim Exp
                Call TakeItem(index, 1, 50)
                Call GiveCurrency(index, 1, 500)
                  Call PlayerMsg(index, "Thanks; here's your reward!", 12)
                  Exp = GetPlayerExp(index)
                  Call SetPlayerExp(index, Exp + 50)
                  Call PlayerMsg(index, "You've gained 50 experience and got 500 (money)!", 12)
                  Call SendStats(Index)
              End If
            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("Scripts\Command.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 <= MAX_MAPS Then
Call PlayerWarp(Index, MapNum, GetPlayerX(Index), GetPlayerY(Index))
Call PlayerMsg(Index, "You have been warped to map #" & MapNum & ".", BRIGHTBLUE)
Else
Call PlayerMsg(Index, "Invalid map number.", BRIGHTRED)
End If
If GetPlayerAccess(Index) < 1 Then
Call PlayerMsg(Index, "You are not an admin!", BRIGHTRED)
End If
End If
Exit Sub

Case "/reputation"
      Call PlayerMsg(Index, "Your reputation is " & GetRep(Index), WHITE)
        Exit Sub
End Select

Call PlayerMsg(Index, "That is not a valid command.", BRIGHTRED)
End Sub

' Executes on death, dropping all of the players items.
Sub DropItems(Index)
' Remove this to enable.
Exit Sub

If GetPlayerWeaponSlot(Index) > 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)
Dim MapNum
Dim ClassID
Dim X
Dim Y

If GetMapBootMap(Index) > 0 Then
Call PlayerWarp(Index, GetMapBootMap(Index), GetMapBootX(Index), GetMapBootY(Index))
Else
ClassID = GetPlayerClass(Index)

MapNum = GetVar("Classes\Class" & ClassID & ".ini", "CLASS", "Map")

X = GetVar("Classes\Class" & ClassID & ".ini", "CLASS", "x")
Y = GetVar("Classes\Class" & ClassID & ".ini", "CLASS", "y")

Call PlayerWarp(Index, MapNum, X, Y)
End If
End Sub

' Executes whenever a scripted item is used or double clicked.
Sub ScriptedItem(Index, Script)
Select Case Script
Case 0
Call PlayerMsg(Index, "This scripted item has no apparent use.", WHITE)
Exit Sub
Case 1
Case 2
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

' Tests scripts up to the location of Sub TestMain(Index).
Function GetFreeSlots(Index)   
      Dim Slot
      Dim Slots

      Slot = 1
      Slots = 0

      Index = Int(Index)

      Do While Slot < 25 
          If GetPlayerInvItemNum(Index, Slot) = 0 Then
            Slots = Slots + 1
          End If

          Slot = Slot + 1
      Loop

      GetFreeSlots = Slots
    End Function

    Sub GiveItem(Index, Number, Durability)
      Dim Slot

      Slot = 1

      Index = Int(Index)
      Number = Int(Number)
      Durability = Int(Durability)

      Do While Slot < 25
          If GetPlayerInvItemNum(Index, Slot) = 0 Then
            Call SetPlayerInvItemNum(Index, Slot, Number)
            Call SetPlayerInvItemDur(Index, Slot, Durability)
            Call SendInventoryUpdate(Index, Slot)
            Exit Sub
          End If

          Slot = Slot + 1
      Loop
    End Sub

    Sub GiveCurrency(Index, Number, Amount)
      Dim Slot
      Dim CurrentAmount

      Slot = 1

      Index = Int(Index)
      Number = Int(Number)
      Amount = Int(Amount)

      Do While Slot < 25
          If GetPlayerInvItemNum(Index, Slot) = Number Then
              CurrentAmount = GetPlayerInvItemValue(Index, Slot)
              Call SetPlayerInvItemValue(Index, Slot, CurrentAmount + Amount)
              Call SendInventoryUpdate(Index, Slot)
              Exit Sub
          End If

          Slot = Slot + 1
      Loop

            Slot = 1

      Do While Slot < 25
          If GetPlayerInvItemNum(Index, Slot) = 0 Then
              Call SetPlayerInvItemNum(Index, Slot, Number)
              Call SetPlayerInvItemValue(Index, Slot, Amount)
              Call SendInventoryUpdate(Index, Slot)
              Exit Sub
          End If

          Slot = Slot + 1
      Loop
    End Sub

    Function CanTake(Index, Number, Amount)
      Dim Slot

      Slot = 1

      Index = Int(Index)
      Number = Int(Number)
      Amount = Int(Amount)

      Do While Slot < 25
          If GetPlayerInvItemNum(Index, Slot) = Number Then
            If GetPlayerInvItemValue(Index, Slot) >= Amount Then
                CanTake = True
                Exit Function
            End If
          End If

          Slot = Slot + 1
      Loop

      CanTake = False
    End Function

    Sub TakeItem(Index, Number, Amount)
      Dim Slot
      Dim CurrentAmount

      Index = Int(Index)
      Number = Int(Number)
      Amount = Int(Amount)

      Slot = 1

      Do While Slot < 25
          If GetPlayerInvItemNum(Index, Slot) = Number Then
              If GetPlayerInvItemValue(Index, Slot) >= Amount Then
                CurrentAmount = GetPlayerInvItemValue(Index, Slot)

                If CurrentAmount <= Amount Then
                    Call SetPlayerInvItemNum(Index, Slot, 0)
                    Call SetPlayerInvItemValue(Index, Slot, 0)
                    Call SetPlayerInvItemDur(Index, Slot, 0)
                    Call SendInventoryUpdate(Index, Slot)
                Else
                    Call SetPlayerInvItemValue(Index, Slot, CurrentAmount - Amount)
                    Call SendInventoryUpdate(Index, Slot)
                End If

                Exit Sub
              End If
          End If

          Slot = Slot + 1
      Loop
    End Sub
' Reputation System
' Made by Admiral Refuge
' Give credit plox
Sub RaiseRep(Index)
  If GetVar("Reputation.ini", "" & GetPlayerName(Index) & "", "Reputation") = "" Then
      Call PutVar("Reputation.ini", "" & GetPlayerName(Index) & "", "Reputation", 1)
      Exit Sub
  End If

  Dim x

  x = Int(GetVar("Reputation.ini", "" & GetPlayerName(Index) & "", "Reputation"))
  Call PutVar("Reputation.ini", "" & GetPlayerName(Index) & "", "Reputation", x+1)
End Sub

Sub LowerRep(Index)
  If GetVar("Reputation.ini", "" & GetPlayerName(Index) & "", "Reputation") = "" Then
      Call PutVar("Reputation.ini", "" & GetPlayerName(Index) & "", "Reputation", "-1")
      Exit Sub
  End If
  Dim x
  x = Int(GetVar("Reputation.ini", "" & GetPlayerName(Index) & "", "Reputation"))
      Call PutVar("Reputation.ini", "" & GetPlayerName(Index) & "", "Reputation", x-1)
End Sub

Function GetRep(Index)
  Dim Rep
  Dim ScaleStr(9)
  Dim ScaleNum(9)
  Rep = Int(GetVar("Reputation.ini", "" & GetPlayerName(Index) & "", "Reputation"))
  For i = 0 To 8
      ScaleStr(i) = GetVar("Reputation.ini", "SCALE" & "", i & "")
  Next
  For i = 0 To 8
      ScaleNum(i) = Int(GetVar("Reputation.ini", "SCALENUMBER", i & ""))
  Next
  For i = 0 To 3
      If Rep <= ScaleNum(i) Then
        GetRep = ScaleStr(i)
        Exit Function
      End If
  Next
  For i = 4 To 7
      If Rep >= ScaleNum(i) And Rep < ScaleNum(i+1) Then
        GetRep = ScaleStr(i)
        Exit Function
      End If
  Next
  If Rep > ScaleNum(8) Then
      GetRep = ScaleStr(8)
      Exit Function
  End If
End Function

' Leave this sub at the bottom to test the entire script file.
Sub TestMain(Index)
Call PlayerMsg(Index, "Scripts are working properly.", BRIGHTGREEN)
End Sub
```
Link to comment
Share on other sites

Line 89: Logical error.
I noticed you have replaced the vote for eclipse thing with:
"Visit www.fused-creations.com/Viri/Games for more of my games"
But incase you didn't know, your players will never see that message (only the person with the "Owner" setting sees that msg, which means you are the only one to ever see this message).

Line 165: potential warning
GetVar is designed to return a string, and though it should convert it for you, it's good practice to read it as a string, so it would be better as:
```
ElseIf GetVar("Scripts\Minigames.ini", "SLYMEHUNTER", "Game1Used") = "1" Then

```
Line 263: Syntax error.
GetPlayerLvl is not a function, it's suppose to be: GetPlayerLevel

Line 265: Syntax and logical error.
Syntax, because it's a sub, so you need to call it. e.g. "Call SetBlock(map, X, Y)"
Also Syntax, because you never defined the variables "map", "X", or "Y".
Logical, because this will put a "Block Attribute" in that position (if you got the map, x, and y, and passed it the sub), but the player will be already standing on it; so it is not going to block that player.

If you want the player to be blocked, you'd have to install this http://www.touchofdeathforums.com/smf/index.php/topic,984.0.html
Then you could just do this:
If GetPlayerLvl(index) = > 5 Then
  Call BlockPlayer(Index)
End If

The errors above (wrong function, and those logical and sytnax errors) are the same for all of those cases in the Scripted Tiles sub.

That's all I can find.

Warning - while you were typing a new reply has been posted. You may wish to review your post.
Still some syntax errors (e.g. passing undefined variables to subs, and using commands that don't exist like "GetPlayerLvl")

EDIT: Have I missed any?
Link to comment
Share on other sites

Please do not double-post, but rather edit your topic.

Anyways, I already told you how to fix virtually all of them; the big error is in the Scripted Tiles; just write some If-Then statements to check the player's level, then use the command Call BlockPlayer(Index) (I linked you to the sub you'll need to install), and all that playermsg.
Link to comment
Share on other sites

@dtdsora:

> entire main.txt

It may be better to start with a fresh main; that way whenever you add a new script, you can carefully test it out fully, before adding the next one; this way, when the main dies, you'll know it's because of the most recent script, and you can correct the problem.

EDIT:
Besides, I even explain it to the point of "replace THIS with THIS"; please tell me what exactly is too hard the way I mention.
Link to comment
Share on other sites

@dtdsora:

> but i dont what to have to restart my ENTIRE script

As I said, I even explain it to the point of "replace THIS with THIS"; please tell me what exactly is too hard the way I mention.

Besides, your main is pretty much compiled of already-existing (and some rather outdated and no good) scripts; surely you've kept a record of witch scripts you've installed (since you'll need to give those people credit anyways); you could simply reinstall them if you don't want to attempt to repair the errors.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...