[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ich empfehle dir mysql_pquery zu benutzen [wiki]MySQL/R33#mysql_pquery[/wiki]


    Falls du jedoch weiterhin mysql_query benutzen willst, versuch mal



    format(dbstring, sizeof(dbstring), "SELECT ID FROM `"CHARAKTERTABLE"` WHERE AccountID = '%d' AND CHAR = '%d'", AccountID,charid);
    new Cache:Result = mysql_query(DB_Main,dbstring,true);
    new num_rows, num_fields;
    cache_get_data(num_rows, num_fields);
    printf(dbstring);
    printf("DB_Check_Charakter: %d | %d",num_rows,num_fields);
    cache_delete(Result);

  • Ich empfehle dir mysql_pquery zu benutzen MySQL/R33#mysql_pquery


    Falls du jedoch weiterhin mysql_query benutzen willst, versuch mal

    Danke, leider hatte das zum selben Ergebnis geführt bzw. das mit new Cache.
    Habe den fehler behoben irgendwie war der Name "CHAR" in der DB als ein Standardwert von der Datenbank aus vergeben.
    Habe das nun auf Charakter geändert und damit geht es jetzt.

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • Wieso wird immer CJ angezeigt wenn ich als TextdrawObject id 369 drinne hab?(Infarot) Ich habe schon überall nachgeschaut, Es wird nirgends die ID 0 abgefragt also CJ ?

    Zeig doch mal deinen Code, dann kann man dir besser helfen :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Beitrag von German_ScripterHD ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Zeig doch mal deinen Code, dann kann man dir besser helfen :)

    else if(!strcmp(WaffenDaten[playerid][w_1Extra2], "ThermalGerät"))//ist in einem Stock drin, wo halt abgefragt hat wenn er diesen Extra ausgewählt hat, dass dann das als Bild angezeigt wird.
    {
    PlayerTextDrawSetPreviewModel(playerid, Textdraw55[playerid], 369);
    PlayerTextDrawTextSize(playerid, Textdraw55[playerid], 68.000000, 23.000000);
    PlayerTextDrawSetPreviewRot(playerid, Textdraw55[playerid], -1.000000, 0.000000, 36.000000, 0.610328);


    //Textdraw55
    Textdraw55[playerid] = CreatePlayerTextDraw(playerid, 51.500000, 215.977798, "");//Extra2
    PlayerTextDrawLetterSize(playerid, Textdraw55[playerid], 0.000000, 0.000000);
    PlayerTextDrawTextSize(playerid, Textdraw55[playerid], 67.000000, 25.000000);
    PlayerTextDrawAlignment(playerid, Textdraw55[playerid], 1);
    PlayerTextDrawColor(playerid, Textdraw55[playerid], -1);
    PlayerTextDrawSetShadow(playerid, Textdraw55[playerid], 0);
    PlayerTextDrawSetOutline(playerid, Textdraw55[playerid], 0);
    PlayerTextDrawBackgroundColor(playerid, Textdraw55[playerid], 0);
    PlayerTextDrawFont(playerid, Textdraw55[playerid], 5);
    PlayerTextDrawSetProportional(playerid, Textdraw55[playerid], 0);
    PlayerTextDrawSetShadow(playerid, Textdraw55[playerid], 0);
    PlayerTextDrawSetPreviewRot(playerid, Textdraw55[playerid], 0.000000, 0.000000, 0.000000, 0.516431);
    //Es gibt ja mehrere Extra 2 und oben habe ich halt alle Spezielen Sachen drinne wie Rotation usw. -> Die anderen gehen ja bloss nur hier wird immer wieder CJ angezeigt
    }

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Hey,


    wie kann ich, wenn ich ein Timer verwende um etwas bestimmtes für X Sekunden zu verhindern ausgeben wie lange man noch warten muss?
    Sprich, das sich die Zeit immer aktuallisiert.


    Beispiel:


    Du musst noch 10 Sekunden warten..
    Du musst noch 5 Sekunden warten etc.


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Beitrag von Dog ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Das kannst du so machen:
    Unter den Includes:
    new befehlBlocked[MAX_PLAYERS];


    In dem Befehl:
    if(befehlBlocked[playerid] > gettime())
    {
    new str[145];
    format(str, sizeof(str), "Error: Du kannst diesen Befehl erst in %ds wieder nutzen.", befehlBlocked[playerid]-gettime());
    return SendClientMessage(playerid, 0xFF0000FF, str);
    }
    befehlBlocked[playerid] = gettime() + 30; //30 Sekunden gesperrt

  • Gibt es eine Abfrage, um zu schauen ob der Wert, der (in meinem Fall) generiert wurde, bereits in der Tabelle existiert?
    Habe bisher folgendes (als cmd, nur damits schneller geht beim testen):



    ocmd:pin(playerid,params[])
    {
    new pin=randomEx(9990,10000);
    //Abfrage
    new string[128];
    format(string,sizeof(string),"Dein Pin ist '%i'. Bewahre ihn gut auf!",pin);
    SendClientMessage(playerid,CLR_YELLOW,string);
    new query[84];
    format(query,sizeof(query),"UPDATE accounts SET bankkartenpin='%i' WHERE id='%i'",pin,pInfo[playerid][ID]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    Ich möchte natürlich nicht, dass Leute den gleichen Pin haben.

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Versuche es mal so:



    Mit freundlichen Grüßen
    German_ScripterHD

  • PlayerTextDrawSetPreviewModel(playerid, Textdraw55[playerid], 369);
    PlayerTextDrawTextSize(playerid, Textdraw55[playerid], 68.000000, 23.000000);
    PlayerTextDrawSetPreviewRot(playerid, Textdraw55[playerid], -1.000000, 0.000000, 36.000000, 0.610328)

    Schreib das mal nach unten...du kannst doch keine Eigenschaften für ein TextDraw setzen, welches erst danach erstellt wird ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Schreib das mal nach unten...du kannst doch keine Eigenschaften für ein TextDraw setzen, welches erst danach erstellt wird ^^

    Dankeschön! Geht endlich :)


    Aber ich hätte noch eine Frage..


    Ich bin grad dabei so ein Extra zu machen, das heißt wenn man denn auswählt dass man mehr Munition bekommt. Aber i-wie funktioniert das nicht. Ammo bleibt immer auf 0 wieso?


    new Ammo = GetPlayerAmmo(playerid);
    SetPlayerAmmo(playerid, 2, Ammo+50);//Pistolen(9mm,S 9mm, Desert Eagle)
    SetPlayerAmmo(playerid, 3, Ammo+30);//Shotungs(Shotguns,Sawn-off-Shotgun,Combat Shotgun)
    SetPlayerAmmo(playerid, 4, Ammo+100);//MP's(MP5,UZI,Tec-9)
    SetPlayerAmmo(playerid, 5, Ammo+150);//Sturmgewehr(AK-47,M4)
    SetPlayerAmmo(playerid, 6, Ammo+70);//Scharfschützengewehre(Country Rifle,Sniper)
    SetPlayerAmmo(playerid, 7, Ammo+3);//Raketenwerfer
    printf("%i",Ammo);

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Geht aber immer noch nicht?


    Return Values:
    The amount of ammo in the player's current weapon.

    Hast du die AK47 in der Hand? Sonst gibt das die Ammo der Waffe zurück, die du in der Hand hältst.


    Sonst musst du https://wiki.sa-mp.com/wiki/GetPlayerWeaponData nutzen, um die Ammo in dem Slot (Achtung, hier wirklich der Slot) auszulesen.

  • Könntest du mir ein Beispiel geben?


    -> Also wenn ich diese Funktion benutze dann gibt er auch zb nur der Ak Munition mehr? Zb wenn ich jetzt nur AK-47 -- MP5 ausgerüstet habe, aber im skript steht dass UZI, M4 auch Ammo gegeben werden soll, aber trz. nur AK und MP5 mehr Munition weil er die waffen ausgerüstet hat, ich möchte jetzt nicht dass er die Waffen bekommt.

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Für die Sturmgewehre zum Beispiel so:
    new weap, ammo;GetPlayerWeaponData(playerid, 5, weap, ammo);SetPlayerAmmo(playerid, weap, ammo+150);


    Dann bekommt die Waffe in Slot 5 (egal ob M4 oder AK47) die 150 Ammo drauf.

    i-wie geht das auch nicht bei mir. Die Munition bleibt bei mir gleich?


    //Hab es mal printfen lassen, bei beiden werten stehen 0

    Mit freundlichen Grüßen
    [KoSoVa] :klugs: