1.)
Im enum:
cTank,
zu:
Float:cTank,
2.)
new CTFDraw ...
zu:
new Text:CTFDraw ...
3.)
if(IsPlayerConnected(i) && gPlayerLogged[i] && !IsPlayerNPC(i))
1.)
Im enum:
cTank,
zu:
Float:cTank,
2.)
new CTFDraw ...
zu:
new Text:CTFDraw ...
3.)
if(IsPlayerConnected(i) && gPlayerLogged[i] && !IsPlayerNPC(i))
Kann man einen filterscript benutzen um mehr Objekte auf einer Stelle Streamen zu können?
Was meinst du? Klar kannst du mehrere Objekte an einer Stelle haben, aber in deinem sichtbaren Umkreis dürfen nicht mehr als 1000 Objekte sein (bzw. im sichtbaren Umkreis von allen Spielern zusammen), bzw. insgesamt nur 1000 Objekte ohne Streamer.
Guten Tag!
Ich habe mir folgende Funktion für mein Script erstellt:
stock mayPlayerJoin(playerid) {
new n[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, n, sizeof(n));
for(new i=0;i<sizeof(AllowedPlayers); i++) {
if(strcmp(AllowedPlayers[i], n, true)) return true;
}
return false;
}
Das dazugehörige Array:
static const AllowedPlayers[1][MAX_PLAYER_NAME+1] = {
"DerCrash"
};
Sie wird in dem OnPlayerJoin() Callback aufgerufen:
public OnPlayerConnect(playerid)
{
if(!mayPlayerJoin(playerid)) return sendError(playerid, "Der Server ist im Wartungsmodus!");
return 1;
}
Wenn ich jetzt mit dem Namen "DerCrash" joine, wieso bekomme ich dann die Meldung: "Der Server ist im Wartungsmodus"?
Danke schonmal im Vorraus
if(strcmp(AllowedPlayers[i], n, true)) return true;
zu:
if(!strcmp(AllowedPlayers[i], n, true)) return true;
strcmp gibt 0 zurück, wenn beide Strings gleich sind.
Achso, danke! Habe schon seit etwas länger Zeit nicht PAWN gescriptet.
Kann mir jemand sagen wie ich abfragen kann, ob hier ein Name in der Datenbank existiert?
pVerheiratetName[MAX_PLAYER_NAME+1] Ist man nicht verheiratet, ist der Datebank Eintrag einfach nur -
Dann das result auslesen und abfragen ob strlen größer als 1 ist. Wenn ja, dann ist er verheiratet, wenn nein, dann nicht.
Sinnvoller wäre es natürlich das beim Login zu laden, und dann nur abzufragen:
if(strlen(pVerheiratetName)>1) //verheiratet
else //nicht verheiratet
Okay, danke dir. Ich versuche das mal.
Ich habe die ID nun zwischen gespeichert, ist es irgendwie möglich anhand seiner ID seinen Namen wieder auszulesen?
//e:
Stehe sowas von aufm Schlauch, nachdem ich jetzt 24 Stunden wach bin..
Hier mal mein Code:
if(strcmp(option, "antrag", true) == 0)
{
if(Spieler[playerid][pAcceptHeirat] != -1)
{
if(IsPlayerConnected(pAcceptHeirat[playerid]))
{
GivePlayerMoney(pAcceptHeirat[playerid],-15000);
//Spieler[pAcceptTicket][pVeheiratet] = 1;
Spieler[playerid][pVerheiratet] = 1;
//format(string,sizeof(string),"%s hat soeben %s geheiratet.",GetName(playerid),
//SendClientMessageToAll(COLOR_ORANGE,string);
}
}
}
Ich habe die ID zwischengespeichert, welcher den Antrag erstellt hat.
Jedoch kriege ich schon Errors in folgender Zeile.
if(Spieler[playerid][pAcceptHeirat] != -1)
if(!strcmp(option,"antrag",true))
{
if(pAcceptHeirat[playerid] != -1)
{
if(IsPlayerConnected(pAcceptHeirat[playerid]))
{
GivePlayerMoney(pAcceptHeirat[playerid],-15000);
//Spieler[pAcceptTicket][pVeheiratet] = 1;
Spieler[playerid][pVerheiratet] = 1;
//format(string,sizeof(string),"%s hat soeben %s geheiratet.",GetName(playerid),GetName(pAcceptHeirat[playerid]));
//SendClientMessageToAll(COLOR_ORANGE,string);
}
}
return 1;
}
Bist du dir sicher, dass das option heißt und nicht cmdtext?
Cheevy.Shakur:
Ja, dann passt das
CMD:accept(playerid, params[])
{
if(!IsLoggedIn(playerid))return 1;
new option[32], string[128];
if(sscanf(params, "s[32]", option))
{
SendClientMessage(playerid, COLOR_GREY, "** Benutze /accept [Option]");
SendClientMessage(playerid, COLOR_GREY, "** Optionen: Ticket, Paket, Antrag");
return 1;
}
if(strcmp(option, "antrag", true) == 0)
...
Option ist denke ich schon richtig.
Warum folgende Warnings: JT_PD = CreateDynamicObject(18981,866.621,533.905,1002.203,0.000,0.000,0.000,300.000);
warning 213: tag mismatch
JT_PD
Wie hast du denn die Variable deklariert?
so: new JT_PD
Schau dir die Parameter von CreateDynamicObject nochmal genauer an
Also schreib es so:
JT_PD = CreateDynamicObject(18981,866.621,533.905,1002.203,0.000,0.000,0.000);
Jedoch kriege ich schon Errors in folgender Zeile.
Jeffry:
Was für Errors bekommst du denn?
C:\Users\Alex\Desktop\\gamemodes\reallife.pwn(3473) : error 028: invalid subscript (not an array or too many subscripts): "pAcceptHeirat"
C:\Users\Alex\Desktop\\gamemodes\reallife.pwn(3473) : warning 215: expression has no effect
C:\Users\Alex\Desktop\\gamemodes\reallife.pwn(3473) : error 001: expected token: ";", but found "]"
C:\Users\Alex\Desktop\\gamemodes\reallife.pwn(3473) : error 029: invalid expression, assumed zero
C:\Users\Alex\Desktop\\gamemodes\reallife.pwn(3473) : fatal error 107: too many error messages on one line
if(IsPlayerConnected(pAcceptHeirat[playerid]))
zu:
if(IsPlayerConnected(Spieler[playerid][pAcceptHeirat]))
Ich möchte damit ja nicht den Spieler abfragen, der den Befehl eingibt.
In pAcceptHeirat[playerid] ist die ID des anderen gespeichert.
Hier mal der Befehl, womit man einen Heiratsantrag macht. Damit du ungefähr weißt, was ich meine.
CMD:heiraten(playerid,params[])
{
new pID,string[128],Float:pos[3];
if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_GREY,"** Benutze /heiraten [SpielerID/Name]");
if(IsPlayerNPC(pID))return 1;
if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_GREY, ERROR_OFFLINE);
GetPlayerPos(pID, pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 4.0, pos[0], pos[1], pos[2]))return SendClientMessage(playerid, COLOR_GREY, "** Der Spieler befindet sich nicht in deiner Nähe.");
if(Spieler[pID][pVeheiratet] == 1)return SendClientMessage(playerid,COLOR_GREY,"** Dieser Spieler ist bereits verheiratet.");
if(GetPlayerMoney(playerid) < 15000)return SendClientMessage(playerid,COLOR_GREY,"** Du besitzt nicht genügend Geld.");
format(string,sizeof(string),"%s hat dir einen Heiratsantrag gemacht. Tippe /accept antrag um den Antrag anzunehmen.");
SendClientMessage(pID,COLOR_GREEN,string);
Spieler[pID][pAcceptHeirat] = playerid;
return 1;
}