Пятница, 19 Апреля 2024, 05:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Конструкторы OnLine-игр » В чем ошибка?
В чем ошибка?
KpayTeJIbДата: Четверг, 16 Декабря 2010, 18:31 | Сообщение # 1
был не раз
Сейчас нет на сайте
хочу вставить скрипт крафт но не работает, в начале пишут что надо написать вот этот скрипт в ScriptedItem:
Code
Case 10
If CheckItem(index, 2) = 1 Then
If CheckItem(index, 3) = 1 Then
Call TakeItem(index, 2, "all")
Call TakeItem(index, 3, "all")
Call GiveItem(index, 4, 0)
Call PlayerMsg(index, "You gained a shield.", 12)
Else
Call PlayerMsg(index, "You need the left side of the shield.", 12)
End If
End If
Case 11
If CheckItem(index, 3) = 1 Then
If CheckItem(index, 2) = 1 Then
Call TakeItem(index, 3, "all")
Call TakeItem(index, 2, "all")
Call GiveItem(index, 4, 0)
Call PlayerMsg(index, "You gained a shield.", 12)
Else
Call PlayerMsg(index, "You need the right side of the shield.", 12)
End If
End If
End Select
End Sub

Но там уже было написано:
Code
Select Case Script
    Case 0
     Call PlayerMsg(Index, "This scripted item has no apparent use.", WHITE)

     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

Вставил 1 скрипт послe exit sub.

Мб в main не правильно что то вписал?
main:
http://depositfiles.com/files/tpntfog3o

Сообщение отредактировал KpayTeJIb - Четверг, 16 Декабря 2010, 18:43
FulierДата: Четверг, 16 Декабря 2010, 19:45 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Это на какую версию Eclipse? Да и скрипт не особо правильно сделан. После Case 10 нет, например, Exit Sub. CheckItem - сомневаюсь в этой команде.
Сомневаюсь и здесь: TakeItem(index, 3, "all")
В общем скрипт неверен. Одно только отсутствие Exit Sub настораживает.


Лампа. Кофе. Игра. - сайт о компьютерных, компьютерных и еще раз компьютерных играх.

Сообщение отредактировал Fulier - Четверг, 16 Декабря 2010, 19:48
infermikДата: Пятница, 17 Декабря 2010, 09:05 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Fulier Эти команды такие как CheckItem TakeItem GiveCurensy и т.п сделаны Godlord'ом т.е пользовательские (Это так называемый скрипт инвентаря) они должны быть вставлены в main.txt TakeItem(index, 3, "all") эта функция All подразумевает, что не 1 предмет будет сделан, а все если есть нужные компоненты.

Добавлено (17.12.2010, 09:05)
---------------------------------------------
Вот я добавлю этот скрипт

Code
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


Выпрямляю путем кнута и пряника
FulierДата: Пятница, 17 Декабря 2010, 13:16 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
infermik, Я про эти скрипты знаю, но CheckItem - такого у Godlorda нет, есть CanTake
All? Не смешите меня, тут должна быть цифра обязательно, ибо Amount as Long, а не String.

TakeItem - это не сделать/выдать предмет, а наоборот забрать его из инвентаря.

Добавлено (17.12.2010, 13:16)
---------------------------------------------
Идём дальше:
Call GiveItem(index, 4, 0) - здесь 0 - это прочность предмета, если это щит или оружие.


Лампа. Кофе. Игра. - сайт о компьютерных, компьютерных и еще раз компьютерных играх.

Сообщение отредактировал Fulier - Пятница, 17 Декабря 2010, 13:17
denis007Дата: Пятница, 17 Декабря 2010, 22:36 | Сообщение # 5
частый гость
Сейчас нет на сайте
Слышьте к этому коду дайте остальные кода
в смысле кода каторые в касе надо кидать

Quote (infermik)
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



Сообщение отредактировал denis007 - Суббота, 18 Декабря 2010, 11:31
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Конструкторы OnLine-игр » В чем ошибка?
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг