Jump to content
  • 0

pomoc Ulozeni pozici aut + hrace.


Denonymous

Dotaz

Ahoj, potřeboval bych prosím pomoct.

 

Jak mám udělat to, když namapuju auto, a hráč si ho vezme, a zaparkuje kdekoliv, aby tam zůstalo ? Napořád, aby se tam uložilo.

 

A pak bych potřeboval pomoct to stejné s hráčem, hraje, někde si najde místo, odpojí se, ale chtěl bych, aby když se znovu připojí aby zůstal na tom stejném místě před odpojením. Díky :) :).

Link to comment
Share on other sites

Recommended Posts

  • 0

Ajaj..

 

 

C:\Users\Mates\Desktop\TWWD.pwn(134) : warning 217: loose indentation
C:\Users\Mates\Desktop\TWWD.pwn(135) : warning 219: local variable "Open" shadows a variable at a preceding level
C:\Users\Mates\Desktop\TWWD.pwn(141) : warning 213: tag mismatch
C:\Users\Mates\Desktop\TWWD.pwn(142) : warning 213: tag mismatch
C:\Users\Mates\Desktop\TWWD.pwn(143) : warning 213: tag mismatch
C:\Users\Mates\Desktop\TWWD.pwn(156) : error 035: argument type mismatch (argument 1)
C:\Users\Mates\Desktop\TWWD.pwn(156) : error 017: undefined symbol "value"
C:\Users\Mates\Desktop\TWWD.pwn(157) : error 035: argument type mismatch (argument 1)
C:\Users\Mates\Desktop\TWWD.pwn(157) : error 017: undefined symbol "value"
C:\Users\Mates\Desktop\TWWD.pwn(158) : error 035: argument type mismatch (argument 1)
C:\Users\Mates\Desktop\TWWD.pwn(158) : error 017: undefined symbol "value"
C:\Users\Mates\Desktop\TWWD.pwn(160) : warning 217: loose indentation
C:\Users\Mates\Desktop\TWWD.pwn(152) : warning 204: symbol is assigned a value that is never used: "File"
C:\Users\Mates\Desktop\TWWD.pwn(203) : warning 202: number of arguments does not match definition
C:\Users\Mates\Desktop\TWWD.pwn(204) : warning 202: number of arguments does not match definition
C:\Users\Mates\Desktop\TWWD.pwn(204) : warning 202: number of arguments does not match definition
C:\Users\Mates\Desktop\TWWD.pwn(204) : warning 202: number of arguments does not match definition
C:\Users\Mates\Desktop\TWWD.pwn(204) : warning 202: number of arguments does not match definition

 

 

Hele takhle, myslíš že by to šlo i jinačím způsobem než takto přes YSI ? :d Asi blba otazka co.

Link to comment
Share on other sites

  • 0

Carloss uvědomuješ si že OnPlayerExitVehicle ti nebude fungovat když hráč jede na motorce a spadne z motorky? :) alespon mě to ta před rokem nefungovalo.  Proč radíš když tady sám píšeš 3 000 témat o help?

Edited by Steam wallet
Link to comment
Share on other sites

  • 0

Takže když si hráč vezme to auto, někam pojede, vystoupí, tak tam zůstane to auto že? Jako dokud ho zase nepřemístí.

 

 

 

no to auto bych možná měl, ale co ta pozice hráče? Jak to uložit?

Edited by Denonymous
Link to comment
Share on other sites

  • 0

Takže když si hráč vezme to auto, někam pojede, vystoupí, tak tam zůstane to auto že? Jako dokud ho zase nepřemístí.

 

 

 

no to auto bych možná měl, ale co ta pozice hráče? Jak to uložit?

prostě zjisti X,Y,Z hráče ulož si to do souboru a pak až v respawnu ho teleportuj. 

Link to comment
Share on other sites

  • 0

Carlosso co zatim ctu tak mu celou dobu radis spatne. Nerad kdyz nevis co poradit. Tohle by melo fugovat:

new pSpawn[MAX_PLAYERS char];

public OnPlayerSpawn(playerid)
{
	if(pSpawn{playerid} == 0)
	{
	    new path[40];
	    GetPlayerName(playerid, path, MAX_PLAYER_NAME);
	    format(path, sizeof path, "%s.ini", path);
	    
	    INI_ParseFile(path, "LoadPlayerSpawn", .bExtra = true, .extra = playerid);
	    pSpawn{playerid} = 1;
	}
	return 1;
}

forward LoadPlayerSpawn(playerid, name[], value[]);
public LoadPlayerSpawn(playerid, name[], value[])
{
    new Float:pos_x, Float:pos_y, Float:pos_z;
	INI_Float("posX", pos_x);
	INI_Float("posY", pos_y);
	INI_Float("posZ", pos_z);
	SetPlayerPos(playerid, pos_x, pos_y, pos_z);
	return 0;
}

public OnPlayerDisconnect(playerid)
{
	new path[40], Float:pos_x, Float:pos_y, Float:pos_z;
	
	GetPlayerPos(playerid, pos_x, pos_y, pos_z);
	GetPlayerName(playerid, path, MAX_PLAYER_NAME);
	format(path, sizeof path, "%s.ini", path);
	
	new INI:file = INI_Open(path);
	INI_WriteFloat(file, "posX", pos_x);
	INI_WriteFloat(file, "posY", pos_y);
	INI_WriteFloat(file, "posZ", pos_z);
	INI_Close(file);

	pSpawn{playerid} = 0;
}
Edited by pepcaarn
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

Tak to teda pardon ale taky to nejde.. :oo

 

Tu posílám celej kód.

 

#include <a_samp>
#include <dini> //bere funkce z knihovny dini
#include <dudb> //bere funkce z knihovny dudb
#include <dutils> //bere funkce z knihovny dutils
#include <YSI/Y_ini>
 
new pSpawn[MAX_PLAYERS char];
 
#define SCM SendClientMessage
#define SendMessage SendClientMessage
// TERAZ MOZES POUZIVAT AJ SendMessage aj len SCM
 
 
//#define
#define modra 0x4778C9
#define MODRA 0x0000BBAA
#define MODRA2 0x4682B4AA
#define MODRA3 0x4169FFAA
#define SVMODRA 0x33CCFFAA
#define ZELENA 0x008000AA
#define CYAN 0x00FFFFAA
#define TMAVACYAN 0x008B8BAA
#define BILA 0xFFFFFFAA
#define ZLUTA 0xFFFF00AA
#define HNEDA 0xA52A2AAA
#define HNEDA2 0xBC8F8FAA
#define COKOLADA 0xD2691EAA
#define CERVENA 0xFF0000AA
#define SEDA 0x808080AA
#define FIALOVA 0x800080AA
#define RUZOVA 0xFFC0CBAA
#define CHARTR 0x7FFF00AA
#define ORANZCERV 0xFF4500AA
#define ORANZOVA 0xFF8C00AA
#define NEVIDITE 0x4682B400
#define B_SEDA 0x808080FF  //seda barva
#define B_CERV 0xA40000FF //cervena barva
#define B_BILA 0xFFFFFFFF //bila barva
#define B_ZELE 0x00A400FF //zelena barva
 
#define REG_DIALOG 0
#define LOG_DIALOG 1
 
enum PLAYER_INFO// - něco jako databaze odkud bere informace proměná Informace
{
bool:Login // pokud už enum máte stačí do něj přidat toto (bool: logická porměnná, true or false)
}
 
new Informace[MAX_PLAYERS][PLAYER_INFO]; // info o hráč, využívá seznam z enumu
 
stock Jmeno(playerid) // zjištění jména
{
new pName[MAX_PLAYER_NAME]; //proměnná na zapsání jména
 
if(IsPlayerConnected(playerid)) //pokud je hráč připojen
{
if(!IsPlayerNPC(playerid)) // a pokud to není NPC
{
GetPlayerName(playerid, pName, sizeof(pName)); //zjistí jeho jméno
}
}
return pName; //odešle jméno
}
 
main()
{
print("\n----------------------------------");
print("Test vole");
print("----------------------------------\n");
}
 
 
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Test vole");
return 1;
}
 
public OnGameModeExit()
{
return 1;
}
 
public OnPlayerRequestClass(playerid, classid)
{
if(!Informace[playerid][Login]) // kontrola jestli neni prihlasen
{
if(udb_Exists(Jmeno(playerid))) // pokud je zaregistrován
{
new message[256]; // proměnná pro zprávu
format(message, sizeof(message), "Vitej zpatky, %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); //připraví zprávu¨s parametrem do dialogu
ShowPlayerDialog(playerid, LOG_DIALOG, DIALOG_STYLE_INPUT, "Prihlaseni", message, "OK", "Konec"); // otevře přihlašovací dialog s kolonkou na heslo
}
else // ale pokud nemá účet
{
new message[256]; // připraví proměnnou pro zprávu
format(message, sizeof(message), "Zaregistruj se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); // formát zprávy s parametrem
ShowPlayerDialog(playerid, REG_DIALOG, DIALOG_STYLE_INPUT, "Registrace", message, "OK", "Konec"); // pošle hráči registrační dialog s kolonkou pro heslo
}
}
 
    SetPlayerPos(playerid, 1875.2098,1336.1964,16.9223);
SetPlayerCameraPos(playerid, 1873.6270,1342.7435,16.9223);
SetPlayerCameraLookAt(playerid,1875.2098,1336.1964,16.9223);
return 1;
}
public OnPlayerConnect(playerid)
{
    Informace[playerid][Login] = false; //nejdřív se musí přihlásit
return 1;
}
 
public OnPlayerDisconnect(playerid, reason)
{
    if(Informace[playerid][Login] == true) //pokud je přihlášen
{
dUserSetINT(Jmeno(playerid)).("Penize",GetPlayerMoney(playerid)); //zjistí peníze a uloží je to na váš účet
Informace[playerid][Login] = false; //aby nebyl přiští hráč již přihlášen
new path[40], Float:pos_x, Float:pos_y, Float:pos_z;
 
GetPlayerPos(playerid, pos_x, pos_y, pos_z);
GetPlayerName(playerid, path, MAX_PLAYER_NAME);
format(path, sizeof path, "%s.ini", path);
 
new INI:file = INI_Open(path);
INI_WriteFloat(file, "posX", pos_x);
INI_WriteFloat(file, "posY", pos_y);
INI_WriteFloat(file, "posZ", pos_z);
INI_Close(file);
 
pSpawn{playerid} = 0;
}
return 1;
}
 
public OnPlayerSpawn(playerid)
{
if(pSpawn{playerid} == 0)
{
   new path[40];
   GetPlayerName(playerid, path, MAX_PLAYER_NAME);
   format(path, sizeof path, "%s.ini", path);
 
   INI_ParseFile(path, "LoadPlayerSpawn", .bExtra = true, .extra = playerid);
   pSpawn{playerid} = 1;
}
return 1;
}
 
forward LoadPlayerSpawn(playerid, name[], value[]);
public LoadPlayerSpawn(playerid, name[], value[])
{
    new Float:pos_x, Float:pos_y, Float:pos_z;
INI_Float("posX", pos_x);
INI_Float("posY", pos_y);
INI_Float("posZ", pos_z);
SetPlayerPos(playerid, pos_x, pos_y, pos_z);
return 0;
}
 
public OnPlayerDeath(playerid, killerid, reason)
{
    SetPlayerPos(playerid, -2630.0396,700.8793,27.9495);
return 1;
}
 
public OnVehicleSpawn(vehicleid)
{
return 1;
}
 
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
 
public OnPlayerText(playerid, text[])
{
return 1;
}
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}
 
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
 
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
 
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
 
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
 
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
 
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
 
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
 
public OnRconCommand(cmd[])
{
return 1;
}
 
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
 
public OnObjectMoved(objectid)
{
return 1;
}
 
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
 
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
 
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
 
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
 
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
 
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
 
public OnPlayerExitedMenu(playerid)
{
return 1;
}
 
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
 
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
 
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
 
public OnPlayerUpdate(playerid)
{
return 1;
}
 
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
 
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
 
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
 
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == REG_DIALOG && response) //pokud je to registrační dialog
{
if(strlen(inputtext) == 0) //pokud nezadá heslo
{
SendClientMessage(playerid, B_CERV, "[ ! ] Moc kratke heslo!"); //napíše informaci
new message[256]; //proměnná pro zprávu
format(message, sizeof(message), "Zaregistruj se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); //příprava zprávy s parametrem
ShowPlayerDialog(playerid, REG_DIALOG, DIALOG_STYLE_INPUT, "Registrace", message, "OK", "Konec"); //odešle znova reg. dialog
}
else //ppokud zadal heslo
{
if (udb_Create(Jmeno(playerid),inputtext)) //pokud se podaří zaregistrovat
{
new message[256]; // proměnná pro zprávu
format(message, sizeof(message), "Prihlas se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); //formát zprávy s parametrem
ShowPlayerDialog(playerid, LOG_DIALOG, DIALOG_STYLE_INPUT, "Prihlaseni", message, "OK", "Konec"); //odešle log. dialog
}
else
{
new message[256]; //proměnná pro zprávu
format(message, sizeof(message), "Zaregistruj se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); //příprava zprávy s parametrem
ShowPlayerDialog(playerid, REG_DIALOG, DIALOG_STYLE_INPUT, "Registrace", message, "OK", "Konec"); //odešle znova reg. dialog
}
}
    }
 
if(dialogid == LOG_DIALOG) // pokud je to přihlašovací dialog
{
if(response==1)
{
if (udb_CheckLogin(Jmeno(playerid),inputtext)) //pokud se povede přihlásit
{
//zde dávejte věci které se provedou po přihlášení - nahrání peněz atp.
GivePlayerMoney(playerid,dUserINT(Jmeno(playerid)).("Penize")-GetPlayerMoney(playerid)); //nahraje uložené peníze
//sem davejte veci ktere chcete nacist!
Informace[playerid][Login] = true; // že už je přihlášen
new message[256]; //proměnná na uložení zprávy
format(message, sizeof(message), "[ * ] Vitej ve hre %s!", Jmeno(playerid)); // zpráva s parametrem
}
else // pokud dal špatné heslo
{
SendMessage(playerid, B_CERV, "[ ! ] Spatne heslo!"); //napíše informaci
new message[256]; //proměnná pro zprávu
format(message, sizeof(message), "Prihlas se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); //zpráva s parametrem Jmeno
ShowPlayerDialog(playerid, LOG_DIALOG, DIALOG_STYLE_INPUT, "Prihlaseni", message, "OK", "Konec"); //pošle znova přihlašovací dialog
}
}
else //pokud zmáčkne talčítko Konec
{
SendMessage(playerid, B_CERV, "[ ! ] Prihlaseni je povinne!"); //napíše informaci
new message[256]; //proměnná pro zprávu
format(message, sizeof(message), "Prihlas se %s!\n\n\nDole vypln heslo!\n\n\n", Jmeno(playerid)); // zpráva
ShowPlayerDialog(playerid, LOG_DIALOG, DIALOG_STYLE_INPUT, "Prihlaseni", message, "OK", "Konec"); //zobrazí znova log. dialog s zprávou
}
}
return 1;
}
 
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}

 

 

Link to comment
Share on other sites

  • 0

~> Carlossi, super, jsem na tebe hrdý(#ironie). Radíš ostatním uživatelům, a ukazuješ jim jak "pracovat" s knihovnou, o které víš úplně hov*. Výborně, jen tak dál... :facepalm:

 

 

Carlosso co zatim ctu tak mu celou dobu radis spatne. Nerad kdyz nevis co poradit. Tohle by melo fugovat:

	if(pSpawn{playerid} == 0)

 

~> Ty mu sice neradíš spatně ale nemusíš kvůli 1 podmínce zbytečně deklarovat proměnnou. Když už pracujeme s YSI můžeš díky callbacku, kde načítáš pracovat s name a value. Jelikož, když si jejich hodnty printeš, zjistiš, že ti během načítání všechno vypíše(u každého key(name) ti vypíše i hodnotu(value)), a to můžeš využít k podmínkám. Například tam ukládat ještě 1 údaj, to vůbec nic nezabije a s tím pracovat :).

Link to comment
Share on other sites

  • 0

~> Ty mu sice neradíš spatně ale nemusíš kvůli 1 podmínce zbytečně deklarovat proměnnou. Když už pracujeme s YSI můžeš díky callbacku, kde načítáš pracovat s name a value. Jelikož, když si jejich hodnty printeš, zjistiš, že ti během načítání všechno vypíše(u každého key(name) ti vypíše i hodnotu(value)), a to můžeš využít k podmínkám. Například tam ukládat ještě 1 údaj, to vůbec nic nezabije a s tím pracovat :).

Slo by to asi i takhle nevim ja s yini normnalne nedelam.

 

Denonymousy co ti na tom nejde? Kdyz to neupresnis tak ti tezko nekdo pomuze

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...