Jump to content
  • 0

pomoc Spawn u nejbližší nemocnice


Monael

Dotaz

Potřebuji vymyslet jak udělat při smrti respawn u nejbližší nemocnice, bohužel nevím jak porovnat všechny souřadnice a zjistit u které jsem nejblíže.

Vím, že musím použít něco GetPlayerDistanceFromPoint https://open.mp/docs/scripting/functions/GetPlayerDistanceFromPoint

Z tohodle to nevyčtu https://pawno.cz/index.php?/topic/54885-po-smrti-spawn-u-nemocnice/#comment-335040

Co mám za kód:

Spoiler

new bool:isDeath[MAX_PLAYERS] = false;
new Float:x, Float:y, Float:z;
new whereSpawned[MAX_PLAYERS];

public OnPlayerSpawn(playerid)
{
   if(isDeath[playerid])
   isDeath[playerid] = false;
   switch(whereSpawned[playerid]){
    case 0: {
    SetPlayerPos(playerid,-2655.0598, 640.1436, 14.4545);//SF nemocnice
   }
    case 1: {
    SetPlayerPos(playerid,1604.6643, 1815.2538, 10.8203);//LV nemocnice
    }
    case 2: {
    SetPlayerPos(playerid,-1513.4323, 2518.9666, 56.0703);//El Quebrados Medical Centre
    }
    case 3: {
    SetPlayerPos(playerid,2034.3083, -1401.6720, 17.2961);//County General Los Santos Hospital
    }
    case 4: {
    SetPlayerPos(playerid,1172.0804, -1325.2925, 15.4073);//All Saints General Hospital
    }
    case 5: {
    SetPlayerPos(playerid,-319.7292, 1048.2355, 20.3403);//Fort Carson Medical Center
    }
    case 6: {
    SetPlayerPos(playerid,-2203.9302, -2309.3950, 31.3750);//Angel Pine Medical Center
    }
}

}


public OnPlayerDeath(playerid)
{
    isDeath[playerid] = true; {
     new Distance = GetPlayerDistanceFromPoint(playerid, x, y, z); // ??? Nevím
    }

}

 Ps. Jsem uplný začátečník 

Link to comment
Share on other sites

6 odpovědí na tuto otázku

Recommended Posts

  • 1

vytvoris si pole suradnic

new pole[][] = {
	{ x1, y1, z1 },
	{ x2, y2, z2 },
	{ x3, y3, z3 },
	... atd
};

a pri respawne kontrolujes ku ktorej je najblizsie

new minDist = 99999; // nastavime vysoke cislo
new id = 0; // toto predstavuje poradie najblizsej nemocnice
for (int i = 0; i < sizeof(pole); ++i) {
    // spustime cyklus pre vsetky ulozene suradnice
	new dist = GetPlayerDistanceFromPoint(playerid, pole[i][0], pole[i][1], pole[i][2]); // zistime vzdialenost k aktualnej nemocnici
   	if (dist < minDist) {
		// ak je mensia ako doposial najblizsia
		minDist = dist; // ulozime si aktualnu vzdialenost
		id = i; // ulozime si aktualnu nemocnicu
	}
}

int x = pole[id][0];
int y = pole[id][1];
int z = pole[id][2];
// x, y, z su suradnice najblizsej nemocnice

 

  • Děkuji (+1) 1
Link to comment
Share on other sites

  • 0
před 4minutami, Monael said:
  Ukázat skrytý obsah

new bool:isDeath[MAX_PLAYERS] = false;
new Float:x, Float:y, Float:z;
new whereSpawned[MAX_PLAYERS];

public OnPlayerSpawn(playerid)
{
   if(isDeath[playerid])
   isDeath[playerid] = false;
   switch(whereSpawned[playerid]){
    case 0: {
    SetPlayerPos(playerid,-2655.0598, 640.1436, 14.4545);//SF nemocnice
   }
    case 1: {
    SetPlayerPos(playerid,1604.6643, 1815.2538, 10.8203);//LV nemocnice
    }
    case 2: {
    SetPlayerPos(playerid,-1513.4323, 2518.9666, 56.0703);//El Quebrados Medical Centre
    }
    case 3: {
    SetPlayerPos(playerid,2034.3083, -1401.6720, 17.2961);//County General Los Santos Hospital
    }
    case 4: {
    SetPlayerPos(playerid,1172.0804, -1325.2925, 15.4073);//All Saints General Hospital
    }
    case 5: {
    SetPlayerPos(playerid,-319.7292, 1048.2355, 20.3403);//Fort Carson Medical Center
    }
    case 6: {
    SetPlayerPos(playerid,-2203.9302, -2309.3950, 31.3750);//Angel Pine Medical Center
    }
}

}


public OnPlayerDeath(playerid)
{

    new pole[][] = {
    { -2655.0598, 640.1436, 14.4545 },
    { 1604.6643, 1815.2538, 10.8203 },
    { -1513.4323, 2518.9666, 56.0703 },
    { 2034.3083, -1401.6720, 17.2961 },
    { 1172.0804, -1325.2925, 15.4073 },
    { -319.7292, 1048.2355, 20.3403 },
    { -2203.9302, -2309.3950, 31.3750 },

    }

     new minDist = 99999;
     new id = 0;
     for (int i = 0; i < sizeof(pole); ++i) {
       new dist = GetPlayerDistanceFromPoint(playerid, pole[0], pole[1], pole[2]);
       if (dist < minDist) {
        minDist = dist;
        id = i;
      }
    }

int x = pole[id][0];
int y = pole[id][1];
int z = pole[id][2];
}

  Opětovně skrýt obsah

C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(133) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(133) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(133) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(134) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(134) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(134) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(135) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(135) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(135) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(136) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(136) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(136) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(137) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(137) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(137) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(138) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(138) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(138) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(139) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(139) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(139) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(141) : error 029: invalid expression, assumed zero
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(141 -- 143) : error 008: must be a constant expression; assumed zero
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(143) : warning 217: loose indentation
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(145) : error 017: undefined symbol "inet"
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(145) : warning 215: expression has no effect
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(145) : error 001: expected token: ")", but found ";"
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(145) : error 036: empty statement
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(145) : fatal error 107: too many error messages on one line

 

Toto su tie najbanalnejsie warningy/chyby. Skus si poradit v niecom aj sam :D (nauc sa anglicky, pise ti kde je problem)

Link to comment
Share on other sites

  • 0

okey, moja chyba, pole má byť

new Float:pole[][] = {
	...
}

to ti vyriesi tag mismatch (dufam)

local variable "x" shadows a variable at a preceding level

nemozes pouzit new x (y a z) kedze ho mas uz definovane ako globalnu premennu, zmen si nazov a tiez to bude

new Float:nx = ...;

 

Link to comment
Share on other sites

  • -1
Spoiler

new bool:isDeath[MAX_PLAYERS] = false;
new Float:x, Float:y, Float:z;
new whereSpawned[MAX_PLAYERS];

public OnPlayerSpawn(playerid)
{
   if(isDeath[playerid])
   isDeath[playerid] = false;
   switch(whereSpawned[playerid]){
    case 0: {
    SetPlayerPos(playerid,-2655.0598, 640.1436, 14.4545);//SF nemocnice
   }
    case 1: {
    SetPlayerPos(playerid,1604.6643, 1815.2538, 10.8203);//LV nemocnice
    }
    case 2: {
    SetPlayerPos(playerid,-1513.4323, 2518.9666, 56.0703);//El Quebrados Medical Centre
    }
    case 3: {
    SetPlayerPos(playerid,2034.3083, -1401.6720, 17.2961);//County General Los Santos Hospital
    }
    case 4: {
    SetPlayerPos(playerid,1172.0804, -1325.2925, 15.4073);//All Saints General Hospital
    }
    case 5: {
    SetPlayerPos(playerid,-319.7292, 1048.2355, 20.3403);//Fort Carson Medical Center
    }
    case 6: {
    SetPlayerPos(playerid,-2203.9302, -2309.3950, 31.3750);//Angel Pine Medical Center
    }
}

}


public OnPlayerDeath(playerid)
{

    new pole[][] = {
    { -2655.0598, 640.1436, 14.4545 },
    { 1604.6643, 1815.2538, 10.8203 },
    { -1513.4323, 2518.9666, 56.0703 },
    { 2034.3083, -1401.6720, 17.2961 },
    { 1172.0804, -1325.2925, 15.4073 },
    { -319.7292, 1048.2355, 20.3403 },
    { -2203.9302, -2309.3950, 31.3750 },

    }
     new minDist = 99999;
     new id = 0;
     for (int i = 0) i < sizeof(pole); ++i) {
       new dist = GetPlayerDistanceFromPoint(playerid, pole[0], pole[1], pole[2]);
       if (dist < minDist) {
        minDist = dist;
        id = i;
      }
    }

int x = pole[id][0];
int y = pole[id][1];
int z = pole[id][2];
}

Spoiler

C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(133) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(133) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(133) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(134) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(134) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(134) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(135) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(135) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(135) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(136) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(136) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(136) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(137) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(137) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(137) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(138) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(138) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(138) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(139) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(139) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(139) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(141) : error 029: invalid expression, assumed zero
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(141 -- 142) : error 008: must be a constant expression; assumed zero
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(142) : warning 217: loose indentation
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(144) : error 017: undefined symbol "int"
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(144) : error 017: undefined symbol "i"
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(144) : warning 215: expression has no effect
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(144) : error 017: undefined symbol "i"
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(144) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase

 

Edited by Monael
Link to comment
Share on other sites

  • -1

2 Errory zbývají .. +warningy, nevím co s tím 

Spoiler

new bool:isDeath[MAX_PLAYERS] = false;
new Float:x, Float:y, Float:z;
new whereSpawned[MAX_PLAYERS];

public OnPlayerSpawn(playerid)
{
   if(isDeath[playerid])
   isDeath[playerid] = false;
   switch(whereSpawned[playerid]){
    case 0: {
    SetPlayerPos(playerid,-2655.0598, 640.1436, 14.4545);//SF nemocnice
   }
    case 1: {
    SetPlayerPos(playerid,1604.6643, 1815.2538, 10.8203);//LV nemocnice
    }
    case 2: {
    SetPlayerPos(playerid,-1513.4323, 2518.9666, 56.0703);//El Quebrados Medical Centre
    }
    case 3: {
    SetPlayerPos(playerid,2034.3083, -1401.6720, 17.2961);//County General Los Santos Hospital
    }
    case 4: {
    SetPlayerPos(playerid,1172.0804, -1325.2925, 15.4073);//All Saints General Hospital
    }
    case 5: {
    SetPlayerPos(playerid,-319.7292, 1048.2355, 20.3403);//Fort Carson Medical Center
    }
    case 6: {
    SetPlayerPos(playerid,-2203.9302, -2309.3950, 31.3750);//Angel Pine Medical Center
    }
}

}


public OnPlayerDeath(playerid)
{

    new pole[][] = {
    { -2655.0598, 640.1436, 14.4545 },
    { 1604.6643, 1815.2538, 10.8203 },
    { -1513.4323, 2518.9666, 56.0703 },
    { 2034.3083, -1401.6720, 17.2961 },
    { 1172.0804, -1325.2925, 15.4073 },
    { -319.7292, 1048.2355, 20.3403 },
    { -2203.9302, -2309.3950, 31.3750 },

    }
     new minDist = 9999;
     new id = 0;
     for (new i = 0; i < sizeof(pole); ++i) {
       new dist = GetPlayerDistanceFromPoint(playerid, pole[0], pole[1], pole[2]);
       if (dist < minDist) {
        minDist = dist;
        id = i;
      }
    }

new x = pole[id][0];
new y = pole[id][1];
new z = pole[id][2];
}

Spoiler

C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(133) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(133) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(133) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(134) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(134) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(134) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(135) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(135) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(135) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(136) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(136) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(136) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(137) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(137) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(137) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(138) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(138) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(138) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(139) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(139) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(139) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(141) : error 029: invalid expression, assumed zero
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(141 -- 142) : error 008: must be a constant expression; assumed zero
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(142) : warning 217: loose indentation
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(145) : warning 213: tag mismatch
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(152) : warning 217: loose indentation
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(152) : warning 219: local variable "x" shadows a variable at a preceding level
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(153) : warning 219: local variable "y" shadows a variable at a preceding level
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(154) : warning 219: local variable "z" shadows a variable at a preceding level
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(154) : warning 204: symbol is assigned a value that is never used: "z"
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(153) : warning 204: symbol is assigned a value that is never used: "y"
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(152) : warning 204: symbol is assigned a value that is never used: "x"
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(386) : warning 203: symbol is never used: "x"
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(386) : warning 203: symbol is never used: "y"
C:\Program Files\GTA\GTA-SanAndreas\Server\gamemodes\neber.pwn(386) : warning 203: symbol is never used: "z"
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


2 Errors.
 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...