Sie sind nicht angemeldet.

idoxblack

Anfänger

  • »idoxblack« ist der Autor dieses Themas

Beiträge: 4

  • Nachricht senden

1

21.02.2012, 16:52

Random Farbcode (blips)??

Hey Jungs,
koennt ihr mir sagen wie ich mit der Random function blipfarben vergebe bzw playercolors?


Squirrel-Quelltext

1
2
3
4
5
6
7
8
 function random(min, max){
local x = 0;
do
{
x = rand();
} while(x >= min && x <= max);
return x;
}

Lg

Adnan

Fortgeschrittener

Beiträge: 254

Wohnort: C:\

Beruf: Schüler

  • Nachricht senden

2

21.02.2012, 17:07

So könnte man es machen:

Squirrel-Quelltext

1
2
local colors = array( 5, { Color1 = 0xFFFFFFFF, Color2 = 0x00000000 } ); // Array mit Farbwerten erstellen
setPlayerColor( playerid, rand(0, colors.len() ) ); // Spieler einen zufälligen Farbwert aus dem Array geben.




Adnan

iXDe

Schüler

Beiträge: 151

Danksagungen: 3

  • Nachricht senden

3

21.02.2012, 17:08

Mein Vorschlag: Einen Array erstellen mit vielen Farbcodes drin, dann eine random nummer (0, array.len ()) und den Farbcode nehmen.

//Adnan war schneller ;)

idoxblack

Anfänger

  • »idoxblack« ist der Autor dieses Themas

Beiträge: 4

  • Nachricht senden

4

21.02.2012, 17:29

Vielen dank schon mal! :-)

ich bin noch ein ziemlicher anfaenger und arbeite mit nem freund zusammen an dem script. er hat schon etwas mehr erfahrung..

kannst du mir vielleicht noch einige dinge erklaeren?

Squirrel-Quelltext

1
2
local colors = array( 5, { Color1 = 0xFFFFFFFF, Color2 = 0x00000000 } ); // Array mit Farbwerten erstellen
setPlayerColor( playerid, rand(0, colors.len() ) ); // Spieler einen zufälligen Farbwert aus dem Array geben. 



Wofuer steht z.b. die ( 5, { ? bzw die 5 in dem fall.




if (Fraktion[playerid] <= 2 || (Job[playerid] !=0))
{
setPlayerColor(playerid, rand(0, colors.len() ) ); // Spieler einen zufälligen Farbwert aus dem Array geben.
}
Ist es so richtig?


Ich bekomme naemlich folgenen Fehler:

AN ERROR HAS OCCURED [wrong number of parameters]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »idoxblack« (21.02.2012, 17:29)


Adnan

Fortgeschrittener

Beiträge: 254

Wohnort: C:\

Beruf: Schüler

  • Nachricht senden

5

21.02.2012, 17:51

So geht es doch nicht ;)

Er kann nähmlich die Farbwerte nicht abspeichern.
Das heißt dan das wir einen neuen Code brauchen ^^


Squirrel-Quelltext

1
2
3
4
5
6
7
local x = random(0, 5); // 5 steht für die anzahl an Farbwerten
switch( x )
{
  case 0: setPlayerColor( playerid, 0xFFFFFFFF ); // Beim Wert 0 erhält Spieler den Weißen Farbwert
  case 1: setPlayerColor( playerid, 0x00000000 ); // Beim Wert 1 erhält Spieler den Schwarzen Farbwert
  // ... bis zum fünften ( 5 ) Wert.
}


// Kleiner Edit: rand(); hat keine Parameter das heißt wir brauchen eine eigene Funktion für eine Zufällige Zahl.

Funktion:
by andryXoX

Squirrel-Quelltext

1
2
3
4
function random(min = 0,max = 0xFFFF)
 {
	return (rand() % ((max + 1) - min)) + min; // Eine zufällige zahl von 0 bis 5 wird übermittelt.
 }



Adnan

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Adnan« (21.02.2012, 18:10)


iXDe

Schüler

Beiträge: 151

Danksagungen: 3

  • Nachricht senden

6

21.02.2012, 18:01

Zitat

Er kann nähmlich die Farbwerte nicht abspeichern.
Das heißt dan das wir einen neuen Code brauchen ^^


Wieso kann er denn keine Farbwerte abspeichern??

Quellcode

1
local colors = [0x00000000, 0xFFFFFFFF];

Adnan

Fortgeschrittener

Beiträge: 254

Wohnort: C:\

Beruf: Schüler

  • Nachricht senden

7

21.02.2012, 18:12

Am ende wird nicht 0xFFFFFFFF übergeben sondern 0.

// Edit: Die Variante oben mit dem Case funktioniert.




Adnan

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Adnan« (21.02.2012, 18:12)


iXDe

Schüler

Beiträge: 151

Danksagungen: 3

  • Nachricht senden

8

21.02.2012, 18:13

Dein Code ist auch falsch.

Der Code müsste ungefähr so aussehen

Squirrel-Quelltext

1
2
3
4
local colorArray = [0xFFFFFFFF, 0x00000000];

...
setPlayerColor (playerid, colorArray [random (0, colorArray.len () - 1)]);

Adnan

Fortgeschrittener

Beiträge: 254

Wohnort: C:\

Beruf: Schüler

  • Nachricht senden

9

21.02.2012, 18:17

@iXDe:

Füge diesen Code in onScriptInit ein und schau in der Console was ausgegeben wird.

Squirrel-Quelltext

1
2
local colorArray = [0xFFFFFFFF, 0x00000000];
print( colorArray[random(0,1)] );


Consolen Output: 0

iXDe

Schüler

Beiträge: 151

Danksagungen: 3

  • Nachricht senden

10

21.02.2012, 18:27

@Adnan:

Um eine Hexadezimale Ausgabe zu erhalten, musst du format () benutzen. Hex ist nur eine andere "Zählart"...

Wenn die Farbe "Schwarz" ist, wird eh 0 rauskommen, auch in der Hex ausgabe, da es im Hexwert dann ja 0x0 = 0x000000000 wäre...

Squirrel-Quelltext

1
log (format ("%x", colorArray [random (0, colorArray.len () - 1)]));


//Edit: Übrigens: Intern wird der 2. Parameter eh als Integer verwertet:

Quellcode

1
pScriptingManager->RegisterFunction("setPlayerColor", SetColor, 2, "ii");

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »iXDe« (21.02.2012, 18:27)


Adnan

Fortgeschrittener

Beiträge: 254

Wohnort: C:\

Beruf: Schüler

  • Nachricht senden

11

21.02.2012, 18:42

Wusst ich net :)

Squirrel-Quelltext

1
2
				local color = format ("0x%x", colorArray [random (0, colorArray.len () - 1)]).tointeger();
				setPlayerColor( playerid, color );


Funktioniert dan doch :)


Adnan

idoxblack

Anfänger

  • »idoxblack« ist der Autor dieses Themas

Beiträge: 4

  • Nachricht senden

12

21.02.2012, 19:23

da blick ich ja gar nicht mehr durch :D

Adnan

Fortgeschrittener

Beiträge: 254

Wohnort: C:\

Beruf: Schüler

  • Nachricht senden

13

21.02.2012, 19:48

^^

Squirrel-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
// Function Random erstellen:
function random(min = 0,max = 0xFFFF)
{
	return (rand() % ((max + 1) - min)) + min; // Eine Zufällige zahl von Parameter[1] bis Parameter[2] wird übermittelt.
}// Farben eintragen

local Colors = [ 0xFFFFFFFF, 0x......., 0x..... ] // Farben eintragen.

// Farbe setzen

local Color = format ("0x%x",Colors [random (0, Colors.len () - 1)]).tointeger(); // Zufällige Farbe in der Variable Color abspeichern.
setBlipColor( blipID, color, playerid ); // Blip Farbe für Spieler setzen.

iXDe

Schüler

Beiträge: 151

Danksagungen: 3

  • Nachricht senden

14

21.02.2012, 20:42

Willst du mich ärgern, Adnan? x:

format () erstellt einen STRING. Der Color Parameter verlangt einen Integer bzw. Hex-Wert. Das Format war nur für die KONSOLENausgabe gedacht (;

Squirrel-Quelltext

1
2
3
4
5
6
7
8
9
10
11
// Function Random erstellen:
function random(min = 0,max = 0xFFFF)
{
	return (rand() % ((max + 1) - min)) + min; // Eine Zufällige zahl von Parameter[1] bis Parameter[2] wird übermittelt.
}// Farben eintragen

local Colors = [ 0xFFFFFFFF, 0x......., 0x..... ] // Farben eintragen.

// Farbe setzen

setBlipColor( blipID, Colors [random (0, Colors.len () - 1)], playerid ); // Blip Farbe für Spieler setzen.

Adnan

Fortgeschrittener

Beiträge: 254

Wohnort: C:\

Beruf: Schüler

  • Nachricht senden

15

21.02.2012, 20:49

Hatte in Google nach möglichkeiten gesucht um einen Hex-code zu übermitteln.
Und stoß auf eine funktion die genau das selbe wie format() tut.

Dan las ich dein Text:

Zitat

Um eine Hexadezimale Ausgabe zu erhalten, musst du format () benutzen.
Und dachte ab da nicht mehr weiter und lies den Code so stehen ;)

Ich ärgere dich schon nicht :D

idoxblack

Anfänger

  • »idoxblack« ist der Autor dieses Themas

Beiträge: 4

  • Nachricht senden

16

24.02.2012, 10:11

Vielen Dank jungs ;)