Nein, das stimmt nicht.
continue = Springe einen Schleifen-Step weiter
break = Beende die Schleife
return = Beende die Funktion (public/stock/...)
Break ist für das was er machen möchte der richtige Befehl.
Nein, das stimmt nicht.
continue = Springe einen Schleifen-Step weiter
break = Beende die Schleife
return = Beende die Funktion (public/stock/...)
Break ist für das was er machen möchte der richtige Befehl.
Ist es möglich, dass beim Connecten geprüft wird ob der Spieler schon mit der IP registriert ist?
Weil man mit dem MySQL Statement soweit ich weiß nur SELECT * FROM laden kann, da ja alle Datengeladen werden müssen und anschließend mit WHERE der Namen herausgesucht wird.
Ist es aber möglich wenn ein neuer Spieler sich registriert das gecheckt wird, dass z.B. das die registrierten IP's mit seinem entsprechen?
PlayerEnum wäre da nicht geeignet oder mit einem MySQL Statement?
Bzw. wie könnte man am einfachsten soetwas Prüfen?
Das gleiche würde ich auch für die Email einstellen später....
Könnte mir jemand helfen? Bin noch am grübeln wie man das am geschicktesten machen könnte...
Dazu kannst du auch einfach einen SELECT machen, mit WHERE ip = xxx. Hat das Result mehr als 0 Zeilen, dann ist die IP bereits vorhanden.
Gleich bei der Mail.
stock GetPlayerBanTime(playername[],&minu=0,&seco=0)
{
format(tbDir,sizeof(tbDir),foxBanFile,playername);
if(dini_Exists(tbDir))
{
seco=(dini_Int(tbDir,"fbTime")+dini_Int(tbDir,"fbDuration"))-Time();
seco=seco-minu*60;
minu=seco/60;
return 1;
}
return 0;
}
Hay ich hab eine frage wie macht man das genau von Minuten in Stunden?
stock GetPlayerBanTime(playername[],&hour,&minu,&seco)
{
format(tbDir,sizeof(tbDir),foxBanFile,playername);
if(dini_Exists(tbDir))
{
seco=(dini_Int(tbDir,"fbTime")+dini_Int(tbDir,"fbDuration"))-Time();
hour=seco/3600;
seco-=hour*3600;
minu=seco/60;
seco-=minu*60;
return 1;
}
return 0;
}
dcmd_tban(playerid,params[])
{
new pID,pIdName[MAX_PLAYER_NAME],pName[MAX_PLAYER_NAME],banTime,reason[64],string[128];
if(PlayerInfo[playerid][pAdmin] <= 1) { return 1; }
if(sscanf(params,"uds",pID,banTime,reason)) { return SendClientMessage(playerid,COLOR_GRAD1,"Benutzung: /tban [Spieler / ID] [Zeit in Minuten] [Grund]"); }
if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,COLOR_GRAD1,"Falsche ID!"); }
if(banTime < 15) { return SendClientMessage(playerid,COLOR_GRAD1,"Minimale Zeit: 30 Minuten"); }
GetPlayerName(pID,pIdName,sizeof(pIdName));
GetPlayerName(playerid,pName,sizeof(pName));
format(string,sizeof(string),"AdminSystem: %s wurde von %s für %d Minuten gebannt, Grund: %s",pIdName,pName,banTime,reason);
SendClientMessageToAll(0xFF6347AA,string);
printf("AdminSystem(TIMEBAN): Admin: %s(%i) - Timeban Spieler: %s(%i) - Timeban Grund: %s",pName,playerid,pIdName,pID,reason);
pBanner[pID] = pName;
TBan(pID,banTime);
return 1;
}
Muss man eigentlich dann da auch was ändern das der Spieler dann in Stunden gebannt ist?
Wenn du die Zeit weiterhin in Minuten angeben willst, dann nicht. Man kann ja dann z.B. 180 Minuten für 3 Stunden angeben, das geht nach wie vor.
Möchte es in Stunden umändern
dcmd_tban(playerid,params[])
{
new pID,pIdName[MAX_PLAYER_NAME],pName[MAX_PLAYER_NAME],banTime,reason[64],string[128];
if(PlayerInfo[playerid][pAdmin] <= 1) { return 1; }
if(sscanf(params,"uds",pID,banTime,reason)) { return SendClientMessage(playerid,COLOR_GRAD1,"Benutzung: /tban [Spieler / ID] [Zeit in Stunden] [Grund]"); }
if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,COLOR_GRAD1,"Falsche ID!"); }
if(banTime < 1) { return SendClientMessage(playerid,COLOR_GRAD1,"Minimale Zeit: 1 Stunde"); }
GetPlayerName(pID,pIdName,sizeof(pIdName));
GetPlayerName(playerid,pName,sizeof(pName));
format(string,sizeof(string),"AdminSystem: %s wurde von %s für %d Stunden gebannt, Grund: %s",pIdName,pName,banTime,reason);
SendClientMessageToAll(0xFF6347AA,string);
printf("AdminSystem(TIMEBAN): Admin: %s(%i) - Timeban Spieler: %s(%i) - Timeban Grund: %s",pName,playerid,pIdName,pID,reason);
pBanner[pID] = pName;
TBan(pID,banTime*60);
return 1;
}
Ich versuche Fahrzeuge zu drosseln, erhalte aber einen Warning...
( Link vom Stock )
stock SetVehicleSpeed(vehicleid,mph) //Miles Per Hour | (c)NeedAName
{
new Float:Vx,Float:Vy,Float:Vz,Float:DV,Float:multiple;
GetVehicleVelocity(vehicleid,Vx,Vy,Vz);
DV = floatsqroot(Vx*Vx + Vy*Vy + Vz*Vz);
if(DV > 0) //Directional velocity must be greater than 0 (display strobes if 0)
{
multiple = (mph / (DV * 100)); //Multiplying DV by 100 calculates speed in MPH
return SetVehicleVelocity(vehicleid,Vx*multiple,Vy*multiple,Vz*multiple);
}
return 0;
}
Alles anzeigen
Wenn ich es hier einstelle erhalte ich einen Warning...
warning 213: tag mismatch.
Was habe ich denn falsch gemacht?
stock SetVehicleSpeed(vehicleid,mph)
zu:
stock SetVehicleSpeed(vehicleid,Float:mph)
Wie fülle ich die Stamina eines Spielers auf? Ich weiß das es da extra keine Funktion für gibt, aber es gibt's andere Wege um die Stamina wieder aufzufüllen, weiß nur gerade nicht wie das geht, jemand ne Idee?
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
SpawnPlayer(playerid);
SetPlayerPos(playerid, x, y, z);
Gegebenenfalls muss das SetPlayerPos über OnPlayerSpawn gesteuert werden.
stock SetVehicleSpeed(vehicleid,mph)
zu:
stock SetVehicleSpeed(vehicleid,Float:mph)
Danke sehr
Eine Frage noch bezüglich des Speed's und kann man auch die Geschwindigkeit höher setzen?
Sprich wenn ein Fahrzeug standartmäßig 50km/h fahren kann könnte man daraus 100 machen?
Eine Frage noch bezüglich des Speed's und kann man auch die Geschwindigkeit höher setzen?
Sprich wenn ein Fahrzeug standartmäßig 50km/h fahren kann könnte man daraus 100 machen?
Bedingt, ja.
Ich habe hier mal einen kleinen Filterscript geschrieben, mit dem man das hinbekommt: Fahrzeug schnelligkeit
Das ist aber wie beschrieben nicht perfekt, da es nur als Test diente, ob es überhaupt irgendwie geht.
Mein Problem besteht darin, dass mein Arrest-timer immer nur von 60 auf 59 runterzählt und dann "aufhört".
public CheckEntlassung()
{
for(new i=0;i<GetMaxPlayers();i++)
{
if(pInfo[i][pJail]!=0)
{
pInfo[i][pJail]--;
printf("Noch %i Sekunden.",pInfo[i][pJail]/1000); //geprinted wird immer jede Sekunde dass selbe: Noch 59 Sekunden.
if(pInfo[i][pJail]==0)
{
pInfo[i][pJail]=0;
SendClientMessage(i,CLR_RED,"Du hast deine Strafe abgesessen, hoffentlich hast du dazu gelernt!");
SetPlayerArmour(i,0);
ResetPlayerWeapons(i);
SetPlayerPos(i,1555.0754,-1675.6427,16.1953);
SetPlayerFacingAngle(i,90.0);
SetPlayerInterior(i,0);
SetPlayerVirtualWorld(i,0);
SetPlayerHealth(i,100);
GameTextForPlayer(i,"~p~Unjailed",10000,6);
}
}
}
return 1;
}
//im arrest befehl.
pInfo[pID][pJail]=jminuten*1000*60;
//ongamemodeinit
SetTimer("CheckEntlassung",1000,true);
mfg
Hi, wo liegt mein Fehler?
format(INFO,sizeof(INFO),"Name: %s\nIP: %s", GetPlayerName(playerid), GetIP(playerid));
ShowPlayerDialog(playerid, D_SOBEITDETECTED, DIALOG_STYLE_MSGBOX, "Sobeit Detected", INFO, "Bye", "");
arning 202: number of arguments does not match definition
Wie sieht denn deine GetIP funktion aus?