Wird dir etwas im MySQL Log ausgegeben? Schalte gegebenenfalls den Debug Modus an, und poste mal was da ausgegeben wird, wenn du dich einloggst.
EDIT: (Post unten)
@Robert Super, kein Problem! Wenn noch etwas ist, einfach melden. ![]()
Wird dir etwas im MySQL Log ausgegeben? Schalte gegebenenfalls den Debug Modus an, und poste mal was da ausgegeben wird, wenn du dich einloggst.
EDIT: (Post unten)
@Robert Super, kein Problem! Wenn noch etwas ist, einfach melden. ![]()
Ich gebe dir ein paar gute Tipps wie du dir es selbst sehr gut beibringen kannst, so habe ich es zumindest vor knapp 6 Jahren gelernt (von null an, ohne Programmierkenntnisse aus anderen Spachen).
Du solltest dich zu aller erst mit den Grundlagen der Programmierung beschäftigen, bevor du anfängst einen vorhandenen Gamemode zu "vergewaltigen", dazu gehört nämlich ein Grundwissen, welches man sich zuerst aufbauen muss.
Ich erkläre dir mal wie du am besten lernen kannst, damit du in Zukunft auch verstehst, was ein Code ist, und wann du welchen Code benutzen musst.
Also ich habe PAWN gelernt, indem ich mir den LAdmin4v2 (damals sehr neu) genommen habe, und versucht habe, die einzelnen Teile zu verstehen. Dann habe ich einfach losgelegt, und überlegt, welcher Teil das tut, was ich will. Den Code hab ich mir dann angeschaut, und so für den neuen Code verändert, dass er seinen Zweck erfüllt hat.
Wichtig: Fang klein an, jeder tut das, nimm nicht gleich einen Gamemode und verunstalte den, du wirst nichts kapieren. Ich arbeite nun über 5 1/2 Jahre mit PAWN und mein Wissen ist noch lange nicht komplett, im Gegenteil. Auch ich lerne ständig neue Dinge dazu.
Falls dir jemand sagt, du sollst dir die PAWN Doc durchlesen, lass es, genauso rate ich dir davon ab das wiki in allen Einzelteilen durchzulesen. Du wirst es nicht verstehen. Das kannst du in 3 Jahren machen, wenn du es verstehst, und selbst dann wirst du den Großteil in der Pawn Doc nicht auf Anhieb verstehen.
Noch was: Ausprobieren. Du kannst nichts kaputt machen. Das einzige was passieren kann, ist dass du Errors bekommst. Na und? Für was gibt es STRG+Z. Einfach probieren, wenn du nicht weiter kommst, lass es, oder frag nach Hilfe, sofern es im kleinen Bereich ist.
Learning By Doing nennt sich das. Nicht aufgeben, einfach machen machen machen. Das muss nicht immer perfekt sein, und muss auch nicht immer Sinn ergeben, hauptsache du machst was. Zum Anfang kannst du dir z.B. vornehmen, einen FilterScript der hier im Forum veröffentlicht wurde (einen einfachen) nachzumachen. Musst ihn ja nicht auch veröffentlichen, aber nur zur Übung einfach nachmachen. Wenn du hängst, kannst du ja nachsehen, was falsch ist.
Meiner Meinung nach besser als alles andere.
Wie machst du das?
Du suchst dir einen Filterscript der irgendwas macht, sei es ein Auto Spawn Menu.
Schau dir zuerst mal an, was der FilterScript denn machst (z.B. ein Auto-Menu, um Auto's zu spawnen). Dann überlegst du, was du denn alles dafür brauchst, suchst dir die Funktionen zusammen (Google, SAMP Wiki) und legst los so ein Menu zu erstellen. Wenn du irgendwo hängst, kannst du einen Blick in den Code werfen, und ein paar Zeilen, die du denkst zu verstehen abschreiben, dann siehst du ja was passiert.
Am Besten ist es aber, wenn du es ganz ohne in den Code zu schauen hin bekommst, deshalb fang mit leichten Dingen an.
Bis du erst mal richtig rein findest vergehen mit Sicherheit 1-3 Monate! Also nicht verzagen, du wirst am Anfang ziemlich oft stecken bleiben und auf die Nase fallen (ist wie laufen lernen). Ich weiß das von mir. Wenn du einmal drinne bist, dann gehts jeden Tag besser.
PS: Ich hab es ganz alleine gelernt. Die einzige Hilfestellung die ich damals hatte war ein /kill Command aus 6 Zeilen Code, den mir jemand gemacht hat.
Das wichtigste ist: Immer dranbleiben!
Viel Erfolg! ![]()
Das kannst du einfach so lassen. Diese Syntax mit den drei Punkten in der Klammer nach der -1 heißt, dass alle Indizes mit -1 vorbelegt werden.
Versuche es so:
new query[128];
mysql_format(dbhandle, query, sizeof(query), "SELECT COUNT(*) AS play FROM user WHERE allowed = '1' OR allowed = '0'");
mysql_query(dbhandle, query);
new zaehler = cache_get_field_content_int(0, "play", dbhandle);
Das ist allerdings die "langsame" Variante. Besser wäre es über ein Callback zu arbeiten, falls möglich:
new query[128];
mysql_format(dbhandle, query, sizeof(query), "SELECT COUNT(*) AS play FROM user WHERE allowed = '1' OR allowed = '0'");
mysql_pquery(dbhandle, query, "OnPlayCount", "");
Da sind einige dieser Fehlerhaften Klammern drin gewesen.
Ich habe diese Masse an Klammern entfernt und es dir etwas besser strukturiert.
Außerdem war es nicht nötig vier so große string-Arrays zu deklarieren.
EDIT: Pastebin: http://pastebin.com/F6KewMdE
public ShowStats(playerid)
{
if(!IsPlayerConnected(playerid)) return 1;
new Geschlecht[16], Donator[16], Fraktion[18], Rang[64], Gwd[18];
if(GetPVarInt(playerid, "Geschlecht") == 1) Geschlecht = "Männlich";
else if(GetPVarInt(playerid, "Geschlecht") == 2) Geschlecht = "Weiblich";
if(GetPVarInt(playerid, "Donator") == 0) Donator = " - ";
else if(GetPVarInt(playerid, "Donator") == 1) Donator = "Premium Classic";
else if(GetPVarInt(playerid, "Donator") == 2) Donator = "Premium Gold";
if(GetPVarInt(playerid, "Grundwehrdienst") == 0) Gwd = "Nicht geleistet";
else if(GetPVarInt(playerid, "Grundwehrdienst") == 1) Gwd = "Geleistet";
switch(GetPVarInt(playerid, "Fraktion"))
{
case 0:
{
Fraktion = "Zivilist";
Rang = " - ";
}
case 1:
{
Fraktion = "Pannenhilfe LS";
switch(GetPVarInt(playerid, "Rang"))
{
case 1: Rang = Oamt_Rang1;
case 2: Rang = Oamt_Rang2;
case 3: Rang = Oamt_Rang3;
case 4: Rang = Oamt_Rang4;
case 5: Rang = Oamt_Rang5;
case 6: Rang = Oamt_Rang6;
case 7: Rang = Oamt_Rang7;
case 8: Rang = Oamt_Rang8;
case 9: Rang = Oamt_Rang9;
default: Rang = Oamt_Rang0;
}
}
case 2:
{
Fraktion = "Los Santos Police";
}
case 3:
{
Fraktion = "National Garde LV";
}
}
new Geld = GetPlayerMoney(playerid);
new Kontostand = GetPVarInt(playerid, "Kontostand");
new Telefonnummer = GetPVarInt(playerid, "Telefonnummer");
new Respektpunkte = GetPVarInt(playerid, "Respektpunkte");
new Level = GetPlayerScore(playerid);
new Wanted = GetPlayerWantedLevel(playerid);
new Warns = GetPVarInt(playerid, "Ingamewarns");
new Coins = GetPVarInt(playerid, "Coins");
new Verkehrspunkte = GetPVarInt(playerid, "Verkehrspunkte");
new string[1024];
format(string, sizeof(string), "Personalien:\n\nName: %s\nLevel %d\nGeschlecht: %s\nBargeld: %d\nBankkonto: %d\nTelefonnummer: %d\n\n\n", SpielerName(playerid), Level, Geschlecht, Geld, Kontostand, Telefonnummer);
format(string, sizeof(string), "%sAllgemeine Informationen:\n\nGrundwehrdienst: %s\nPremium: %s\nIngamewarns: %d / 3\nRespektpunkte %d\nCoins: %d\n\n\n", string, Gwd, Donator, Warns, Respektpunkte, Coins);
format(string, sizeof(string), "%sRestliche Informationen:\n\nFraktion: %s\nRang: %s\nVerkehrspunkte: %d\nWanteds: %d", string, Fraktion, Rang, Verkehrspunkte, Wanted);
ShowPlayerDialog(playerid, DIALOG_STATISTIKEN, DIALOG_STYLE_MSGBOX, "Deine Statistik", string, "Schließen", "");
return 1;
}
Alles anzeigen
Die Health und die Armour werden zwar in Kommazahlen angegeben und ausgegeben, allerdings nehmen sie immer nur ganze Zahlen als Wert an, sprich x.0. Daher ist der kleinste Schritt den du machen kannst 1.0.
Geht leider weiterhin nicht.
Dann liegt der Fehler weiter unten im Code. Poste bitte den ganzen Befehl.
if(GetPVarInt(playerid, "Fraktion") == 0)
{
Fraktion = "Zivilist";
Rang = " - ";
}
else
{
if(GetPVarInt(playerid, "Fraktion") == 1) { Fraktion = "Pannenhilfe LS"; }
if(GetPVarInt(playerid, "Rang") == 1) { Rang = Oamt_Rang1; }
else if(GetPVarInt(playerid, "Rang") == 2) { Rang = Oamt_Rang2; }
else if(GetPVarInt(playerid, "Rang") == 3) { Rang = Oamt_Rang3; }
else if(GetPVarInt(playerid, "Rang") == 4) { Rang = Oamt_Rang4; }
else if(GetPVarInt(playerid, "Rang") == 5) { Rang = Oamt_Rang5; }
else if(GetPVarInt(playerid, "Rang") == 6) { Rang = Oamt_Rang6; }
else if(GetPVarInt(playerid, "Rang") == 7) { Rang = Oamt_Rang7; }
else if(GetPVarInt(playerid, "Rang") == 8) { Rang = Oamt_Rang8; }
else if(GetPVarInt(playerid, "Rang") == 9) { Rang = Oamt_Rang9; }
else { Rang = Oamt_Rang0; }
if(GetPVarInt(playerid, "Fraktion") == 2) { Fraktion = "Los Santos Police"; }
}
Alles anzeigen
So sollte es dann passen.
Es gibt ja immer noch die möglichkeit von Bots.
Das war ja die Frage, ob die NPC Bots gegen Actors getauscht werden können. Steht im ersten Satz ![]()
Seitenzahltab
Ahh das. Ist bei mir beim breadfish.de Design auch so. Bei den anderen beiden nicht.
Ich nehme es in die Liste auf.
Tab zahl klickbar
Was meinst du?
Mit dem MapAndreas Plugin kannst du von einer Position in der Luft auf die am Boden zurückschließen.
http://forum.sa-mp.com/showthread.php?t=275492
1) Actors kann man nur mit Animationen bewegen, aber deren Position durch Animationen zu verändern ist nicht empfohlen, da dies nicht synchronisiert wird.
2) Ja, da die Actors nur an einer Position stehen sollen, kannst du das Label direkt an deren Position (etwas höher) erstellen.
Nach TogglePlayerSpectating(playerid,0); wird OnPlayerSpawn erneut aufgerufen, daher ist meine Vermutung, dass dies das Interior zurück setzt.
Alternativ kannst du einen kurzen (1 Sekunde) Timer bei dem Dialog starten (SetTimerEx) und in dem public dann die Position nochmals setzen, damt interior etc. Dann sollte es auch passen.
Setze die Position, Interior, ... bei OnPlayerSpawn nochmals.
Ok, dann das Callback so:
public OnPlayerEnterDynamicVehicle(playerid, vehicleid, ispassenger)
{
for(new i=0; i<MAX_AUTOHAUSCA; i++)
{
printf("vehicleid: %d | fahrzeugerstellt: %d", vehicleid, AInfo[i][fahrzeugerstellt]);
if(vehicleid == AInfo[i][fahrzeugerstellt])
{
new stringauto[512];
printf("%d -> %s",vehicleid, VehicleName[GetDynamicVehicleModel(vehicleid)-400]);
format(stringauto,sizeof(stringauto),"{C30000}Fahrzeugname: {FAFAFA}%s\n{C30000}Preis: {FAFAFA}%.2f$\n{C30000}Tankvolumen: {FAFAFA}%.2f\n{C30000}Tankart: {FAFAFA}%s\n\nWillst du dieses Fahrzeug kaufen?",VehicleName[GetDynamicVehicleModel(vehicleid)-400],AInfo[i][fahrzeugpreis],GetGasMax(GetDynamicVehicleModel(vehicleid)),GetPlayerDynamicVehicleType(vehicleid));
ShowPlayerDialog(playerid,DIALOG_KAUFAUTO,DIALOG_STYLE_MSGBOX,"Autohaus",stringauto,"Kaufen","Abbrechen");
break;
}
}
return 1;
}
Alles anzeigen
Und füge diese neue Funktion in deinen Gamemode ein:
GetPlayerDynamicVehicleType(vehicleid)
{
new vtext[20];
format(vtext, sizeof(vtext), "Unbekannt");
new vv = GetDynamicVehicleModel(vehicleid);
if(vv == 400 || vv == 406 || vv == 413 || vv == 414 || vv == 422 || vv == 423
|| vv == 424 || vv == 427 || vv == 428 || vv == 430 || vv == 431 || vv == 432
|| vv == 433 || vv == 434 || vv == 437 || vv == 440 || vv == 442 || vv == 444
|| vv == 446 || vv == 452 || vv == 453 || vv == 455 || vv == 456 || vv == 459
|| vv == 470 || vv == 476 || vv == 477 || vv == 478 || vv == 479 || vv == 482
|| vv == 486 || vv == 495 || vv == 498 || vv == 499 || vv == 500 || vv == 508
|| vv == 525 || vv == 526 || vv == 527 || vv == 529 || vv == 530 || vv == 531
|| vv == 533 || vv == 536 || vv == 540 || vv == 543 || vv == 546 || vv == 547
|| vv == 550 || vv == 551 || vv == 552 || vv == 554 || vv == 556 || vv == 557
|| vv == 562 || vv == 560 || vv == 561 || vv == 565 || vv == 566 || vv == 572
|| vv == 574 || vv == 576 || vv == 578 || vv == 579 || vv == 580 || vv == 582
|| vv == 583 || vv == 585 || vv == 589 || vv == 600 || vv == 411 || vv == 415 || vv == 429 || vv == 480 || vv == 451 || vv == 539 || vv == 541
|| vv == 567 || vv == 568 || vv == 571 || vv == 581 || vv == 586 || vv == 604 || vv == 461 || vv == 463 || vv == 468 || vv == 494
|| vv == 502 || vv == 503 || vv == 506 || vv == 521 || vv == 522
|| vv == 523 || vv == 534 || vv == 535 || vv == 542 || vv == 549
|| vv == 555 || vv == 558 || vv == 559 || vv == 587 || vv == 602)
{
vtext = "Diesel";
}
else if(vv == 401 || vv == 402 || vv == 403 || vv == 404
|| vv == 405 || vv == 408 || vv == 409 || vv == 410 || vv == 412 || vv == 416
|| vv == 418 || vv == 419 || vv == 420 || vv == 421 || vv == 426 || vv == 436
|| vv == 438 || vv == 439 || vv == 443 || vv == 445 || vv == 448 || vv == 454
|| vv == 457 || vv == 458 || vv == 462 || vv == 466 || vv == 467 || vv == 471
|| vv == 472 || vv == 473 || vv == 474 || vv == 475 || vv == 483 || vv == 484
|| vv == 485 || vv == 489 || vv == 490 || vv == 491 || vv == 492 || vv == 493
|| vv == 496 || vv == 504 || vv == 505 || vv == 507 || vv == 514 || vv == 515
|| vv == 516 || vv == 517 || vv == 518 || vv == 524 || vv == 528 || vv == 532
|| vv == 545 || vv == 573 || vv == 575 || vv == 588 || vv == 595 || vv == 596
|| vv == 597 || vv == 598 || vv == 599 || vv == 537 || vv == 601
|| vv == 603 || vv == 417 || vv == 425 || vv == 460 || vv == 469 || vv == 487
|| vv == 488 || vv == 497 || vv == 511 || vv == 512
|| vv == 513 || vv == 519 || vv == 520 || vv == 548
|| vv == 553 || vv == 563 || vv == 577 || vv == 592 || vv == 593)
{
vtext = "Benzin";
}
return vtext;
}
Alles anzeigen
Ok.
Poste bitte deine GetPlayerVehicleType und die GetGasMax Funktion.