[Aportes] Poción cambio de Cara

M.T.

Aprendiz Lvl 3
Buenas gente, tanto tiempo!!

Les explico: Al tomar esta poción automáticamente se nos cambia la cara por una al azar de su mismo genero e raza, se guarda el .chr es decir que por más que deslogeemos o se cierre el servidor vamos a seguir teniendo esa cara que nos toco. Es estilo IAO.


[SERVIDOR]

Buscamos:

Código:
otMochilas = 37

Abajo:

Código:
otCarita = 39

Buscamos:

Código:
Case eOBJType.otMochilas

Arriba:

Código:
Case eOBJType.otCarita
            
            If .flags.invisible Or .flags.Oculto Or .flags.Escondido = True Then 'funciona
                Call WriteConsoleMsg(UserIndex, "¡¡Estas invisible! Solo podes usar este items cuando estas visible. ", FontTypeNames.FONTTYPE_INFO)
                Exit Sub
            End If
            
            If .flags.Comerciando = True Then 'funciona
                Call WriteConsoleMsg(UserIndex, "No puedes usarlo estando comerciando.", FontTypeNames.FONTTYPE_INFO)
                Exit Sub
            End If
            
            If .flags.Meditando = True Then 'funciona
                Call WriteConsoleMsg(UserIndex, "¡Estas meditando!", FontTypeNames.FONTTYPE_INFO)
                Exit Sub
            End If
            
            If .flags.Mimetizado = 1 Then 'funciona
                Call WriteConsoleMsg(UserIndex, "No puedes usarlo mientras estes mimetizado", FontTypeNames.FONTTYPE_INFO)
                Exit Sub
            End If
            
            If .flags.Navegando = 1 Then 'funciona
                Call WriteConsoleMsg(UserIndex, "¡Estas navegando! no puedes usar esta poción mientras navegas.", FontTypeNames.FONTTYPE_INFO)
                Exit Sub
            End If
                
            If .flags.Muerto = 1 Then 'funciona
                Call WriteConsoleMsg(UserIndex, "¡¡Estas muerto!! Solo podes usar items cuando estas vivo. ", FontTypeNames.FONTTYPE_INFO)
                Exit Sub
            End If
            
            If .raza = eRaza.Humano Then 'Raza = HUMANO HOMBRE
            If .Genero = eGenero.Hombre Then
                Call QuitarUserInvItem(UserIndex, Slot, 1)
                Call UpdateUserInv(False, UserIndex, Slot)
                Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
                UserList(UserIndex).Char.Head = RandomNumber(HUMANO_H_PRIMER_CABEZA, HUMANO_H_ULTIMA_CABEZA)
                UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head
                Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
                Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
                                        .Char.ShieldAnim, .Char.CascoAnim)
                Exit Sub
            End If
            End If
            
            If .raza = eRaza.Humano Then 'Raza = HUMANO MUJER
            If .Genero = eGenero.Mujer Then
                Call QuitarUserInvItem(UserIndex, Slot, 1)
                Call UpdateUserInv(False, UserIndex, Slot)
                Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
                UserList(UserIndex).Char.Head = RandomNumber(HUMANO_M_PRIMER_CABEZA, HUMANO_M_ULTIMA_CABEZA)
                UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head
                Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
                Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
                                        .Char.ShieldAnim, .Char.CascoAnim)
                Exit Sub
            End If
            End If
            
            
            
            If .raza = eRaza.Elfo Then 'Raza = ELFO HOMBRE
            If .Genero = eGenero.Hombre Then
                Call QuitarUserInvItem(UserIndex, Slot, 1)
                Call UpdateUserInv(False, UserIndex, Slot)
                Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
                UserList(UserIndex).Char.Head = RandomNumber(ELFO_H_PRIMER_CABEZA, ELFO_H_ULTIMA_CABEZA)
                UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head
                Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
                Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
                                        .Char.ShieldAnim, .Char.CascoAnim)
                Exit Sub
            End If
            End If
            
            If .raza = eRaza.Elfo Then 'Raza = ELFO MUJER
            If .Genero = eGenero.Mujer Then
                Call QuitarUserInvItem(UserIndex, Slot, 1)
                Call UpdateUserInv(False, UserIndex, Slot)
                Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
                UserList(UserIndex).Char.Head = RandomNumber(ELFO_M_PRIMER_CABEZA, ELFO_M_ULTIMA_CABEZA)
                UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head
                Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
                Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
                                        .Char.ShieldAnim, .Char.CascoAnim)
                Exit Sub
            End If
            End If
            
            If .raza = eRaza.Drow Then 'Raza = ELFO OSCURO HOMBRE
            If .Genero = eGenero.Hombre Then
                Call QuitarUserInvItem(UserIndex, Slot, 1)
                Call UpdateUserInv(False, UserIndex, Slot)
                Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
                UserList(UserIndex).Char.Head = RandomNumber(DROW_H_PRIMER_CABEZA, DROW_H_ULTIMA_CABEZA)
                UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head
                Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
                Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
                                        .Char.ShieldAnim, .Char.CascoAnim)
                Exit Sub
            End If
            End If
            
            If .raza = eRaza.Drow Then 'Raza = ELFO OSCURO MUJER
            If .Genero = eGenero.Mujer Then
                Call QuitarUserInvItem(UserIndex, Slot, 1)
                Call UpdateUserInv(False, UserIndex, Slot)
                Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
                UserList(UserIndex).Char.Head = RandomNumber(DROW_M_PRIMER_CABEZA, DROW_M_ULTIMA_CABEZA)
                UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head
                Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
                Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
                                        .Char.ShieldAnim, .Char.CascoAnim)
                Exit Sub
            End If
            End If
            
            If .raza = eRaza.Enano Then 'Raza = ENANO HOMBRE
            If .Genero = eGenero.Hombre Then
                Call QuitarUserInvItem(UserIndex, Slot, 1)
                Call UpdateUserInv(False, UserIndex, Slot)
                Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
                UserList(UserIndex).Char.Head = RandomNumber(ENANO_H_PRIMER_CABEZA, ENANO_H_ULTIMA_CABEZA)
                UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head
                Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
                Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
                                        .Char.ShieldAnim, .Char.CascoAnim)
                Exit Sub
            End If
            End If
            
            If .raza = eRaza.Enano Then 'Raza = ENANO MUJER
            If .Genero = eGenero.Mujer Then
                Call QuitarUserInvItem(UserIndex, Slot, 1)
                Call UpdateUserInv(False, UserIndex, Slot)
                Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
                UserList(UserIndex).Char.Head = RandomNumber(ENANO_M_PRIMER_CABEZA, ENANO_M_ULTIMA_CABEZA)
                UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head
                Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
                Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
                                        .Char.ShieldAnim, .Char.CascoAnim)
                Exit Sub
            End If
            End If
            
            If .raza = eRaza.Gnomo Then 'Raza = GNOMO HOMBRE
            If .Genero = eGenero.Hombre Then
                Call QuitarUserInvItem(UserIndex, Slot, 1)
                Call UpdateUserInv(False, UserIndex, Slot)
                Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
                UserList(UserIndex).Char.Head = RandomNumber(GNOMO_H_PRIMER_CABEZA, GNOMO_H_ULTIMA_CABEZA)
                UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head
                Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
                Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
                                        .Char.ShieldAnim, .Char.CascoAnim)
                Exit Sub
            End If
            End If
            
            If .raza = eRaza.Gnomo Then 'Raza = GNOMO MUJER
            If .Genero = eGenero.Mujer Then
                Call QuitarUserInvItem(UserIndex, Slot, 1)
                Call UpdateUserInv(False, UserIndex, Slot)
                Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
                UserList(UserIndex).Char.Head = RandomNumber(GNOMO_M_PRIMER_CABEZA, GNOMO_M_ULTIMA_CABEZA)
                UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head
                Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
                Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
                                        .Char.ShieldAnim, .Char.CascoAnim)
                Exit Sub
            End If
            End If


Esto es [OPCIONAL]:
Ahora al tocarnos la misma cara nos da la opción de volver a usar la poción y nos dice un mensaje por consola para que volvamos a usarla.

Si bien funciona esto funciona bien, nos toca la opción de volver a usarla y todo bien. A veces nos dice que la cara fue cambiada y nos toca la misma pero reducimos mucho que pase eso. Si alguien sabe como solucionarlo al 100% bienvenido sea, yo lo edito. Gracias.


Case eOBJType.otCarita

If .flags.invisible Or .flags.Oculto Or .flags.Escondido = True Then 'funciona
Call WriteConsoleMsg(UserIndex, "¡¡Estas invisible! Solo podes usar este items cuando estas visible. ", FontTypeNames.FONTTYPE_INFO)
Exit Sub
End If

If .flags.Comerciando = True Then 'funciona
Call WriteConsoleMsg(UserIndex, "No puedes usarlo estando comerciando.", FontTypeNames.FONTTYPE_INFO)
Exit Sub
End If

If .flags.Meditando = True Then 'funciona
Call WriteConsoleMsg(UserIndex, "¡Estas meditando!", FontTypeNames.FONTTYPE_INFO)
Exit Sub
End If

If .flags.Mimetizado = 1 Then 'funciona
Call WriteConsoleMsg(UserIndex, "No puedes usarlo mientras estes mimetizado", FontTypeNames.FONTTYPE_INFO)
Exit Sub
End If

If .flags.Navegando = 1 Then 'funciona
Call WriteConsoleMsg(UserIndex, "¡Estas navegando! no puedes usar esta poción mientras navegas.", FontTypeNames.FONTTYPE_INFO)
Exit Sub
End If

If .flags.Muerto = 1 Then 'funciona
Call WriteConsoleMsg(UserIndex, "¡¡Estas muerto!! Solo podes usar items cuando estas vivo. ", FontTypeNames.FONTTYPE_INFO)
Exit Sub
End If

If .raza = eRaza.Humano Then 'Raza = HUMANO HOMBRE
If .Genero = eGenero.Hombre Then
If RandomNumber(HUMANO_H_PRIMER_CABEZA, HUMANO_H_ULTIMA_CABEZA) <> UserList(UserIndex).Char.Head Then

Call QuitarUserInvItem(UserIndex, Slot, 1)
Call UpdateUserInv(False, UserIndex, Slot)
Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)

UserList(UserIndex).Char.Head = RandomNumber(HUMANO_H_PRIMER_CABEZA, HUMANO_H_ULTIMA_CABEZA)
UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head

Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
.Char.ShieldAnim, .Char.CascoAnim)
Exit Sub

Else

Call WriteConsoleMsg(UserIndex, "¡Uuuffff! Casi te toca la misma cara, vuelve a tirar.", FontTypeNames.FONTTYPE_CENTINELA)
Exit Sub
End If
End If
End If

If .raza = eRaza.Humano Then 'Raza = HUMANO MUJER
If .Genero = eGenero.Mujer Then
If RandomNumber(HUMANO_M_PRIMER_CABEZA, HUMANO_M_ULTIMA_CABEZA) <> UserList(UserIndex).Char.Head Then

Call QuitarUserInvItem(UserIndex, Slot, 1)
Call UpdateUserInv(False, UserIndex, Slot)
Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)

UserList(UserIndex).Char.Head = RandomNumber(HUMANO_M_PRIMER_CABEZA, HUMANO_M_ULTIMA_CABEZA)
UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head

Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
.Char.ShieldAnim, .Char.CascoAnim)
Exit Sub

Else

Call WriteConsoleMsg(UserIndex, "¡Uuuffff! Casi te toca la misma cara, vuelve a tirar.", FontTypeNames.FONTTYPE_CENTINELA)
Exit Sub
End If
End If
End If



If .raza = eRaza.Elfo Then 'Raza = ELFO HOMBRE
If .Genero = eGenero.Hombre Then
If RandomNumber(ELFO_H_PRIMER_CABEZA, ELFO_H_ULTIMA_CABEZA) <> UserList(UserIndex).Char.Head Then

Call QuitarUserInvItem(UserIndex, Slot, 1)
Call UpdateUserInv(False, UserIndex, Slot)
Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)

UserList(UserIndex).Char.Head = RandomNumber(ELFO_H_PRIMER_CABEZA, ELFO_H_ULTIMA_CABEZA)
UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head

Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
.Char.ShieldAnim, .Char.CascoAnim)
Exit Sub

Else

Call WriteConsoleMsg(UserIndex, "¡Uuuffff! Casi te toca la misma cara, vuelve a tirar.", FontTypeNames.FONTTYPE_CENTINELA)
Exit Sub
End If
End If
End If

If .raza = eRaza.Elfo Then 'Raza = ELFO MUJER
If .Genero = eGenero.Mujer Then
If RandomNumber(ELFO_M_PRIMER_CABEZA, ELFO_M_ULTIMA_CABEZA) <> UserList(UserIndex).Char.Head Then

Call QuitarUserInvItem(UserIndex, Slot, 1)
Call UpdateUserInv(False, UserIndex, Slot)
Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)

UserList(UserIndex).Char.Head = RandomNumber(ELFO_M_PRIMER_CABEZA, ELFO_M_ULTIMA_CABEZA)
UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head

Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
.Char.ShieldAnim, .Char.CascoAnim)
Exit Sub

Else

Call WriteConsoleMsg(UserIndex, "¡Uuuffff! Casi te toca la misma cara, vuelve a tirar.", FontTypeNames.FONTTYPE_CENTINELA)
Exit Sub
End If
End If
End If

If .raza = eRaza.Drow Then 'Raza = ELFO OSCURO HOMBRE
If .Genero = eGenero.Hombre Then
If RandomNumber(DROW_H_PRIMER_CABEZA, DROW_H_ULTIMA_CABEZA) <> UserList(UserIndex).Char.Head Then

Call QuitarUserInvItem(UserIndex, Slot, 1)
Call UpdateUserInv(False, UserIndex, Slot)
Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)

UserList(UserIndex).Char.Head = RandomNumber(DROW_H_PRIMER_CABEZA, DROW_H_ULTIMA_CABEZA)
UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head

Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
.Char.ShieldAnim, .Char.CascoAnim)
Exit Sub

Else

Call WriteConsoleMsg(UserIndex, "¡Uuuffff! Casi te toca la misma cara, vuelve a tirar.", FontTypeNames.FONTTYPE_CENTINELA)
Exit Sub
End If
End If
End If

If .raza = eRaza.Drow Then 'Raza = ELFO OSCURO MUJER
If .Genero = eGenero.Mujer Then
If RandomNumber(DROW_M_PRIMER_CABEZA, DROW_M_ULTIMA_CABEZA) <> UserList(UserIndex).Char.Head Then

Call QuitarUserInvItem(UserIndex, Slot, 1)
Call UpdateUserInv(False, UserIndex, Slot)
Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)

UserList(UserIndex).Char.Head = RandomNumber(DROW_M_PRIMER_CABEZA, DROW_M_ULTIMA_CABEZA)
UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head

Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
.Char.ShieldAnim, .Char.CascoAnim)
Exit Sub

Else

Call WriteConsoleMsg(UserIndex, "¡Uuuffff! Casi te toca la misma cara, vuelve a tirar.", FontTypeNames.FONTTYPE_CENTINELA)
Exit Sub
End If
End If
End If

If .raza = eRaza.Enano Then 'Raza = ENANO HOMBRE
If .Genero = eGenero.Hombre Then
If RandomNumber(ENANO_H_PRIMER_CABEZA, ENANO_H_ULTIMA_CABEZA) <> UserList(UserIndex).Char.Head Then

Call QuitarUserInvItem(UserIndex, Slot, 1)
Call UpdateUserInv(False, UserIndex, Slot)
Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)

UserList(UserIndex).Char.Head = RandomNumber(ENANO_H_PRIMER_CABEZA, ENANO_H_ULTIMA_CABEZA)
UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head

Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
.Char.ShieldAnim, .Char.CascoAnim)
Exit Sub

Else

Call WriteConsoleMsg(UserIndex, "¡Uuuffff! Casi te toca la misma cara, vuelve a tirar.", FontTypeNames.FONTTYPE_CENTINELA)
Exit Sub
End If
End If
End If

If .raza = eRaza.Enano Then 'Raza = ENANO MUJER
If .Genero = eGenero.Mujer Then
If RandomNumber(ENANO_M_PRIMER_CABEZA, ENANO_M_ULTIMA_CABEZA) <> UserList(UserIndex).Char.Head Then

Call QuitarUserInvItem(UserIndex, Slot, 1)
Call UpdateUserInv(False, UserIndex, Slot)
Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)

UserList(UserIndex).Char.Head = RandomNumber(ENANO_M_PRIMER_CABEZA, ENANO_M_ULTIMA_CABEZA)
UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head

Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
.Char.ShieldAnim, .Char.CascoAnim)
Exit Sub

Else

Call WriteConsoleMsg(UserIndex, "¡Uuuffff! Casi te toca la misma cara, vuelve a tirar.", FontTypeNames.FONTTYPE_CENTINELA)
Exit Sub
End If
End If
End If

If .raza = eRaza.Gnomo Then 'Raza = GNOMO HOMBRE
If .Genero = eGenero.Hombre Then
If RandomNumber(GNOMO_H_PRIMER_CABEZA, GNOMO_H_ULTIMA_CABEZA) <> UserList(UserIndex).Char.Head Then

Call QuitarUserInvItem(UserIndex, Slot, 1)
Call UpdateUserInv(False, UserIndex, Slot)
Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)

UserList(UserIndex).Char.Head = RandomNumber(GNOMO_H_PRIMER_CABEZA, GNOMO_H_ULTIMA_CABEZA)
UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head

Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
.Char.ShieldAnim, .Char.CascoAnim)
Exit Sub

Else

Call WriteConsoleMsg(UserIndex, "¡Uuuffff! Casi te toca la misma cara, vuelve a tirar.", FontTypeNames.FONTTYPE_CENTINELA)
Exit Sub
End If
End If
End If

If .raza = eRaza.Gnomo Then 'Raza = GNOMO MUJER
If .Genero = eGenero.Mujer Then
If RandomNumber(GNOMO_M_PRIMER_CABEZA, GNOMO_M_ULTIMA_CABEZA) <> UserList(UserIndex).Char.Head Then

Call QuitarUserInvItem(UserIndex, Slot, 1)
Call UpdateUserInv(False, UserIndex, Slot)
Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)

UserList(UserIndex).Char.Head = RandomNumber(GNOMO_M_PRIMER_CABEZA, GNOMO_M_ULTIMA_CABEZA)
UserList(UserIndex).OrigChar.Head = UserList(UserIndex).Char.Head

Call WriteVar(CharPath & UCase(UserList(UserIndex).Name) & ".chr", "INIT", "Head", str(UserList(UserIndex).OrigChar.Head))
Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, _
.Char.ShieldAnim, .Char.CascoAnim)
Exit Sub

Else

Call WriteConsoleMsg(UserIndex, "¡Uuuffff! Casi te toca la misma cara, vuelve a tirar.", FontTypeNames.FONTTYPE_CENTINELA)
Exit Sub
End If
End If
End If

V8rgHvP.jpg



[CLIENTE]

Buscamos:

Código:
otMochilas = 37

Abajo:

Código:
otCarita = 39



Creamos el objeto, debemos usar (Objtype=39)

[OBJXXX]
Name=XXX
GrhIndex=XXX
ObjType=39
Agarrable=0
Crucial=0


Les dejo la foto por si no la tienen o no la encuentran en otro lugar. (Recuerden que como esta en imgur, esta en png).

KKtzPIN.png



Imagen de muestra:

UKerPF8.jpg


El código se puede mejorar mucho, yo se los dejo funcional y sencillo para que lo entiendan más fácil. Abrazo-
 
Última edición:
  • Me gusta
Reacciones: MAB

Ameynar AO2

Extraidor De Sistemas LVL 5
Como que ya lo vi :pensando:
 

M.T.

Aprendiz Lvl 3
Que mala suerte si compras la poción y te toca la misma cara
Muchas gracias por tu idea amigo!!. El código fue mejorado ahora la cara que te puede tocar se usa la primera hasta la ultima de cada raza como cuando creas personaje.
Y deje la opción de que no te toque la misma cara aunque tiene un pequeño detalle. Abrazo.
Post automatically merged:

Como que ya lo vi :pensando:
Gracias por tu comentario.
Yo no uso la versión 11.5, lo hice yo. Pero si quieren borrar el tema porque ya esta 0 problema. Gracias.
 

MAB

Lamb of God
Lindo aporte, aunque...

La parte de otCarita va en el Sub UseInvItem (lo aclaro porque hay varios subs con otMochila).

El código se puede reducir mucho, te dejo un ejemplo de algo así nomas (sé que se puede hacer mejor):

C++:
'@@by Nacho - Marcos se la mastiq

Case eOBJType.otCarita
    If .flags.invisible Or .flags.Oculto Or .flags.Escondido = True Then
        Call WriteConsoleMsg(UserIndex, "¡¡Estas invisible! Solo podes usar este items cuando estas visible. ", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
    
    If .flags.Comerciando = True Then
        Call WriteConsoleMsg(UserIndex, "No puedes usarlo estando comerciando.", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
    
    If .flags.Meditando = True Then
        Call WriteConsoleMsg(UserIndex, "¡Estas meditando!", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
    
    If .flags.Mimetizado = 1 Then
        Call WriteConsoleMsg(UserIndex, "No puedes usarlo mientras estes mimetizado", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
    
    If .flags.Navegando = 1 Then
        Call WriteConsoleMsg(UserIndex, "¡Estas navegando! no puedes usar esta poción mientras navegas.", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
        
    If .flags.Muerto = 1 Then
        Call WriteConsoleMsg(UserIndex, "¡¡Estas muerto!! Solo podes usar items cuando estas vivo. ", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
    
    'Con eso evitas repetir la cara, aunque se puede mejorar (el hecho de que si se repite la cara recorra la raza y el género otra ves no me va pero bueno, búsquenle la vuelta (?))
    Do While .Char.Head = .OrigChar.Head
    
        Select Case .raza
            Case eRaza.Humano
                If .Genero = eGenero.Hombre Then
                    .Char.Head = RandomNumber(HUMANO_H_PRIMER_CABEZA, HUMANO_H_ULTIMA_CABEZA)
                ElseIf .Genero = eGenero.Mujer Then
                    .Char.Head = RandomNumber(HUMANO_M_PRIMER_CABEZA, HUMANO_M_ULTIMA_CABEZA)
                End If
        
            Case eRaza.Elfo
                If .Genero = eGenero.Hombre Then
                    .Char.Head = RandomNumber(ELFO_H_PRIMER_CABEZA, ELFO_H_ULTIMA_CABEZA)
                ElseIf .Genero = eGenero.Mujer Then
                    .Char.Head = RandomNumber(ELFO_M_PRIMER_CABEZA, ELFO_M_ULTIMA_CABEZA)
                End If
        
            Case eRaza.Drow
                If .Genero = eGenero.Hombre Then
                    .Char.Head = RandomNumber(DROW_H_PRIMER_CABEZA, DROW_H_ULTIMA_CABEZA)
                ElseIf .Genero = eGenero.Mujer Then
                    .Char.Head = RandomNumber(DROW_M_PRIMER_CABEZA, DROW_M_ULTIMA_CABEZA)
                End If
        
            Case eRaza.Enano
                If .Genero = eGenero.Hombre Then
                    .Char.Head = RandomNumber(ENANO_H_PRIMER_CABEZA, ENANO_H_ULTIMA_CABEZA)
                ElseIf .Genero = eGenero.Mujer Then
                    .Char.Head = RandomNumber(ENANO_M_PRIMER_CABEZA, ENANO_M_ULTIMA_CABEZA)
                End If
        
            Case eRaza.Gnomo
                If .Genero = eGenero.Hombre Then
                    .Char.Head = RandomNumber(GNOMO_H_PRIMER_CABEZA, GNOMO_H_ULTIMA_CABEZA)
                ElseIf .Genero = eGenero.Mujer Then
                    .Char.Head = RandomNumber(GNOMO_M_PRIMER_CABEZA, GNOMO_M_ULTIMA_CABEZA)
                End If
        End Select
        
    Loop
        
    .OrigChar.Head = .Char.Head
        
    Call QuitarUserInvItem(UserIndex, Slot, 1)
    Call UpdateUserInv(False, UserIndex, Slot)
    Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
    Call WriteVar(CharPath & UCase$(.Name) & ".chr", "INIT", "Head", .OrigChar.Head)
    Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, .Char.ShieldAnim, .Char.CascoAnim)
 

M.T.

Aprendiz Lvl 3
Lindo aporte, aunque...

La parte de otCarita va en el Sub UseInvItem (lo aclaro porque hay varios subs con otMochila).

El código se puede reducir mucho, te dejo un ejemplo de algo así nomas (sé que se puede hacer mejor):

C++:
'@@by Nacho - Marcos se la mastiq

Case eOBJType.otCarita
    If .flags.invisible Or .flags.Oculto Or .flags.Escondido = True Then
        Call WriteConsoleMsg(UserIndex, "¡¡Estas invisible! Solo podes usar este items cuando estas visible. ", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
   
    If .flags.Comerciando = True Then
        Call WriteConsoleMsg(UserIndex, "No puedes usarlo estando comerciando.", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
   
    If .flags.Meditando = True Then
        Call WriteConsoleMsg(UserIndex, "¡Estas meditando!", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
   
    If .flags.Mimetizado = 1 Then
        Call WriteConsoleMsg(UserIndex, "No puedes usarlo mientras estes mimetizado", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
   
    If .flags.Navegando = 1 Then
        Call WriteConsoleMsg(UserIndex, "¡Estas navegando! no puedes usar esta poción mientras navegas.", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
       
    If .flags.Muerto = 1 Then
        Call WriteConsoleMsg(UserIndex, "¡¡Estas muerto!! Solo podes usar items cuando estas vivo. ", FontTypeNames.FONTTYPE_INFO)
        Exit Sub
    End If
   
    'Con eso evitas repetir la cara, aunque se puede mejorar (el hecho de que si se repite la cara recorra la raza y el género otra ves no me va pero bueno, búsquenle la vuelta (?))
    Do While .Char.Head = .OrigChar.Head
   
        Select Case .raza
            Case eRaza.Humano
                If .Genero = eGenero.Hombre Then
                    .Char.Head = RandomNumber(HUMANO_H_PRIMER_CABEZA, HUMANO_H_ULTIMA_CABEZA)
                ElseIf .Genero = eGenero.Mujer Then
                    .Char.Head = RandomNumber(HUMANO_M_PRIMER_CABEZA, HUMANO_M_ULTIMA_CABEZA)
                End If
       
            Case eRaza.Elfo
                If .Genero = eGenero.Hombre Then
                    .Char.Head = RandomNumber(ELFO_H_PRIMER_CABEZA, ELFO_H_ULTIMA_CABEZA)
                ElseIf .Genero = eGenero.Mujer Then
                    .Char.Head = RandomNumber(ELFO_M_PRIMER_CABEZA, ELFO_M_ULTIMA_CABEZA)
                End If
       
            Case eRaza.Drow
                If .Genero = eGenero.Hombre Then
                    .Char.Head = RandomNumber(DROW_H_PRIMER_CABEZA, DROW_H_ULTIMA_CABEZA)
                ElseIf .Genero = eGenero.Mujer Then
                    .Char.Head = RandomNumber(DROW_M_PRIMER_CABEZA, DROW_M_ULTIMA_CABEZA)
                End If
       
            Case eRaza.Enano
                If .Genero = eGenero.Hombre Then
                    .Char.Head = RandomNumber(ENANO_H_PRIMER_CABEZA, ENANO_H_ULTIMA_CABEZA)
                ElseIf .Genero = eGenero.Mujer Then
                    .Char.Head = RandomNumber(ENANO_M_PRIMER_CABEZA, ENANO_M_ULTIMA_CABEZA)
                End If
       
            Case eRaza.Gnomo
                If .Genero = eGenero.Hombre Then
                    .Char.Head = RandomNumber(GNOMO_H_PRIMER_CABEZA, GNOMO_H_ULTIMA_CABEZA)
                ElseIf .Genero = eGenero.Mujer Then
                    .Char.Head = RandomNumber(GNOMO_M_PRIMER_CABEZA, GNOMO_M_ULTIMA_CABEZA)
                End If
        End Select
       
    Loop
       
    .OrigChar.Head = .Char.Head
       
    Call QuitarUserInvItem(UserIndex, Slot, 1)
    Call UpdateUserInv(False, UserIndex, Slot)
    Call WriteConsoleMsg(UserIndex, "¡Tu cara ha sido cambiada con éxito!", FontTypeNames.FONTTYPE_GUILDMSG)
    Call WriteVar(CharPath & UCase$(.Name) & ".chr", "INIT", "Head", .OrigChar.Head)
    Call ChangeUserChar(UserIndex, .Char.body, .Char.Head, .Char.heading, .Char.WeaponAnim, .Char.ShieldAnim, .Char.CascoAnim)

Gracias por aclararlo, pensé que "Case eOBJType.otMochilas" aparecía uno solo que lo otros de mochila se llamaban distinto, mala mía.

Si, lo sé que el código se puede mejorar mucho lo había aclarado al final del Aporte. Mi idea era dejarlo funcional y con IF para que la gente que no entiende mucho se le sea más fácil y de paso se animen a mejorarlo. Yo lo tengo con Case y todo optimizado. Pero como te digo con IF creo que se le hace más fácil para que se animen a meterle mano y sino se animan, bueno el código esta funcional.

Gracias por tu comentario. Abrazo-
Post automatically merged:

Buen aporte MT! Gracias
Me alegra que te sirva :D. Abrazo-
 
Arriba