Das "print(string);" àndern zu "printf("%s",string)"
Ich wollte erstmal nur wissen ob die Schleife überhaupt geladen wird. Was aber eigentlich sollte. Aber Gut das du den print unten vom string noch gesehen hast =)
Das "print(string);" àndern zu "printf("%s",string)"
Ich wollte erstmal nur wissen ob die Schleife überhaupt geladen wird. Was aber eigentlich sollte. Aber Gut das du den print unten vom string noch gesehen hast =)
Der sscanf sieht in Ordnung aus meiner Sicht nach. Schau mal ob er dir den Print beim Ausführen des Befehls in der server.log anzeigt.
ocmd:aherstellen(playerid, params[])
{
new erstellteAutohauser, aBesitz[MAX_PLAYER_NAME], aInteil[MAX_PLAYER_NAME], aName[40], gGekauftJaNein;
if(sscanf(params, "sssd",aBesitz, aInteil, aName,gGekauftJaNein)) return SendClientMessage(playerid, Weiss, "/aherstellen [Besitzer][Inteilhaber][AutohausName[Siehe Vorgaben]][0 = Zukaufen 1= Verkauft]");
for(new i = 0; i<Max_Autohauser; i++)
{
print("Schleife geladen");
new Float:aa_x, Float:aa_y, Float:aa_z;
GetPlayerPos(playerid, aa_x, aa_y, aa_z);
AutohausInfo[i][ah_ID] = i;
AutohausInfo[i][aa_Name] = aName;
AutohausInfo[i][aa_Besitzer] = aBesitz;
AutohausInfo[i][aa_Inteilhaber] = aInteil;
AutohausInfo[i][Pos_x] = aa_x;
AutohausInfo[i][Pos_y] = aa_y;
AutohausInfo[i][Pos_z] = aa_z;
AutohausInfo[i][GekauftJaNein] = gGekauftJaNein;
new path[64];
format(path, sizeof(path), "/Autohauser/%d.ini", i);
if(!fexist(path)) continue;
dini_Create(path);
dini_IntSet(path, "aa_ID", i);
dini_Set(path, "aaName", aName);
dini_Set(path, "Besitzer", aBesitz);
dini_Set(path, "Inteilhaber", aInteil);
dini_IntSet(path, "Kasse", 0);
dini_FloatSet(path, "aa_x", aa_x);
dini_FloatSet(path, "aa_y", aa_y);
dini_FloatSet(path, "aa_z", aa_z);
dini_IntSet(path, "GekauftJaNein", gGekauftJaNein);
SpeichereAutohauser();
new string[200];
format(string, sizeof(string), "%s\nBesitzer: %s\nInteilhaber: %s\nKasse: %d$", AutohausInfo[i][aa_Name], AutohausInfo[i][aa_Besitzer], AutohausInfo[i][aa_Inteilhaber],AutohausInfo[i][aa_Kasse]);
print(string);
Label[i] = Create3DTextLabel(string, Weiss, AutohausInfo[i][Pos_x], AutohausInfo[i][Pos_y], AutohausInfo[i][Pos_z]+0.5,5,0,0);
erstellteAutohauser++;
}
return 1;
}
Ich habe derzeit folgendes Problem. Die Befehle wie z.b
/materials deliver
/materials get Anzahl
/materials gtake
/materials put
funktionieren nicht wirklich.
Sie werden immer durch irgendwelche sscanf abfragen gestoppt. Hat jemand eine Idee wie man das am besten machen kann ? Hier ein vereinfachter Code teil
ocmd:materials(playerid,params[])
{
if(PlayerInfo[playerid][pLoggedIn]==false) return 1;
new ding[20], anzahl, string[128];
if(sscanf(params, "s", ding) || (params, "s", ding,anzahl)) return SendClientMessage(playerid,COLOR_RED,"Fehler");
{
if(strcmp(ding, "get", true) == 0)
{
if(sscanf(params, "si", ding, anzahl)) return SendClientMessage(playerid,COLOR_RED,"Benutze /materials [get]");
{
if(PlayerInfo[playerid][pJob] != 2) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Waffendealer");
{
}
}
if(strcmp(ding, "deliver", true) == 0)
{
if(PlayerInfo[playerid][pJob] != 2) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Waffendealer");
{
}
}
if(sscanf(params, "sd", ding, anzahl)) return SendClientMessage(playerid,COLOR_RED,"Benutze /materials [get/delivery/put/gtake/sell]");
{
if(strcmp(ding, "put", true) == 0)
{
}
}
if(sscanf(params, "sd",ding,anzahl)) return SendClientMessage(playerid,COLOR_RED,"Benutze /materials [get/delivery/put/gtake/sell]");
{
if(strcmp(ding,"gtake",true) ==0)
{
}
}
}
}
return 1;
}
ich erinnere mich gerade an meine 1&1 Zeit, da hatte ich das auch mit ner 100 mbits dort gab es auch immer abbrüche, grund die leitung konnte den 100 mbits nicht stand halten. Es wurde mit der zteit dann auf 25 mbits zum test gedrosselt siehe an es ging.
Lass dich von der Technik drosseln und schau obs besser wird wenn ja anbieter wechsel oder geringeren vertrag
Vodafone ist auch der letzte Dreck (that means kabeldeutschland too)...Habe derzeit auch nur Probleme mit Telekom. Mal gehts, mal nicht...
Davor war ich aber bei Vodafone und da war der Support noch Schlechter als bei der Telekom.
Die Telekom antwortet mir sogar bei Twitter und hilft direkt ohne Flax.
Von beidem Rate ich dir aber ab...
Ich weiß ja nicht was für einen Vertrag du bei Vodafone hattest. Kabel oder DSL / VDSL.
Bei Kabel sehe ich das etwas anders.
Bei DSL & VDSL dauert es immer weil es nicht eigene leitungen sind.
Aber ich will hier jetzt keine diskussion starten
Ich kann wie dreamtex auch nur Kabeldeutschland empfehlen. Diese haben eigene Leitungen und sind dafür auch selbst verantwortlich. Da bisher noch nicht jeder zu Kabel gewechselt hat, sind die Kunden natürlich klein in gegensatz zu DSL Kunden. Dadurch ist Kabeldeutschland aka Vodafone bei einer Störungsbehebung auch schneller bei das Problem zu beheben.
Mit bis zu 400 Mbits kommt das Internet in dein Haus. Ich habe derzeit den Tarif Businnes 400 Mibts und bin voll zufrieden.
Ich habe auf diesem Vertrag einen Server laufen bei dem bisher noch nie eine Unterbrechung der Internetverbindung statt fand.
Mein Vertrag besteht seit 1 Jahr. Zuvor habe ich es in einer alten Wohnung vor 3 Jahren gehabt. Dort lief auch alles sauber mit 100 mbits.
Da die Nachfrage doch etwas größer ist als gedacht, ich begrüße euch auf dem TeamSpeak 3 von mir.
Verbindungsziel: samp-gaming.de
Guten Tag liebe Brotfische,
wie manche vielleicht schon bemerkt haben, bin ich dabei ein Reallife Script selbst zu schreiben. Hierzu brauche ich nun auch mal ein paar Tester die mir dabei helfen, Fehler aufzuspüren. Hierzu würde ich 1-2 freiwillige benötigen die mit mir das ganze einmal durchgehen.
Solltest du dich als Tester anbieten, so schreibe mir eine Private Nachricht oder schreibe unter den Thread und ich lasse dir alle notwendigen Daten zukommen.
Liebe Grüße
Du brauchsgt wie schon Privat gesagt die richtige mysql version. die frage ist welche ist es
Setze
dbhandle = mysql_connect(db_host,db_user,db_datenbank,db_passwort);
jedenfalls zuerst nach ganz oben. Es wird z.b vorher ein Timer aufgerufen. Der auf andere Dinge weiterleitet was den crash verursachen kann
if(Busfahrer[playerid][IsBusfahring] == 1)
{
if(IsPlayerInAnyVehicle(playerid) && Busfahrer[playerid][BusID] == GetPlayerVehicleID(playerid))
{
if(Busfahrer[playerid][BusRoute] == 1)
{
if(Busfahrer[playerid][BusStand] == sizeof(BusfahrRouteA)-1)
{
SendClientMessage(playerid,COLOR_GREEN,"Bustour beendet.");
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid,COLOR_BUSBLUE,"Du erhälst an deinem PayDay +2900$");
PlayerInfo[playerid][pJobMoney]+=2900;
Busfahrer[playerid][BusID] = 0;
Busfahrer[playerid][IsBusfahring] = 0;
Busfahrer[playerid][BusStand] = 0;
Busfahrer[playerid][BusRoute] = 0;
Busfahrer[playerid][BusZeit] = 0;
SaveUserStats(playerid);
new string[128];
format(string,sizeof(string),"%s hat die Linie 100 erfolgreich beendet",getPlayerName(playerid));
SaveToLog("Buserfolgreichlog", string);
}
else
{
Busfahrer[playerid][BusZeit] = 10;
}
}
}
}
auch in den timer ? Das war vorher ja in OnPlayerCheckpoint
Na das klingt mir etwas komisch. Ist doch eigentlich egal welchen Timer er nutzt ? Der Timer wird ja auch ordentlich beendet. Allerdings wird der Timer nicht bei 2 Leuten angezeigt wenn einer von denen 0 ist
Hey,
schick uns mal den gesamten Code, hier ist ja nichts mit einem Timer wo wir schauen können was flasch ist.
Also bitte die entsprechenden Stellen rein stellen.
MfG
Hey, das ist der Code der alle 60 Sekunden ausgeführt wird
SetTimer("SekundenTimer", 1000, 1);
[list=1][*]forward SekundenTimer(playerid);
[*]public SekundenTimer(playerid)
[*]{
[*]for(new i = 0; i <= GetPlayerPoolSize(); i++)
[*] {
[*] if(Busfahrer[i][BusZeit] != 0)
[*] {
[*] if(IsPlayerInRangeOfPoint(i,5.0,BusfahrRouteA[Busfahrer[i][BusStand]][br_x],BusfahrRouteA[Busfahrer[i][BusStand]][br_y],BusfahrRouteA[Busfahrer[i][BusStand]][br_z]))
[*] {
[*] format(string,sizeof(string),"Nachste Haltestelle in %d Sek.",Busfahrer[i][BusZeit]);
[*] Busfahrer[i][BusZeit] --;
[*] GameTextForPlayer(i, string, 1000, 3);
[*] if(Busfahrer[i][BusZeit] == 0)
[*] {
[*] DisablePlayerCheckpoint(i);
[*] Busfahrer[i][BusStand] ++;
[*] if(Busfahrer[i][BusRoute] == 1)
[*] {
[*] SetPlayerCheckpoint(i,BusfahrRouteA[Busfahrer[i][BusStand]][br_x],BusfahrRouteA[Busfahrer[i][BusStand]][br_y],BusfahrRouteA[Busfahrer[i][BusStand]][br_z],2.5);
[*] }
[*] }
[*] }
[*]}
[/list]
Wenn der Spieler den Checkpoint erreicht
if(Busfahrer[playerid][IsBusfahring] == 1)
{
if(IsPlayerInAnyVehicle(playerid) && Busfahrer[playerid][BusID] == GetPlayerVehicleID(playerid))
{
if(Busfahrer[playerid][BusRoute] == 1)
{
if(Busfahrer[playerid][BusStand] == sizeof(BusfahrRouteA)-1)
{
SendClientMessage(playerid,COLOR_GREEN,"Bustour beendet.");
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid,COLOR_BUSBLUE,"Du erhälst an deinem PayDay +2900$");
PlayerInfo[playerid][pJobMoney]+=2900;
Busfahrer[playerid][BusID] = 0;
Busfahrer[playerid][IsBusfahring] = 0;
Busfahrer[playerid][BusStand] = 0;
Busfahrer[playerid][BusRoute] = 0;
Busfahrer[playerid][BusZeit] = 0;
SaveUserStats(playerid);
new string[128];
format(string,sizeof(string),"%s hat die Linie 100 erfolgreich beendet",getPlayerName(playerid));
SaveToLog("Buserfolgreichlog", string);
}
else { Busfahrer[playerid][BusZeit] = 10; }
}
}
Ok
Beschreibe das Problem mal ganz genau nochmal
Sobald ich als Spieler mit der playerid als 1 z.b in den Checkpoint reinfahre ist alles in Ordnung. Sobald aber ein Spieler mit der playerid 0 in den Checkpoint fährt wird meine Checkpoint Zeit ausgeblendet und der Timer auch gestoppt. Sobald der Spieler mit der playerid 0 den Checkpoint verlassen hat, läuft mein Timer dann wieder von vorne neu.
was das GetPlayerPoolSize?
Dieser ermöglicht die ermittlung der höchsten ID eines Spieler auf dem Server
zu
hatte ich schon gesehen allerdings besteht der Fehler immernoch. Du hast mir sogar das Bus Script erstellt gehabt wenn du dich noch erinnern tust
Sobald ein Spieler mit der ID 1 in die Haltestelle fährt, wird der Countdown gestartet. Sobald ein 2 User mit der ID 0 in den Checkpoint fährt, wird vom Spieler der Timer scheinbar gestoppt und die Anzeigen entfernt. Wo könnte das Problem liegen ?
for(new i = 0; i <= GetPlayerPoolSize(); i++)
{
if(Busfahrer[i][BusZeit] != 0)
{
if(IsPlayerInRangeOfPoint(i,5.0,BusfahrRouteA[Busfahrer[i][BusStand]][br_x],BusfahrRouteA[Busfahrer[i][BusStand]][br_y],BusfahrRouteA[Busfahrer[i][BusStand]][br_z]))
{
format(string,sizeof(string),"Nachste Haltestelle in %d Sek.",Busfahrer[i][BusZeit]);
Busfahrer[i][BusZeit] --;
GameTextForPlayer(playerid, string, 1000, 3);
if(Busfahrer[i][BusZeit] == 0)
{
DisablePlayerCheckpoint(i);
Busfahrer[i][BusStand] ++;
if(Busfahrer[i][BusRoute] == 1)
{
SetPlayerCheckpoint(i,BusfahrRouteA[Busfahrer[i][BusStand]][br_x],BusfahrRouteA[Busfahrer[i][BusStand]][br_y],BusfahrRouteA[Busfahrer[i][BusStand]][br_z],2.5);
}
}
}
}
}
//edit falscher code
//push
//edit Code zur besseren Übersicht bearbeitet
Es ist möglich das Fahrzeug mit einer Sirene auszustattet wenn das Fahrzeug schon auf dem Server ist und von der Datenbank aus gesteuert wird.
Sollte man es allerdings unter OnGameModeInit erstellt haben denke ich wird es auch schwierig.
Bei MySQL müsste man einen Wert hinzufügen wie z.b Updatet. Diesen dann abfragen ob nothing or 1.
Wenn 1 soll er das Fahrzeug mit der Fahrzeug id löschen und dann wieder neu erstellen.
Klar ist das möglich aber nur mit einem Befehl wenn er das meint bitte nochmal schreiben
Nein, am Ende muss (laut Wiki) eine '1' kommen.Die 60 die du im Beispiel siehst, ist der respawn_delay.
Ohja stimmt hast recht ich hab mich auf die schnelle an
CreateVehicle(520, 2109.1763, 1503.0453, 32.2887, 82.2873, -1, -1, 60);
gerichtet wo aber nur bis respawn_delay gegangen wird.
Ja gibt es. Du musst einfach ganz am Ende von dem CreateVehicle im Link eine 60 eingeben.
Allerdings interessiert mich auch mal wie das attachen am ende funktioniert