GTA Közösség - A magyar GTA fórum
San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: MaulTomy - 2011. május 13. - 20:52:01
-
Szevasztok!
Szeretném közzétenni az elsõ, egyszerû szkriptemet. (Pár napja kezdtem használni a Pawno-t)
Ez egy RP Chat, tartalmaz.:
- /k(/k [iC szöveg])(Saját_Neved mondja.: szöveg)
- Normál írás(IC chat) (Simán szöveget kell beírni)(Csak egy bizonyos távolságig látszik!)(Ismeretlen mondja.: szöveg)
- /b(/b [OOC szöveg])( Saját_Neved OOC.: (( Szöveg )) )
- /va(/va [cselekvés])(* Valaki cselekvés)
- /me (/me [cselekvés])(* Saját_Nevem cselekvés)
- /do (/do Történés)(** történés)
Töltsd le itt!
Most írom még a kiabálást, és a suttogást,ahogy készen van, feltöltöm azt is!
-
Kicsit gyanús... de ha tényleg te irtad akkor grat. amúgy:
[pawn]new pName[100 char];[/pawn]
lol, minek oda a char? ;D
-
Nem rossz, nem rossz :)
Csak így tovább ^-^
-
A \"char\" azért van ott, mert egy tutorialt néztem, példának, és ott láttam, és azt hittem kell oda.
Dupla hozzászólás automatikusan összefûzve. ( 2011. május 13. - 21:26:46 )
Elrontottam! Most néztem, hogy a sima beszéden kivül a többit mindenki látja, valaki segítene, mert valamit nagyon elrontottam, vagy a tutorial nem jó RP-re.
SendMessageToAll
Itt lesz a gond, mit írjak helyette, hogy meg tudjam adni a távolságot is, hogy hol lássák? Vagy egy Tutorialt linkelnétek, hogy meg tanulhassam? :( :-[
-
Elsõnek nem rossz grat. ;) Csak pár tipp:
- Az OnPlayerText függvényben van egy \'str\' nevû vektorod 200 cellával. A SAMP chatboxba maximum 128 karaktert írhatsz ki egy üzenetben, szóval a többi pocséklás.
- Ugyanitt; A játékos pozícióját a ciklustörzsben kérdezed le, amit azt jelenti, hogy 500-szor fogja lekérdezni a pozícióját minden egyes üzenet beírásánál, ez szerintem érthetõ, hogy elég pazarló megoldás.
- Egy játékos neve maximum 24 karakter lehet, te majdnem kétszer annyit adtál meg. A 24 helyett nyugodtan használhatod a MAX_PLAYER_NAME szimbólumot, ha az elején nem tudnád megjegyezni.
-
A \"char\" azért van ott, mert egy tutorialt néztem, példának, és ott láttam, és azt hittem kell oda.
Dupla hozzászólás automatikusan összefûzve. ( 2011. május 13. - 21:26:46 )
Elrontottam! Most néztem, hogy a sima beszéden kivül a többit mindenki látja, valaki segítene, mert valamit nagyon elrontottam, vagy a tutorial nem jó RP-re.
SendMessageToAll
Itt lesz a gond, mit írjak helyette, hogy meg tudjam adni a távolságot is, hogy hol lássák? Vagy egy Tutorialt linkelnétek, hogy meg tanulhassam? :( :-[
Itt.
Van az RP chatról, és a /me-rõl is.
-
Köszi, a választ, megnéztem a linket, de az a problémám, hogy itt azt nem írja le, hogy csinálatom meg, hogy ne csak sima írásnál legyen így, szóval azt szeretném, hogy mondjuk /b /k /s STB.... Mindt távolsághoz kötött legyen.
-
ProxDetector.
[pawn]
stock ProxDetector(Float:radi, playerid, ta[],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)))
{
if(!BigEar)
{
GetPlayerPos(i, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
//printf(\"DEBUG: X:%f Y:%f Z:%f\",posx,posy,posz);
if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
{
SendClientMessage(i, col1, ta);
}
else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
{
SendClientMessage(i, col2, ta);
}
else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
{
SendClientMessage(i, col3, ta);
}
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
{
SendClientMessage(i, col4, ta);
}
else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
SendClientMessage(i, col5, ta);
}
}
else
{
SendClientMessage(i, col1, ta);
}
}
}
}//not connected
return 1;
}[/pawn]
-
Én ajánlanám esetleg az IsPlayerStreamedIn függvényt igaz itt nem tudod a scriptben állítani a távolságot.
De alapból ha jól tudom egy 300-as sugarú körben lévõ playerek-re ad igaz értéket. Egyszerûbben fogalmazva azokra ad igaz értéket akik láthatóak számodra a játékban, a másik játékos karakterét megjeleníti (látható) a te képernyõdön.
Vagy amit erre a célra használhatsz azaz IsPlayerInRangeOfPoint. Itt már tudod állítani hogy mekkora sugarú körben keresse a közeledben lévõ (tárgyat, játékost, egyebet).