Jump to content

xView

Membru
  • Posts

    51
  • Joined

  • Last visited

Posts posted by xView

  1. Te pot ajuta cu sisstemul de quest sper sa intelegi cat de cat-..daca nu, imi zici unde si iti explic.
     

    Code:
    #define MAX_OBIECTE    15 // Cate obiecte vrei sa adaugi
    new ObiecteGasiteTotal[MAX_PLAYERS]; // Totalul obiectelor gasite
    new Obiecte[MAX_OBIECTE]; // variabila pentru pickups
    new ObiecteGasite[MAX_PLAYERS][MAX_OBIECTE]; // variabila pentru jucatori

    OnGameModeInit()
     

    Code:
    Obiecte[0] = AddStaticPickup(....); // Obiectul 1
    Obiecte[1] = AddStaticPickup(....); // Obiectul 2
    ..............................................................
    Obiecte[14] = AddStaticPickup(...); // Obiectul 15

    OnPlayerConnect & OnPlayerDisconnect
     

    Code:
    public OnPlayerConnect(playerid)
    {
            for(new j=0;j<MAX_OBIECTE;j++)
            {
    	      ObiecteGasite[playerid][j]=0;
            }
            ObiecteGasiteTotal[playerid]=0;
    	return 1;
    }
    // Aici le resetezi deoarece, de exemplu, daca cineva care are 3 obiecte gasite iese, si intra altcineva cu acelasi id, va avea si el 3 obiecte gasite, chit ca are mai multe / mai putine.
    
    public OnPlayerDisconnect(playerid, reason)
    {
    	for(new j=0;j<MAX_OBIECTE;j++)
            {
    	      ObiecteGasite[playerid][j]=0;
            }
            ObiecteGasiteTotal[playerid]=0;
    	return 1;
    }

    Atunci cand un jucator intra intr-un obiect:
     

    Code:
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    	new string[128];
    	for(new j=0;j<MAX_OBIECTE;++)
    	{
    	    if(pickupid == Obiecte[j])
    	    {
    			if(ObiecteGasite[playerid][j] == 0) // Compari daca jucatorul a mai gasit sau nu obiectul inainte.
      			{
                                  ObiecteGasiteTotal[playerid]++;
                                  ObiecteGasite[playerid][j]=1;
    	        	      DestroyPickup(Obiecte[j]);
                                  format(string,sizeof(string)," Felicitari! Ai gasit obiectul nr. {FF0000}%d{FFFFFF}! Acum ai {FF0000}%d / %d {FFFFFF}obiecte!",j,ObiecteGasite[playerid],MAX_OBIECTE);
                                  SendClientMessage(playerid,-1,string);
                                  if(ObiecteGasiteTotal[playerid] == MAX_OBIECTE) // Aici e premiul cand un jucator atinge maximum de obiecte gasite.
                                  {
                 		               for(new s=0;s<MAX_OBIECTE;s++)
                                           {
    	                  	              ObiecteGasite[playerid][s]=0;
                                           }
                                           ObiecteGasiteTotal[playerid]=0; // Le resetam la 0
                                           // Aici pui ce premiu vrei si mesajul pentru intreg server-ul.
                                  }
    	    	      }
    	    	      else
    		      {
    				format(string,sizeof(string)," Ai mai gasit obiectul cu nr. {FF0000}%d{FFFFFF}!",j);
    				SendClientMessage(playerid,-1,string);
    		      }
    	    	
    		}
    	}
    	return 1;
    }

    Si pentru comanda...
     

    Code:
    COMMAND:obiectegasite(playerid,params)
    {
    	new string[56];
    	format(string,sizeof(string)," Ai {FF0000}%d / %d {FFFFFF}obiecte gasite! Mai ai nevoie de {FF0000}%d {FFFFFF}pentru a obtine premiul!",ObiecteGasiteTotal[playerid],MAX_OBIECTE,MAX_OBIECTE-ObiecteGasiteTotal[playerid]);
    	SendClientMessage(playerid,-1,string);
    	return 1;
    }

    In legatura cu salvarea, trebuie sa stiu in ce mod salvezi & citesti datele ( dini, Y_ini, MySQL... )

  2. Salut, m-am gandit sa postez un tutorial cu acest sistem.

    Ca sa nu o mai lungim creem un simplu filescript si pastam codul:

    /* Dynamic Apartment System
    |=============[v0.1 - 3.3.2012]============|
    -Making the whole FS (with breaks)
    Commands: /setapartment(rcon) | /aptel (rcon) | /apedit price/level/int| /buyapartment | /sellapartment |/apartment lock [any number] |info [any number] |takemoney [value] |putmoney [value]| /aphelp | /changespawn | /reapartment
    |=============[v0.1 R1]============|
    -Fixed bug with /setapartment and problem with interior
    |=============[v0.2 - 07.3.2012]============|
    -fixed bug with deposit/withdraw money in apartment with same interior | fixed bug with money in apartment (with minus)
    -Added level on buying apartment
    -From now you'll spawn in apartment, you can change it with /changespawn
    -Now when you'r setting apartment it'll set random interior
    -Now you can in game edit price,level, furniture(int)....
    -Saving system switched from dini to y_ini (credits to gagi) and now all commands is like one (example: in the past it was be /lock or /sinfo, now it is all in one, like /apartment [some_part] [ ] [ ])
    Translating this to english, sorry if there are mistakes, my english is bad...
    */
    #define FILTERSCRIPT
    
    #include <a_samp>
    #include <float>
    #include <zcmd>
    #include <foreach>
    #include <YSI/y_ini>
    #include <Streamer>
    #include <sscanf2>
    
    
    #define YELLOW 0xDABB3EAA
    #define WHITE 0xFFFFFFAA
    #define RED 0xFF0000FF
    #define GREY 0xBFC0C2FF
    #define PRESSED(%0) \
    	(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
    #define randomEx(%0,%1)             (random((%1) - (%0)) + (%0)) // i saw this from my friend Gagi_Corleone(Mr.Gagi)
    #define MaxApartments 500
    enum Apartments
    {
    	Float:sEnterx,
    	Float:sEntery,
    	Float:sEnterz,
    	Float:sExitx,
    	Float:sExity,
    	Float:sExitz,
    	sOwner[MAX_PLAYER_NAME],
    	sDescription[MAX_PLAYER_NAME],
    	sOwned,
    	sCreated,
    	sLocked,
    	sMoney,
    	sPrice,
    	sWorld,
    	sMessage[32],
    	sInt,
    	sLevel,
    	sSpawn
    };
    
    new ApartmentInfo[MaxApartments][Apartments];
    new InApartment[MAX_PLAYERS]; // checking is player in apartment
    new ApartmentPickup[sizeof(ApartmentInfo)]; // apartment pickup
    new Text3D:ApartmentLabel[sizeof(ApartmentInfo)]; // 3d text in front of door
    new plname[MAX_PLAYER_NAME]; // checking player name
    new randomINT;
    
    public OnFilterScriptInit()
    {
    	print("\n--------------------------------------");
    	print(" Dynamic Apartment System by: Maki187 (Marko_Dimitrijevic)");
    	print(" Dynamic Apartment System v0.2");
    	print(" Balkan Rising - www.balkan-rising.info");
    	print(" Alfa Games - www.alfa-gaming.info");
    	print(" -------------[FRIENDS]------------");
    	print(" Bestbalkandj.com - www.bestbalkandj.com");
    	print(" Serbian Warez - www.serbian-warez.in.rs");
    	print("--------------------------------------\n");
    	new string[828];
    	for(new s = 0; s < sizeof(ApartmentInfo); s++)
    	{
     		new gFile[35];
    		format(gFile, 35, "Apartments/%d.ini" ,s);
    		INI_ParseFile(gFile, "LoadApartments", .bExtra = true, .extra = s);
    	    if(ApartmentInfo[s][sCreated] == 1)
    	    {
    	 		if(ApartmentInfo[s][sOwned] == 0)
    			{
    	 			format(string,sizeof(string),"{458B00}For Sale! \n {458B00}Adress: {FFFFFF}%d \n {458B00}Price: {FFFFFF}$%d\n {458B00}Level: {FFFFFF}%d \n {458B00}Description: {FFFFFF}%s",ApartmentInfo[s][sWorld], ApartmentInfo[s][sPrice],ApartmentInfo[s][sLevel], ApartmentInfo[s][sDescription]);
    				ApartmentLabel[s] = Create3DTextLabel(string ,0x00FF00AA,ApartmentInfo[s][sEnterx], ApartmentInfo[s][sEntery], ApartmentInfo[s][sEnterz],25, 0, 1);
    				ApartmentPickup[s] = CreateDynamicPickup(1273, 1, ApartmentInfo[s][sEnterx], ApartmentInfo[s][sEntery], ApartmentInfo[s][sEnterz]);
    			}
    			if(ApartmentInfo[s][sOwned] == 1)
    			{
    				format(string,sizeof(string)," {458B00}Owner: {FFFFFF}%s \n {458B00}Adress: {FFFFFF}%d \n {458B00}Description: {FFFFFF}%s",ApartmentInfo[s][sOwner],ApartmentInfo[s][sWorld], ApartmentInfo[s][sDescription]);
    				ApartmentLabel[s] = Create3DTextLabel(string ,0x00FFFFAA,ApartmentInfo[s][sEnterx], ApartmentInfo[s][sEntery], ApartmentInfo[s][sEnterz],25, 0, 1);
    				ApartmentPickup[s] = CreateDynamicPickup(1273, 1, ApartmentInfo[s][sEnterx], ApartmentInfo[s][sEntery], ApartmentInfo[s][sEnterz]);
    			}
    		}
    	}
    	return 1;
    }
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
        if(PRESSED(KEY_SECONDARY_ATTACK))
        {
        	for(new i = 0; i < sizeof(ApartmentInfo); i++)
    		{
    			if (IsPlayerInRangeOfPoint(playerid, 3,ApartmentInfo[i][sEnterx], ApartmentInfo[i][sEntery], ApartmentInfo[i][sEnterz]))
    			{
    			    GetPlayerName(playerid, plname, sizeof(plname));
    				if(ApartmentInfo[i][sLocked] == 0|| strcmp(ApartmentInfo[i][sOwner], plname, false ) == 0)
    				{
    					SetPlayerInterior(playerid,ApartmentInfo[i][sInt]); SetPlayerVirtualWorld(playerid,ApartmentInfo[i][sWorld]);
    					SetPlayerPos(playerid,ApartmentInfo[i][sExitx],ApartmentInfo[i][sExity],ApartmentInfo[i][sExitz]);
    					InApartment[playerid] = i;
    				}
    				else
    				{
    					GameTextForPlayer(playerid, "~r~Locked", 5000, 1);
    					return 1;
    				}
    			}
    		}
    		if(InApartment[playerid] != MaxApartments+1)
     		{
    			new i = InApartment[playerid];
    			if(IsPlayerInRangeOfPoint(playerid, 3,ApartmentInfo[i][sExitx], ApartmentInfo[i][sExity], ApartmentInfo[i][sExitz]))
    			{
    				SetPlayerInterior(playerid,0); SetPlayerVirtualWorld(playerid,0);
    				SetPlayerPos(playerid,ApartmentInfo[i][sEnterx],ApartmentInfo[i][sEntery],ApartmentInfo[i][sEnterz]);
    				InApartment[playerid] = MaxApartments+1;
    				return 1;
    			}
    		}
    	}
    	return 1;
    }
    public OnPlayerSpawn(playerid)
    {
    	for(new i = 0; i < sizeof(ApartmentInfo); i++)
    	{
    	    GetPlayerName(playerid, plname, sizeof(plname));
    		if(strcmp(ApartmentInfo[i][sOwner], plname, false ) == 0 && ApartmentInfo[i][sSpawn] == 1)
    		{
    		    SetPlayerPos(playerid, ApartmentInfo[i][sEnterx],ApartmentInfo[i][sEntery],ApartmentInfo[i][sEnterz]);
    		}
    	}
    	return 1;
    }
    public OnPlayerConnect(playerid)
    {
        SendClientMessage(playerid, WHITE, "This server use Dynamic Apartment System by: Maki187 (Marko_Dimitrijevic)");
    	return 1;
    }
    stock SaveApartment(idstana)
    {
    	new dFile[128];
    	format(dFile, sizeof(dFile),"Apartments/%d.ini",idstana);
    	new
    	INI:File = INI_Open(dFile);
    	
    	INI_WriteFloat(File, "Enter_X",ApartmentInfo[idstana][sEnterx]);
    	INI_WriteFloat(File, "Enter_Y", ApartmentInfo[idstana][sEntery]);
    	INI_WriteFloat(File, "Enter_Z",ApartmentInfo[idstana][sEnterz]);
    	INI_WriteFloat(File, "Exit_X", ApartmentInfo[idstana][sExitx]);
    	INI_WriteFloat(File, "Exit_Y", ApartmentInfo[idstana][sExity]);
    	INI_WriteFloat(File, "Exit_Z", ApartmentInfo[idstana][sExitz]);
    	INI_WriteString(File, "Owner", ApartmentInfo[idstana][sOwner]);
    	INI_WriteString(File, "Description", ApartmentInfo[idstana][sDescription]);
    	INI_WriteInt(File, "Owned", ApartmentInfo[idstana][sOwned]);
    	INI_WriteInt(File, "Created", ApartmentInfo[idstana][sCreated]);
    	INI_WriteInt(File, "Locked", ApartmentInfo[idstana][sLocked]);
    	INI_WriteInt(File, "Money", ApartmentInfo[idstana][sMoney]);
    	INI_WriteInt(File, "Price", ApartmentInfo[idstana][sPrice]);
    	INI_WriteInt(File, "World", ApartmentInfo[idstana][sWorld]);
    	INI_WriteString(File, "Message", ApartmentInfo[idstana][sMessage]);
    	INI_WriteInt(File, "Int", ApartmentInfo[idstana][sInt]);
    	INI_WriteInt(File, "Level", ApartmentInfo[idstana][sLevel]);
    	INI_WriteInt(File, "Spawn", ApartmentInfo[idstana][sSpawn]);
    
    	INI_Close(File);
    }
    forward LoadApartments(idstana, name[], value[]);
    public LoadApartments(idstana, name[], value[])
    {
    		INI_Float("Enter_X",ApartmentInfo[idstana][sEnterx]);
    		INI_Float("Enter_Y",ApartmentInfo[idstana][sEntery]);
    		INI_Float("Enter_Z",ApartmentInfo[idstana][sEnterz]);
    		INI_Float("Exit_X",ApartmentInfo[idstana][sExitx]);
    		INI_Float("Exit_Y",ApartmentInfo[idstana][sExity]);
    		INI_Float("Exit_Z",ApartmentInfo[idstana][sExitz]);
    		INI_String("Owner",ApartmentInfo[idstana][sOwner],32);
    		INI_String("Description",ApartmentInfo[idstana][sDescription],32);
    		INI_Int("Owned",ApartmentInfo[idstana][sOwned]);
    		INI_Int("Created",ApartmentInfo[idstana][sCreated]);
    		INI_Int("Locked",ApartmentInfo[idstana][sLocked]);
    		INI_Int("Money",ApartmentInfo[idstana][sMoney]);
    		INI_Int("Price",ApartmentInfo[idstana][sPrice]);
    		INI_Int("World",ApartmentInfo[idstana][sWorld]);
    		INI_String("Message",ApartmentInfo[idstana][sMessage],32);
    		INI_Int("Int",ApartmentInfo[idstana][sInt]);
    		INI_Int("Level",ApartmentInfo[idstana][sLevel]);
    		INI_Int("Spawn",ApartmentInfo[idstana][sSpawn]);
    		return 1;
    }
    stock LabelIPickup(idstana)
    {
        new string[828];
    	if(ApartmentInfo[idstana][sOwned] == 0)
    	{
    		Delete3DTextLabel(ApartmentLabel[idstana]);
    		format(string,sizeof(string),"{458B00}For Sale! \n {458B00}Adress: {FFFFFF}%d \n {458B00}Price: {FFFFFF}$%d\n {458B00}Level: {FFFFFF}%d \n {458B00}Description: {FFFFFF}%s",ApartmentInfo[idstana][sWorld], ApartmentInfo[idstana][sPrice],ApartmentInfo[idstana][sLevel], ApartmentInfo[idstana][sDescription]);
    		ApartmentLabel[idstana] = Create3DTextLabel(string ,0x00FF00AA,ApartmentInfo[idstana][sEnterx], ApartmentInfo[idstana][sEntery], ApartmentInfo[idstana][sEnterz],25, 0, 1);
    	}
    	if(ApartmentInfo[idstana][sOwned] == 1)
    	{
    		Delete3DTextLabel(ApartmentLabel[idstana]);
    		format(string,sizeof(string),"{458B00}Owner: {FFFFFF}%s \n {458B00}Adress: {FFFFFF}%d \n {458B00}Description: {FFFFFF}%s",ApartmentInfo[idstana][sOwner],ApartmentInfo[idstana][sWorld], ApartmentInfo[idstana][sDescription]);
    		ApartmentLabel[idstana] = Create3DTextLabel(string ,0x00FFFFAA,ApartmentInfo[idstana][sEnterx], ApartmentInfo[idstana][sEntery], ApartmentInfo[idstana][sEnterz],25, 0, 1);
    	}
        DestroyDynamicPickup(ApartmentPickup[idstana]);
    	ApartmentPickup[idstana] = CreateDynamicPickup(1273, 1, ApartmentInfo[idstana][sEnterx], ApartmentInfo[idstana][sEntery], ApartmentInfo[idstana][sEnterz]);
    }
    //======================[CMD]==============================
    CMD:apartment(playerid, params[]) // main commands
    {
        new text[48]; new novac;// novac = money
        if(sscanf(params, "s[48]i",text , novac))
        {
            SendClientMessage(playerid, WHITE, "HELP: /apartment info [ ] | lock [ ] | takemoney [value] | putmoney [value]");
            return 1;
        }
        if(strcmp(text,"info",true) == 0) // apartment info.
        {
        	for(new i = 0; i < sizeof(ApartmentInfo); i++)
    		{
    	    	new string[500];
        		if(IsPlayerInRangeOfPoint(playerid, 10,ApartmentInfo[i][sExitx], ApartmentInfo[i][sExity], ApartmentInfo[i][sExitz]) && strcmp(ApartmentInfo[i][sOwner], plname, false ) == 0)
    			{
    		    	SendClientMessage(playerid, YELLOW, "|========================================|");
    				if(ApartmentInfo[i][sLocked] == 1)
    				{
    					SendClientMessage(playerid, WHITE, "Locked: Yes");
    				}
    				if(ApartmentInfo[i][sLocked] == 0)
    				{
    					SendClientMessage(playerid, WHITE, "Locked: No");
    				}
    				format(string, sizeof(string), "Money in safe: %d $", ApartmentInfo[i][sMoney]);
    				SendClientMessage(playerid, WHITE, string);
    				format(string, sizeof(string), "Apartment Price: %d $", ApartmentInfo[i][sPrice]);
    				SendClientMessage(playerid, WHITE, string);
    				SendClientMessage(playerid, YELLOW, "|========================================|");
    				return 1;
    			}
    		}
    		return 1;
    	}
        if(strcmp(text,"lock",true) == 0) // lock/unlock apartment
        {
        	for(new i = 0; i < sizeof(ApartmentInfo); i++)
    		{
    			if(IsPlayerInRangeOfPoint(playerid, 3,ApartmentInfo[i][sEnterx], ApartmentInfo[i][sEntery], ApartmentInfo[i][sEnterz]) && InApartment[playerid] == 501)
    			{
    				GetPlayerName(playerid, plname, sizeof(plname));
    				if(strcmp(ApartmentInfo[i][sOwner], plname, false ) == 0)
    				{
    			    	if(ApartmentInfo[i][sLocked] == 1)
    			    	{
    			        	GameTextForPlayer(playerid, "~g~Unlocked", 5000, 6);
    			        	ApartmentInfo[i][sLocked] = 0;
    			        	return 1;
    			    	}
    			    	if(ApartmentInfo[i][sLocked] == 0)
    			    	{
    			        	GameTextForPlayer(playerid, "~r~Locked", 5000, 6);
    			        	ApartmentInfo[i][sLocked] = 1;
    			        	return 1;
    			    	}
    				}
    			}
    			if(IsPlayerInRangeOfPoint(playerid, 25,ApartmentInfo[i][sExitx], ApartmentInfo[i][sExity], ApartmentInfo[i][sExitz]))
    			{
    				if(IsPlayerInRangeOfPoint(playerid, 3,ApartmentInfo[i][sExitx], ApartmentInfo[i][sExity], ApartmentInfo[i][sExitz]) && InApartment[playerid] != 501)
    				{
    					GetPlayerName(playerid, plname, sizeof(plname));
    					if(strcmp(ApartmentInfo[i][sOwner], plname, false ) == 0)
    					{
    			    		if(ApartmentInfo[i][sLocked] == 1)
    			    		{
    			        		GameTextForPlayer(playerid, "~g~Unlocked", 5000, 6);
    			        		ApartmentInfo[i][sLocked] = 0;
    			        		return 1;
    			    		}
    			    		if(ApartmentInfo[i][sLocked] == 0)
    			    		{
    			        		GameTextForPlayer(playerid, "~r~Locked", 5000, 6);
    			        		ApartmentInfo[i][sLocked] = 1;
    			        		return 1;
    			    		}
    					}
    				}
    				else { SendClientMessage(playerid, WHITE,"You are not in front of doors."); return 1; }
    			}
    		}
    		return 1;
        }
        if(strcmp(text,"putmoney",true) == 0) // taking money from safe
        {
      	 	new string[128];
      	 	if(novac < 0) { return 1; }
        	for(new i = 0; i < sizeof(ApartmentInfo); i++)
    		{
    	    	GetPlayerName(playerid, plname, sizeof(plname));
    			if(IsPlayerInRangeOfPoint(playerid, 10,ApartmentInfo[i][sExitx], ApartmentInfo[i][sExity], ApartmentInfo[i][sExitz]) && strcmp(ApartmentInfo[i][sOwner], plname, false ) == 0 && GetPlayerVirtualWorld(playerid) == ApartmentInfo[i][sWorld])
    			{
    		    	if(GetPlayerMoney(playerid) >= novac)
    		    	{
    					ApartmentInfo[i][sMoney] += novac;
    					GivePlayerMoney(playerid,-novac);
    					format(string, sizeof(string), "You have put %d $ in safe, now you have: %d", novac, ApartmentInfo[i][sMoney]);
    					SendClientMessage(playerid, YELLOW, string);
    					SaveApartment(i);
    					return 1;
    				}
    				else { SendClientMessage(playerid,GREY,"You don't have enoguht money!"); return 1; }
    			}
    		}
    		return 1;
    	}
    	if(strcmp(text,"takemoney",true) == 0) // puting money in safe
        {
        	new string[128];
        	if(novac < 0) { return 1; }
        	for(new i = 0; i < sizeof(ApartmentInfo); i++)
    		{
    	    	GetPlayerName(playerid, plname, sizeof(plname));
    			if(IsPlayerInRangeOfPoint(playerid, 10,ApartmentInfo[i][sExitx], ApartmentInfo[i][sExity], ApartmentInfo[i][sExitz]) && strcmp(ApartmentInfo[i][sOwner], plname, false ) == 0 && GetPlayerVirtualWorld(playerid) == ApartmentInfo[i][sWorld])
    			{
    		    	if(ApartmentInfo[i][sMoney] >= novac)
    		    	{
    					ApartmentInfo[i][sMoney] -= novac;
    					GivePlayerMoney(playerid,novac);
    					format(string, sizeof(string), "You have take %d $ from safe, now you have: %d $", novac, ApartmentInfo[i][sMoney]);
    					SendClientMessage(playerid, YELLOW, string);
    					SaveApartment(i);
    					return 1;
    				}
    				else { SendClientMessage(playerid,GREY,"You don't have enoguht money!"); return 1; }
    			}
    		}
    		return 1;
    	}
    	return 1;
    }
    CMD:buyapartment(playerid, params[]) // cmd to buy apartment
    {
        for(new i = 0; i < sizeof(ApartmentInfo); i++)
    	{
    	    GetPlayerName(playerid, plname, sizeof(plname));
    	    if(strcmp(ApartmentInfo[i][sOwner], plname, false ) == 0)
    	    {
    	        SendClientMessage(playerid, WHITE, "You alerdy have apartment!");
    	        return 1;
    		}
    		if(IsPlayerInRangeOfPoint(playerid, 3,ApartmentInfo[i][sEnterx], ApartmentInfo[i][sEntery], ApartmentInfo[i][sEnterz]) && ApartmentInfo[i][sOwned] == 0)
    		{
        		if(GetPlayerMoney(playerid) > ApartmentInfo[i][sPrice])
    			{
    			    if(GetPlayerScore(playerid) >= ApartmentInfo[i][sLevel])
    			    {
    			    	strmid(ApartmentInfo[i][sOwner], plname, 0, strlen(plname), 255);
    			    	ApartmentInfo[i][sOwned] = 1;
    			    	GivePlayerMoney(playerid,-ApartmentInfo[i][sPrice]);
    			    	SendClientMessage(playerid, WHITE, "Congratz on new apartment, type /aphelp to see all commands!");
    			    	strmid(ApartmentInfo[i][sOwner], plname, 0, strlen(plname), 255);
    			    	LabelIPickup(i);
    					SaveApartment(i);
    					return 1;
    				}
    				else { SendClientMessage(playerid, GREY, "Your level is too low!"); return 1; }
    			}
    			else { SendClientMessage(playerid, GREY, "You don't have enough't money!"); return 1; }
    		}
    	}
    	return 1;
    }
    CMD:sellapartment(playerid, params[]) // selling apartment
    {
        for(new i = 0; i < sizeof(ApartmentInfo); i++)
    	{
    	    GetPlayerName(playerid, plname, sizeof(plname));
    		if(IsPlayerInRangeOfPoint(playerid, 3,ApartmentInfo[i][sEnterx], ApartmentInfo[i][sEntery], ApartmentInfo[i][sEnterz]) && strcmp(ApartmentInfo[i][sOwner], plname, false ) == 0)
    		{
    			strmid(ApartmentInfo[i][sOwner], "State", 0, strlen("State"), 255);
    			ApartmentInfo[i][sOwned] = 0;
    			ApartmentInfo[i][sLocked] = 1;
    			GivePlayerMoney(playerid,ApartmentInfo[i][sPrice]);
    			SendClientMessage(playerid, WHITE, "You have sold you apartment!");
    			LabelIPickup(i);
    			SaveApartment(i);
    			return 1;
    		}
    	}
    	return 1;
    }
    CMD:changespawn(playerid, params[]) // change spawn
    {
        for(new i = 0; i < sizeof(ApartmentInfo); i++)
    	{
    	    GetPlayerName(playerid, plname, sizeof(plname));
    		if(strcmp(ApartmentInfo[i][sOwner], plname, false ) == 0)
    		{
    		    if(ApartmentInfo[i][sSpawn] == 1)
    		    {
    				ApartmentInfo[i][sSpawn] = 0;
    				SendClientMessage(playerid, YELLOW, "Now you will not spawn in apartment.");
    				SaveApartment(i);
    				return 1;
    			}
    			if(ApartmentInfo[i][sSpawn] == 0)
    		    {
    				ApartmentInfo[i][sSpawn] = 1;
    				SendClientMessage(playerid, YELLOW, "From now, you will spawn in apartment!");
    				SaveApartment(i);
    				return 1;
    			}
    			return 1;
    		}
    	}
    	return 1;
    }
    CMD:aphelp(playerid, params[]) // list of all commands
    {
    	if(IsPlayerAdmin(playerid))
    	{
    		SendClientMessage(playerid, WHITE, "Admin Commands: /setapartment | /aptel | /reapartment | /apedit");
    	}
    	SendClientMessage(playerid, WHITE, "User Commands: /buyapartment | /sellapartment | /changespawn");
    	SendClientMessage(playerid, WHITE, "User Commands: /apartment info [any number] | lock [any number]| putmoney [value] | takemoney [value]");
    	return 1;
    }
    //======================[ADMIN CMD]=============================
    CMD:setapartment(playerid, params[]) // making apartment (ONLY RCON)
    {
        if(IsPlayerAdmin(playerid))
    	{
        	new Float:X, Float:Y, Float:Z; new string[828]; new apid = 0;
    		GetPlayerPos(playerid, X,Y,Z);
    		for(new s = 0; s < sizeof(ApartmentInfo); s++)
    		{
    		    if(ApartmentInfo[s][sCreated] == 1)
    		    {
    				apid = s + 1;
    			}
    		}
    		ApartmentInfo[apid][sEnterx] = X;
    		ApartmentInfo[apid][sEntery] = Y;
    		ApartmentInfo[apid][sEnterz] = Z;
    		ApartmentInfo[apid][sOwned] = 0;
    		ApartmentInfo[apid][sCreated] = 1;
    		ApartmentInfo[apid][sLocked] = 1;
    		ApartmentInfo[apid][sSpawn] = 1;
    		ApartmentInfo[apid][sWorld] = apid;
    		randomINT = randomEx(1,6); // random number from 1 to 5
    		if(randomINT == 1)
    		{
    			ApartmentInfo[apid][sExitx] = 225.756989;
    			ApartmentInfo[apid][sExity] = 1240.000000;
    			ApartmentInfo[apid][sExitz] = 1082.149902;
    			ApartmentInfo[apid][sInt] = 2;
    			ApartmentInfo[apid][sPrice] = 37000;
    			ApartmentInfo[apid][sLevel] = 1;
    			SaveApartment(apid);
    		}
    		if(randomINT == 2)
    		{
    			ApartmentInfo[apid][sExitx] = 260.983978;
    			ApartmentInfo[apid][sExity] = 1286.549927;
    			ApartmentInfo[apid][sExitz] = 1080.299927;
    			ApartmentInfo[apid][sInt] = 4;
    			ApartmentInfo[apid][sPrice] = 38000;
    			ApartmentInfo[apid][sLevel] = 2;
    			SaveApartment(apid);
    		}
    		if(randomINT == 3)
    		{
    			ApartmentInfo[apid][sExitx] = 385.803986;
    			ApartmentInfo[apid][sExity] = 1471.769897;
    			ApartmentInfo[apid][sExitz] = 1080.209961;
    			ApartmentInfo[apid][sInt] = 15;
    			ApartmentInfo[apid][sPrice] = 39000;
    			ApartmentInfo[apid][sLevel] = 3;
    			SaveApartment(apid);
    		}
    		if(randomINT == 4)
    		{
    			ApartmentInfo[apid][sExitx] = -42.4992;
    			ApartmentInfo[apid][sExity] = 1406.0690;
    			ApartmentInfo[apid][sExitz] = 1084.4297;
    			ApartmentInfo[apid][sInt] = 8;
    			ApartmentInfo[apid][sPrice] = 40000;
    			ApartmentInfo[apid][sLevel] = 4;
    			SaveApartment(apid);
    		}
    		if(randomINT == 5)
    		{
    			ApartmentInfo[apid][sExitx] = 446.5014;
    			ApartmentInfo[apid][sExity] = 507.0295;
    			ApartmentInfo[apid][sExitz] = 1001.4195;
    			ApartmentInfo[apid][sInt] = 12;
    			ApartmentInfo[apid][sPrice] = 41000;
    			ApartmentInfo[apid][sLevel] = 5;
    			SaveApartment(apid);
    		}
    		format(string,sizeof(string),"{458B00}For Sale! \n {458B00}Adress: {FFFFFF}%d \n {458B00}Price: {FFFFFF}$%d\n {458B00}Level: {FFFFFF}%d \n {458B00}Description: {FFFFFF}%s",ApartmentInfo[apid][sWorld], ApartmentInfo[apid][sPrice],ApartmentInfo[apid][sLevel], ApartmentInfo[apid][sDescription]);
    		ApartmentLabel[apid] = Create3DTextLabel(string ,0x00FF00AA,X,Y,Z,25, 0, 1);
    		strmid(ApartmentInfo[apid][sOwner],"State",0,strlen("State"),255);
    		strmid(ApartmentInfo[apid][sDescription], "Apartment", 0, strlen("Apartment"), 255);
    		strmid(ApartmentInfo[apid][sMessage],"For Sale",0,strlen("For Sale"),255);
    		ApartmentPickup[apid] = CreateDynamicPickup(1273, 1, ApartmentInfo[apid][sEnterx], ApartmentInfo[apid][sEntery], ApartmentInfo[apid][sEnterz]);
    		format(string, sizeof(string),"You have made Apartment ID: %d",apid);
    		SendClientMessage(playerid, RED, string);
    		LabelIPickup(apid);
    		SaveApartment(apid);
    		return 1;
    	}
    	else { SendClientMessage(playerid,GREY,"You are not admin(RCON)!!"); return 1; }
    }
    CMD:reapartment(playerid, params[]) // removing apartment (ONLY RCON)
    {
        if(IsPlayerAdmin(playerid))
    	{
    		new apid;
        	if(sscanf(params, "i", apid))
    		{
    			SendClientMessage(playerid, WHITE, "/reapartment [id]");
    			return 1;
    		}
    		if(ApartmentInfo[apid][sCreated] == 1)
    		{
    		    new string[500]; new file[500];
    			ApartmentInfo[apid][sCreated] = 0;
    			Delete3DTextLabel(ApartmentLabel[apid]);
    			DestroyDynamicPickup(ApartmentPickup[apid]);
    			SaveApartment(apid);
    			format(string, sizeof(string),"You have removed apartment id: %d",apid);
    			SendClientMessage(playerid, RED, string);
    			format(file,sizeof(file),"Apartments/%d.ini",apid);
    			fremove(file);
    			return 1;
    		}
    		else
    		{
    			SendClientMessage(playerid, GREY, "That apartment does not exist!");
    			return 1;
    		}
    	}
    	else { SendClientMessage(playerid,GREY,"You are not admin(RCON)!!"); return 1; }
    }
    CMD:aptel(playerid, params[]) // teleporting to apartment(ONLY RCON)
    {
        if(IsPlayerAdmin(playerid))
    	{
    		new stan;
        	if(sscanf(params, "i", stan))
    		{
    			SendClientMessage(playerid, WHITE, "/apartment [id]");
    			return 1;
    		}
    		SetPlayerInterior(playerid,ApartmentInfo[stan][sInt]);
    		SetPlayerVirtualWorld(playerid,ApartmentInfo[stan][sWorld]);
    		SetPlayerPos(playerid,ApartmentInfo[stan][sExitx],ApartmentInfo[stan][sExity],ApartmentInfo[stan][sExitz]);
    		InApartment[playerid] = stan;
    		return 1;
    	}
    	else { SendClientMessage(playerid,GREY,"You are not admin(RCON)!!"); return 1; }
    }
    CMD:apedit(playerid, params[]) // editing apartments
    {
        if(IsPlayerAdmin(playerid))
    	{
        	new text[48]; new broj; // broj = number
        	if(sscanf(params, "s[48]i",text, broj))
        	{
            	SendClientMessage(playerid, WHITE, "HELP: /sedit price [cena] | level [lvl] | int [1-3]");
            	return 1;
        	}
        	if(strcmp(text,"price",true) == 0) // editing price
        	{
        		if(broj < 0) { return 1; }
    			for(new i = 0; i < sizeof(ApartmentInfo); i++)
    			{
    	    		new string[128];
        			if(IsPlayerInRangeOfPoint(playerid, 2,ApartmentInfo[i][sEnterx], ApartmentInfo[i][sEntery], ApartmentInfo[i][sEnterz]))
    				{
    			    	ApartmentInfo[i][sPrice] = broj;
    			    	format(string, sizeof(string), "You ahve changed Apartment ID: %d price, to: %d $", i, broj);
    					SendClientMessage(playerid, WHITE, string);
    					LabelIPickup(i);
    					SaveApartment(i);
    					return 1;
    				}
    			}
    			return 1;
        	}
        	if(strcmp(text,"level",true) == 0) // editing level
        	{
        	    if(broj < 0) { return 1; }
    			for(new i = 0; i < sizeof(ApartmentInfo); i++)
    			{
    	    		new string[128];
        			if(IsPlayerInRangeOfPoint(playerid, 2,ApartmentInfo[i][sEnterx], ApartmentInfo[i][sEntery], ApartmentInfo[i][sEnterz]))
    				{
    			    	ApartmentInfo[i][sLevel] = broj;
    			    	format(string, sizeof(string), "You ahve changed Apartment ID: %d level to: %d", i, broj);
    					SendClientMessage(playerid, WHITE, string);
    					LabelIPickup(i);
    					SaveApartment(i);
    					return 1;
    				}
    			}
    			return 1;
        	}
        	if(strcmp(text,"int",true) == 0) // editing interior(furniture)
        	{
        	    if(broj < 0 || broj > 5) { SendClientMessage(playerid,GREY,"Interior(furniture) cannot be under 0 and over 5 !"); return 1; }
    			for(new i = 0; i < sizeof(ApartmentInfo); i++)
    			{
    	    		new string[128];
        			if(IsPlayerInRangeOfPoint(playerid, 2,ApartmentInfo[i][sEnterx], ApartmentInfo[i][sEntery], ApartmentInfo[i][sEnterz]))
    				{
    				    if(broj == 1) // default furniture
    				    {
    			    		ApartmentInfo[i][sExitx] = 225.756989;
    						ApartmentInfo[i][sExity] = 1240.000000;
    						ApartmentInfo[i][sExitz] = 1082.149902;
    						ApartmentInfo[i][sInt] = 2;
    			    		format(string, sizeof(string), "You have changed Apartment ID: %d furniture to  %d (this is default furniture)", i, broj);
    						SendClientMessage(playerid, WHITE, string);
    						SendClientMessage(playerid,WHITE,"Enter to Apartment to see new furniture!");
    						SaveApartment(i);
    						return 1;
    					}
    					if(broj == 2)
    				    {
    				        ApartmentInfo[i][sExitx] = 260.983978;
    			    		ApartmentInfo[i][sExity] = 1286.549927;
    			    		ApartmentInfo[i][sExitz] = 1080.299927;
    			    		ApartmentInfo[i][sInt] = 4;
    			    		format(string, sizeof(string), "You have changed Apartment ID: %d furniture to  %d", i, broj);
    						SendClientMessage(playerid, WHITE, string);
    						SendClientMessage(playerid,WHITE,"Enter to Apartment to see new furniture!");
    						SaveApartment(i);
    						return 1;
    				    }
    				    if(broj == 3)
    				    {
    				        ApartmentInfo[i][sExitx] = 385.803986;
    			    		ApartmentInfo[i][sExity] = 1471.769897;
    			    		ApartmentInfo[i][sExitz] = 1080.209961;
    			    		ApartmentInfo[i][sInt] = 15;
    			    		format(string, sizeof(string), "You have changed Apartment ID: %d furniture to  %d", i, broj);
    						SendClientMessage(playerid, WHITE, string);
    						SendClientMessage(playerid,WHITE,"Enter to Apartment to see new furniture!");
    						SaveApartment(i);
    						return 1;
    				    }
    				    if(broj == 4)
    				    {
    				    	ApartmentInfo[i][sExitx] = -42.4992;
    						ApartmentInfo[i][sExity] = 1406.0690;
    						ApartmentInfo[i][sExitz] = 1084.4297;
    			    		ApartmentInfo[i][sInt] = 8;
    			    		format(string, sizeof(string), "You have changed Apartment ID: %d furniture to  %d", i, broj);
    						SendClientMessage(playerid, WHITE, string);
    						SendClientMessage(playerid,WHITE,"Enter to Apartment to see new furniture!");
    						SaveApartment(i);
    						return 1;
    				    }
    				    if(broj == 5)
    				    {
    				        ApartmentInfo[i][sExitx] = 446.5014;
    			    		ApartmentInfo[i][sExity] = 507.0295;
    			    		ApartmentInfo[i][sExitz] = 1001.4195;
    			    		ApartmentInfo[i][sInt] = 12;
    			    		format(string, sizeof(string), "You have changed Apartment ID: %d furniture to  %d", i, broj);
    						SendClientMessage(playerid, WHITE, string);
    						SendClientMessage(playerid,WHITE,"Enter to Apartment to see new furniture!");
    						SaveApartment(i);
    						return 1;
    				    }
    				}
    			}
    			return 1;
        	}
    	}
    	else { SendClientMessage(playerid,GREY,"You are not admin(RCON)!!"); return 1; }
        return 1;
    }

    Va rog sa raportati orice problema gasita pentru a fi remediata !

  3. Salut, astazi va voi invata sa faceti un sistem de login fara o baza de date, tin sa mentionez ca parolele sunt salvate in scriptfiles>iRegister>Users iar parolele sunt criptate din motive de securitate pentru a nu se putea fura conturile.

    Va rog sa raportati orice problema gasita

    Sa incepem...

    Pasul 1: 

    Descarcam resursele necesare.

    Pasul 2:

    Dezarhivam resursele in folderul in care avem serverul.

    Pasul 3:

    Deschidem fisierul server.cfg, iar acolo editam urmatoarele: filescripts ireg.

    Instalarea este completa, modificarile vor fi aduse dupa primul restart

    Acum sistemul este instalat si gata de utilizat, nu vreau sa aud "Se gaseste pe net" este facut de la 0.

    Multumesc pentru atentie, daca ma sustii si ti-am fost de folos nu uita de +1.

  4. CMD:getpremium(playerid, params[])

    {

    if (PlayerInfo[playerid][pPremium] == 0)

       {

       if (PlayerInfo[playerid][pPremium] == 1)

    *Aici pui o variabila care sa selecteze Conturile premium puse in stock in baza de date si sa scada cu 1.* P.S. O poti gasii pe net.

       Update(pConturiPremium);

       SendClientMessage(playerid, COLOR_GREEN, "Now you have a premium account.");

       }

    if (PlayerInfo[playerid][pPremium] == 1)

     {

    SendClientMessage(playerid, COLOR_RED, "Ai deja un cont premium");

     }

    }

    Trebuie sa definesti conturile premium cu "pPremium".

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.