Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- * Função importante para o IA do NPC
- * Essa função checa se entre nX nY e pX pY tem algum obstaculo
- * Ex: muro, casas, postes, arvores, então ele retorna FALSE
- * Isto evita que o NPC passe por cima das casas ou prédios ;)
- * No entanto, como MapAndreas não é muito preciso, o NPC pode passar por cima de pequenos muros
- *
- */
- #if defined _route_included
- #endinput
- #endif
- #define _route_included
- stock DiagonalRoute(Float:nx, Float:ny, Float: nz, Float:px, Float:py, Float:pz, Float: offset = 1.5, Float: diffHeigth = 1.5) {
- //if(floatround(nz) != floatround(pz))
- // return false;
- static Float: diffX;
- if(nx > px) {
- diffX = nx - px;
- }
- else {
- diffX = px - nx;
- }
- new Float: diffY;
- if(ny > py) {
- diffY = ny - py;
- }
- else {
- diffY = py - ny;
- }
- static Float: diffXY;
- if(diffX > diffY) {
- diffXY = (diffX / diffY) * offset ;
- }
- else {
- diffXY = (diffY / diffX) * offset ;
- }
- if((nx < px)){
- while(nx < px) {
- nx += (diffXY);
- if(ny > py) {
- ny -= offset ;
- }
- else {
- ny += offset ;
- }
- MapAndreas_FindZ_For2DCoord(nx, ny, nz);
- if(floatabs((nz) - (pz)) > diffHeigth ) {
- return false;
- }
- pz = nz;
- }
- }
- else {
- while(nx > px) {
- nx -= (diffXY);
- if(ny > py) {
- ny -= offset ;
- }
- else {
- ny += offset ;
- }
- MapAndreas_FindZ_For2DCoord(nx, ny, nz);
- if(floatabs((nz) - (pz)) > diffHeigth ) {
- return false;
- }
- pz = nz;
- }
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement