[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

  • Du musst, so wie du es verwenden möchtest, SetPVarInt und GetPVarInt verwenden, da zID sonst keine Integer-Zahl ist und du bei z.B. SendClientMessage einen Integer als playerid brauchst. Genau das gleiche gilt für SpielerInfo[zID][pGeldBank] - auch hier muss zID ein Integer sein, um in einem Array als "Nenner" zu fungieren.

    Ich bin Dittis Signatur.

  • Hi,


    Ich habe das Problem, dass ich die Commands ( /lights und /engine) immer doppelt eingeben muss..
    Das heisst, Auto aus: /engine -> Auto an. erneut /engine "starts engine" -> auto immernoch an (anstatt das es wieder ausgeht :( nochmals engine: Auto aus. erneut engine: "turns off the engine" obwohl er schon aus ist!






    Das Problem besteht, seit ich meien scriptvorlage vom freeze prizip bei/engine auf wirkliches engine an/aus umgestellt habe :(

  • Heey,


    Wünsche allen einen guten Sonntag Mittag.


    Bin grade mit den Skins meiner Fraktionen fertig geworden. Und würde jetzt gerne /Invite /Uninvite Befehle machen. Und ein Rangsystem. Wie z.b Rang 1 Autoputzer - Rang 5 Leader. Jedoch weiß ich nicht genau wie, und womit ich anfangen muss. Wenn ich mir Tutorials anschaue wird nur der befehl Makeleader gemacht. Jedoch finde ich nirgends die Dinge die ich benötige. Hoffe mir kann einer helfen. Wie ich die beiden Sachen heute noch fertig bekomme.


    Habe bisher erst /makeleader und halt die Fraktionen selber. Und login reg natülich auch


    MFg


    Ivory

  • Du solltest zuerst GetVehicleParamsEx verwenden und dann if(light == 0) abfragen. :)



    So ich hab das jetzt so gemacht:






    Bei engine so ähnlich.
    Nun ist es so, dass er beim ersten versiuch Motor oder licht anzu machen, es erst versucht auszumachen(ist aber ja schon aus!)
    Danach funkti9niert es dann richtig, dh an, aus an aus ... etc.
    Woran liegt das?

  • Sobald ich 2 Fitlerscripts mit Objecten (CreateDynamicObject) rein mache spielt der prmäre Gamemode verrückt.
    Die Namen werden wieder Bunt angezeigt, und zB. der Stream wird beim Connecten nicht abgespielt. Sobald ich die wieder rausnehme geht allles andere wieder.


    Woran liegt das?
    Eine Map kann ich drin lassen, ist an und für sich genauso aufgebaut.


    - Tomsen

  • TheHondaTuner:
    Und wo holst du die vehicleid her? Fehlt da nicht noch GetPlayerVehicleID? Sonst wissen GetVehicleParamsEx und SetVehicleParamsEx ja nicht, von welchem Fahrzeug sie es holen sollen.


    Das wäre übrigens auch noch zu beachten:

    Zitat

    Note: If a parameter is unset (SetVehicleParamsEx not used beforehand) the value will be -1 ('unset').


    Das heißt, du müsstest so testen, ob das Licht an ist:
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(lights == 0 || lights == -1)
    {
    //Code
    }
    else
    {
    //Code
    }

    Ich bin Dittis Signatur.

  • ocmd:aduty(playerid,params[])
    {
    new string[128],atext[128];
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,rot,"[Fehler]: Du hast nicht das nötige Adminlevel!");
    if(SpielerInfo[playerid][pAdminlevel]==5000) { atext = "Serverleitung"; }
    else { atext = "Admin"; }
    format(string,sizeof(string),"%s \nOnDuty",atext);
    new Text3D:adminduty = Create3DTextLabel(string, orange, 30.0, 40.0, 50.0, 100.0, 0, 0);
    if(aduty[playerid]==0)
    {
    new string2[128];
    format(string2,sizeof(string2),"[AdminOnDuty]: %s ist als Admin %d in den Dienst gegangen!",SpielerName(playerid),SpielerInfo[playerid][pAdminlevel]);
    SendClientMessageToAll(orange,string2);
    Attach3DTextLabelToPlayer(adminduty, playerid, 0.0, 0.0, 0.7);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    SetPlayerMarkerForPlayer( i, playerid, orange );
    return 1;
    }
    aduty[playerid] = 1;
    return 1;
    }
    else if(aduty[playerid]==1)
    {
    new string3[128];
    format(string3,sizeof(string3),"[AdminOffDuty]: %s ist als Admin %d in aus dem Dienst gegangen!",SpielerName(playerid),SpielerInfo[playerid][pAdminlevel]);
    SendClientMessageToAll(grau,string3);
    Delete3DTextLabel(adminduty);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    SetPlayerMarkerForPlayer( i, playerid, 0xFFFFFF00 );
    return 1;
    }
    aduty[playerid] = 0;
    SetPlayerColor(playerid,weiß);
    return 1;
    }
    return 1;
    }



    - Tomsen
    Wieso kann man nur OnDuty gehen? Egal wie oft ich es mache es kommt immer nur das man ONduty gegangen ist. Offduty wird garnicht aufgerufen.

  • Wäre dies möglich?


    Du könntest es so ausprobieren:


    new test[MAX_PLAYERS];


    //In deinem cmd um ihm in einem Auto festzuhalten
    test[playerid] = 1;


    //Unter dem Callback OnPlayerKeyStateChange
    if(newkeys & KEY_SECONDARY_ATTACK)
    {
    if(test[playerid]) ClearAnimations(playerid);
    }


    Wäre einen Versuch wert :)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Kleine frage zu der Funktion

    format(query, 256, "SELECT `Passwort` FROM `player` WHERE `Name` = '%s'", PlayerInfo[playerid][Name]);
    mysql_query(query, (-1), (0), SQL);
    mysql_store_result(SQL);
    mysql_fetch_row(Get, "|", SQL);
    if(!strcmp(MD5_Hash(Key), Get, true))
    Der hängt sich wieder auf, wenn er das aufruft
    mysql_fetch_row(Get, "|", SQL);


    Als plugin nehm ich das von Strickenkid
    bei den BlueG gabs da auch probleme mit
    chrashdetect gibt das aus

    Code
    [12:56:10] [debug] Server crashed while executing NoName.amx
    [12:56:10] [debug] AMX backtrace:
    [12:56:10] [debug] #0 native mysql_fetch_row () [10007250] from mysql.dll
    [12:56:10] [debug] #1 0000be80 in ?? () from NoName.amx
    [12:56:10] [debug] #2 0000b5dc in public OnDialogResponse () from NoName.amx


    das von den OnDialog da ruft er ja den loadplayer auf und da kommt es zu den Crash


    //Edit
    Keiner eine idee?
    Ich finde keine lösung dazu
    Mir ist nur aufgefallen, das wenn ich das Passwort direkt richtig schreibe das es funktioniert
    gebe ich es aber erst falsch ein und dann richtig, Crasht der server

    All in all it's just another brick in the wall

    Einmal editiert, zuletzt von iBeavis ()

  • Nabend.
    Ich habe eine kleine Zellenübersicht erstellt, jedoch wird mit inGame "SERVER: Unknown command" angezeigt.
    wüsste vllt wer warum?

    dcmd_zellen(playerid,params[]){
    #pragma unused params
    if((pInfo[playerid][leader] == 1 || pInfo[playerid][leader] == 2 || pInfo[playerid][leader] == 5
    || pInfo[playerid][member] == 1 || pInfo[playerid][member] == 2 || pInfo[playerid][member] == 5) && pInfo[playerid][duty] == true){
    new string[128];
    for(new i = 0; i < MAX_ZELLE;i++){
    new text[128];
    text = (Zelle[i][Besetzt] == false) ? ("Nicht besetzt") : (SpielerName(Zelle[i][SpielerID]));
    format(string,sizeof(string),"Zelle %i = %s\n",i,text);
    }
    ShowPlayerDialog(playerid,DIALOG_ZELLEN,DIALOG_STYLE_MSGBOX,"Zellenübersicht",string,"OK","");
    }
    return 1;
    }

  • Wenn ich eine Datenbank auf meinem Rechner habe, die über XAMPP läuft, und ich aber schon ein Forum aber noch keinen Server habe kann ich die Datenbank trotzdem schon nutzen und mit dem Forum verbinden um eine Registrierung nur durch den Server möglich zu machen? Also klar gesagt: Kann ich mein Forum auch mit der Datenbank vom HomePC verbinden (Und ich bin mir bewusst das man sich im Forum dann wahrscheinlich nur anmelden kann wenn XAMPP läuft.)
    Oder muss ich mir jetzt nen Server zulegen, die Datenbank irgentwie Uploaden (oder muss ich ne neue erstellen mit allen Tabellen, Spalten etc?!)


    - Tomsen

  • Du kannst das alles auf deinem Home-PC behalten, wenn du MySQL richtig einstellst.
    Bedenke: der PC muss dann die ganze Zeit laufen und im Router muss ein Port Forwarding sowie (vermutlich) eine Domain für dynamisches DNS eingerichtet sein, um vom Server aus darauf zugreifen zu können.
    Du kannst aber auch mit PHPMyAdmin ein Backup machen, das auf den Server ziehen, dort wieder via PMA einspielen und den MySQL-Server (der dann logischerweise vorhanden sein und laufen muss) auf dem Server verwenden. :)

    Ich bin Dittis Signatur.

  • if(GetPlayerVehicleID(playerid)==Krankenwagen[0] || GetPlayerVehicleID(playerid)==Krankenwagen[1] || GetPlayerVehicleID(playerid)==Krankenwagen[2] || GetPlayerVehicleID(playerid)==Krankenwagen[3]|| GetPlayerVehicleID(playerid)==Krankenwagen[4])
    {
    if(SInfo[playerid][pFraktion] != 2)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,FARBE_ROT,"Du bist kein Sanitäter des Krankenhauses in Las Venturas");
    return 1;
    }
    }
    if(GetPlayerVehicleID(playerid)==Polizeiwagen[0] || GetPlayerVehicleID(playerid)==Polizeiwagen[1] || GetPlayerVehicleID(playerid)==Polizeiwagen[2] || GetPlayerVehicleID(playerid)==Polizeiwagen[3]|| GetPlayerVehicleID(playerid)==Polizeiwagen[4])
    {
    if(SInfo[playerid][pFraktion] != 1)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,FARBE_ROT,"Du bist kein Polizei Beamter der Dienststelle in Las Venturas!");
    return 1;
    }
    }
    if(GetPlayerVehicleID(playerid)==Mafia2[0] || GetPlayerVehicleID(playerid)==Mafia2[1] || GetPlayerVehicleID(playerid)==Mafia2[2])
    {
    if(SInfo[playerid][pFraktion] != 3)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,FARBE_ROT,"Du gehörst nicht den Besitzern des Casinos an!");
    return 1;
    }
    }
    if(GetPlayerVehicleID(playerid)==Mafia1[0] || GetPlayerVehicleID(playerid)==Mafia1[1] || GetPlayerVehicleID(playerid)==Mafia1[2])
    {
    if(SInfo[playerid][pFraktion] != 4)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,FARBE_ROT,"Du gehörst nicht den Besitzern des Casinos an!");
    return 1;
    }
    }


    Steige ich in die angegebenen Krankenwagen und bin nicht in der Fraktion des Sanitäters fliege ich raus. Wenn ich dagegen als Nicht Polizist in einen Streifenwagen steige kann ich mit diesem Fahren und Rumtrollen genauso wie bei den Mafien.
    Obwohl es doch eig. arbeiten müsste oder nicht?

  • new query[64];
    format(query, sizeof(query), "SELECT phonenumber FROM playerdata WHERE phonenumber = %d", Nummer);
    if(mysql_num_rows(mysql_query(query)) > 0)
    {
    //Das passiert, wenn Nummer schon vergeben
    }
    else
    {
    //Und das, wenn nicht.
    }
    Sollte laufen, alles ohne Gewähr. :D
    Code ist natürlich anzupassen. :)

    Ich bin Dittis Signatur.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen