Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutorial]- Crear una pocion de % de vida explicado
30-04-2011, 06:26 AM (Este mensaje fue modificado por última vez en: 01-05-2011 05:50 AM por nickitolas.)
Mensaje: #1
[Tutorial]- Crear una pocion de % de vida explicado

Hola, ahora les explicare como crear un script de una pocion que te cure un % de la vida que tienes:
el script ira en el sub scripteditems, que es donde se ponen los objetos scritpeados divididos en cases, ademas cuando quieras asignarle un scripta un item debes crearlo y darle la funcion de Scripted, el numero de scripted debera ser = al del case.

Comecemos a crear:
Cita:Case 1
porcientovida= GetPlayerHp(Index) *5
porcientovida= porcientovida / 100
Call SetPlayerHp(Index, GetPlayerHp(Index)+porcientovida)
Exit Sub
[Imagen: explicacio.png]
Case1:
es el case que usaremos


porcientovida= GetPlayerHp(Index) *5
porcientovida= porcientovida / 100:
esto hace que la variable porciento vida sea igual al 5% de la vida que tiene el jugador (el calculo es numero X porciento deseado / 100)


Call SetPlayerHp(Index, GetPlayerHp(Index)+porcientovida):

Esto hace que la vida del jugador sea = a la vida que posee actualemente + la variable porcientovida (anteriormente hemos hecho que esa variable sea el 5% de la vida dle jugador)

PERO que sucede aqui?
si tenemos toda la vida y lo usamos tendremos mas de nuestra vida maxima, asi que arregluemos eso:

Cita:Case 1
porcientovida= GetPlayerHp(Index) *5
porcientovida= porcientovida / 100
If GetPlayerHp(Index)+porcientovida < GetPlayerMaxHp(Index) Then
Call SetPlayerHp(Index, GetPlayerHp(Index)+porcientovida)
Else
Call SetPlayerHp(Index, GetPlayerMaxHp(Index)
End If
Exit Sub

[Imagen: explicacio.png]

If GetPlayerHp(Index)+porcientovida < GetPlayerMaxHp(Index) Then:
esto hara que si la vida del jugador+ la variable porcientovida( que ya definimos como el 5% de su vida actual) son menores a la vida maxima del jugador suceda lo de abajo


Else
Call SetPlayerHp(Index, GetPlayerMaxHp(Index)
End If:

Con el Else hacemos que lo que esta abajo se realice si NO se cumple el if dado anteriormente
el Call SetPlayerHp(Index, GetPlayerMaxHp(Index) hace que por el else mas arriba, si la vida que se obtiene al agregar el 5% es mayora su maximo su vida se convierta en su maximo
El End If hace que se terminen las acciones que se realizan relacionadas con el else y el if dados anteriormente


PERO
Si uso la pocion, no se ira de mi inventario y la podre usar infinitas veces, ademas cuando uso la pocion mi vida sigue igual a menos que me golpen.

asi que para reparar lo primero utilizaremos la siguiente funcion (TakeItem) hecha por burdi:
NOTA: Las funciones o subs agregados se ponen al FINAL DE TODO EL MAIN.
Cita:' - TakeItem by Burdi -

Sub TakeItem(index, item, value)
If value = "all" Then
SLOT = 1
Do While SLOT < 24
If GetPlayerInvItemNum(index, SLOT) = item Then
Call SetPlayerInvItemNum(index, SLOT, 0)
Call SetPlayerInvItemValue(index, SLOT, 0)
Call SendInventoryUpdate(index, SLOT)
SLOT = 24
End If
SLOT = SLOT+1
Loop
Else
SLOT = 1
Do While SLOT < 24
If GetPlayerInvItemNum(index, SLOT) = item Then
If GetPlayerInvItemValue(index, SLOT) = value Then
Call SetPlayerInvItemNum(index, SLOT, 0)
Call SetPlayerInvItemValue(index, SLOT, 0)
Call SendInventoryUpdate(index, SLOT)
ElseIf GetPlayerInvItemValue(index, SLOT) > value Then
Call SetPlayerInvItemValue(index, SLOT, GetPlayerInvItemValue(index, SLOT) - value)
Call SendInventoryUpdate(index, SLOT)
End If
SLOT = 24
End If
SLOT = SLOT+1
Loop
End If
End Sub
[Imagen: explicacio.bmp]
de la funcion:
Te quita x cantidad del item que quieras. Si pones "all" te quita todo lo que tengas, y si pones como value el número que se tiene del item, también lo quita todo. Si lo usas con items no amontonables solo te quita uno.

Y lo otro es porque nos falto un detalle: enviar la informacion del personaje cambiada, para que se actualize en su pantalla
Ahora reparemos el script por ultima vez:
Cita:Case 1
item= REMPLAZAESTO
porcientovida= GetPlayerHp(Index) *5
porcientovida= porcientovida / 100
If GetPlayerHp(Index)+porcientovida < GetPlayerMaxHp(Index) Then
Call SetPlayerHp(Index, GetPlayerHp(Index)+porcientovida)
Else
Call SetPlayerHp(Index, GetPlayerMaxHp(Index)
End If
Call TakeItem(Index, item, 1)
Call SendPlayerData(Index)
Call SendPlayerStats(Index)
Exit Sub

[Imagen: explicacio.bmp]

item= REMPLAZAESTO:
REEMPLAZAESTO seria el ID de un item, que deberia ser el cual usas para la pocion.

Call TakeItem(Index, item, 1):
Esto le quitara al jugador UNO de el ID de item que este en la variable item.

Call SendPlayerData(Index)
Call SendPlayerStats(Index)

Estos dos comandos enviaran la informacion de jugador.



Salu2, espero haberles ayudado de algo y que se entienda.
Cualquier cosa dejen un comentario.

[Imagen: itachi1.png]
[Imagen: ichigoqvq.png]
--- Te gustan mis firmas?? pasate por mi post: Los invitados no pueden ver los enlaces. Por favor registrate AQUI para ver los enlaces. ---
Encuentra todos sus mensajes
Cita este mensaje en tu respuesta
27-07-2011, 02:42 AM (Este mensaje fue modificado por última vez en: 27-07-2011 02:58 AM por jolmoz.)
Mensaje: #2
RE: [Tutorial]- Crear una pocion de % de vida explicado

Esta comprobado que funciona????
lo probare...
lo comprobe...
NO SIRVE

Los invitados no pueden ver los enlaces. Por favor registrate AQUI para ver los enlaces.
Proximamente...[Imagen: ilw2mw.gif]
[Imagen: 67icz9.jpg]
[/b]
Encuentra todos sus mensajes
Cita este mensaje en tu respuesta
Enviar respuesta 


Posibles temas similares...
Tema: Autor Respuestas: Vistas: Último mensaje
  Tutorial de Script 3 : Main [Ae] hbkdx1 6 594 02-11-2011 01:25 AM
Último mensaje: Augusto
  Tutorial de Script 2 : Manejar un poco [Ae] hbkdx1 13 1,148 28-08-2011 03:50 AM
Último mensaje: judoka
  [Tutorial de Ayuda] Crear grupos de Subs/Functions Totolin 2 304 22-05-2011 03:07 PM
Último mensaje: Totolin
  [VideoTutorial]Crear ScriptedItem y Configurarlo SirBlaze 1 445 18-11-2010 02:42 AM
Último mensaje: LuisYare
  [Tutorial] If/Case Totolin 5 427 17-10-2010 12:34 AM
Último mensaje: ssfpatricio_23

Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)
ContáctanosAlterEngineVolver arribaVolver al contenidoArchivo (Modo simple)Sindicación RSS