Versteh das ned, so müsste es klappen.. Wieso was passiert eigentlich beim einloggen? Kommt wenigstens die Meldung?
Beiträge von Templer
-
-
Bitte
if (strfind(text, "meinbusbot") != -1)
{
if(IsPlayerInRangeOfPoint(playerid, 15, -1559.5802,-464.8181,14.0000))
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
OnPlayerCommandText(playerid, "/o hallo hier spricht der Busbot :D");
format(string, sizeof(string), "Hey %s! You are so mean, you make me so sad!", name);
OnPlayerText(playerid, string);
return 0;
}
} -
PlayerHaul[GetPlayerVehicleID(playerid)][pLoad] -= 1;
-
genau da musst du bei der Zeile das ändern, ned im Public...
gVehicleSpecialAction[vehicleid][playerid] = false; -
-
Einfach durch checken lassen mit IsPlayerInVehicle
-
Du kannst im GM keine NPC Funktionen verwenden Bitte ändere die Zeilen um in:
Statt SendCommand("/o hallo hier spricht der Busbot :D"); :
OnPlayerCommandText(playerid, "/o hallo hier spricht der Busbot :D");und statt SendChat(string);
SendClientMessage(playerid, 0xFFFFFF00, string);Jedoch hast du es irgendwie falsch aufgefasst. Erkläre bitte was du mit dem Befehl vorhattest, dann richte ich in dir!
Wegen dem Array [128], dass bedeutet das 128 Charaktere (bzw. Zeichen) in ein Array passen zB wird das
format(string, sizeof(string), "Hey %s! You are so mean, you make me so sad!", name);
so abgespeichert:
string[0] = "H";
string[1] = "e";
string[2] = "y";
//usw...abgespeichert Also einzeln.
-
Also im pastebin Code ist alles in Ordnung. Wird die public Funktion DeadCountdown noch irgendwo mit einem Timer gestartet? Da du in ordnungsgemäß abtöten lässt.
-
ai toll.. Ich meinte eigentlich was anders aber bitte von OBEN orientieren!
Bitte so lassen:
forward CheckVehicleSpecialAction(playerid, vehicleid);
public CheckVehicleSpecialAction(playerid, vehicleid)
-
Hab eigentlich schon geschrieben, aber naja...
if(PlayerHaul[GetPlayerVehicleID(playerid)][pLoad] =>1); <<-----Abfrage nur welche?
{
//Öffnen
}
else
{
//Nix
} -
Ehm nur die screenshots gehen nichtmehr, da ich die Bilder nichtmehr finde, aber der DownloadLink geht!
Download:
speedoBomb Include (inkl. SII, foreach und sscanf)
speedoBomb Pastebin-Link -
Ok bitte überprüfe ob du es richtig eingefügt hast, da ich keinen Fehler bekommen wenn ich es in einen leeren GM reinhau. Außer das mit forplayerid aber das gehört zu playerid
Aber ansonsten bitte überprüfen und dann sagen obs geklappt hat, Danke!
-
Zeile posten und wir machen Schluss mim Thema
-
Das blöde ist, ich weiß nichtmehr direkt, wann genau die Waffe gegeben wird, aber es gäbe eine Sache, wie du meine Version verbesserst, also einfach folgenden Code mim vorhandenen ersetzen:
new bool:gVehicleSpecialAction[MAX_VEHICLES][MAX_PLAYERS];
new gLastVehicleID[MAX_PLAYERS];
new bool:gPlayerVehicleSpecialAction[MAX_PLAYERS];forward CheckVehicleSpecialAction(playerid, vehicleid);
stock RemovePlayerWeapon(playerid, weaponid)
{
if(!IsPlayerConnected(playerid) || weaponid < 0 || weaponid > 50) return false;
new saveweapon[13], saveammo[13];
for(new slot = 0; slot < 12; slot++)
GetPlayerWeaponData(playerid, slot, saveweapon[slot], saveammo[slot]);
ResetPlayerWeapons(playerid);
for(new slot; slot < 12; slot++)
{
if(saveweapon[slot] == weaponid || saveammo[slot] == 0) continue;
GivePlayerWeapon(playerid, saveweapon[slot], saveammo[slot]);
}
GivePlayerWeapon(playerid, 0, 1);
return true;
}public OnVehicleStreamIn(vehicleid, forplayerid)
{
gVehicleSpecialAction[vehicleid][forplayerid] = true;
return 1;
}public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
if(gPlayerVehicleSpecialAction[playerid] == true) CheckVehicleSpecialAction(playerid, gLastVehicleID[playerid]); //Führt Funktion sofort aus!
gLastVehicleID[playerid] = GetPlayerVehicleID(playerid);
}
if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER && gVehicleSpecialAction[gLastVehicleID[playerid]][playerid] == true)
{
gPlayerVehicleSpecialAction[playerid] = true;
SetTimerEx("CheckVehicleSpecialAction", 2000, 0, "dd", playerid, gLastVehicleID[playerid]);
}
return 1;
}public CheckVehicleSpecialAction(playerid, vehicleid)
{
switch(GetVehicleModel(vehicleid))
{
case 596..598:
{
new weapon, ammo, cw = GetPlayerWeapon(playerid);
GetPlayerWeaponData(playerid, 3, weapon, ammo);
if(weapon == 25)
{
RemovePlayerWeapon(playerid, weapon);
if(ammo > 5) GivePlayerWeapon(playerid, weapon, (ammo-5));
SetPlayerArmedWeapon(playerid, cw);
}
}
}
gPlayerVehicleSpecialAction[playerid] = false;
gVehicleSpecialAction[vehicleid][forplayerid] = false;
return true;
} -
else if (!strcmp(type, "park", true, 4))
{
if(!PlayerInfo[playerid][cars]) return SendClientMessage(playerid,COLOR_LIGHTRED,"[SYSTEM]: Du besitzt kein Auto.");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_YELLOW,"[SYSTEM]: Du musst in deinen Auto sitzen.");
if(!IsPlayerInVehicle(playerid, PlayerInfo[playerid][cars])) return SendClientMessage(playerid,COLOR_YELLOW,"[SYSTEM]: Du musst in deinen Auto sitzen.");
new Float:px, Float:py, Float:pz, Float:pa; // 1581
GetVehiclePos(PlayerInfo[playerid][cars], px, py, pz);
GetVehicleZAngle(PlayerInfo[playerid][cars], pa);
PlayerInfo[playerid][carx] = px; // 1584
PlayerInfo[playerid][cary] = py; // 1585
PlayerInfo[playerid][carz] = pz; // 1586
PlayerInfo[playerid][cara] = pa; // 1587
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
new string[50];
format(string, sizeof(string), "~w~Fahrzeug ~g~ Geparkt");
GameTextForPlayer(playerid, string, 3000, 6);
}und oben beim new PlayerInfo im enum drinnen steht anscheinend das so bei dir:
carx,
cary,
carz,
cara,
gehören tut es so:
Float:carx,
Float:cary,
Float:carz,
Float:cara, -
forward TextTimer();
public OnGameModeInit()
{
SetTimer("TextTimer", 600000, 1); //10Min..
return 1;
}public TextTimer()
{
SendClientMessageToAll(0xFFFFFF00, "Hallo!");
return 1;
} -
Trooper, drück mal in einem GTA Fahrzeug was ca 10km/h fährt so oft wie möglich die aussteige Taste, dann haste dein OnPlayerExitVehicle und wenn jetzt sagen wir in einer Stunde 1000 mal ein Auto verlassen wurde (und per PlayerState abgefragt wird), so häuft sich das ein bisschen zusammen... Was wirklich schonend wäre ein globaler Timer der nur die verbundenen Spieler durchgeht!
-
Trooper das ist Falsch! SetTimerEx verbraucht mehr Ressourcen, wenn es öfter aufgerufen wird, als ein globaler Timer! Selbst ausgetestet mit einem globalen Timer, der einen loop durchführt durch alle 500 Slots und mit einem SetTimerEx der playerid 0 ausführt. Das Ergebnis ist, dass bei SetTimerEx überreste gibt die nicht richtig weggeräumt wurden.. Somit wird dann mehr Speicher benützt, je länger der Server läuft.
-
Nein mein Timer bleibt global und überprüft ob Spieler in Fahrzeug oder Nicht, so wie es der andere gemacht hat, war eigentlich richtig, nur wäre dann für seine Variante ein normales GameTextForPlayer ausreichend ohne Countdown
-
Auch wenn es schon gesagt wurde, kannst du folgendes machen:
public OnPlayerClassRequest(playerid,classid)
{
Spawn(playerid);
return true;
}