new Interior;
zu:
new Interior[MAX_PLAYERS];
Beiträge von Jeffry
-
-
Ok, du kannst es ja ggf. dann auch mal so probieren:
format(say,sizeof say,"~w~Fahrer: ~y~%s ",fname);
zu:
format(say,sizeof say,"~w~Fahrer: ~y~%s ",SpielerName(fahrerid));Vielleicht hilft das.
Wenn nicht, setzte danach mal einen print:
printf("say: %s", say);
und poste was da geprintet wird. -
1.) Werden denn die Kosten etc für den Kunde angezeigt? Kannst du davon vielleicht mal einen Screenshot machen?
2.) Damit es nicht wieder kommt, musst du
if(pay_taxi[playerid] != -1) KillTimer(pay_taxi[playerid]);
pay_taxi[playerid] = -1;
bei OnPlayerStateChange hinzufügen. Der Code den du bei OnPlayerExit hast muss auch zu OnPlayerStateChange, das ist sicherer. -
Beim Dialog:
RentRoller[playerid] = 1;
zu:
RentRoller[playerid] = vehiclefid;Und den Befehl:
if(strcmp(cmd, "/rollerabgeben",true) == 0)
{
if(RentRoller[playerid] != 0)
{
DestroyVehicle(RentRoller[playerid]);
RentRoller[playerid] = 0;
SendClientMessage(playerid, 0xFEFEFEFF, "Du hast dein Mietroller abgegeben.");
}
return 1;
} -
Nach:
new vehiclefid = CreateVehicle(462,1235.7366,-1728.6998,13.1698,359.5901,3,3,-1);
das hier einfügen:
PutPlayerInVehicle(playerid, vehiclefid, 0); -
Setze den Z Wert etwas höher.
WeedInfo[i][WeedObject] = CreateObject(3409,X,Y,Z+1.0,0,0,A,0); -
Ja, dann habe ich richtig geraten.
Teste den Befehl bitte, und wenn es nicht geht, dann poste den Log.EDIT:
JOnny.: Siehste, und dafür wolltest du TeamViewer verwenden. Ging doch jetzt ganz einfach. Logs reichen in 99% völlig aus.
EDIT2: Markiere den Thread dann bitte auch als erledigt. Danke

-
Das ist doch schonmal nicht nichts.
Ich weiß zwar nicht wie dein neum aussieht, aber versuch es mal so:
ocmd:setinterior(playerid,params[])
{
if(!isAdmin(playerid,4))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
new tmp_interior, Float:x, Float:y, Float:z;
if(sscanf(params, "fffi",x,y,z,tmp_interior))return SendClientMessage(playerid, COLOR_GREY, "{00A5FF}/setinterior {B3B3B3}[InteriorKoords] [InteriorID]");
for(new i=0; i<sizeof(hInfo); i++)
{
if(!hInfo[i][h_id])continue;
if(!IsPlayerInRangeOfPoint(playerid, 5,hInfo[i][h_x], hInfo[i][h_y], hInfo[i][h_z]))continue;
hInfo[i][h_interior] = tmp_interior;
hInfo[i][ih_x] = x;
hInfo[i][ih_y] = y;
hInfo[i][ih_z] = z;
saveHaus(i);
updateHaus(i);
SendClientMessage(playerid,COLOR_DGREEN,"* Erfolgreich das Interior vom Haus geändert. *");
return 1;
}
return 1;
}Wenn das Fehler gibt, oder nicht geht, poste bitte das enum zu hInfo und wieder den Log.
-
Ja, gut aufgepasst!
Hatte ich vergessen.EDIT:
1.)
Wantedtime[playerid] = SetTimerEx("Wantedtimer",60000,true,"i",playerid);
zu:
Wantedtime[playerid] = SetTimerEx("WantedTimer",60000,true,"i",playerid);2.)
Beides. Jeweils += die extra Zeit. -
Na wirklich nichts kann nicht passieren, denn einen Log bekommst du ja mindestens, den hattest du auch vorhin bereits.
Außerdem sollte in der server_log.txt eine Zeile geprintet werden, die mit "query: " anfängt.Per TeamViewer kann ich dir nicht helfen, da ich das zum einen nicht mache, außer in besonderen Fällen, und zum anderen bis Sonntag nicht zu Hause am PC bin.
Schau bitte nach den Logs, solange das noch geht sehe ich keinen Grund dazu TeamViewer zu verwenden. -
Weder, noch.

So:
if (dialogid==DIALOG_ABGEBEN)
{
if(response)
{
if(radbmx[playerid] != 0)
{
KillTimer(RadbmxTimer(playerid));
radbmx[playerid] = 0;
}
else if(radmou[playerid] != 0)
{
KillTimer(RadmouTimer(playerid));
radmou[playerid] = 0;
}
else
{
SendClientMessage(playerid,ROT,"Du hast kein Fahrzeug welches du abgeben kannst!");
}
}
else
{
SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen!");
}
} -
Ah, so willst du das. Dann:
ocmd:zeit(playerid, params[])
{
new string[128];
format(string,sizeof(string), "Du bist noch %d Sekunden im Knast!",SpielerInfo[playerid][pKnastzeitBis]-gettime());
SendClientMessage(playerid,warn,string);
return 1;
}Und der Timer muss so aussehen:
forward WantedTimer(playerid);
public WantedTimer(playerid)
{
if(IsPlayerConnected(playerid))
{
if(SpielerInfo[playerid][pWanteds] > 0)
{
SpielerInfo[playerid][pWanteds]--;
SetPlayerWantedLevel(playerid, (SpielerInfo[playerid][pWanteds]/5) + 1);
SpielerInfo[playerid][pSterne] = SpielerInfo[playerid][pWanteds]/5 + 1;
SendClientMessage(playerid, erfolg, "Herzlichen Glückwunsch, du hast ein Wanted verloren!");
}
else if(SpielerInfo[playerid][pWanteds] == 0)
{
SetPlayerWantedLevel(playerid,0);
SpielerInfo[playerid][pSterne] = 0;
}
}
return 1;
} -
1.) Lädst du es richtig aus der Datenbank? Was steht da als Zeit?
2.) Wo steht der Code? Wie sieht das Callback aus?
-
Füge das bei OnGameModeInit ein:
for(new i=0; i<sizeof(hInfo); i++)
{
hInfo[i][h_pickup] = -1;
hInfo[i][htext] = Text3D:-1;
}Und schreibe die Funktion so:
updateHaus(id)
{
new string[128];
if(hInfo[id][h_pickup] != -1)
{
DestroyPickup(hInfo[id][h_pickup]);
hInfo[id][h_pickup] = -1;
}
if(hInfo[id][h_text] != Text3D:-1)
{
Delete3DTextLabel(hInfo[id][h_text]);
hInfo[id][h_text] = Text3D:-1;
}
if(!strlen(hInfo[id][h_besitzer]))
{
hInfo[id][h_pickup]=CreatePickup(1273, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
format(string,sizeof(string), "{FFFFFF}.:{FF9600}Haus Information{FFFFFF}:.\nZum Verkauf\n{FF9600}Kosten: {FFFFFF}%i€\n{FF9600}/hauskaufen", hInfo[id][h_preis]);
hInfo[id][h_text]=Create3DTextLabel(string, COLOR_WHITE, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
}
else
{
hInfo[id][h_pickup]=CreatePickup(1239, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
format(string,sizeof(string), "{FFFFFF}.:{FF9600}Haus Information{FFFFFF}:.\nBesitzer: {FFFFFF}%s\n{FF9600}/enter", hInfo[id][h_besitzer]);
hInfo[id][h_text]=Create3DTextLabel(string, COLOR_WHITE, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
}
return 1;
}Das Pickup wird, bzw. sollte, an der Position erstellt werden, die du eingibst.
Wenn es noch immer nicht in der Datenbank aktualisiert, dann schreibe die Funktion so:
saveHaus(id)
{
new query[256];
mysql_real_escape_string(hInfo[id][h_besitzer], query);
format(query, sizeof(query), "UPDATE haus SET besitzer='%s', h_preis='%i',ih_x='%f',ih_y='%f',ih_z='%f',h_interior='%i' WHERE id='%i'", query, hInfo[id][h_preis], hInfo[id][ih_x], hInfo[id][ih_y], hInfo[id][ih_z], hInfo[id][h_interior], hInfo[id][h_id]);
printf("query: %s", query);
mysql_function_query(dbhandle, query, false, "", "");
return 1;
}Dann poste was im MySQL Log steht, und was im server_log.txt steht (beides!).
-
Teste mal, ob es so geht:
saveHaus(id)
{
new query[256];
mysql_real_escape_string(hInfo[id][h_besitzer], query);
format(query, sizeof(query), "UPDATE haus SET besitzer='%s', h_preis='%i',ih_x='%f',ih_y='%f',ih_z='%f',h_interior='%i' WHERE id='%i'", query, hInfo[id][h_preis], hInfo[id][ih_x], hInfo[id][ih_y], hInfo[id][ih_z], hInfo[id][h_interior], hInfo[id][h_id]);
mysql_function_query(dbhandle, query, false, "", "");
return 1;
}Oder mysql_escape_string falls das andere nicht existiert.
-
Dann schalte bitte mal den MySQL Debug Modus an und poste was im Log steht, wenn du das Interior änderst.
Wie du das machst steht hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4)Und poste die updateHaus Funktion.
-
1.)
Die sscanf Funktion muss vor den Abfragen stehen.
ocmd:knast(playerid,params[])
{
new pID,string[128];
new Float:knasti[3];
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,Color_Green,"/Knast [id][Zeit]");
GetPlayerPos(pID, knasti[0], knasti[1], knasti[2]);
new time = SpielerInfo[pID][pWanteds] * 120;
if(!IsPlayerInRangeOfPoint(playerid, 5.0, knasti[0], knasti[1], knasti[2])) return SendClientMessage(playerid, error, "Du bist nicht in der Nähe des gesuchten!");
if(SpielerInfo[pID][pKnast] != 0)return SendClientMessage(playerid,error,"Dieser Spieler ist bereits im Gefägnis!");
if(SpielerInfo[pID][pWanteds] < 1) return SendClientMessage(playerid, error, "Dieser Spieler wird nicht gesucht!");
if(IsPlayerInRangeOfPoint(playerid, 5.0, 197.6453, 158.3188, 1003.0234) || IsPlayerInRangeOfPoint(playerid, 5.0, 196.7424,179.3564,1003.0234)) return SendClientMessage(playerid, error, "Du bist nicht bei den Zellen!");
{
format(string,sizeof(string),"Du hast %s: für %d Sekunden in den Knast gesteckt.",SpielerName(pID),time);
SendClientMessage(playerid,info,string);
SpielerInfo[pID][pKnast] = 1;
SpielerInfo[pID][pKnastzeitBis] = gettime() + time;
SpielerInfo[pID][pKnastzeit] = time;
SpielerInfo[pID][pWanteds] = 0;
SpielerInfo[pID][pSterne] = 0;
SetPlayerWantedLevel(pID,0);
}
return 1;
}2.)
Nein, das was du da machst bringt nichts.
Wenn, dann müsstest du den SetTimerEx bei OnPlayerConnect starten. -
Mit größter Wahrscheinlichkeit reichen die 128 Zeichen nicht aus.
new query[128];
zu:
new query[256]; -
@Stormi25:
if(IsPlayerConnected(i)) continue;
zu:
if(!IsPlayerConnected(i)) continue; -
Dann muss es so aussehen:
ocmd:setinterior(playerid,params[])
{
if(!isAdmin(playerid,4))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
new tmp_interior, Float:x, Float:y, Float:z;
if(sscanf(params, "fffi",x,y,z,tmp_interior))return SendClientMessage(playerid, COLOR_GREY, "{00A5FF}/setinterior {B3B3B3}[InteriorKoords] [InteriorID]");
for(new i=0; i<sizeof(hInfo); i++)
{
if(!hInfo[i][h_id])continue;
if(!IsPlayerInRangeOfPoint(playerid, 5,hInfo[i][h_x], hInfo[i][h_y], hInfo[i][h_z]))continue;
hInfo[i][h_interior] = tmp_interior;
hInfo[i][h_x] = x;
hInfo[i][h_y] = y;
hInfo[i][h_z] = z;
saveHaus(i);
updateHaus(i);
SendClientMessage(playerid,COLOR_DGREEN,"* Erfolgreich das Interior vom Haus geändert. *");
return 1;
}
return 1;
}