buenas tardes (aqui en argentina x lo menos )
buenp les cuento mi problema: tengo un script que hace que el pj se deslogue cuando aparece alguien en un rango determinado, esto esta bien cuando el pj es la healer o bufero pero cuando es mi enano no por que no puede desloguear en conbate, entonces yo me preguntaba como hacer para: 1_ hacer que en vez de desloguearse el scritp desactive el boteo o 2_el script haga que se tome un soe y luego se deslogue.
obvio que yo antes de molestarlos ya intente pero con resultados negativos :S
Espero que puedan ayudarme o darme una pista asi lo hago yo
Desde ya millones de gracias
PD: aquie te dejo el script x si las dudas no se nota bien en ese Script Logout
buenp les cuento mi problema: tengo un script que hace que el pj se deslogue cuando aparece alguien en un rango determinado, esto esta bien cuando el pj es la healer o bufero pero cuando es mi enano no por que no puede desloguear en conbate, entonces yo me preguntaba como hacer para: 1_ hacer que en vez de desloguearse el scritp desactive el boteo o 2_el script haga que se tome un soe y luego se deslogue.
obvio que yo antes de molestarlos ya intente pero con resultados negativos :S
- Spoiler:
- //Defines the type of logout:
// ONE == FOREC_LOGOUT
// ZERO == Normal Logout
DEFINE INT LOGOUT_MODE ZERO
//Cuando el jugador está dentro de esta gama se cierra la sesión
DEFINE DOUBLE MAXRANGE 1900
//Definir el rango Z para desloguear, útil cuando usted está en CATA, y desea evitar que el bot se desconecte x pj que estan sobre ellas.
// cuando una persona está por encima de su cabeza "también conocido como caminar en la parte superior de la cata"
DEFINE INT MAXZRANGE 500
//¿Quieres calcular la distancia para salir del sistema desde un punto específico?
// Yes = ONE
// No = ZERO
DEFINE INT STATICCHECK ZERO
//Cuando STATICCHECK == ONE que utiliza esta Coordenadas para calcular la distancia de cierre de sesión:
//Usted puede conseguir su ubicación dentro del juego con "/ loc"
DEFINE INT ME_X 90831
DEFINE INT ME_Y 219848
DEFINE INT ME_Z -5438
//CLAN:
//No haga caso de clanmates propia?
//YES == ONE
//NO == ZERO
DEFINE INT IGNOREOWNCLAN ZERO
DEFINE STRING CLANNAME "MY CLAN NAME"
//FRIENDLIST::
//YES == ONE
//NO == ZERO
DEFINE INT USEFRIENDLIST ZERO
DEFINE ARRAYLIST TRUSTEES 0
//ADD your Charnames here:
TRUSTEES.ADD "#$CHAR1"
TRUSTEES.ADD "#$CHAR2"
//Este ajuste es para frenar el "cheque" proceso. Su fina a comprobar todos los sec 1 para los nuevos jugadores dentro del rango, pero si usted está "paranoico" puede bajarla ofc
// sólo se incrementara el uso de la CPU,etc, pero cuando son muy paranoicos esta configuración hará que el jugador detecte y cierre sesion mas rapido
DEFINE INT PARANOID 1000
//¿Quieres decirle a otros clientes para cerrar la sesión?
//YES == ONE
//NO == ZERO
DEFINE INT TELLOTHERS ZERO
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////// VARIABLES ////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
INCLUDE StdLib\Player.l2c
DEFINE INT CLANID ZERO
DEFINE ARRAYLIST PLAYER_0 0
DEFINE ARRAYLIST PLAYER_1 0
DEFINE ARRAYLIST PLAYER_2 0
DEFINE ARRAYLIST PARTY_MEMBERS 0
DEFINE INT LOUT 0
DEFINE INT ONE 1
DEFINE INT ZERO 0
DEFINE INT LOGOUT_DELAY 0
DEFINE INT playerrange 0
DEFINE INT CANDIDATE 0
DEFINE STRING CANDIDATE_PLAYER 0
CLAN_GET_ID CLANID CLANNAME
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////// MAIN SCRIPT ////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PRINT_TEXT "======================================="
PRINT_TEXT "= ="
PRINT_TEXT "= AUTOMATIC LOGOUT SCRIPT ACTIVATED ="
PRINT_TEXT "= Satoshie ="
PRINT_TEXT "======================================="
DO
// Sleeping some ms just to make sure the script is not causing heavy load, no need to check ALL the time for new players
// every few 100ms is fine also!
SLEEP "<&PARANOID&>"
// Get all players
GET_PLAYERS PLAYER_0
// Get all party members
GET_PARTY PARTY_MEMBERS
// Check for every player if he is in party
FOREACH I PLAYER PLAYER_0
FOREACH P PLAYER PARTY_MEMBERS
IF "PARTY_MEMBERS.P.NAME" == "PLAYER_0.I.NAME"
//Actually the guy is at Party, no need to worry anymore
// I use this var just to "mark" this person as beeing at party
CANDIDATE = TWO
ENDIF
NEXTEACH
IF CANDIDATE == ONE && USEFRIENDLIST == ONE
FOREACH P STRING FRIENDLIST
IF "FRIENDLIST.P" == "PLAYER_0.I.NAME"
//Actually the guy is at Friendlist, no need to worry anymore
// I use this var just to "mark" this person as beeing at Friendlist
CANDIDATE = TWO
ENDIF
NEXTEACH
ENDIF
IF CANDIDATE == TWO
// CANDIDATE == TWO means the person IS INSIDE YOUR PARTY
// No need to worry so reset the var for the next player:
CANDIDATE = ONE
ELSE
//OMG A NON PARTY MEMBER
//Okay we have a player who is not in party, so tell me pls how to calculate the distance to him for logout?
IF STATICCHECK == ZERO
//Okay so you want me to use your current location thats fine:
ME_X = CHAR_X
ME_Z = CHAR_Z
ME_Y = CHAR_Y
ENDIF
//Get the Z DISTANCE to the player
DISTANCE playerrange NULL NULL ME_Z NULL NULL PLAYER_0.I.DEST_Z
IF playerrange <= MAXZRANGE
// Okay the person is actually within MAX Z range
//Get the "real" Distance to the player:
DISTANCE playerrange ME_X ME_Y ME_Z PLAYER_0.I.DEST_X PLAYER_0.I.DEST_Y PLAYER_0.I.DEST_Z
IF playerrange <= MAXRANGE
// WOW THIS IS SERIOUS!
// The player is actually to close to us so gonna go and start the logout now!
// Get the name for message
CANDIDATE_PLAYER = PLAYER_0.I.NAME
//Time to log out!
LOUT = ONE
ENDIF
ENDIF
ENDIF
NEXTEACH
ENDIF
IF LOUT == ONE
//Time to run the log out!
PRINT_TEXT "Logging out because <& CANDIDATE_PLAYER &> is in RANGE (DIST: <& playerrange &>) "
IF TELLOTHERS == ONE
UDP_SEND "LOGOUT" ZERO ZERO ZERO ZERO
ENDIF
IF LOGOUT_MODE == ZERO
COMMAND "/logout"
ELSE
FORCE_LOG
ENDIF
ENDIF
LOOP LOUT != ONE
SCRIPT_END
Espero que puedan ayudarme o darme una pista asi lo hago yo
Desde ya millones de gracias
PD: aquie te dejo el script x si las dudas no se nota bien en ese Script Logout