Folgendes einstellen:
Dannach Router neustarten
Folgendes einstellen:
Dannach Router neustarten
Vielleicht funktionierts: SetVehicleAngularVelocity
Das Thema ist doch Niveaulos.
Jeder hat einen anderen Geschmack und es werden die gleichen Spiele nach 10 Seiten ungefähr 10 mal genannt.
Gutes Spiel:
Mario mit Banhammer
account.list
Eine Datei mit allen Spielerdatein.
Darin kannst du alle Dateien (xxxxx.ini) auflisten.
forward VehHealth();
public OnFilterScriptInit()
{
SetTimer("VehHealth", 1000, 0); //Lässt den Timer starten
return 1;
}
public VehHealth()
{
for(new playeird = 0; playerid < MAX_PLAYERS; playerid++)
{
if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) //checkt ob der spieler in einem Fahrzeug sitzt
{
new Float:health;
GetVehicleHealth(GetPlayerVehicleID(playerid), health);
if(health >= 350) return 1;
else
{
SendClientMessage(playerid, 0xFF00FF00, "Dein Motor ist beschädigt, rufe bitte den ADAC!");
RemovePlayerFromVehicle(playerid); //...spieler rauswerfen
return 0;
}
} else continue;
}
return 1;
}
Einfach genial, ihr müsst mal ds Video "Huge Guns" von ihn ansehen:
Youtube
Schau dir Timer an.
SetTimerEx
public OnPlayerRequestSpawn(playerid)
{
if(/* Nicht Eingelogt */) return 0;
else return 1;
}
Wieso Admin sein?
Am besten suchst du dir ein Server aus.
Spielst dort lange und setzt dich für den Server ein.
Wirbst ein paar Leute und machst Werbung, aber nicht auf anderen Servern.
Wenn du lange genug gespielt hast und ein Admin denkt, dass du ins Team gehörst, werden sie dich aufnehmen.
Außerdem nehmen einige Server die Spieler nur auf, wenn diese 16+ Jahre alt sind. Was ich nach deinen Verlangen nicht nachempfinden kann.
Du könnest eine von mir ausgedachte Version machen.
Du brauchst folgende Funktion:
stock mktime(hour,minute,second,day,month,year)
{
new timestamp2 = second + (minute * 60) + (hour * 3600), days_of_month[12], days_this_year = day;
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) days_of_month = {31,29,31,30,31,30,31,31,30,31,30,31};
else days_of_month = {31,28,31,30,31,30,31,31,30,31,30,31};
if(month > 1) for(new i=0; i<month-1;i++) days_this_year += days_of_month[i];
timestamp2 += days_this_year * 86400;
for(new j=1970;j<year;j++) {
timestamp2 += 31536000;
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) timestamp2 += 86400;
}
return timestamp2;
}
und eine Variable bei "OnPlayerConnect":
new year, month, day, hr, mi, se;
gettime(hr, mi, se);
getdate(year, month, day);
SetPVarInt(playerid, "loginStart", mktime(hr, mi, sc, day, month, year));
Jetzt nur noch überall, wo das Level abgerufen ist (am besten durch eine Funktion ersetzen) :
stock getMoney(playerid)
{
if(!IsPlayerOnline(playerid)) return 0;
updateLevel(playerid);
return PlayerInfo[playerid][pMoney]; // Anpassen!!!
}
Letzendlich brauchst du noch die "updateLevel" Funktion:
stock updateLevel(playerid)
{
new play_minutes, day, mon, yea, hr, mi, sc;
gettime(hr, mi, sc);
getdate(yea, mon, day);
play_minutes = mktime(hr, mi, sc, day, mon, yea) - GetPVarInt(playerid, "loginStart");
// Hier das Level berechnen (play_minutes = die gespielten minuten bis jetzt)
// Auch die bereits gespielten Minuten addieren ;-)
// PlayerInfo[playerid][pLevel] = ....;
return 1;
}
if(PlayerInfo[playerid][pTeam] != PlayerInfo[killerid][pTeam])
sonst ist es immer Teamkill
Die letzen Startversuche aus der server-log.txt zeigen.
Oder du bist faul und machst dir n Timer, der alle Raceteilnehmer durchgeht, die Entfernung bis zum Ziel von jedem berechnet und dann die Platzierung ausspuckt.
Leichter, aber rechenintensiver
Was ist, wenn das Ziel Checkpoint bereits das Anfang Checkpoint der Map ist?
Dann ist jemand, der AFK ist, gleich der Erste...
public OnPlayerStateChange(playerid,newstate,oldstate)
{
if (newstate == PLAYER_STATE_DRIVER && IsPlayerNPC(playerid))
{
new Data[7];
GetVehicleParamsEx(GetPlayerVehicleID(playerid), Data[0], Data[1], Data[2], Data[3], Data[4], Data[5], Data[6]);
SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_ON, VEHICLE_PARAMS_ON, Data[2], Data[3], Data[4], Data[5], Data[6]);
}
return 1;
}
public OnPlayerStateChange(playerid,newstate,oldstate)
{
if (newstate == PLAYER_STATE_DRIVER && IsPlayerNPC(playerid))
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_ON, VEHICLE_PARAMS_ON, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF);
}
return 1;
}
Einfach eine Variable für jeden Spieler -> Anzahl der durchgefahrenen Checkpoints
Eine globale Variable -> Maximale Anzahl im aktuellen Rennen
und wenn dann ein Spieler durch ein Checkpoint fährt -> Alle Updaten
http://wiki.sa-mp.com/wiki/OnPlayerStateChange
->
2 Player is driver of a vehicle - "PLAYER_STATE_DRIVER"
Ich finde sie Toll
Ich aber nicht.
Neuinstallation ?