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: Mokus - 2012. október 14. - 23:12:12

Cím: ID megadása nem értem
Írta: Mokus - 2012. október 14. - 23:12:12
Sziasztok nem értem hogy kell azt hogy a megadott idnek tegye azt amit akarunk PL:/asd id nekem teljesen mindegy mit csinál a játékosnak csak értsem hogy van ez hogy a megadott idnek hajtsa végre elõre is köszönöm
Cím: ID megadása nem értem
Írta: Johnies00 - 2012. október 14. - 23:56:24

CMD:health(playerid, params[])
{
new giveplayerid;
new giveplayer[MAX_PLAYER_NAME];
new string[128];
if(sscanf(params, \"u\", giveplayerid)) return SendClientMessage(playerid, SZINKOD, \"Használat: /health [Játékos]\"); // u = Játékos (ez megegyezik a giveplayerid változóval)
if(giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, SZINKOD, \"Érvénytelen Játékos ID\"); // Ha a beírt játékos id je nem létezik
GetPlayerName(playerid, giveplayer, sizeof(giveplayer)); // Lekérdezzük a játékos nevét
format(string, sizeof(string), \"Feltöltötted %s életét!\", giveplayer); // Formázzuk a sztringet és megadjuk a szöveget
SendClientMessage(playerid, SZINKOD, string); // Kiírjuk a szöveget
SetPlayerHealth(giveplayerid, 100); // Feltöltjük az általunk beírt játékosnak az életét 100-ra
return 1;
}

 
Szerintem ha az alapokat tudod akkor nem okoz nehézséget.  :)

Ha kérdésed van írj.
Cím: ID megadása nem értem
Írta: Mokus - 2012. október 15. - 07:30:59
Ha jól értettem így van az hogy csak neki tegye meg az üzenetet
 
#include <a_samp>
#include <sscanf2>
#include <zcmd>
#include <colors>
CMD:uzenet(playerid,params[])
{
new giveplayerid;
if(sscanf(params, \"u\", giveplayerid)) return SendClientMessage(playerid, COLOR_RED, \"Használat: /uzenet [Játékos]\");
if(giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, \"Érvénytelen Játékos ID\");
SendClientMessage(giveplayerid,COLOR_RED,\"Végre hajtották rajtad az /uzenet parancsot\");
return 1;
}
Cím: ID megadása nem értem
Írta: b1s - 2012. október 15. - 12:28:44
Idézetet írta: Mokus date=1350279059\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28639\" data-ipsquote-contentclass=\"forums_Topic
Ha jól értettem így van az hogy csak neki tegye meg az üzenetet
 
#include <a_samp>
#include <sscanf2>
#include <zcmd>
#include <colors>
CMD:uzenet(playerid,params[])
{
new giveplayerid;
if(sscanf(params, \"u\", giveplayerid)) return SendClientMessage(playerid, COLOR_RED, \"Használat: /uzenet [Játékos]\");
if(giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, \"Érvénytelen Játékos ID\");
SendClientMessage(giveplayerid,COLOR_RED,\"Végre hajtották rajtad az /uzenet parancsot\");
return 1;
}

 

Nem ártana a COLOR_RED definíciója :
 
#define COLOR_RED 0xff0000AA
Cím: ID megadása nem értem
Írta: Johnies00 - 2012. október 15. - 12:42:18
Idézetet írta: Mokus date=1350279059\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28639\" data-ipsquote-contentclass=\"forums_Topic
Ha jól értettem így van az hogy csak neki tegye meg az üzenetet
 
#include <a_samp>
#include <sscanf2>
#include <zcmd>
#include <colors>
CMD:uzenet(playerid,params[])
{
new giveplayerid;
if(sscanf(params, \"u\", giveplayerid)) return SendClientMessage(playerid, COLOR_RED, \"Használat: /uzenet [Játékos]\");
if(giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, \"Érvénytelen Játékos ID\");
SendClientMessage(giveplayerid,COLOR_RED,\"Végre hajtották rajtad az /uzenet parancsot\");
return 1;
}

 

Igen, így van, viszont ez csak azt írja ki amit a szkript tartalmaz (tehát a giveplayerid játékos nevét nem, se az üzenetet)
Cím: ID megadása nem értem
Írta: Mokus - 2012. október 15. - 14:07:00
Szal ezt az üzenetet neki ki fogja írni de a nevét nem vagy hogy értitek?
Cím: ID megadása nem értem
Írta: Johnies00 - 2012. október 15. - 16:01:25
Nem.

SendClientMessage- üzenetet küld


playerid - aki beírta a parancsot


színkód- egyértelmû..


\"üzenet\" - dettó

létre kell hozni egy giveplayer változót (lehet más is a neve) amit a játékos nevének a kiírására fogunk használni, és még egy változót amit a mi nevünknek a kiírására használunk (pName pl.)
 
new giveplayer[MAX_PLAYER_NAME];
new pName[MAX_PLAYER_NAME]

 
Majd a késõbbiekben \"tudatni\" a móddal hogy a giveplayer az annak a neve akinek beírtad az idjét (giveplayer = giveplayerid azonosítója)
 
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));

 
ezután formázni kell a stringet (amit kiír a szerver) hogy tudjuk használni, majd megadjuk a szöveget és hogy hol írja ki a játékos nevét/üzenetet.
 
format(string, sizeof(string), \"%s üzenetet küldött neked.\", pName);

 
Ezután megadjuk hogy írja ki a szerver.
 
SendClientMessage(giveplayerid, SZINKOD, string);

 
SendClientMessage - kiír egy üzenetet
giveplayerid - annak a játékosnak akinek beírtad az azonosítóját
string - azt írja ki amit fentebb megadtunk
 

Így csak azt írja ki a másik játékosnak hogy: \"Mokus üzenetet küldött neked.\"


Ha azt szeretnénk hogy nekünk is kiírja akkor 3 függvényt megismétlünk kicsit másképp.

 
GetPlayerName(playerid, pName, sizeof(pName));

 
Egyenlõvé tesszük a nevedet a pName változóval.
 
format(str, sizeof(str), \"Üzenetet küldtél %s-nak/nek.\", giveplayer);

 
Formázzuk a sztringet hogy tudjuk használni
Megadjuk az üzenetet.
giveplayer - a %s annak a neve akinek az üzenetet küldtük.
Viszont üzenetet még mindig nem küld neki, ezért a parancsot így csináljuk:
 
new uzenet[128];

 

if(sscanf(params, \"us\", giveplayerid, uzenet)) return SendClientMessage(playerid, SZINKOD, \"Használat: /pm [iD] [Üzenet]\");

 
\"us\" - u = játékos, s = üzenet (nem szó!)
u = giveplayerid-vel

s = uzenet-tel


Lejjebb pedig értelemszerûen így kell:

 
format(str, sizeof(str), \"Üzenetet küldtél %s-nak/nek, üzenet: %s\", giveplayer, uzenet);
format(str, sizeof(str), \"%s üzenetet küldött neked, üzenet: %s\", pName, uzenet);

 


Készen így néz ki:

 
CMD:pm(playerid, params[])
{
new giveplayerid;
new giveplayer[MAX_PLAYER_NAME];
new pName[MAX_PLAYER_NAME];
new uzenet[128];
new string[128];
if(sscanf(params, \"us\", giveplayerid, uzenet)) return SendClientMessage(playerid, 0xAAAAAA, \"Használat: /pm [iD] [Üzenet]\");
if(giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xAAAAAA, \"Érvénytelen ID\");
GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
format(str, sizeof(str), \"Üzenetet küldtél %s-nak/nek, üzenet: %s\", giveplayer, uzenet);
SendClientMessage(playerid, 0xAAAAAA, string);
GetPlayerName(giveplayerid, pName, sizeof(pName));
format(str, sizeof(str), \"%s üzenetet küldött neked, üzenet: %s\", pName, uzenet);
SendClientMessage(giveplayerid, 0xAAAAAA, string);
return 1;
}
Cím: ID megadása nem értem
Írta: Mokus - 2012. október 15. - 20:29:47
Köszönöm zárok egy egy teljes tutorial megy a respect