Beiträge von Jeffry
-
-
Das passt dann eigentlich so.
Du kannst höchstens mal versuchen das "L" klein zu schreiben, am Anfang des Befehls.Steht der Befehl im gleichen Code drin (Gamemode)?
Setze eventuell mal einen print an die erste Stelle im Befehl und schaue, ob der im Log ausgegeben wird. Wenn nicht, dann wird der Befehl gar nicht aufgerufen.
Ist deine ocmd Include aktuell? Aktualisiere sie eventuell.
-
Wie sieht der funktionierende Befehl aus? Kannst du den bitte mal posten?
-
Dann nutzt du veraltete Includes in deinem Server.
Lade dir hier dir aktuellen herunter:
http://www.sa-mp.com/download.php (Windows Server)Füge diese dann in deinen Server Ordner unter /pawno/includes ein und öffne anschließend die pawno.exe im /pawno/ Ordner deines Servers.
-
1.
Wie ist das Array "busline" deklariert?2.
Ändere bitte im obigen Code von mir in Zeile 164:
SetPVarInt(playerid, "cpID", 0);
zu:
SetPVarInt(playerid, "cpID", id);3.
Der Fehler von Linie 2 ist mir nicht ganz nachvollziehbar.
Kannst du dein aktuelles OnPlayerEnterCheckpoint bitte posten? -
Deswegen wollte ich Fragen, ob man eine Nachricht auch transparent machen kann, damit der Timestamp auch transparent ist und das Textdraw nicht verdeckt.
Nein das geht nicht.
-
Das Array EventTeleportX auch?
-
Sind beide Variablen mit Float: deklariert? Wenn nicht, mache das.
-
Was sagt der MySQL Log, wenn versucht wird, die Verbindung herzustellen?
-
mysql_format(handle,query,sizeof(query),"SELECT id FROM Accounts WHERE Name = ´%e´ ",sInfo[playerid][Name]);
Zu
mysql_format(handle,query,sizeof(query),"SELECT id FROM Accounts WHERE Name = '%e'",sInfo[playerid][Name]);Ebenfalls bei SaveUserStats die ` zu ' ändern, bei den Platzhaltern (%d, %e, ...).
-
Sieht der Code noch genau so aus wie ich ihn dir gegeben habe, oder hast du etwas dran geändert?
-
if(GetPlayerWeapon(playerid) != 41) return SendClientMessage(playerid, FARBE, "Du hast keine Spraydose in der Hand!");
-
Es sollte diese Nachricht ausgegeben werden:
format(str, sizeof(str), "((Job)) Du hast die %s beendet und bekommst %d Skillpunkt(e) und $%d beim nächsten Payday gutgeschrieben.", blInfo[linie][name], blInfo[linie][skill], blInfo[linie][income]);Und dem Spieler das Geld und die Skills gegeben werden (Zeile 72 bis 85 im Code von mir).
-
Versuche es so:
enum busInfo
{
name[64],
skill,
income
}
enum busstationInfo
{
lid,
Float:l_x,
Float:l_y,
Float:l_z,
stationname[64],
l_id
}
new blInfo[][busInfo] =
{
{"C1 Los Santos",1,1600}, //Buslinie 1
{"L1 Red County",2,2100} //Buslinie 2
};
new bsInfo[][busstationInfo] =
{
//C1 Los Santos
//Citylinie C1
{0,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"},
{0,1492.7709,-1735.4004,13.5162,"Stadthalle"},
{0,1824.7155,-1654.6996,13.5162,"Club Alhambra"},
{0,1999.0885,-1468.8470,13.5239,"County General Hospital"},
{0,2098.6843,-1721.6963,13.5221,"Idlewood"},
{0,2321.6360,-1662.3466,14.0043,"GrooveStreet"},
{0,2240.4653,-1381.0345,23.9642,"Jefferson Church"},
{0,1936.8986,-1132.5551,25.3708,"Glen Park"},
{0,1463.1041,-1030.8983,23.7896,"Opera House"},
{0,1186.9722,-935.7852,42.8822,"Burger Shot North"},
{0,794.3947,-1352.1207,13.5213,"Market Station"},
{0,334.2658,-1538.9817,33.3820,"Rodeo"},
{0,863.7578,-1592.1945,13.4894,"Los Santos Marina"},
{0,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"},//Buslinie L1
{1,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"},
{1,412.2734,-1699.2111,9.2966,"Santa Maria Beach"},
{1,120.6130,-1535.1813,7.6868,"Los Santos Rodeo"},
{1,-108.3504,-1162.1759,2.4750,"Flint County"},
{1,-200.9118,-315.8221,1.2331,"Blueberry Industriepark"},
{1,42.1276,-213.2097,1.5676,"Blueberry Transport AG"},
{1,235.9211,-16.5521,1.5301,"Blueberry North"},
{1,701.3684,311.4853,19.9844,"Hampton Burns"},
{1,1296.1891,319.0197,19.5087,"Montgomery"},
{1,2290.5161,60.8486,26.4356,"Palomino Creek"},
{1,1551.5598,120.3831,29.5524,"Red County"},
{1,678.4969,-582.1321,16.2911,"Dillimore"},
{1,794.7361,-1351.5454,13.4874,"Los Santos Market Station"},
{1,863.7578,-1592.1945,13.4894,"Los Santos Marina"},
{1,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"}
};public OnPlayerEnterCheckpoint(playerid)
{
if(pInfo[playerid][onjob])
{
new vID = GetPlayerVehicleID(playerid);
if(GetPVarInt(playerid, "bus") == vID)
{
new cpID = GetPVarInt(playerid, "cpID");
if(IsPlayerInRangeOfPoint(playerid,5,bsInfo[cpID][l_x], bsInfo[cpID][l_y], bsInfo[cpID][l_z]))
{
cpID++;
new linie = GetPVarInt(playerid, "linie");
if(cpID >= sizeof(bsInfo) || bsInfo[cpID][lid] != linie)
{
pInfo[playerid][bank] += blInfo[linie][income];
pInfo[playerid][skill1] += blInfo[linie][skill];
DisablePlayerCheckpoint(playerid);
Update3DTextLabelText(busline[vID],COLOR_WHITE,"Leerfahrt");
new str[145];
format(str, sizeof(str), "((Job)) Du hast die %s beendet und bekommst %d Skillpunkt(e) und $%d beim nächsten Payday gutgeschrieben.", blInfo[linie][name], blInfo[linie][skill], blInfo[linie][income]);
SendClientMessage(playerid,COLOR_BLUE,str);
SetPVarInt(playerid, "cpID", 0);
SetPVarInt(playerid, "bus", 0);
pInfo[playerid][onjob] =false;
}
else
{
SetPlayerCheckpoint(playerid, bsInfo[cpID][l_x], bsInfo[cpID][l_y], bsInfo[cpID][l_z], 5);
SetPVarInt(playerid, "cpID", cpID);
}
}
}
else
{
SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du sitzt nicht im Fahrzeug, mit dem du die Linie gestartet hast.");
SetPVarInt(playerid, "cpID", 0);
SetPVarInt(playerid, "bus", 0);
pInfo[playerid][onjob] =false;
DisablePlayerCheckpoint(playerid);
}
return 1;
}
DisablePlayerCheckpoint(playerid);
return 1;
}public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_SUBMISSION)
{
if(!IsPlayerInAnyVehicle(playerid))return 1;
if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR_YELLOW,"((Info)) Du bist nicht der Fahrer eines Fahrzeugs!");
for(new i=0; i<sizeof(BusVehs); i++)
{
if(GetPlayerVehicleID(playerid) == BusVehs[i])
{
if(pInfo[playerid][onjob]==true)
{
pInfo[playerid][onjob]=false;
SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du bist jetzt nicht mehr auf Linie!");
Update3DTextLabelText(busline[i],COLOR_WHITE,"Leerfahrt");
DisablePlayerCheckpoint(playerid);
return 1;
}
else
{
new str[128];
format(str,sizeof(str),"%s\t[%i]\t%i $\n%s\t[%i]\t%i $\nEventfahrt\t[0]\t0 $[Wird vom Eventbetreiber bezahlt]",blInfo[0][name],blInfo[0][skill],blInfo[0][income],blInfo[1][name],blInfo[1][skill],blInfo[1][income]);
ShowPlayerDialog(playerid,DIALOG_BUSLINE,DIALOG_STYLE_TABLIST,"Buslinien",str,"Schliessen","Okay");
return 1;
}
}
}
}
return 1;
}public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DIALOG_BUSLINE)
{
//Buslinien 0 und 1:
if(listitem == 0 || listitem == 1)
{
for(new i=0; i<sizeof(BusVehs); i++)
{
if(GetPlayerVehicleID(playerid) == BusVehs[i])
{
pInfo[playerid][onjob]=true;
new buslinie = listitem;
new vID = GetPlayerVehicleID(playerid);
SetPVarInt(playerid, "bus", vID);
format(str, sizeof(str), "((Info)) Du bist jetzt auf der Linie '%s' unterwegs!", blInfo[buslinie][name]);
SendClientMessage(playerid,COLOR_BLUE,str);
Update3DTextLabelText(busline[i],COLOR_TURQUOISE,blInfo[buslinie][name]);
new id = 0;
for(id = 0; id < sizeof(bsInfo); id++) if(bsInfo[id][lid] == busline) break;
SetPlayerCheckpoint(playerid, bsInfo[id][l_x], bsInfo[id][l_y], bsInfo[id][l_z], 4);
new text[128];
format(text,sizeof(text),"Nächste Haltestelle: %s",bsInfo[id][stationname]);
SendClientMessage(playerid,COLOR_TURQUOISE,text);
SetPVarInt(playerid, "cpID", 0);
SetPVarInt(playerid, "linie",buslinie);
}
}
}
if(listitem==2)
{
//Eventfahrt
if(eventactive==false) return SendClientMessage(playerid,COLOR_BLUE,"((Info)) Kein Event ist aktiv!");
for(new i=0; i<sizeof(BusVehs); i++)
{
if(GetPlayerVehicleID(playerid) == BusVehs[i])
{
pInfo[playerid][onjob]=true;
SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du bist jetzt auf der Linie 'Eventfahrt' unterwegs!");
Update3DTextLabelText(busline[i],COLOR_ORANGE,"Eventfahrt");
}
}
}
}
return 1;Schaue dir bitte den Code an und frage nach, falls du etwas davon nicht verstehst.
Prinzipiell geht der Code beim Dialog so vor, dass er anhand des listitems in der Liste mit den ganzen Stationen den ersten Checkpoint mit der Linien-ID sucht und den anzeigt.
Im Checkpoint wird dann geprüft, ob der letzte Checkpoint erreicht wurde (nächste Linien-ID ungleich aktueller ID).
Die Nachrichten werden dynamisch angezeigt, somit musst du den Code nicht jedes mal kopieren, sondern kannst ihn so lassen. -
Habe sonst garnichts geändert deswegen frage ich mich woher das kommt...
Öffne die pawno.exe die sich im Server Ordner des Gamemodes befindet (/pawno/pawno.exe) und wähle den Gamemode über die "öffnen" Funktion aus, dann werden die korrekten Includes gezogen.
-
Sollen die Linien immer gleich viele Haltestellen (Checkpoints) haben, oder haben sie unterschiedlich viele?
-
Dann versuche es hiermit:
http://forum.sa-mp.com/showthread.php?t=436431 -
Nein, das ist falsch.
Nutze dafür am besten einen Streamer, dann brauchst du dir darum keine Gedanken machen. Ich empfehle dir das Streamer Plugin.Manuell würde es so aussehen:
SetPlayerCheckpoint(...);
Jobcp[playerid] = 1;
Die Abfrage für genau diesen Checkpoint wäre dann:
if(Jobcp[playerid] == 1)Alternativ kannst du anstatt 1 es auch über defines machen, wie bei Dialogen.
#define CP_START 1Wie aber gesagt, über einen Streamer ist es wesentlich geschickter.
-
Füge ganz unten
#pragma unused M_Connect
ein.Zwecks den Plugins:
Installiere dir dieses All in One Paket:
http://www.chip.de/downloads/A…ne-Runtimes_37449838.html -
Erzeuge keine zweite Variable (query2), sondern nutze die Variable query einfach nochmal, nachdem du das erste Query abgesendet hast.
Zu viele lokale Variablen, und zu große, sind schlecht. Hier musst du deshalb sparsamer umgehen.