Jump to content

[HELP] Floats Wijzigen


Nameless303

Recommended Posts

Goedemorgn Iedereen (;

In mn GM hebk een Float:

//Top of the script
new Float:SpawnLoc[4] = {1.1, 1.1, 1.1, 1};

Nu wil ik een command maken, waarmee ik die float kan wijzigin in bv 2.2, 2.2, 2.2, 2.

Hoe doe ik dit precies?

Thanks (:

Link to comment
Delen op andere websites

Als het goed is kan je nu op elk gewenst punt het volgende doen:

SpawnLoc[0] = 2.2;
SpawnLoc[1] = 2.2;
SpawnLoc[2] = 2.2;
SpawnLoc[3] = 2;

Het slot [4] word hier niet gebruikt.

Zover was ik ook al, maar die lijkt niet te werken...

Mn code;

//Vanboven in het script
new Float:SpawnLocGrove[4] = {1.1,1.1,1.1,1.1},
   Float:SpawnLocBallas[4] = {1.1,1.1,1.1,1.1};

new Float:WarLocGrove[2][4] =
{
	{217.7683,1856.1923,13.0176,6.0815}, // loc1
	{213.9867,1884.2385,98.3855,1.1} // loc2
},
   Float:WarLocBallas[2][4] =
{
	{358.380859375, 2703.884765625, 308.44915771484, 5.4547119140625}, // loc1
	{213.9867,1884.2385,98.3855,1.1} // loc2
};

//Onder OnGameModeInit
       SetWar(1);
AddPlayerClassEx(TEAM_GROVE, 105, SpawnLocGrove[0], SpawnLocGrove[1], SpawnLocGrove[2], SpawnLocGrove[3], 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(TEAM_GROVE, 106, SpawnLocGrove[0], SpawnLocGrove[1], SpawnLocGrove[2], SpawnLocGrove[3], 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(TEAM_GROVE, 107, SpawnLocGrove[0], SpawnLocGrove[1], SpawnLocGrove[2], SpawnLocGrove[3], 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(TEAM_BALLAS, 102, SpawnLocBallas[0], SpawnLocBallas[1], SpawnLocBallas[2], SpawnLocBallas[3], 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(TEAM_BALLAS, 103, SpawnLocBallas[0], SpawnLocBallas[1], SpawnLocBallas[2], SpawnLocBallas[3], 0, 0, 0, 0, 0, 0);
AddPlayerClassEx(TEAM_BALLAS, 104, SpawnLocBallas[0], SpawnLocBallas[1], SpawnLocBallas[2], SpawnLocBallas[3], 0, 0, 0, 0, 0, 0);


//En ten slotte stock SetWar(i)
stock SetWar(i)
{
switch(i)
{
    case 1:
    {
        SpawnLocGrove[0] = WarLocGrove[0][0];
        SpawnLocGrove[1] = WarLocGrove[0][1];
        SpawnLocGrove[2] = WarLocGrove[0][2];
        SpawnLocGrove[3] = WarLocGrove[0][3];

        SpawnLocBallas[0] = WarLocBallas[0][0];
        SpawnLocBallas[1] = WarLocBallas[0][1];
        SpawnLocBallas[2] = WarLocBallas[0][2];
        SpawnLocBallas[3] = WarLocBallas[0][3];

        	for(new p = 0; p <= MAX_PLAYERS; p++)
       	{
            if(IsPlayerConnected(i) && GetPlayerTeam(p) == Ballas)
            {
                SetPlayerPos(p,WarLocBallas[0][0], WarLocBallas[0][1], WarLocBallas[0][2], WarLocBallas[0][3]);
            }
		}

	    SetTimerEx("SetWar",8000,false,"i",2);
    }
	case 2:
	{
 		SpawnLocGrove[0] = WarLocGrove[1][0];
        SpawnLocGrove[1] = WarLocGrove[1][1];
        SpawnLocGrove[2] = WarLocGrove[1][2];
        SpawnLocGrove[3] = WarLocGrove[1][3];

        SpawnLocBallas[0] = WarLocBallas[1][0];
        SpawnLocBallas[1] = WarLocBallas[1][1];
        SpawnLocBallas[2] = WarLocBallas[1][2];
        SpawnLocBallas[3] = WarLocBallas[1][3];

	    SetTimerEx("SetWar",8000,false,"i",1);
	}
}
return 1;
}

Dus ik verwacht dat de spawn locatie iedere 8 seconden wordt gewijzigd...

Maar dat doet ie dus niet...

Thanks!

Link to comment
Delen op andere websites

De fout zijn de floats niet, de fout is je functie. Een stock functie kan je namelijk onmogelijk timen. Het zal dan gewoon niks doen. Een stock functie is het vereenvoudigen van een stuk code. Wat jij moet doen is een callback gebruiken. Die gebruik je om een stuk code uit te voeren. Dus doe het volgende:

forward SetWar(i); //Bovenaan je script, onder je defines, includes en nieuwe variablen, maar boven main()

//stock SetWar(i) word
public SetWar(i)
{
   ...
}

Daarnaast zou ik

IsPlayerConnected(i)

uit

if(IsPlayerConnected(i) && GetPlayerTeam(p) == Ballas)

nog even veranderen in

IsPlayerConnected(p)

omdat jij een loop maakt met de variable "p" die alle spelers moet doorlopen ;)

Bewerkt: door Remi-X
Link to comment
Delen op andere websites

De fout zijn de floats niet, de fout is je functie. Een stock functie kan je namelijk onmogelijk timen. Het zal dan gewoon niks doen. Een stock functie is het vereenvoudigen van een stuk code. Wat jij moet doen is een callback gebruiken. Die gebruik je om een stuk code uit te voeren. Dus doe het volgende:

forward SetWar(i); //Bovenaan je script, onder je defines, includes en nieuwe variablen, maar boven main()

//stock SetWar(i) word
public SetWar(i)
{
   ...
}

Daarnaast zou ik

IsPlayerConnected(i)

uit

if(IsPlayerConnected(i) && GetPlayerTeam(p) == Ballas)

nog even veranderen in

IsPlayerConnected(p)

omdat jij een loop maakt met de variable "p" die alle spelers moet doorlopen ;)

Werkt Perfect!!

Thanks!! (:

Remi-X is super :dans:

Link to comment
Delen op andere websites

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...