Wollte mal fragen ob man GetPlayerName(playerid,name,sizeof name) global machen kann ?
Mfg bad_company
Wollte mal fragen ob man GetPlayerName(playerid,name,sizeof name) global machen kann ?
Mfg bad_company
Kann man nicht weils keine globale Playerid gibt
danke dan werde ich es mal wieder änder habs auch schon gemerkt aber dachte vieleicht gehts irgendwie
//EDIT: Hab aber mal ne frage will aber kein extra Thread machen wie kann ich es machen das man /admins eingibt und die admins die grade on sind angezeigt werden ??
Schreib einfach ne Funktion:
stock GetPlayerName2(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
(freihhand geschrieben, daher nicht eingerückt)
Sollte dem entsprechen was du suchst....
oki werde es mal testen
//EDIT: naja jetz zeigt es für jeden befehl: error 017: undefined symbol "name"
ich wollte das halt weil ich in allen befehlen nur mit playerid->name und pplayerid->pname arbeite das global machen um es nicht überall zu schreiben
Für das ganze Aktuelle Script definieren
new names[MAX_PLAYERS][MAX_PLAYER_NAME];
Unter OnPlayerConnect
GetPlayerName(playerid,names[playerid],MAX_PLAYER_NAME);
so und nun kannst du :
names[id des spielers] nutzen da dort der Name für die ID drin ist, ganz einfach
Du hast mich wohl falsch verstanden, ich zeige dir mal eben wie du es einsetzen könntest:
format(iwas,sizeof(iwas)," Der Name ist %d",GetPlayerName2(playerid));
Anstatt vorher umständlich name formatieren etc. kannst du direkt so vorgehen.
brauchst damit nirgendswo mehr new name oder sonstwas zu machen.
hab das ja aber alles schon geschrieben also in jedem befehl steht in jeden format hinten name oder pname je mach dem und deswegen fragte ich ja obs geht das so zu machen oder kan man GetPlayerName nur für alle cmd´s definieren würde das den gehen ? das ich nicht in jeden cmd GetPlayerName(playerid,name...) und GetPlayerName(pplayerid,pname...) reinschreiben muss ?
Genau dafür ist doch die Funktion die ich oben geschrieben habe...
Einfach GetPlayerName2(playerid) und es wird der Name wird wiedergegeben
Ich ahb es so in den script unten rein gepackt aber es kam nur überall name nicht definiert ..
Nenn die Funktion mal um ohne die 2 als Funktionsname...
immer noch es selbe
Zeig uns mal wie du es eingefügt hast und wo du es eingefügt dann noch wie und wo du es verwendest und es verwenden willst
naja das hier:
stock GetPlayerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
return name;
}
ganz untem im script.
und verwenden zB. hier:
dcmd_gebegeld(playerid,params[])
{
new Float:x, Float:y, Float:z,moneyid,moneyamount;
GetPlayerPos(playerid,x,y,z);
if(sscanf(params, "ud",moneyid,moneyamount))
{
return SendClientMessage(playerid,COLOR_YELLOW,"/gebegeld [ID] [Geld]");
}
if(!IsPlayerConnected(moneyid))
{
return SendClientMessage(playerid,COLOR_LIGHTRED,"Spieler nicht online!");
}
else if(!IsPlayerInRangeOfPoint(moneyid,1.5,x,y,z))
{
return SendClientMessage(playerid,COLOR_LIGHTRED,"Der Spieler ist nicht in deiner Nähe.");
}
else if(moneyamount < 1 || moneyamount > 50000)
{
return SendClientMessage(playerid,COLOR_LIGHTRED,"Ungültige Summe!");
}
else if(moneyamount < 0 || moneyamount > GetPlayerMoney(playerid))
{
return SendClientMessage(playerid,COLOR_LIGHTRED,"Ungültige Summe!");
}
{
format(strink,sizeof(strink),"Du hast von %s $%d bekommen!",name,moneyamount);
SendClientMessage(moneyid,COLOR_LIGHTGREEN,strink);
GivePlayerMoney(moneyid,moneyamount);
format(strink,sizeof(strink),"Du hast %s $%d gegeben!",pname,moneyamount);
SendClientMessage(playerid,COLOR_LIGHTGREEN,strink);
GivePlayerMoney(playerid,-moneyamount);
}
return 1;
}
//also hier
format(strink,sizeof(strink),"Du hast von %s $%d bekommen!",/*name*/,moneyamount);
format(strink,sizeof(strink),"Du hast von %s $%d bekommen!",GetPlayerName2(moneyid),moneyamount);
Ich wollte ja nur wissen wie ich es machen kann das ich es nicht in jeden befehl GetPlayer...... machen kann da ich jetz sonst 30 Befehle umschreiben müsste da ich überall alles mit name und pname geschrieben habe
aber enns nich anders geht muss ich das halt machen
Alles anzeigenFür das ganze Aktuelle Script definieren
new names[MAX_PLAYERS][MAX_PLAYER_NAME];
Unter OnPlayerConnect
GetPlayerName(playerid,names[playerid],MAX_PLAYER_NAME);
so und nun kannst du :
names[id des spielers] nutzen da dort der Name für die ID drin ist, ganz einfach
Wie schon gesagt ... aber hier müsstest du auch einiges umändern , dann musst dir halt die Zeit dazu nehmen und das so oder wie Portgas dir das zeigte,
dann machst du es Zukunft halt mit eine der Methoden ansonsten bleibst du halt bei deinem
na dan danke werdes mal umschreiben