Hallo
ich abe ein kleines problem bei meine neuen script.
Ich habe wieder irgend wie meine timer alle gefreeze also eingefrohen weis aber nicht wie
ist wieder aus gesiter hand passiert.
ich habe alles auskommentiert was ich neu gemacht habe und immer noch der bug jetzt weis ich auch net mehr wieter um en bug zu finden der halbe gm ist schon auskommentiert.
sagt mir welche cods ihr braucht ich poste sie euch. Will den bug weg haben
Kennt den bug keiner?
weis den keinner wo ran das leigen kannn?
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Ohne Quellcode keine Hilfe...
Bzw keine wirklich bauchbare -
wenn ich w+üste was ihr braucht könnte ich es ja posten
Sag mir mal bescheid was ihr braucht? also welchen code! -
Sind die Funktionen die du mit deinen Timern aufrufst publics bzw geforwarded?
Oder hast du vielleicht die Funktionen in den Timern falsch geschrieben.
DAs wäre so das was mir noch einfallen würde -
Ahm Ich abe sie in Public und geforwardet habe ich die auch. Die Timer gingen ja alle bis vorkurzen.
-
Wie wäre es mit einem Backup dann abgleichen?
Siehe deine Signatur^^ -
ja auf dem backup ist der bug auch schon drauf habe ihn zu spät gemerkt
-
sind das denn alle timer? oder nur einer?
Sonst pack ma in die aufgerufenen Funktionen ein Debug bzw print und kurz bevor du die Timer Ausführst
-
das sind alle timer auser die ich mit befehlen starte
tutorialtimer = SetTimer("TutorialZeit",TUTORIALZEIT,1);
SetTimer("SetPayDay",SETPAYDAY,1);
SetTimer("RealHealth",REALHEALTH,1);
SetTimer("FriedhofTimer",FRIEDHOFTIMER,1);
SetTimer("TOTTimer",TOTTIMER,1);
SetTimer("WetterChange",WETTERCHANGE,1);
SetTimer("Deathrespawn",DEATHRESPAWN,1);
unjailtimer = SetTimer("SetPlayerUnjail", UNJAIL, 1);
SetTimer("atmmessage",ATMMESSAGE,1);
die gehen alle nicht aber
SetTimer("Blitzer_Timer", BLITZER_TIMER_INTERVALL, 1);
SetTimer("TachoTimer",TACHOTIMER,1);
gehen nnoch
SO hier mal die funktionen der einzlnen timer
public SetPayDay(i)
{
new string[124];
new checks = pDaten[i][Gehalt];
new lohn = pDaten[i][fLohn];
if(pDaten[i][PayDay] >= 1)
{
pDaten[i][PayDay] -= 1;
}
else if(pDaten[i][PayDay] <= 0)
{
SendClientMessage(i,0xFFFF00FF,"Payday!");
PlayerPlaySound(i, 1068, 0.0, 0.0, 0.0);
GivePlayerMoney(i,2000);
pDaten[i][PayDay] = 3600;
SetTimer("StopPlayerMusic", 5000, false);
}
}
public RealHealth(playerid)
{
new Float:oldheal;
GetPlayerHealth(playerid,oldheal);
new Float:newheal;
newheal= oldheal-1;
SetPlayerHealth(playerid,newheal);
return 1;
}
public FriedhofTimer(playerid)
{
if(pDaten[playerid][Friedhof] >= 2)
{
pDaten[playerid][Friedhof] -= 1;
}
if(pDaten[playerid][Friedhof] == 1)
{
SpawnPlayer(playerid);
SetPlayerWeather(playerid, Wetter);
pDaten[playerid][IsTotxD] = 0;
pDaten[playerid][Friedhof] = 0;
}
}
public TOTTimer()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(pDaten[i][pTot] == 1)
{
pIstTot[i] += 1;
}
if(pDaten[i][pTot] == 1 && pIstTot[i] == 3)//die 3 ändern in die anzahl der minuten die ihr im KH sein wollt
{
pDaten[i][pTot] = 0;
pDaten[i][IsTotxD] = 0;
pIstTot[i] = 0;
SetPlayerVirtualWorld(i,0);
SetPlayerSpawn(i);
SpawnPlayer(i);
TogglePlayerControllable(i,1);
SendClientMessage(i, COLOR_LIGHTGREEN, "Du bist aus dem Krankenhaus entlassen!");
DestroyPickup(TotenKopf[i][0]);
}
}
}
}
public WetterChange()
{
new rand = random(sizeof(WetterRandom));
new stringw[16];
wetterid = WetterRandom[rand][0];
format(stringw, sizeof(stringw), "weather %d", wetterid);
SendRconCommand(stringw);
printf("[PsychoSys]Wetter ID: %d", wetterid);
Wetter = wetterid;
return 1;
}
public Deathrespawn(playerid)
{
if(pDaten[playerid][Friedhof] >= 1)
{
if(!IsPlayerInArea(playerid,801.9307,-1134.5814,955.5819,-1051.9934))
{
SetPlayerPos(playerid, 826.6697,-1102.7621,25.3906);
}
}
}
public SetPlayerUnjail(i)
{
if(pDaten[i][Jailed] == 1)
{
pDaten[i][Jailtime] -= 1;
if(pDaten[i][Jailtime] == 0)
{
pDaten[i][Jailed] = 0;
SetPlayerInterior(i, 0);
SetPlayerPos(i,1546.8324,-1675.1418,13.5631);
KillTimer(unjailtimer);
}
}
}
public atmmessage(playerid)
{
new string[128];
for(new i=0;i<15;i++)
{
if(IsPlayerInRangeOfPoint(playerid,3.0,Atms[i][0],Atms[i][1],Atms[i][2]))
{
format(string,sizeof(string),"~n~~n~~n~~n~~n~~n~~n~~w~Schreibe ~g~/atm ~w~um den Automaten zu bedienen.");
GameTextForPlayer(playerid,string,3500,3);
return 1;
}
}
return 1;
}
so das wars glaube ich
ich hoffe ihr könnt mir helfen
nach eine debug sollten alle timer laufen. der gibt alles wieder nach der zeit die angegeben ist nur der führt die dannn nicht aus die befehle früher gings
public SetPlayerUnjail(i)
{
print("Unjail");//der ja
if(pDaten[i][Jailed] == 1)//hier vermutlich fehler
{
pDaten[i][Jailtime] -= 1;
print("Unjail1");//der wird nicht mehr ausgeführt
if(pDaten[i][Jailtime] == 0)
{
pDaten[i][Jailed] = 0;
SetPlayerInterior(i, 0);
SetPlayerPos(i,1546.8324,-1675.1418,13.5631);
KillTimer(unjailtimer);
}
}
} -
Such im Script nach TooglePlayerControlAble
oder FreezePlayer(playerid);
mfg -
Meinste du as der spieler gefreezt ist? oder wie das hat doch an sich glaube ich nicht mit dem timer zu tun
-
such mal nach Wait
-
das wort Wait gibt es nicht in meien GM
Okay was soll ich suchen?
-
Es kann sein das irgendwo in nem Timer das steht:
FreezPlayer
oder
ToglePlayerControlable
Such das mal im Script.
Wenns in nem Timer steht weiste woran es lag ;D
zudem er meinte such nach dem Wort Wait oder Warte falls es iwas mit nem Buydialog zu tun hat.
mfg -
Hm ja habe ich in 3 timer weil man dort gefreezt oder unfreezed wird wo soll ich das den machen
public TutorialZeit(i)
{
if(TutTime[i] >= 1)
{
pDaten[i][Tut] = 1;
TutTime[i] += 1;
TogglePlayerControllable(i,0);
if(TutTime[i] ==6) //DASTUTORIAL
{
TextDrawShowForPlayer(i, pDaten[i][LetterboxTop]);
TextDrawShowForPlayer(i, pDaten[i][LetterboxBottom]);
ClearChatbox(i, 10);
}
if(TutTime[i] == 8)
{
SetPlayerPos(i,1137.1897,-1455.0825,15.7969);
SetPlayerCameraPos(i, 1137.1897,-1455.0825,15.7969);
SetPlayerCameraLookAt(i, 1127.6664,-1483.0823,22.7690);
SetPlayerInterior(i, 0);
SetPlayerVirtualWorld(i, 0);SendClientMessage(i, COLOR_GOLD, "|=================| Einleitung in 120 Sekunden |=================|");
...........
else if(TutTime[i] == 120)
{
TextDrawHideForPlayer(i, pDaten[i][LetterboxTop]);
TextDrawHideForPlayer(i, pDaten[i][LetterboxBottom]);
ClearChatbox(i, 10);
SendClientMessage(i, COLOR_GREEN, "Herzlich Willkommen in San Andreas.");
SendClientMessage(i, COLOR_LIGHTRED, "Ohne einen Führerschein kannst du wohl nur mit einem Roller oder einem Fahrrad fahren.");
SendClientMessage(i, COLOR_LIGHTRED, "Wenn du Hilfe brauchst schreib einmal /report und schreib deine Frage in das geöffnete Fenster.");
TutTime[i] = 0; pDaten[i][Tut] = 2;
TogglePlayerControllable(i,1);
SetCameraBehindPlayer(i);
SpawnPlayer(i);
GivePlayerMoney(i,10000);
ShowPlayerDialog(i,StartGeldDialog,DIALOG_STYLE_LIST,"Start Bonus","50000$\n20000$ + Motoradschein\n20000$ + Level 5\n 20000$ + Führerschein","Auswählen", "Auswählen");
}
}
}
oderpublic RespawnAfterKrankenhaus(playerid)
{
SetPlayerPos(playerid,1999.7947,-1453.1426,13.5547);
SetPlayerFacingAngle(playerid,113.4541);
SetPlayerInterior(playerid,0);
SetCameraBehindPlayer(playerid);
TogglePlayerControllable(playerid,0);
new rand = random(3);
if(rand == 0)
{
GameTextForPlayer(playerid,"~y~GEHEILT!~n~~g~Du hattest eine leichte Verletzung",5000,3);
SetPlayerHealth(playerid,90.0);
}
else if(rand == 1)
{
GameTextForPlayer(playerid,"~y~GEHEILT!~n~~g~Du hattest eine mittlere Verletzung",5000,3);
SetPlayerHealth(playerid,60.0);
}
else if(rand == 2)
{
GameTextForPlayer(playerid,"~y~GEHEILT!~n~~g~Du hattest eine schwere Verletzung",5000,3);
SetPlayerHealth(playerid,20.0);
}
return 1;
}
public TOTTimer()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(pDaten[i][pTot] == 1)
{
pIstTot[i] += 1;
}
if(pDaten[i][pTot] == 1 && pIstTot[i] == 3)//die 3 ändern in die anzahl der minuten die ihr im KH sein wollt
{
pDaten[i][pTot] = 0;
pDaten[i][IsTotxD] = 0;
pIstTot[i] = 0;
SetPlayerVirtualWorld(i,0);
SetPlayerSpawn(i);
SpawnPlayer(i);
TogglePlayerControllable(i,1);
SendClientMessage(i, COLOR_LIGHTGREEN, "Du bist aus dem Krankenhaus entlassen!");
DestroyPickup(TotenKopf[i][0]);
}
}
}
}
public SetPlayerSpawn(playerid)
{
if(IsPlayerConnected(playerid))
{
if (pDaten[playerid][pTot] == 1)
{
SetPlayerPos(playerid, 1172.2982,-1323.7545,15.4039 ); // Warp the player
SetPlayerInterior(playerid,0);
TogglePlayerControllable(playerid,0);
return 1;
}
}
return 1;
} wie soll ich das sonst machen????
wie soll ich das machen soll ich da ein extra public oder stock erstellen oder wie? -
OMG du versuchst nicht mal an deine Funktionen die du mit den Timer aufrufst werte/variablen zu übergeben, das geht nur mit SetTimerEx
Ein Beispiel
wenn du so versuchst SetTimer("SetPayDay",SETPAYDAY,1); diese Funktion aufzurufen public SetPayDay(i) kann das zwar funktionieren, aber alle Abfragen, die du mit der Variable i machst werden 0 returnen da in 'i' nix steht bzw 'i' 0 istDu müsstest es dann so machen SetTimerEx("SetPayDay",SETPAYDAY,1,"i",deinevariable); amsinnvollsten wäre das einzusetzen in OnPlayerConnect
-
ah Jetzt hab ichs gecheckt danke es geht habe nur noch ein bug mit meine login das sagt immer das jedes pw richtig ist
-
breadfish.de
Hat das Thema geschlossen.