Modificar código (Oro a Billetera)

Estado
Cerrado para nuevas respuestas.

JahoviaBless

Mapeador.
Hola! Quisiera saber si alguien me puede ayudar a modificar éste codigo para que el oro que va hacia la billetera esté multiplicado x100... El codigo es el de Secretitohs:

En el server, InvNpc. Buscamos el sub:

Código:
Public Sub TirarOroNpc(ByVal Cantidad As Long, ByRef Pos As WorldPos)

Y lo reemplazamos por:
Código:
'AyudandOh
Public Sub TirarOroNpc(ByVal UserIndex As Integer, ByVal Cantidad As Long, ByRef Pos As WorldPos)
 
On Error GoTo Errhandler
 
If Cantidad > 0 Then
UserList(UserIndex).Stats.GLD = UserList(UserIndex).Stats.GLD + Cantidad
Call WriteUpdateGold(UserIndex)
Call WriteConsoleMsg(UserIndex, "Has obtenido " & Cantidad & " monedas de oro.", FontTypeNames.FONTTYPE_INFO) 'Ponele una comilla adelante de esta linea si no queres q salga por consola
End If
 
Exit Sub
 
Errhandler:
Call LogError("Error en TirarOro. Error " & Err.Number & " : " & Err.description)
End Sub
Despues buscamos el sub:

Código:
Public Sub NPC_TIRAR_ITEMS(ByRef npc As npc, ByVal IsPretoriano As Boolean)

Y reemplazamos todo ese sub por este:
Código:
'AyudandOh
Public Sub NPC_TIRAR_ITEMS(ByVal UserIndex As Integer, ByRef npc As npc, ByVal IsPretoriano As Boolean)
 
On Error Resume Next
 
With npc
 
Dim i As Byte
Dim MiObj As Obj
Dim NroDrop As Integer
Dim Random As Integer
Dim ObjIndex As Integer
 
If IsPretoriano Then
For i = 1 To MAX_INVENTORY_SLOTS
If .Invent.Object(i).ObjIndex > 0 Then
MiObj.Amount = .Invent.Object(i).Amount
MiObj.ObjIndex = .Invent.Object(i).ObjIndex
Call TirarItemAlPiso(.Pos, MiObj)
End If
Next i
 
If .GiveGLD > 0 Then _
Call TirarOroNpc(UserIndex, .GiveGLD, .Pos)
 
Exit Sub
End If
 
Random = RandomNumber(1, 100)
 
If Random <= 90 Then
NroDrop = 1
 
If Random <= 10 Then
NroDrop = NroDrop + 1
 
For i = 1 To 3
 
If RandomNumber(1, 100) <= 10 Then
NroDrop = NroDrop + 1
Else
Exit For
End If
Next i
 
End If
 
 
ObjIndex = .Drop(NroDrop).ObjIndex
If ObjIndex > 0 Then
 
If ObjIndex = iORO Then
Call TirarOroNpc(UserIndex, .Drop(NroDrop).Amount, npc.Pos)
Else
MiObj.Amount = .Drop(NroDrop).Amount
MiObj.ObjIndex = .Drop(NroDrop).ObjIndex
 
Call TirarItemAlPiso(.Pos, MiObj)
End If
End If
 
End If
 
End With
 
End Sub
Y por ultimo buscamos:

Código:
Call NPC_TIRAR_ITEMS(MiNPC, IsPretoriano)

Y lo reemplazamos por:

Código:
Call NPC_TIRAR_ITEMS(UserIndex, MiNPC, IsPretoriano)

POR FAVOR AYUDENME, Muchas gracias!
 

Damian

Software Developer
Ex-Staff
Es fácil, mirá lo que tenés que hacer es esto:

Agarrás y guardás en una variable de tipo Long por ejemplo, el oro que tira el NPC.
Supongamos
Dim OroNPC As Long

Ahora a el procedimiento:
TirarOroNPC tenés 1 Argumento solo, que es el de MiNPC, vos necesitás agregar otro para tu User así que agregale UserIndex de tipo entero.

Luego declarás como ya te dije antes:

Código:
Dim OroNPC as Long
OroNPC = MiNPC.GiveGLD
Ahí estarias almacenandoló, vos según lo que dijiste por chat querés multiplicar eso por 100 entonces simple:

Código:
OroNPC = MiNPC.GiveGLD * 100
Entendés?
Y para que lo guarde en la billetera directamente, reemplazá todo el procedimiento del NPC cuando tira el Oro y Ponele:

Código:
UserList(UserIndex).Stats.GLD = UserList(UserIndex).Stats.GLD + OroNPC
Acordate después, que en las llamadas al procedimiento ese te va a decir que te faltan argumentos, le tenés que agregar el UserIndex:

Código:
Call NPCTirarOro(MiNPC, UserIndex)
Entendés?

Y después para que vaya directo a la bille, fijate en el reconocimiento de Objeto, y creo que el Oro es el 12, entonces hacés una condición:

Código:
      If MiObj.ObjIndex = 12 Then
        UserList(UserIndex).Stats.GLD = UserList(UserIndex).Stats.GLD + MiObj.amount
        Call EraseObj(MapData(UserList(UserIndex).Pos.map, X, Y).ObjInfo.amount, UserList(UserIndex).Pos.map,UserList(UserIndex).Pos.X, UserList(UserIndex).Pos.Y)
       Call WriteUpdateGold(UserIndex)
        Exit Sub
        End If
 

Midraks

Creador de AOWeb
Ex-Staff
JahoviaBless dijo:
Pero, en TirarOroNPC no tengo MiNPC; Tengo Cantidad y Pos
No tenes que modificar el codigo de tirar oro, sino el de Npc_Tirar_Items

Call TirarOroNpc(UserIndex, .GiveGLD, .Pos)
 
Estado
Cerrado para nuevas respuestas.
Arriba