[SERVIDOR] Pasajes
Para el Servidor
Este codigo lo encontre bajando por slk.. y como algunos me lo pedian por MSN aca se los dejo
Buscamos Sub UseInvItem, y en ese sub nos posicionamos debajo de:
[vb]
Select Case Obj.ObjType [/vb]
y ponemos:
[vb]
' Tales
Case OBJTYPE_PASAJES
'Se asegura que el target es un npc
If UserList(UserIndex).flags.TargetNPC = 0 Then
Call SendData(ToIndex, UserIndex, 0, "||Primero tenes que seleccionar un personaje, hace click izquierdo sobre el." & FONTTYPE_INFO)
Exit Sub
End If
' Verificamos que sea el pirata
If Npclist(UserList(UserIndex).flags.TargetNPC).NPCtype <> 9 Then Exit Sub
' Si esta muy lejos no actua
If Distancia(UserList(UserIndex).Pos, Npclist(UserList(UserIndex).flags.TargetNPC).Pos) > 10 Then
Call SendData(ToIndex, UserIndex, 0, "||Estas demasiado lejos del pirata para tomar el pasaje." & FONTTYPE_INFO)
Exit Sub
End If
' Si esta muerto no puede usar el pasaje.
If UserList(UserIndex).flags.Muerto = 1 Then
Call SendData(ToIndex, UserIndex, 0, "||Estas muerto, solo los vivos pueden usar los pasajes!!!" & FONTTYPE_WARNING)
Exit Sub
End If
' Esta en zona Segura?
If MapInfo(UserList(UserIndex).Pos.Map).Pk = True Then
Call SendData(ToIndex, UserIndex, 0, "|| Debes estar en sona segura para utilizar un pasaje!!!" & FONTTYPE_INFO)
Exit Sub
End If
' Para prevenir que no se quede trabado el pj verificamos si el mapa de destino es un mapa valido.
If MapaValido(Obj.mapa) Then
' Transportamos al usuario
Call WarpUserChar(UserIndex, Obj.mapa, Obj.X, Obj.Y, True)
Call SendData(ToIndex, UserIndex, 0, "|| Has sido transportado." & FONTTYPE_INFO)
'Quitamos el item del inventario.
Call QuitarUserInvItem(UserIndex, Slot, 1)
Else
' Si no es un mapa valido se lo informamos al usuario.
Call SendData(ToIndex, UserIndex, 0, "|| El mapa al que se dirije el pase no es un mapa valido." & FONTTYPE_INFO)
exit sub
End If
Call UpdateUserInv(False, UserIndex, Slot)
Call SendUserStatsBox(UserIndex)
Exit Sub
' Tales [/vb]
Ahora vamos al modulo Declares y Buscamos:
[vb]
Public Const OBJTYPE_MANCHAS = 35 [/vb]
y debajo de esto ponemos:
[vb]
Public Const OBJTYPE_PASAJES = 36 [/vb]
Buscamos:
[vb]
Public Const NPCTYPE_GUARDIASCAOS = 8 [/vb]
y debajo ponemos :
[vb]
' Tales declaramos al pirata
Public Const NPCTYPE_PIRATA = 9 [/vb]
Buscamos
[vb]
Public Type ObjData[/vb]
y debajo ponemos:
[vb]
' Tales
' Le damos los atributos al objeto.
Mapa As Integer
X As Integer
Y As Integer
' Tales [/vb]
Luego buscamos en el Sub LoadObjData buscamos:
[vb]
If ObjData(Object).ObjType = OBJTYPE_ARMOUR Then [/vb]
y arriba de eso ponemos:
[vb]
' Tales
'Tomamos el destino del pasaje.
If ObjData(Object).ObjType = OBJTYPE_PASAJES Then
ObjData(Object).mapa = val(Leer.DarValor("OBJ" & Object, "Mapa"))
ObjData(Object).X = val(Leer.DarValor("OBJ" & Object, "X"))
ObjData(Object).Y = val(Leer.DarValor("OBJ" & Object, "Y"))
End If
' Tales [/vb]
Ahora los DATs que tienen que poner
Del Objeto
Del Pirata:
Codigo realizado por Tales
Cualquier duda pregunten, el codigo ya lo probe y anda de diez, a continuacion explico lo que hace.
Al tomar el pasaje te teleporta al lugar indicado en el obj, para tomarlo hay que hacerle clic al pirata, no se lo puede tomar estando muerto, en zona insegura, o muy lejos del pirata, si el mapa de destino es invalido no se teleporta, ojala que les sirva.
DarkMage
Para el Servidor
Este codigo lo encontre bajando por slk.. y como algunos me lo pedian por MSN aca se los dejo
Buscamos Sub UseInvItem, y en ese sub nos posicionamos debajo de:
[vb]
Select Case Obj.ObjType [/vb]
y ponemos:
[vb]
' Tales
Case OBJTYPE_PASAJES
'Se asegura que el target es un npc
If UserList(UserIndex).flags.TargetNPC = 0 Then
Call SendData(ToIndex, UserIndex, 0, "||Primero tenes que seleccionar un personaje, hace click izquierdo sobre el." & FONTTYPE_INFO)
Exit Sub
End If
' Verificamos que sea el pirata
If Npclist(UserList(UserIndex).flags.TargetNPC).NPCtype <> 9 Then Exit Sub
' Si esta muy lejos no actua
If Distancia(UserList(UserIndex).Pos, Npclist(UserList(UserIndex).flags.TargetNPC).Pos) > 10 Then
Call SendData(ToIndex, UserIndex, 0, "||Estas demasiado lejos del pirata para tomar el pasaje." & FONTTYPE_INFO)
Exit Sub
End If
' Si esta muerto no puede usar el pasaje.
If UserList(UserIndex).flags.Muerto = 1 Then
Call SendData(ToIndex, UserIndex, 0, "||Estas muerto, solo los vivos pueden usar los pasajes!!!" & FONTTYPE_WARNING)
Exit Sub
End If
' Esta en zona Segura?
If MapInfo(UserList(UserIndex).Pos.Map).Pk = True Then
Call SendData(ToIndex, UserIndex, 0, "|| Debes estar en sona segura para utilizar un pasaje!!!" & FONTTYPE_INFO)
Exit Sub
End If
' Para prevenir que no se quede trabado el pj verificamos si el mapa de destino es un mapa valido.
If MapaValido(Obj.mapa) Then
' Transportamos al usuario
Call WarpUserChar(UserIndex, Obj.mapa, Obj.X, Obj.Y, True)
Call SendData(ToIndex, UserIndex, 0, "|| Has sido transportado." & FONTTYPE_INFO)
'Quitamos el item del inventario.
Call QuitarUserInvItem(UserIndex, Slot, 1)
Else
' Si no es un mapa valido se lo informamos al usuario.
Call SendData(ToIndex, UserIndex, 0, "|| El mapa al que se dirije el pase no es un mapa valido." & FONTTYPE_INFO)
exit sub
End If
Call UpdateUserInv(False, UserIndex, Slot)
Call SendUserStatsBox(UserIndex)
Exit Sub
' Tales [/vb]
Ahora vamos al modulo Declares y Buscamos:
[vb]
Public Const OBJTYPE_MANCHAS = 35 [/vb]
y debajo de esto ponemos:
[vb]
Public Const OBJTYPE_PASAJES = 36 [/vb]
Buscamos:
[vb]
Public Const NPCTYPE_GUARDIASCAOS = 8 [/vb]
y debajo ponemos :
[vb]
' Tales declaramos al pirata
Public Const NPCTYPE_PIRATA = 9 [/vb]
Buscamos
[vb]
Public Type ObjData[/vb]
y debajo ponemos:
[vb]
' Tales
' Le damos los atributos al objeto.
Mapa As Integer
X As Integer
Y As Integer
' Tales [/vb]
Luego buscamos en el Sub LoadObjData buscamos:
[vb]
If ObjData(Object).ObjType = OBJTYPE_ARMOUR Then [/vb]
y arriba de eso ponemos:
[vb]
' Tales
'Tomamos el destino del pasaje.
If ObjData(Object).ObjType = OBJTYPE_PASAJES Then
ObjData(Object).mapa = val(Leer.DarValor("OBJ" & Object, "Mapa"))
ObjData(Object).X = val(Leer.DarValor("OBJ" & Object, "X"))
ObjData(Object).Y = val(Leer.DarValor("OBJ" & Object, "Y"))
End If
' Tales [/vb]
Ahora los DATs que tienen que poner
Del Objeto
Código:
[OBJ708]
Name=Pasaje a Ullathorpe
GrhIndex=506
ObjType=36
Valor=1
Mapa=1
X=50
Y=50
Del Pirata:
Código:
[NPCXXX] 'NPC
Name=Pirata
Desc=Hola, deseas tomar un pasaje? Hasme Click y luego utilisalo.
NpcType=9
Head=0
Body=18
Heading=3
Movement=1
Comercia=1
Alineacion=0
ReSpawn=0
NROITEMS=1
Obj1=2-1
Codigo realizado por Tales
Cualquier duda pregunten, el codigo ya lo probe y anda de diez, a continuacion explico lo que hace.
Al tomar el pasaje te teleporta al lugar indicado en el obj, para tomarlo hay que hacerle clic al pirata, no se lo puede tomar estando muerto, en zona insegura, o muy lejos del pirata, si el mapa de destino es invalido no se teleporta, ojala que les sirva.
DarkMage