GTA Közösség - A magyar GTA fórum
San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Pioneer - 2011. október 25. - 16:59:39
-
Hello
azt hogylehet megcsinállni hogy ha simán irsz a chatbe akkor csak 20 méteres körzetbe lássák amit irsz?
+ Kéne egy /g [szöveg]
Azaz ezt mindenki látja.
/g =General Chat
Ha valaki segítene megköszönném
-
Ha ír akk 20m-en belül lássák:
[pawn]
public OnPlayerText(playerid,text[])
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInRangeOfPoint(i,20,x,y,z))
{
SendPlayerMessageToPlayer(i,playerid,text);
}
}
}
return 1;
}[/pawn]
a /g:
[pawn] CMD:g(playerid,params[])
{
new msg[160];
if(sscanf(params,\"s[159]\",msg)) SendClientMessage(playerid,0xFFFF00FF,\"Használat: /G [szöveg]\");
else if(msg[159]) return SendClientMessage(playerid, 0xFF0000FF, \"HIBA: Érvénytelen hosszúság! Max 160 karaktert írhatsz a /G után!\");
else
{
SendPlayerMessageToAll(playerid,msg);
}
return 1;
}[/pawn]
-
Vagy, használd a Proxdetector funkciót. Én ez utóbbit ajánlanám. :)
[pawn]public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
if(IsPlayerConnected(playerid))
{
new Float:posx, Float:posy, Float:posz;
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
//radi = 2.0; //Trigger Radius
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && (GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i)))
{
GetPlayerPos(i, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
{
SendClientMessage(i, col1, string);
}
else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
{
SendClientMessage(i, col2, string);
}
else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
{
SendClientMessage(i, col3, string);
}
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
{
SendClientMessage(i, col4, string);
}
else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
SendClientMessage(i, col5, string);
}
}
}
}
return 1;
}[/pawn]
Használata:
ProxDetector(Float:radi, playerid, string[], col1, col2, col3, col4, col5)
radi - milyen közelségben lássák
string - ezt úgygondolom nemkell mondanom.
col1-5 - Ha azt szeretnéd, hogy minél távolabb vagy, annál sötétebb szín, akkor itt szépen felsorolod az 5 különbözõ világosságú színt. Azt nemtudom, hogy 1 a legközelebbi az legyen a legvilágosabb, és az 5. meg a legsötétebb.
Remélem valamennyit tudtam segíteni. :)
-x
-
Az szép és jó h col1-col5 de mi garantálja, hogy a col1 col2 stb ilyen meg olyan szín? Sehol se definiáltad õket...
-
Az szép és jó h col1-col5 de mi garantálja, hogy a col1 col2 stb ilyen meg olyan szín? Sehol se definiáltad õket...
Paraméter
-
Az szép és jó h col1-col5 de mi garantálja, hogy a col1 col2 stb ilyen meg olyan szín? Sehol se definiáltad õket...
Paraméter
[/quote]
Bármilyen jó/rossz vagyok a pawn-ban, sosem értettem, hogy egy paraméterbõl miért fogja tudni a pawno hogy az a valami mit is jelent...
Na jó az még oké ha a paraméter pl x,y,z és utána lekéri getplayerpos-al a poziciót, de itt nincs lekérés, nincs semmi amibõl felismerné hogy az egyáltalán egy szín. Vagy egy olyan speciális cucc hogy col1-nek kell lennie, ha átírnám szin1-re akk nem mûködne? Vagy hogy van? Ebben az egyben sötét vagyok... xD
-
A col1 helyére kell írni a HEX szín kódot (Pl.:0xFFFFFFF)
-
A col1 helyére kell írni a HEX szín kódot (Pl.:0xFFFFFFF)
Bözony. ;)