Peršokti į turinį

Žmogus neatsiranda jam paskirtoje vietoje


Recommended Posts

Su Define pasidariau SPAWN pozicija ir yra pozicijos saugojimas/krovimas tai kai define parašau spawno pozicija. Prisiregistruoju ir krentu, kai krentu atsirandu 0 0 0 pozicijoje. O jei bekrentant atsijungiu atsirandu nustatytoje vietoje. Kas per problema?

Pridedu:

Ir nesaugoja pozicijos

Redaguota , nario Ignisxre
Nuoroda į komentarą
Dalintis per kitą puslapį

Pakeisk:

forward OnAccountRegister(playerid);
public OnAccountRegister(playerid)
{
    Player[playerid][ID] = cache_insert_id();
    printf("[Registracija] Nauja paskyra uþregistruota serveryje. Duomenø bazës ID: [%d]", Player[playerid][ID]);
 
    TogglePlayerSpectating(playerid, false);
 
    SetSpawnInfo(playerid, 0, 23, POSX, POSY, POSZ, POSA, 0, 0, 0, 0, 0, 0);
    SpawnPlayer(playerid);
    return true;
}

Į:

forward OnAccountRegister(playerid);
public OnAccountRegister(playerid)
{
    Player[playerid][ID] = cache_insert_id();
    printf("[Registracija] Nauja paskyra uþregistruota serveryje. Duomenø bazës ID: [%d]", Player[playerid][ID]);
 
    SetSpawnInfo(playerid, NO_TEAM, 23, -1958.8148, 138.0560, 27.6940, 278.2469, 0, 0, 0, 0, 0, 0);
	TogglePlayerSpectating(playerid, false);    

    return true;
}

Taipogi pakeisk:

forward OnAccountLoad(playerid);
public OnAccountLoad(playerid)
{
    Player[playerid][Admin] = cache_get_field_content_int(0, "Admin");
    Player[playerid][VIP] = cache_get_field_content_int(0, "VIP");
    Player[playerid][Money] = cache_get_field_content_int(0, "Money");
    Player[playerid][pSkin] = cache_get_field_content_int(0, "Skin");
    Player[playerid][posX] = cache_get_field_content_float(0, "PosX");
    Player[playerid][posY] = cache_get_field_content_float(0, "PosY");
    Player[playerid][posZ] = cache_get_field_content_float(0, "PosZ");
    Player[playerid][posA] = cache_get_field_content_float(0, "PosA");
   
    TogglePlayerSpectating(playerid, false);
 
    GivePlayerMoney(playerid, Player[playerid][Money]);
 
    SetSpawnInfo(playerid, 0, 23, Player[playerid][posX], Player[playerid][posY], Player[playerid][posZ], Player[playerid][posA], 0, 0, 0, 0, 0, 0);
    SpawnPlayer(playerid);
 
    SendClientMessage(playerid, Zalia, "Jûs sëkmingai prisijungëte á serverá.");
    return true;
}

Į:

forward OnAccountLoad(playerid);
public OnAccountLoad(playerid)
{
    Player[playerid][Admin] = cache_get_field_content_int(0, "Admin");
    Player[playerid][VIP] = cache_get_field_content_int(0, "VIP");
    Player[playerid][Money] = cache_get_field_content_int(0, "Money");
    Player[playerid][pSkin] = cache_get_field_content_int(0, "Skin");
    Player[playerid][posX] = cache_get_field_content_float(0, "PosX");
    Player[playerid][posY] = cache_get_field_content_float(0, "PosY");
    Player[playerid][posZ] = cache_get_field_content_float(0, "PosZ");
    Player[playerid][posA] = cache_get_field_content_float(0, "PosA");
   
    SetSpawnInfo(playerid, NO_TEAM, 23, Player[playerid][posX], Player[playerid][posY], Player[playerid][posZ], Player[playerid][posA], 0, 0, 0, 0, 0, 0);
    TogglePlayerSpectating(playerid, false);
 
    GivePlayerMoney(playerid, Player[playerid][Money]);
 
    SendClientMessage(playerid, Zalia, "Jûs sëkmingai prisijungëte á serverá.");
    return true;
}

Jeigu žaidėjas yra stebėjimo režime, užtenka išjungti stebėjimo rėžimą, prieš tai nustačius koordinates. Gali daryti ir kitaip - poziciją įkelti į kintamuosius, ir žaidėjui atsiradus OnPlayerSpawn pakeisti poziciją į kintamųjų. 

Redaguota , nario ALFRED.
  • Teigiamai 2
Nuoroda į komentarą
Dalintis per kitą puslapį

51 minutes prieš, ALFRED. parašė:

Pakeisk:

forward OnAccountRegister(playerid);
public OnAccountRegister(playerid)
{
    Player[playerid][ID] = cache_insert_id();
    printf("[Registracija] Nauja paskyra uþregistruota serveryje. Duomenø bazës ID: [%d]", Player[playerid][ID]);
 
    TogglePlayerSpectating(playerid, false);
 
    SetSpawnInfo(playerid, 0, 23, POSX, POSY, POSZ, POSA, 0, 0, 0, 0, 0, 0);
    SpawnPlayer(playerid);
    return true;
}

Į:

forward OnAccountRegister(playerid);
public OnAccountRegister(playerid)
{
    Player[playerid][ID] = cache_insert_id();
    printf("[Registracija] Nauja paskyra uþregistruota serveryje. Duomenø bazës ID: [%d]", Player[playerid][ID]);
 
    SetSpawnInfo(playerid, NO_TEAM, 23, -1958.8148, 138.0560, 27.6940, 278.2469, 0, 0, 0, 0, 0, 0);
	TogglePlayerSpectating(playerid, false);    

    return true;
}

Taipogi pakeisk:

forward OnAccountLoad(playerid);
public OnAccountLoad(playerid)
{
    Player[playerid][Admin] = cache_get_field_content_int(0, "Admin");
    Player[playerid][VIP] = cache_get_field_content_int(0, "VIP");
    Player[playerid][Money] = cache_get_field_content_int(0, "Money");
    Player[playerid][pSkin] = cache_get_field_content_int(0, "Skin");
    Player[playerid][posX] = cache_get_field_content_float(0, "PosX");
    Player[playerid][posY] = cache_get_field_content_float(0, "PosY");
    Player[playerid][posZ] = cache_get_field_content_float(0, "PosZ");
    Player[playerid][posA] = cache_get_field_content_float(0, "PosA");
   
    TogglePlayerSpectating(playerid, false);
 
    GivePlayerMoney(playerid, Player[playerid][Money]);
 
    SetSpawnInfo(playerid, 0, 23, Player[playerid][posX], Player[playerid][posY], Player[playerid][posZ], Player[playerid][posA], 0, 0, 0, 0, 0, 0);
    SpawnPlayer(playerid);
 
    SendClientMessage(playerid, Zalia, "Jûs sëkmingai prisijungëte á serverá.");
    return true;
}

Į:

forward OnAccountLoad(playerid);
public OnAccountLoad(playerid)
{
    Player[playerid][Admin] = cache_get_field_content_int(0, "Admin");
    Player[playerid][VIP] = cache_get_field_content_int(0, "VIP");
    Player[playerid][Money] = cache_get_field_content_int(0, "Money");
    Player[playerid][pSkin] = cache_get_field_content_int(0, "Skin");
    Player[playerid][posX] = cache_get_field_content_float(0, "PosX");
    Player[playerid][posY] = cache_get_field_content_float(0, "PosY");
    Player[playerid][posZ] = cache_get_field_content_float(0, "PosZ");
    Player[playerid][posA] = cache_get_field_content_float(0, "PosA");
   
    SetSpawnInfo(playerid, NO_TEAM, 23, Player[playerid][posX], Player[playerid][posY], Player[playerid][posZ], Player[playerid][posA], 0, 0, 0, 0, 0, 0);
    TogglePlayerSpectating(playerid, false);
 
    GivePlayerMoney(playerid, Player[playerid][Money]);
 
    SendClientMessage(playerid, Zalia, "Jûs sëkmingai prisijungëte á serverá.");
    return true;
}

Jeigu žaidėjas yra stebėjimo režime, užtenka išjungti stebėjimo rėžimą, prieš tai nustačius koordinates. Gali daryti ir kitaip - poziciją įkelti į kintamuosius, ir žaidėjui atsiradus OnPlayerSpawn pakeisti poziciją į kintamųjų. 

Ta pati problema

Nuoroda į komentarą
Dalintis per kitą puslapį

4 minutes prieš, ALFRED. parašė:

Mėgink sukurti naują kintamajį kuris nustato ar žaidėjas prisijungęs ar ne, kai pravedi OnPlayerSpawn peržiūrėk ar žaidėjas prisijungęs ar ne, jeigu ne, nustatyk poziciją kurią išgavai iš kintamųjų.

Kaip padaryti tą kintamajį kuris nustato? nes esu nesenai pradėjas skriptinti tai nesuprantu biški:D

Nuoroda į komentarą
Dalintis per kitą puslapį

enum PlayerData
{
    ID,
    Name[MAX_PLAYER_NAME],
    Password[129],
    IP[16],
    Admin,
    VIP,
    Money,
    XP,
    pSkin,
    Float:posX,
    Float:posY,
    Float:posZ,
    Float:posA,
};
new Player[MAX_PLAYERS][PlayerData];

Prie šito pridėk kintamajį, pavyzdžiui pLogged, kai žaidėjas prisijungia nustatyk į 0, vėliau kai žaidėjas prisijungia ir atsiranda prie OnPlayerSpawn patikrink kintamojo reikšmę. Jeigu kintamojo reikšmė 0, nustatyk žaidėjo poziciją ir pakeisk reikšmę į 1, tuomet kai kitą kartą žaidėjas atsiras nebus iš naujo nustatytos koordinatės į prisijungimo. Yra begalė būdų padaryt žaidėjų krovimą, visais jais gali pasidomėt pagrindiniame forume (forum.sa-mp.com)

  • Teigiamai 2
Nuoroda į komentarą
Dalintis per kitą puslapį

7 minutes prieš, ALFRED. parašė:
enum PlayerData
{
    ID,
    Name[MAX_PLAYER_NAME],
    Password[129],
    IP[16],
    Admin,
    VIP,
    Money,
    XP,
    pSkin,
    Float:posX,
    Float:posY,
    Float:posZ,
    Float:posA,
};
new Player[MAX_PLAYERS][PlayerData];

Prie šito pridėk kintamajį, pavyzdžiui pLogged, kai žaidėjas prisijungia nustatyk į 0, vėliau kai žaidėjas prisijungia ir atsiranda prie OnPlayerSpawn patikrink kintamojo reikšmę. Jeigu kintamojo reikšmė 0, nustatyk žaidėjo poziciją ir pakeisk reikšmę į 1, tuomet kai kitą kartą žaidėjas atsiras nebus iš naujo nustatytos koordinatės į prisijungimo. Yra begalė būdų padaryt žaidėjų krovimą, visais jais gali pasidomėt pagrindiniame forume (forum.sa-mp.com)

Gal gali numest kaip? nes nieko nesupratau :D padariau Logged, prie to enum PlayerData daugiau nesupratau

Nuoroda į komentarą
Dalintis per kitą puslapį

Funkcija, kur nors modifikacijos viršuje/apačioje:

SetPlayerToSpawn(playerid)
{
	if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING)
	{
	    SetSpawnInfo(playerid, NO_TEAM, 23, -1958.8148, 138.0560, 27.6940, 278.2469, 0, 0, 0, 0, 0, 0);
		TogglePlayerSpectating(playerid, 0);
	}
	else
	{
	    if(IsPlayerInAnyVehicle(playerid))
	    {
	        new
	            Float:x,
	            Float:y,
	            Float:z;
			GetPlayerPos(playerid, x, y, z);
			SetPlayerPos(playerid, x, y, z + 5.0);
	    }

	    SpawnPlayer(playerid);
	}
}

Kita..

public OnPlayerConnect(playerid)
{
	Player[playerid][Logged] = 0;

	return 1;
}

public OnPlayerSpawn(playerid)
{
	if(!Player[playerid][Logged])
	{
		SetPlayerPos(playerid, Player[playerid][posX], Player[playerid][posY], Player[playerid][posZ]);
		SetPlayerFacingAngle(playerid, Player[playerid][posA]);
		GivePlayerMoney(playerid, Player[playerid][Money]);
		Player[playerid][Logged] = 1;
	}
	else SetPlayerPos(playerid, -1958.8148, 138.0560, 27.6940);
	
	return 1;
}

forward OnAccountRegister(playerid);
public OnAccountRegister(playerid)
{
    Player[playerid][ID] = cache_insert_id();
    printf("[Registracija] Nauja paskyra uþregistruota serveryje. Duomenø bazës ID: [%d]", Player[playerid][ID]);
 	
    new queryBuffer[64];
    mysql_format(mysql, queryBuffer, sizeof(queryBuffer), "SELECT * FROM zaidejai WHERE ID = '%i'", Player[playerid][ID]); // Pamodifikuok pagal savo kintamajį duomenų bazėje.
    mysql_tquery(mysql, queryBuffer, "OnAccountLoad", "i", playerid);
}

forward OnAccountLoad(playerid);
public OnAccountLoad(playerid)
{
	Player[playerid][ID] = cache_get_field_content_int(0, "ID"); // Pamodifikuok pagal savo kintamajį duomenų bazėje.
    Player[playerid][Admin] = cache_get_field_content_int(0, "Admin");
    Player[playerid][VIP] = cache_get_field_content_int(0, "VIP");
    Player[playerid][Money] = cache_get_field_content_int(0, "Money");
    Player[playerid][pSkin] = cache_get_field_content_int(0, "Skin");
    Player[playerid][posX] = cache_get_field_content_float(0, "PosX");
    Player[playerid][posY] = cache_get_field_content_float(0, "PosY");
    Player[playerid][posZ] = cache_get_field_content_float(0, "PosZ");
    Player[playerid][posA] = cache_get_field_content_float(0, "PosA");
	
	SetPlayerToSpawn(playerid);
    SendClientMessage(playerid, Zalia, "Jûs sëkmingai prisijungëte á serverá.");
    return true;
}

 

Redaguota , nario ALFRED.
  • Teigiamai 1
Nuoroda į komentarą
Dalintis per kitą puslapį

14 minutes prieš, ALFRED. parašė:

Funkcija, kurs nors modifikacijos viršuje/apačioje:

SetPlayerToSpawn(playerid)
{
	if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING)
	{
	    SetSpawnInfo(playerid, NO_TEAM, 23, -1958.8148, 138.0560, 27.6940, 278.2469, 0, 0, 0, 0, 0, 0);
		TogglePlayerSpectating(playerid, 0);
	}
	else
	{
	    if(IsPlayerInAnyVehicle(playerid))
	    {
	        new
	            Float:x,
	            Float:y,
	            Float:z;
			GetPlayerPos(playerid, x, y, z);
			SetPlayerPos(playerid, x, y, z + 5.0);
	    }

	    SpawnPlayer(playerid);
	}
}

Kita..

public OnPlayerConnect(playerid)
{
	Player[playerid][Logged] = 0;

	return 1;
}

public OnPlayerSpawn(playerid)
{
	if(!Player[playerid][Logged])
	{
		SetPlayerPos(playerid, Player[playerid][posX], Player[playerid][posY], Player[playerid][posZ]);
		SetPlayerFacingAngle(playerid, Player[playerid][posA]);
		GivePlayerMoney(playerid, Player[playerid][Money]);
		Player[playerid][Logged] = 1;
	}
	else SetPlayerPos(playerid, -1958.8148, 138.0560, 27.6940);
	
	return 1;
}

forward OnAccountRegister(playerid);
public OnAccountRegister(playerid)
{
    Player[playerid][ID] = cache_insert_id();
    printf("[Registracija] Nauja paskyra uþregistruota serveryje. Duomenø bazës ID: [%d]", Player[playerid][ID]);
 
    SetPlayerToSpawn(playerid);

    return true;
}

forward OnAccountLoad(playerid);
public OnAccountLoad(playerid)
{
    Player[playerid][Admin] = cache_get_field_content_int(0, "Admin");
    Player[playerid][VIP] = cache_get_field_content_int(0, "VIP");
    Player[playerid][Money] = cache_get_field_content_int(0, "Money");
    Player[playerid][pSkin] = cache_get_field_content_int(0, "Skin");
    Player[playerid][posX] = cache_get_field_content_float(0, "PosX");
    Player[playerid][posY] = cache_get_field_content_float(0, "PosY");
    Player[playerid][posZ] = cache_get_field_content_float(0, "PosZ");
    Player[playerid][posA] = cache_get_field_content_float(0, "PosA");
	
	SetPlayerToSpawn(playerid);
    SendClientMessage(playerid, Zalia, "Jûs sëkmingai prisijungëte á serverá.");
    return true;
}

Jeigu ir dabar nekraus, peržiūrėk mysql.log.txt, galbūt blogai nurodei pozicijų pavadinimus.

Nekrauna, o mysql loguose toki meta: 

[00:29:44] [ERROR] mysql_format - destination size is too small

 

Nuoroda į komentarą
Dalintis per kitą puslapį

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

×
×
  • Sukurti naują...