GTAvision.com - Forum - Grand Theft Auto News, Downloads, Community and more...

Position: Grand Theft Auto: San Andreas » Multiplayer » Scripte und kleine Codes » Area Chat » Druckansicht
TrexXx, 16.07.2008, 13:11
Es tut mir leid, dass ich gerade so viele Theaters erstelle, aber da ich gerade an einem RL Server
arbeite, der SEHR VIELE Funktionen hat, habe ich noch eine Frage:

Ich möchte einen Area Chat erstellen, mit dem man mit /say [text] eine Nachricht an die umliegenden
Spieler (50-150m) eine Nachricht schreiben kann, ich habe mir auch schon viele Dinge überlegt, z.B.
habe ich sehr viele Tests mit, IsPlayerToPoint.....gemacht,aber ich schaffe es scheinbar nicht:

Und hoffe desshalb auf Hilfe, also ihr müsst mir auch keinen codes...posten, Tipps sind auch
hilfreich, da ich es alleine nicht schaffe.

*hilfe2*
Sh3LteR, 16.07.2008, 13:33
Guck mal bei pawno auf der rechten seite, da steht iwo was globalchatradius oder so, hab pawno grad
ne am pc, also kann ich dir sonst nicht weiterhelfen.
TrexXx, 16.07.2008, 14:25
Okay danke aber wie verwende ich das?
TrexXx, 18.07.2008, 18:20
Ich habe es über eine eigenerstellete Message probiert:

Code:
1
2
3
4
5
6
7
8
9
10
11
SendAreaMessage(color, text[]) {
    for(new i = 0; i < MAX_PLAYERS; i ++) {
       if(IsPlayerConnected(i)) {
       new Float:x,Float:y,Float:z;
        GetPlayerPos(i,x,y,z);
          if (PlayerToPoint(4.0,i,x,y,z)) {
               SendClientMessage(i, color, text);
            }
        }
    }
}


Aber es bekommt jeder die Message!
Sh3LteR, 18.07.2008, 18:26
du hast keinen globalen chatradius angegeben :P
TrexXx, 18.07.2008, 20:03
HaHa :D

Witz?

Ich weis ja nicht wie es geht lol!
Sh3LteR, 18.07.2008, 20:05
Wie gesagt hab pawno grad ned, wills auch nichtmehr haben :P
Es muss in der rechten iwas mit SetGlobalCahtradius oder so stehen. Dann kuck die die negative an,
also was man alles defenieren muss und fertig.
TrexXx, 18.07.2008, 20:17
Es heist zwar native und LimitGlobalChatRadius, aber egal, ich weis nur nicht, soll ich das als
if(Li...,was aber eher unlogisch wäre oder einfach vor die clientmessage oder was?
dödel, 18.07.2008, 20:45

native hat damit nicht viel zutun ;)

Du hast ja den Namen der Funktion, also setze die Funktion einfach mit deiner Angabe in
OnGameModeInit
TrexXx, 22.07.2008, 18:57
ZitatZitat:
native hat damit nicht viel zutun

Du hast ja den Namen der Funktion, also setze die Funktion einfach mit deiner Angabe in
OnGameModeInit


Das heißt dann aber, dass alle Messages so versendet werden, was ich ja eigentlich nicht möchte!

Sondern ich möchte das nur machen, wenn ich /say [text] machen.

Das komische ist, das ich sowas weder auf dem SAMP forum, noch in googel finden kann, obwohl es so
ziehmlich jder RL server hat!

*shout*
dödel, 22.07.2008, 19:58
weil das total einfach ist :D

Code:
1
2
3
4
public OnPlayerText(playerid, text[])
{
return 0;
}


Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?

if(strcmp(cmd, "/say", true) == 0) 
{

if(!strlen(strtok(cmdtext, idx))) {
return SendClientMessage(playerid, COLOR_RED, "Du hast keinen Text eingeben");
}

SendPlayerMessageToAll(playerid, cmdtext[5]);
return 1;
}

?>
Rafioso, 22.07.2008, 20:21
Noch einfacher....
t drücken und chatten omg
TrexXx, 22.07.2008, 21:44
Ich glaub ihr checkt was nicht! Ich will einen Chat der nur in reichweite geht, => damit kann man
mit /say zu allen reden, dass will ich garnicht, genau das gegenteil


*bye* :shock:
dödel, 22.07.2008, 23:56
Du willst also das man mit dem normalen Chat noch wie gehabt an alle Texten kann, aber mit /say nur
umliegende Personen belabert? :D
TrexXx, 23.07.2008, 11:28
Ja, genau das meinte ich! Sorry wenn ich das unklar erklärt habe!

:shy:
dödel, 23.07.2008, 16:17
Code:
1
#define SAY_RADIUS 60.0 //Das ist Reichweite des /say CMD´s


Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?

if(strcmp(cmd, "/say", true) == 0) 
{

if(!strlen(strtok(cmdtext, idx))) {
return SendClientMessage(playerid, COLOR_RED, "Du hast keinen Text eingeben");
}

new Float:PPX, Float:PPY, Float:PPZ;
GetPlayerPos(playerid, PPX, PPY, PPZ);
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInCircle(playerid, PPX, PPY, SAY_RADIUS))
{
SendPlayerMessageToAll(playerid, cmdtext[5]);
}
}
}
return 1;
}

?>


Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
stock IsPlayerInCircle(playerid, Float:xPos, Float:yPos, Float:radius)
{
new Float:PPos[3];
GetPlayerPos(playerid, PPos[0], PPos[1], PPos[2]);
if (GetDistance(xPos, PPos[0], yPos, PPos[1]) < radius)
return true;
return false;
}

stock GetDistance(Float:xPos, Float:xPos2, Float:yPos, Float:yPos2)
{
new Float:dist = floatabs(floatsqroot(floatpower(xPos - xPos2, 2) + floatpower(yPos - yPos2, 2)));
return floatround(dist);
}

Dörfler, 23.07.2008, 17:38
Zitatdödel hat folgendes geschrieben:
Code:
1
#define SAY_RADIUS 60.0 //Das ist Reichweite des /say CMD´s


Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?

if(strcmp(cmd, "/say", true) == 0) 
{

if(!strlen(strtok(cmdtext, idx))) {
return SendClientMessage(playerid, COLOR_RED, "Du hast keinen Text eingeben");
}

new Float:PPX, Float:PPY, Float:PPZ;
GetPlayerPos(playerid, PPX, PPY, PPZ);
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInCircle(playerid, PPX, PPY, SAY_RADIUS))
{
SendPlayerMessageToAll(playerid, cmdtext[5]);
}
}
}
return 1;
}

?>


Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
stock IsPlayerInCircle(playerid, Float:xPos, Float:yPos, Float:radius)
{
new Float:PPos[3];
GetPlayerPos(playerid, PPos[0], PPos[1], PPos[2]);
if (GetDistance(xPos, PPos[0], yPos, PPos[1]) < radius)
return true;
return false;
}

stock GetDistance(Float:xPos, Float:xPos2, Float:yPos, Float:yPos2)
{
new Float:dist = floatabs(floatsqroot(floatpower(xPos - xPos2, 2) + floatpower(yPos - yPos2, 2)));
return floatround(dist);
}



eher so :

if(strcmp(cmd, "/say", true) == 0)
{

if(!strlen(strtok(cmdtext, idx))) {
return SendClientMessage(playerid, COLOR_RED, "Du hast keinen Text eingeben");
}

new Float:PPX, Float:PPY, Float:PPZ;
GetPlayerPos(playerid, PPX, PPY, PPZ);
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInCircle(i, PPX, PPY, SAY_RADIUS))
{
SendPlayerMessage(i,color?, cmdtext[5]);
}
}
}
return 1;
}

*hi*
TrexXx, 23.07.2008, 18:06
Bei dem anderen wurde die Message 3x angezeigt, kp wieso!
TrexXx, 23.07.2008, 19:03
Einigen wir uns hier rauf!

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   if(strcmp(cmd, "/say", true) == 0)
   {

   if(!strlen(strtok(cmdtext, idx))) {
   return SendClientMessage(playerid, COLOR_RED, "Du hast keinen Text eingeben");
   }

   new Float:PPX, Float:PPY, Float:PPZ;
   GetPlayerPos(playerid, PPX, PPY, PPZ);
   for(new i; i<MAX_PLAYERS; i++)
   {
   if(IsPlayerConnected(i))
   {
   if(IsPlayerInCircle(i, PPX, PPY, SAY_RADIUS))
   {
   SendClientMessage(i,COLOR_?XY?,cmdtext[5]);
   }
   }
   }
   return 1;
   }


Danke, für eure Hilfe!
dödel, 23.07.2008, 19:27
Naja, habs nicht getestet gehabt und direkt hier im Forum gecodet ;)

Also hier:

Code:
1
#define SAY_RADIUS 60.0 //Das ist Reichweite des /say CMD´s


Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?

if(strcmp(cmd, "/say", true) == 0) 
{

if(!strlen(strtok(cmdtext, idx))) {
return SendClientMessage(playerid, COLOR_RED, "Du hast keinen Text eingeben");
}

new Float:PPX, Float:PPY, Float:PPZ;
GetPlayerPos(playerid, PPX, PPY, PPZ);
for(new i; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInCircle(i, PPX, PPY, SAY_RADIUS))
{
SendPlayerMessageToPlayer(i, playerid, cmdtext[5]);
}
}
}
return 1;
}

?>


Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
stock IsPlayerInCircle(playerid, Float:xPos, Float:yPos, Float:radius)
{
new Float:PPos[3];
GetPlayerPos(playerid, PPos[0], PPos[1], PPos[2]);
if (GetDistance(xPos, PPos[0], yPos, PPos[1]) < radius)
return true;
return false;
}

stock GetDistance(Float:xPos, Float:xPos2, Float:yPos, Float:yPos2)
{
new Float:dist = floatabs(floatsqroot(floatpower(xPos - xPos2, 2) + floatpower(yPos - yPos2, 2)));
return floatround(dist);
}


Sollte so nun perfekt Funktionieren ;)
GTAvision.com :: Forumregeln :: FAQ :: Impressum :: Kontakt :: RDRvision.com :: LANOIREvision.com :: MaxPayneVision.com
NetVisionWork.NET
.: © 2006-2014 by GTAvision.com :.

Rockstar GamesTake-Two Interactive Deutschland

Free Grand Theft Auto Downloads