Upgrade 1.0.0 to 1.0.1
From VbGORE Visual Basic Online RPG Engine
This guide will lead you through how to upgrade Version 1.0.0 to Version 1.0.1. For help, please refer to the How to upgrade article. It is highly recommended you read it before ever upgrading.
[edit] Fix - SavePass saving
Open GameClient.vbp.
Find:
SavePass = CBool(Var_Get(DataPath & "Game.ini", "INIT", "SavePass"))
Replace with:
SavePass = CBool(Val(Var_Get(DataPath & "Game.ini", "INIT", "SavePass")) * -1)
Find:
Var_Write DataPath & "Game.ini", "INIT", "SavePass", CBool(SavePass)
Replace with:
Var_Write DataPath & "Game.ini", "INIT", "SavePass", Val(SavePass) * -1
[edit] Fix - Data_User_Trade_BuyFromNPC
Open GameServer.vbp.
Find:
Sub Data_User_Trade_BuyFromNPC(ByRef rBuf As DataBuffer, ByVal UserIndex As Integer)
Replace the whole sub (from Sub to End Sub, including the Sub and End Sub tags) with this modified sub:
Sub Data_User_Trade_BuyFromNPC(ByRef rBuf As DataBuffer, ByVal UserIndex As Integer) '***************************************************************** 'Buy an item from NPC '<Slot(B)><Amount(I)> '***************************************************************** Dim AmountBought As Integer Dim PurchaseObj As Integer Dim NPCIndex As Integer Dim UserSlot As Integer Dim Amount As Integer Dim Slot As Byte Log "Call Data_User_Trade_BuyFromNPC([" & ByteArrayToStr(rBuf.Get_Buffer) & "]," & UserIndex & ")", CodeTracker '//\\LOGLINE//\\ Slot = rBuf.Get_Byte Amount = rBuf.Get_Integer 'Set the NPC index to trade with NPCIndex = UserList(UserIndex).flags.TradeWithNPC 'Check for invalid values If NPCIndex <= 0 Then Exit Sub If NPCIndex > LastNPC Then Exit Sub If Slot > NPCList(NPCIndex).NumVendItems Then Exit Sub If Slot <= 0 Then Exit Sub If UserList(UserIndex).flags.TradeWithNPC <= 0 Then Exit Sub If NPCList(NPCIndex).VendItems(Slot).ObjIndex <= 0 Then Exit Sub If NPCList(NPCIndex).VendItems(Slot).Amount = 0 Then Exit Sub If Amount < 0 Then Exit Sub 'Check for valid locations If UserList(UserIndex).Pos.Map <> NPCList(NPCIndex).Pos.Map Then Data_Send ToIndex, UserIndex, cMessage(36).Data Exit Sub End If If Server_RectDistance(UserList(UserIndex).Pos.X, UserList(UserIndex).Pos.Y, NPCList(NPCIndex).Pos.X, NPCList(NPCIndex).Pos.Y, 6, 6) = 0 Then Data_Send ToIndex, UserIndex, cMessage(36).Data Exit Sub End If 'Set the ObjData of the item to be purchased to the PurchaseObj variable PurchaseObj = NPCList(NPCIndex).VendItems(Slot).ObjIndex 'Check that the user has enough money If UserList(UserIndex).Stats.BaseStat(SID.Gold) < ObjData.Value(PurchaseObj) * Amount Then ConBuf.PreAllocate 5 + Len(ObjData.Name(PurchaseObj)) ConBuf.Put_Byte DataCode.Server_Message ConBuf.Put_Byte 65 ConBuf.Put_Integer Amount ConBuf.Put_String ObjData.Name(PurchaseObj) Data_Send ToIndex, UserIndex, ConBuf.Get_Buffer Exit Sub End If 'Reduce the amount of items the NPC has If NPCList(NPCIndex).VendItems(Slot).Amount <> -1 Then 'Check if there is enough If NPCList(NPCIndex).VendItems(Slot).Amount - Amount < 0 Then ConBuf.PreAllocate 7 + Len(ObjData.Name(PurchaseObj)) ConBuf.Put_Byte DataCode.Server_Message ConBuf.Put_Byte 66 ConBuf.Put_Integer Amount ConBuf.Put_String ObjData.Name(PurchaseObj) ConBuf.Put_Integer NPCList(NPCIndex).VendItems(Slot).Amount Data_Send ToIndex, UserIndex, ConBuf.Get_Buffer Exit Sub End If 'Reduce the amount NPCList(NPCIndex).VendItems(Slot).Amount = NPCList(NPCIndex).VendItems(Slot).Amount - Amount 'Check if the NPC has hit 0 If NPCList(NPCIndex).VendItems(Slot).Amount = 0 Then NPCList(NPCIndex).VendItems(Slot).ObjIndex = 0 User_TradeWithNPC UserIndex, NPCIndex 'Update the NPC trade page user-side End If End If 'Give the user the objects AmountBought = User_GiveObj(UserIndex, PurchaseObj, Amount, True) 'Take the user's money UserList(UserIndex).Stats.BaseStat(SID.Gold) = UserList(UserIndex).Stats.BaseStat(SID.Gold) - (ObjData.Value(PurchaseObj) * AmountBought) 'Send the purchase message ConBuf.Put_Byte DataCode.Server_Message ConBuf.Put_Byte 67 ConBuf.Put_Integer Amount ConBuf.Put_String ObjData.Name(PurchaseObj) ConBuf.Put_Long (ObjData.Value(PurchaseObj) * Amount) Data_Send ToIndex, UserIndex, ConBuf.Get_Buffer End Sub
[edit] Change - Experimental texture compression
Open GameClient.vbp.
Find:
Set SurfaceDB(TextureNum) = D3DX.CreateTextureFromFileEx(D3DDevice, FilePath, D3DX_DEFAULT, D3DX_DEFAULT, 0, 0, UseTextureFormat, D3DPOOL_MANAGED, D3DX_FILTER_POINT, D3DX_FILTER_NONE, &HFF000000, TexInfo, ByVal 0)
Replace with:
Set SurfaceDB(TextureNum) = D3DX.CreateTextureFromFileEx(D3DDevice, FilePath, D3DX_DEFAULT, D3DX_DEFAULT, 0, 0, D3DFMT_DXT5, D3DPOOL_MANAGED, D3DX_FILTER_POINT, D3DX_FILTER_NONE, &HFF000000, TexInfo, ByVal 0)
Find:
Set SurfaceDB(TextureNum) = D3DX.CreateTextureFromFileEx(D3DDevice, FilePath, SurfaceSize(TextureNum).X, SurfaceSize(TextureNum).Y, 0, 0, SurfaceSize(TextureNum).BmpFormat, D3DPOOL_MANAGED, D3DX_FILTER_POINT, D3DX_FILTER_NONE, &HFF000000, ByVal 0, ByVal 0)
Replace with:
Set SurfaceDB(TextureNum) = D3DX.CreateTextureFromFileEx(D3DDevice, FilePath, SurfaceSize(TextureNum).X, SurfaceSize(TextureNum).Y, 0, 0, D3DFMT_DXT5, D3DPOOL_MANAGED, D3DX_FILTER_POINT, D3DX_FILTER_NONE, &HFF000000, ByVal 0, ByVal 0)
Find and delete:
If Bit32 Then UseTextureFormat = D3DFMT_UNKNOWN Else UseTextureFormat = D3DFMT_A4R4G4B4 End If
Dim UseTextureFormat As CONST_D3DFORMAT
If Bit32 Then SurfaceSize(TextureNum).BmpFormat = TexInfo.Format Else SurfaceSize(TextureNum).BmpFormat = D3DFMT_A1R5G5B5 End If
BmpFormat As Long
SurfaceSize(j).BmpFormat = 0
[edit] Fix - Summon Bandit mana reduction
Open GameServer.vbp.
Go to sub Skill_SummonBandit_PC in module Skills.
Find:
UserList(CasterIndex).Stats.BaseStat(SID.MinMAN) = UserList(CasterIndex).Stats.BaseStat(SID.MinMAN) - Int(UserList(CasterIndex).Stats.ModStat(SID.Mag) * Bless_Cost)
Replace with:
UserList(CasterIndex).Stats.BaseStat(SID.MinMAN) = UserList(CasterIndex).Stats.BaseStat(SID.MinMAN) - Int(UserList(CasterIndex).Stats.ModStat(SID.Mag) * SumBandit_Cost)
[edit] Fix - Freezing in User_GiveObj
Open GameServer.vbp.
Find:
If UserList(UserIndex).Object(Slot).ObjIndex < ObjData.Stacking(ObjIndex) Then Exit Do
Replace with:
If UserList(UserIndex).Object(Slot).Amount < ObjData.Stacking(ObjIndex) Then Exit Do
[edit] Change - More accurate German NPC chat translations
Open \Data\NPC Chat\german.ini.
Replace all of file's contents with:
BEGINFILE [1] FORMAT RANDOM STYLE BUBBLE SAY 10000 Ich hörte, da ist verrücktes Zeug unter diesem |Wasserfall|! Verrücktes Zeug! SAY 10000 Hast du mit dem kopflosem Mann gesprochen? Ich höre, daß er Hilfe benötigt! Klick ihn mal mit der |rechten Maustaste| an! SAY 10000 Wusstest du, dass du dein Inventar mit |Ctrl + W| anzeigen lassen kannst? SAY 10000 Hast du versucht, diesen |blauen Briefkasten| anzuklicken? Ich hörte, daß es Nachrichten und Gegenstände an Leute schicken kann! SAY 10000 Hast du ein neues Level erreicht? Verteile deine Statuspunkte indem du |Ctrl + S| drückst! SAY 10000 Danke das du vbGore verwendest! Guck auf die Homepage um Updates und Support zu bekommen! SAY 10000 Hast du überflüssige Items? |Verkaufe| sie beim NPC im westlichsten Haus indem du ihn mit der |rechten Maustaste| anklickst! SAY 10000 Durch einen Rechtsklick auf ein Item kannst du es bewegen oder dir Informationen über es anzeigen lassen! SAY 10000 Du kannst deine Schnellzugriffs Fähigkeiten ändern, indem du sie mit |Shift + links-Klick| anklickst! SAY 10000 |C|R|A|Z|Y| |H|A|P|P|Y| |F|U|N| |R|E|D| |T|E|X|T|!|!|!|!|!|!| SAY 10000 Wenn du den Server und den Client auf dem selben Rechner laufen lässt kann es zu lags kommen. Das liegt aber nicht an der engine sondern an deinem PC. !SAY hallo,hallo,he,sup,grüß_dich,servus,hi,morgen,tag SAY 5000 Hallo dort! SAY 5000 Grüß dich! SAY 5000 Hallo! SAY 5000 Hi! !SAY _du_stinkst,_hasse_dich,_idiot,_dummkopf,_arsch,_arschloch SAY 5000 Hey, Das ist ungerecht! :'( SAY 5000 Argh, sei nett! :'( SAY 5000 :'( [2] FORMAT RANDOM STYLE BUBBLE !CLEAR !HPMORETHAN 61 SAY 17900 [EMPTY] SAY 8900 [EMPTY] SAY 6300 [EMPTY] SAY 27800 [EMPTY] SAY 7200 [EMPTY] SAY 20000 Fangt den Eindringling! SAY 16000 Er ist zu stark für uns! SAY 11000 Tötet Ihn!!! !CLEAR !HPLESSTHAN 30 SAY 6800 [EMPTY] SAY 16000 Wir haben ihn schon fast! SAY 11000 Mach dich bereit zu sterben! !CLEAR !HPLESSTHAN 60 !HPMORETHAN 31 SAY 17900 [EMPTY] SAY 8900 [EMPTY] SAY 6300 [EMPTY] SAY 27800 [EMPTY] SAY 7200 [EMPTY] SAY 11000 Ha! So ists richtig! Spüre unsere Klingen! SAY 20000 Du fühlst den Schmerz, oder?! SAY 16000 Du wirst uns nie alle töten! SAY 11000 Du bist keine Herausforderung für uns! [3] FORMAT LINEAR STYLE BOTH SAY 10000 Hey du. Kannste mir mal helfen? SAY 10000 Ich gebe dir eine nette Belohnung!
[edit] Fix - Incorrect inventory slot updating on mailing
Open GameServer.vbp.
Go to sub Data_Server_MailCompose in module TCP.
At the bottom of the sub, find:
User_UpdateInv False, UserIndex, Slot
Change to:
User_UpdateInv False, UserIndex, Slots(i)
[edit] Fix - Redundant mail updating
Open GameServer.vbp.
Find:
If .Equipped = 1 Then User_RemoveInvItem UserIndex, Slots(i)
Change to:
If .Equipped = 1 Then User_RemoveInvItem UserIndex, Slots(i), False
[edit] Fix - Warcrying summons
Open GameServer.vbp.
Find:
If NPCList(LoopC).Hostile Then
After, add:
If NPCList(LoopC).OwnerIndex = 0 Then
Find:
Next LoopC
Before, add:
End If
[edit] Fix - ToolFreeNumber
Open ToolFreeNumber.vbp.
Find:
If LenB(Var_Get(Data2Path & "GrhRaw.txt", "A", "Grh" & i)) <> 0 Then
Replace with:
If LenB(Var_Get(Data2Path & "GrhRaw.txt", "A", "Grh" & i)) = 0 Then




