Das zieht 400 von der mID ab, da diese ja erst ab 400 anfangen, die Indizes von VehicleNames (Array mit den Fahrzeugnamen) aber ab 0 beginnen.
Sonst wird das Array gesprengt.
Beiträge von Jeffry
-
-
format(tcn, sizeof(tcn), "%s", VehicleNames[mID]);
zu:
format(tcn, sizeof(tcn), "%s", VehicleNames[mID-400]); -
Schreibe den Code zu OnPlayerStateChange, da bei OnPlayerEnterVehicle der GetPlayerState noch außerhalb des Fahrzeugs ist.
OnPlayerEnterVehicle wird genau dann aufgerufen, wenn du die Taste zum Einsteigen drückst, da bist du ja noch nicht im Fahrzeug. -
Bei Sekunde wird nur ein % angezeigt
Sorry, das "d" dahinter ging irgendwie unter. Hab's editiert.
-
forward UpdateUhrzeit();
public UpdateUhrzeit()
{
new hour,minute,sec,string[16];
gettime(hour,minute,sec);
format(string,sizeof(string),"%02d:%02d:%02d",hour,minute,sec);
for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && !IsPlayerNPC(i)) PlayerTextDrawSetString(i, TimeDraw[i], string);
SetWorldTime(hour);
return 1;
}Timer bei OnGameModeInit so starten:
SetTimer("UpdateUhrzeit", 333, true);
333 entspricht einer drittel Sekunde, so läuft der Sekundenzähler recht flüssig und überspringt keine Zahl. -
Gehört noch restauriert, aber wenn wir das erledigt haben, dann beginnt eine geile Zeit
Nice! Der macht richtig was her!
Musst auf jeden Fall gute vorher/nachher Bilder machen (gleiche Blickwinkel etc) und die dann posten! -
Das wäre ohne Include - Änderung nicht möglich seitens ocmd
Nein?
ocmd@4:help,hilfe,needhelp,sup(playerid, params[])
{
//CODE
}
ocmd@2:cmds,commands(playerid, params[]) return ocmd_help(playerid, params); -
Oder man benutzt einfach die durch die Include (zcmd) bereitgestellten Callbacks OnPlayerCommandReceived() und OnPlayerCommandPerformed() , die den gleichen Funktionsumfang wie OnPlayerCommandText haben
Das geht ebenfalls.
Ich würde dennoch ocmd empfehlen, da es flexibler einsetzbar ist (z.B. mehrere Befehle mit gleicher Funktion [z.B. /hilfe, /help] in einen Befehl packen).
-
Es klappt so wen ich jetzt ein acc anlege wird in der db nichts angezeigt bei newpasswort das was ich vorhin drinn hatte war in der datenbank das passwort drinne? (gehascht)
1. Nutze bitte Punkte zwischen deinen Sätzen, das versteht man sonst erst nach drei mal lesen!
2.
Lass dir das Query bitte mal per print ausgeben, was da drin steht:
printf("query = %s", query);"
Was steht so im Server Log? -
Ich arbeite gerade mit der neusten Version MySQL R41-2.
In der Version gibt es diese Funktion nicht mehr.
Nutze stattedessen:
new count ;
cache_get_value_name_int(0, "count", count); -
Hey ich wollte gerade mein Script auf mein Server laden aber iwie funktioniert es doch nicht
Versuche es so:
#define MYSQL_HOST "127.0.0.1"
#define MYSQL_USER "root"
#define MYSQL_PASS ""
#define MYSQL_DBSE "testdb"PS: Fragen zum aktuellen MySQL Plugin, bzw. dem Code aus meinem Tutorial am besten direkt im Tutorial stellen, dann geht es nicht unter.
[jTuT] MySQL R41 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System) -
new md5hash[128];
WP_Hash(md5hash, sizeof(md5hash), inputtext);//25523
mysql_format(myCon, query, sizeof(query), "UPDATE `script_accounts` SET NewPasswort='%e' WHERE `Name`='%s'", md5hash, GetName(playerid)); //25524
mysql_tquery(myCon, query, "", ""); -
Das stimmt nicht.
Doch, da zcmd sich per Hook vor die strcmp Befehle schält, aber OnPlayerCommandText nach seinem Coding nicht mehr aufruft.
Somit werden die strcmp Befehle nicht ausgeführt.Nutze besser ocmd, wie XeroX schon sagte - das führt auch die strcmp Befehle weiterhin problemlos aus.
ocmd 2.1.1 [ Update 3.11.2013 ]Alternativ könnte man zcmd dazu bringen, OnPlayerCommandText danach wieder aufzurufen, das würde ich aber nicht machen, und empfehle ich auch nicht.
Empfehlung ist ocmd zu nutzen. -
Ah okay, ich verstehe... Aber wenn man richtige Abfragen bei den Automaten & den Pay n Sprays hinzufügt, dann ist das normale Geldsystem doch theoretisch sicher oder?
Wenn du alles korrekt abfragst, und jeweils die Geld-Änderungen beachtest, theoretisch ja. Nur ist das eben ein ziemlicher Aufwand, alles zu 100% zu erkennen.
Praktisch kann es immer noch sein, dass die Synchronisation zwischen Spieler und Server nicht richtig funktioniert und das Geld sich nicht ändert, ohne dass der Spieler einen Cheat nutzt.
Dies gilt es auch zu beachten.Wie könnte man es anstellen? Kannst du mir eventuell ein Ansatz geben?
Einen Ansatz gibt es nicht wirklich dazu. Es muss einfach jede einzelne Möglichkeit, die Geld gibt und abzieht - am Coding vorbei - abgefragt werden. Hierzu gibt es in manchen Fällen bereits Releases, in manchen aber auch nicht.
Beispiel: http://forum.sa-mp.com/showthread.php?t=367838
Wobei es noch sicherer wäre, die Position zusätzlich zu prüfen.Da gibt es viele..hier ein Beispiel: forum.sa-mp.com/showthread.php?t=71136
Sorry, aber das ist totaler Schrott und hat nicht im Entferntesten was mit einem seriösen Anti-Money-Hack zu tun.
-
Gibt es da eine simple Lösung?
Nein, außer du blockierst alles, was dir vom Spiel her Geld gibt bzw. Geld abzieht (Ammu-Nation, Casino, Stunt Bonus, Restaurants, Pay'N'Spray, ...).
Andernfalls ist es ziemlich aufwändig, alle Eventualitäten abzufangen.Ich habe auf meinem Server die Anti-Money-Hack Funktion über Jahre immer wieder verbessert und erweitert, eine 100%'ige Sicherheit kann aber nicht gewährleistet werden, vor allem wenn man sein Geld einfriert und Geld an Stationen ausgibt, die nicht Code-Seitig (oben genannte) das Geld abziehen.
-
Wie mache ich das am besten wenn ich an einem Automaten mein Leben healen will ? Gibt es ne bestimmte funktion die abfragt ob was ausm automat genommen wird oder nich t?
Hier noch zwei weitere Beispiele:
http://forum.sa-mp.com/showthread.php?t=490436 (GitHub Download geht)Oder:
http://forum.sa-mp.com/showthread.php?t=367838Beides mal wird kein YSI vorausgesetzt.
-
Momentan kommt das was ich gepostet habe
Welche kommen, wenn du die mysql_static.so nutzt?
-
@Jeffry Okay & wenn ich nur abfragen will ob er irgendwo am Auto steht und auf das Auto schaut? In meiner Funktion ist es im moment nicht notwendig das er am Kofferraum steht, war nur ein Beispiel.
Das kannst du dann mit dieser Funktion machen:
http://wiki.sa-mp.com/wiki/GetPlayerCameraTargetVehicle -
Nope, keinerlei Änderung, auch wenn ich es als
Nutze "inputtext":
case DIALOG_TAFELEINSTEXT:
{
if(response)
{
if(strlen(inputtext) && strlen(inputtext) > 60)
{
new string[128];
new wtafel = TafelID[playerid];
if(!IsPlayerInRangeOfPoint(playerid,50.0,Werbetafeln[wtafel][wtafelx],Werbetafeln[wtafel][wtafely],Werbetafeln[wtafel][wtafelz]))return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht an der angegebenen Werbetafel!");
format(string,sizeof(string),"Du hast den Text der Werbetafel %i auf '%s' umgeändert.",wtafel,inputtext);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
format(Werbetafeln[wtafel][wtafeltext],60,inputtext);
DestroyDynamicObject(Werbetafelobject[wtafel]);
Werbetafelobject[wtafel] = CreateDynamicObject(Werbetafeln[wtafel][wtafelobjectid],Werbetafeln[wtafel][wtafelx],Werbetafeln[wtafel][wtafely],Werbetafeln[wtafel][wtafelz],Werbetafeln[wtafel][wtafelxrot],Werbetafeln[wtafel][wtafelyrot],Werbetafeln[wtafel][wtafelzrot]);
SetDynamicObjectMaterialText(Werbetafelobject[wtafel],Werbetafeln[wtafel][wtafeltmindex],Werbetafeln[wtafel][wtafeltext],Werbetafeln[wtafel][wtafeltmsize],Werbetafeln[wtafel][wtafeltfonts],Werbetafeln[wtafel][wtafeltfontsize],Werbetafeln[wtafel][wtafeltbold],Werbetafeln[wtafel][wtafeltfontcolor],Werbetafeln[wtafel][wtafeltbackcolor],Werbetafeln[wtafel][wtafeltaligment]);
}
}
} -
Allerdings gebe ich den Health nicht mehr an außer in OnPlayerSpawn
Doch, bei OnPlayerConnect.
Setze es in OnPlayerConnect auf 0, dann tritt der Fehler nicht mehr auf.