SA-MP Forums Archive
Position Help :) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Position Help :) (/showthread.php?tid=297214)



Position Help :) - elefante - 14.11.2011

First SoRRy That i'm asking this old thing but, i use search! :P So I have position saver this thing work normal save to file pos... but i can't do that pos load:/ so pls help for me..

This is my code.

Код:
enum zinfo
{
    lygis,
    pinigai,
    patirtis,
    Float:posx,
    Float:posy,
    Float:posz,
    Float:posangle
}
new VartotojoInformacija[MAX_PLAYERS][zinfo];
new prisijunges[MAX_PLAYERS];
Код:
public OnPlayerDisconnect(playerid, reason)
{
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    new Float:x, Float:y, Float:z, Float:angle;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid, angle);
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if(prisijunges[playerid] == 1)
    {
        dini_IntSet(file, "patirtis", VartotojoInformacija[playerid][patirtis]);
        dini_IntSet(file, "pinigai", VartotojoInformacija[playerid][pinigai]);
        dini_IntSet(file, "lygis",VartotojoInformacija[playerid][lygis]);
        dini_FloatSet(file, "PozicijaX",VartotojoInformacija[playerid][posx] = x);
        dini_FloatSet(file, "PozicijaY",VartotojoInformacija[playerid][posy] = y);
        dini_FloatSet(file, "PozicijaZ",VartotojoInformacija[playerid][posz] = z);
        dini_FloatSet(file, "PozicijaZiurma",VartotojoInformacija[playerid][posangle] = angle);
    }
    prisijunges[playerid] = 0;
	return 1;
}
Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 1)
    {
        new name[MAX_PLAYER_NAME], file[256], string[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return
                ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{FFFFFF}Sveiki atvyke!", "{FF0000}", "Registruotis", "Iseiti");
        dini_Create(file);
        dini_IntSet(file, "slaptazodis", udb_hash(inputtext));
        dini_IntSet(file, "lygis",VartotojoInformacija[playerid][lygis] = 0);
        dini_IntSet(file, "pinigai",VartotojoInformacija[playerid][pinigai] = 0);
        dini_IntSet(file, "patirtis",VartotojoInformacija[playerid][patirtis] = 0);
        format(string, 128, "%s%s", name, inputtext); //uzsiregistravo ir paraso varda ir pass
        SendClientMessage(playerid, Geltona, string);
        prisijunges[playerid] = 1;
    }
    if (dialogid == 2)
    {
        new name[MAX_PLAYER_NAME], file[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{FFFFFF}Sveiki sugryze!", "{FF0000}", "Prisijungti", "Iseiti");
        new tmp;
        tmp = dini_Int(file, "slaptazodis");
        if(udb_hash(inputtext) != tmp) {
            ShowPlayerDialog(playerid,4,DIALOG_STYLE_INPUT, "{FFFFFF}Sveiki sugryze!", "{FF0000}", "Prisijungti", "Iseiti");
        }
        else
        {
            prisijunges[playerid] = 1;
            VartotojoInformacija[playerid][lygis] = dini_Int(file, "lygis");
            SetPlayerScore(playerid, VartotojoInformacija[playerid][patirtis]);
            GivePlayerMoney(playerid, dini_Int(file, "pinigai")-GetPlayerMoney(playerid));
            
        }
    }
    return 1;
}
So what i have to add ? Pls help


Saved File:

Код:
slaptazodis=74121669
lygis=0
pinigai=0
patirtis=0
PozicijaX=1958.743164
PozicijaY=1355.332031
PozicijaZ=9.257812
PozicijaZiurma=359.142944



Re: Position Help :) - [MG]Dimi - 14.11.2011

PHP код:
SetPlayerPos(playerid,dini_Float(file,"PozicijaX"),dini_Float(file,"PozicijaY"),dini_Float(file,"PozicijaZ"));
SetPlayerFacingAngle(playerid,dini_Float(file,"PozicijaZiurma"); 
Something like this?


Re: Position Help :) - elefante - 14.11.2011

Still dont Load :/


Re: Position Help :) - elefante - 14.11.2011

Код:
if (dialogid == 2)
    {
        new name[MAX_PLAYER_NAME], file[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{FFFFFF}Sveiki sugryze!", "{FF0000}", "Prisijungti", "Iseiti");
        new tmp;
        tmp = dini_Int(file, "slaptazodis");
        if(udb_hash(inputtext) != tmp) {
            ShowPlayerDialog(playerid,4,DIALOG_STYLE_INPUT, "{FFFFFF}Sveiki sugryze!", "{FF0000}", "Prisijungti", "Iseiti");
        }
        else
        {
            prisijunges[playerid] = 1;
            VartotojoInformacija[playerid][lygis] = dini_Int(file, "lygis");
            SetPlayerScore(playerid, VartotojoInformacija[playerid][patirtis]);
            SetPlayerPos(playerid,dini_Float(file,"PozicijaX"),dini_Float(file,"PozicijaY"),dini_Float(file,"PozicijaZ"));
			SetPlayerFacingAngle(playerid,dini_Float(file,"PozicijaZiurma"));
            GivePlayerMoney(playerid, dini_Int(file, "pinigai")-GetPlayerMoney(playerid));
            
        }
    }
    return 1;
}
I put in here and nofing :/

This is my all script can you fix it ?
Код:
#include <a_samp>
#pragma unused ret_memcpy
#include <zcmd>
#include <dini>
#include <dudb>

#define Zalia 0x33AA33AA
#define Raudona 0xAA3333AA
#define Geltona 0xFFFF00AA
enum zinfo
{
    lygis,
    pinigai,
    patirtis,
    Float:posx,
    Float:posy,
    Float:posz,
    Float:posangle
}
new VartotojoInformacija[MAX_PLAYERS][zinfo];
new prisijunges[MAX_PLAYERS];


#define SERVER_USER_FILE "Vartotojai/%s.ini"
#if defined FILTERSCRIPT
#else
main()
{
	print("\nCraft");
}
#endif

public OnGameModeInit()
{
	SetGameModeText("RPG");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerConnect(playerid)
{
    prisijunges[playerid] = 0;
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if (!dini_Exists(file))
    {
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{FFFFFF}Sveiki atvyke!", "{FF0000}", "Registruotis", "Iseiti");
    }
    if(fexist(file))
    {
        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{FFFFFF}Sveiki sugryze!", "{FFFFFF}", "Prisijungti", "Iseiti");
    }
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    new Float:x, Float:y, Float:z, Float:angle;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid, angle);
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if(prisijunges[playerid] == 1)
    {
        dini_IntSet(file, "patirtis", VartotojoInformacija[playerid][patirtis]);
        dini_IntSet(file, "pinigai", VartotojoInformacija[playerid][pinigai]);
        dini_IntSet(file, "lygis",VartotojoInformacija[playerid][lygis]);
        dini_FloatSet(file, "PozicijaX",VartotojoInformacija[playerid][posx] = x);
        dini_FloatSet(file, "PozicijaY",VartotojoInformacija[playerid][posy] = y);
        dini_FloatSet(file, "PozicijaZ",VartotojoInformacija[playerid][posz] = z);
        dini_FloatSet(file, "PozicijaZiurma",VartotojoInformacija[playerid][posangle] = angle);
    }
    prisijunges[playerid] = 0;
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 1)
    {
        new name[MAX_PLAYER_NAME], file[256], string[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return
                ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{FFFFFF}Sveiki atvyke!", "{FF0000}", "Registruotis", "Iseiti");
        dini_Create(file);
        dini_IntSet(file, "slaptazodis", udb_hash(inputtext));
        dini_IntSet(file, "lygis",VartotojoInformacija[playerid][lygis] = 0);
        dini_IntSet(file, "pinigai",VartotojoInformacija[playerid][pinigai] = 0);
        dini_IntSet(file, "patirtis",VartotojoInformacija[playerid][patirtis] = 0);
        format(string, 128, "%s%s", name, inputtext); //uzsiregistravo ir paraso varda ir pass
        SendClientMessage(playerid, Geltona, string);
        prisijunges[playerid] = 1;
    }
    if (dialogid == 2)
    {
        new name[MAX_PLAYER_NAME], file[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{FFFFFF}Sveiki sugryze!", "{FF0000}", "Prisijungti", "Iseiti");
        new tmp;
        tmp = dini_Int(file, "slaptazodis");
        if(udb_hash(inputtext) != tmp) {
            ShowPlayerDialog(playerid,4,DIALOG_STYLE_INPUT, "{FFFFFF}Sveiki sugryze!", "{FF0000}", "Prisijungti", "Iseiti");
        }
        else
        {
            prisijunges[playerid] = 1;
            VartotojoInformacija[playerid][lygis] = dini_Int(file, "lygis");
            SetPlayerScore(playerid, VartotojoInformacija[playerid][patirtis]);
            SetPlayerPos(playerid,dini_Float(file,"PozicijaX"),dini_Float(file,"PozicijaY"),dini_Float(file,"PozicijaZ"));
			SetPlayerFacingAngle(playerid,dini_Float(file,"PozicijaZiurma"));
            GivePlayerMoney(playerid, dini_Int(file, "pinigai")-GetPlayerMoney(playerid));
            
        }
    }
    return 1;
}



Re: Position Help :) - elefante - 15.11.2011

anyone? ;/


Re: Position Help :) - [MG]Dimi - 15.11.2011

It's simple. You must load his last position once he spawns.
PHP код:
#include <a_samp>
#pragma unused ret_memcpy
#include <zcmd>
#include <dini>
#include <dudb>

#define Zalia 0x33AA33AA
#define Raudona 0xAA3333AA
#define Geltona 0xFFFF00AA
enum zinfo
{
    
lygis,
    
pinigai,
    
patirtis,
    
Float:posx,
    
Float:posy,
    
Float:posz,
    
Float:posangle
}
new 
VartotojoInformacija[MAX_PLAYERS][zinfo];
new 
prisijunges[MAX_PLAYERS];
new 
bool:JustJoined[MAX_PLAYERS];


#define SERVER_USER_FILE "Vartotojai/%s.ini"
#if defined FILTERSCRIPT
#else
main()
{
    print(
"\nCraft");
}
#endif

public OnGameModeInit()
{
    
SetGameModeText("RPG");
    
AddPlayerClass(01958.37831343.157215.3746269.1425000000);
    return 
1;
}

public 
OnGameModeExit()
{
    return 
1;
}

public 
OnPlayerRequestClass(playeridclassid)
{
    
SetPlayerPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraLookAt(playerid1958.37831343.157215.3746);
    return 
1;
}

public 
OnPlayerConnect(playerid)
{
    
JustJoined[playerid] = true;
    
prisijunges[playerid] = 0;
    new 
name[MAX_PLAYER_NAME], file[256];
    
GetPlayerName(playeridnamesizeof(name));
    
format(filesizeof(file), SERVER_USER_FILEname);
    if (!
dini_Exists(file))
    {
        
ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"{FFFFFF}Sveiki atvyke!""{FF0000}""Registruotis""Iseiti");
    }
    if(
fexist(file))
    {
        
ShowPlayerDialog(playerid2DIALOG_STYLE_INPUT"{FFFFFF}Sveiki sugryze!""{FFFFFF}""Prisijungti""Iseiti");
    }
    return 
1;
}

public 
OnPlayerDisconnect(playeridreason)
{
    new 
name[MAX_PLAYER_NAME], file[256];
    
GetPlayerName(playeridnamesizeof(name));
    new 
Float:xFloat:yFloat:zFloat:angle;
    
GetPlayerPos(playerid,x,y,z);
    
GetPlayerFacingAngle(playeridangle);
    
format(filesizeof(file), SERVER_USER_FILEname);
    if(
prisijunges[playerid] == 1)
    {
        
dini_IntSet(file"patirtis"VartotojoInformacija[playerid][patirtis]);
        
dini_IntSet(file"pinigai"VartotojoInformacija[playerid][pinigai]);
        
dini_IntSet(file"lygis",VartotojoInformacija[playerid][lygis]);
        
dini_FloatSet(file"PozicijaX",VartotojoInformacija[playerid][posx] = x);
        
dini_FloatSet(file"PozicijaY",VartotojoInformacija[playerid][posy] = y);
        
dini_FloatSet(file"PozicijaZ",VartotojoInformacija[playerid][posz] = z);
        
dini_FloatSet(file"PozicijaZiurma",VartotojoInformacija[playerid][posangle] = angle);
    }
    
prisijunges[playerid] = 0;
    return 
1;
}

public 
OnPlayerSpawn(playerid)
{
    if(
JustJoined[playerid])
    {
        
SetPlayerPos(playerid,VartotojoInformacija[playerid][posx],VartotojoInformacija[playerid][posy],VartotojoInformacija[playerid][posz]);
        
JustJoined[playerid] = false;
    }
    return 
1;
}

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if (
dialogid == 1)
    {
        new 
name[MAX_PLAYER_NAME], file[256], string[128];
        
GetPlayerName(playeridnamesizeof(name));
        
format(filesizeof(file), SERVER_USER_FILEname);
        if(!
response) return Kick(playerid);
        if (!
strlen(inputtext)) return
                
ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"{FFFFFF}Sveiki atvyke!""{FF0000}""Registruotis""Iseiti");
        
dini_Create(file);
        
dini_IntSet(file"slaptazodis"udb_hash(inputtext));
        
dini_IntSet(file"lygis",VartotojoInformacija[playerid][lygis] = 0);
        
dini_IntSet(file"pinigai",VartotojoInformacija[playerid][pinigai] = 0);
        
dini_IntSet(file"patirtis",VartotojoInformacija[playerid][patirtis] = 0);
        
format(string128"%s%s"nameinputtext); //uzsiregistravo ir paraso varda ir pass
        
SendClientMessage(playeridGeltonastring);
        
prisijunges[playerid] = 1;
    }
    if (
dialogid == 2)
    {
        new 
name[MAX_PLAYER_NAME], file[256];
        
GetPlayerName(playeridnamesizeof(name));
        
format(filesizeof(file), SERVER_USER_FILEname);
        if(!
response) return Kick(playerid);
        if (!
strlen(inputtext)) return ShowPlayerDialog(playerid2DIALOG_STYLE_INPUT"{FFFFFF}Sveiki sugryze!""{FF0000}""Prisijungti""Iseiti");
        new 
tmp;
        
tmp dini_Int(file"slaptazodis");
        if(
udb_hash(inputtext) != tmp) {
            
ShowPlayerDialog(playerid,4,DIALOG_STYLE_INPUT"{FFFFFF}Sveiki sugryze!""{FF0000}""Prisijungti""Iseiti");
        }
        else
        {
            
prisijunges[playerid] = 1;
            
VartotojoInformacija[playerid][lygis] = dini_Int(file"lygis");
            
SetPlayerScore(playeridVartotojoInformacija[playerid][patirtis]);
            
VartotojoInformacija[playerid][posx] = dini_Float(file,"PozicijaX");
            
VartotojoInformacija[playerid][posy] = dini_Float(file,"PozicijaY");
            
VartotojoInformacija[playerid][posz] = dini_Float(file,"PozicijaZ");
            
VartotojoInformacija[playerid][posangle] = dini_Float(file,"PozicijaZiurma");
            
GivePlayerMoney(playeriddini_Int(file"pinigai")-GetPlayerMoney(playerid));

        }
    }
    return 
1;

Like this it will set is position once he spawns but only the first time. Once he dies and respawns his position will be set to one in AddPlayerClass.


Re: Position Help :) - elefante - 15.11.2011

thnx man !!!


Re: Position Help :) - elefante - 15.11.2011

One prbolem when new char connect and regfistrat he spawn nowere in country side...

FIXED


Re: Position Help :) - [MG]Dimi - 15.11.2011

No Problem.