[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 sagst da "Der Spieler %s würfelte die Zahl %i" Wieso sendest du das an die PlayerID wenn du das ganze "Würfelte" nennst?
    Du musst es entweder an jeden Spieler senden, oder an die Spieler die in deiner nähe sind @KinGRaPTiiC

  • ocmd:accept(playerid,params[])
    {
    new cmd, pID,einsatz;
    if(strcmp,cmd,"dice",true) == 0)
    {
    if(!diceinv[pID] = true))return SendClientMessage(playerid,DUNKELROT,"Du hast keine Einladung zum Würfeln bekommen!");
    {
    SendClientMessage(playerid,GELB,"Die Runde beginnt jetzt, viel Glück!");
    SendClientMessage(pID,GELB,"Die Runde beginnt jetzt, viel Glück!");
    GivePlayerMoney(playerid, -einsatz);
    GivePlayerMoney(pID, -einsatz);
    PlayerInfo[pID][pMoney] -= einsatz;
    PlayerInfo[playerid][pMoney] -= einsatz;
    SendClientMessage(playerid,HELLBLAU,"Um zu würfeln tippe: /dice");
    diceinv[pID] = false;
    diceinv[playerid] = false;
    }
    }
    return 1;
    }


    Wie bekomme ich das jetzt hin das der einsatz von meinem diceinvite befehl bei accept dice erkannt wird?



    ocmd:diceinvite(playerid,params[])
    {
    if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid,ROT,"Du kannst den Befehl noch nicht benutzen!");
    new pID, runden, string[128], einsatz;
    if(sscanf(params,"uii",pID,runden,einsatz))return SendClientMessage(playerid,GELB,"[INFO]: /diceinvite [playerid/Name][Runden 1-3] [Menge/Betrag]");
    {
    format(string,sizeof(string),"Der Spieler %s hat dich zu %i Runde/n um %i$ eingeladen!",SpielerName(playerid),runden,einsatz);
    SendClientMessage(playerid,HELLBLAU,string);
    SendClientMessage(playerid,HELLBLAU,"Um die einladung anzunehmen tippe: /accept diceinvite");
    diceinv[pID] = true;
    }
    return 1;
    }


  • Hallo ich wollte frage wie ich am besten einstelle das der Spieler Pro Buchstabe 15$ Zahlen muss.
    Der Erste Buchstabe kostet 75$ und Weitere Buchstaben 15$ Wie mach ich das am besten.


    @Jeffry

  • Was mache ich falsch? der Code ist aus einem anderen Bereich da ich das mit dem diceinvite nicht so verstanden habe etc.


    Errors:
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3667) : error 029: invalid expression, assumed zero
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3701) : error 029: invalid expression, assumed zero
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3722) : error 029: invalid expression, assumed zero
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3725) : error 029: invalid expression, assumed zero
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.





    Codes:


    ocmd:diceaccept(playerid, params[])
    {
    if(Dice_State[playerid] != DICE_REQUEST)) return SendClientMessage(playerid, -1, "Du hast keine Dice-Anfrage bekommen"); //3667
    new pID = Dice_PartnerID[playerid] - 1; // PartnerID wird ermittelt
    new value = Dice_Pot[playerid]; // Betrag wird ermittelt
    GivePlayerMoney(playerid, value * -1); // Betrag wird mir abgezogen
    GivePlayerMoney(pID, value * -1); // Betrag wird meinem Partner abgezogen
    new myValue = random(6) + 1; // Ich würfle
    new ptValue = random(6) + 1; // Mein Partner würfelt
    if(myValue > ptValue)// Ich würfle einen größeren Wert als mein Partner
    {
    GivePlayerMoney(playerid, value * 2); // Ich bekomme das ganze Geld
    SendClientMessage(playerid, -1, "Du hast gewonnen");
    SendClientMessage(pID, -1, "Du hast verloren");
    }
    else if(myValue == ptValue) { // Unentschieden
    GivePlayerMoney(playerid, value); // Ich bekomme mein Geld zurück
    GivePlayerMoney(pID, value); // Mein Partner bekommt sein Geld zurück
    SendClientMessage(playerid, -1, "Es ist unentschieden");
    SendClientMessage(pID, -1, "Es ist unentschieden");
    }
    else// Ich würfle einen kleineren Wert als mein Partner
    {
    GivePlayerMoney(pID, value * 2); // Mein Partner bekommt das ganze Geld
    SendClientMessage(playerid, -1, "Du hast verloren");
    SendClientMessage(pID, -1, "Du hast gewonnen");
    }// Variablen werden zurückgesetzt
    Dice_PartnerID[playerid] = 0;
    Dice_State[playerid] = 0;
    Dice_PartnerID[pID] = 0;
    Dice_State[pID] = 0;
    return 1;
    }


    ocmd:dicedecline(playerid, params[])
    {
    if(Dice_State[playerid] != DICE_REQUEST)) return SendClientMessage(playerid, -1, "Du hast keine Dice-Anfrage bekommen"); //3701
    new pID = Dice_PartnerID[playerid] - 1; // PartnerID wird ermittelt
    // Variablen werden zurückgesetzt
    Dice_PartnerID[playerid] = 0;
    Dice_State[playerid] = 0;
    Dice_PartnerID[pID] = 0;
    Dice_State[pID] = 0;
    SendClientMessage(playerid, -1, "Deine Dice-Request wurde abgelehnt.");
    SendClientMessage(pID, -1, "Du hast die Dice-Request abgelehnt");
    return 1;
    }



    ocmd:diceinvitef(playerid, params[])
    {
    new partner, value;
    if(sscanf(params,"ud",partner,value)) return SendClientMessage(playerid, -1, "/diceinvite [PlayerID/Name] [Betrag]");
    if(GetPlayerMoney(playerid) < value) return SendClientMessage(playerid, -1, "Du hast nicht genug Geld");
    if(value < 1000 || value > 10000) return SendClientMessage(playerid, -1, "Der Betrag muss zwischen 1000$ und 10000$ liegen");
    if(!IsPlayerConnected(partner)) return SendClientMessage(playerid, -1, "Der Spieler ist nicht online");
    if(Dice_State[partner] != 0) return SendClientMessage(playerid, -1, "Der Spieler würfelt bereits");
    Dice_State[playerid] = DICE_WAIT; // State: Wartet, dass der Spieler annimmt //3722
    Dice_PartnerID[playerid] = partner + 1; // PartnerID wird zwischengespeichert
    Dice_Pot[playerid] = value; // Der Betrag wird zwischengespeichert
    Dice_State[partner] = DICE_REQUEST; // State: Partner hat eine Anfrage bekommen //3725
    Dice_PartnerID[partner] = playerid + 1; // PartnerID von dem Spieler wird ebenfalls gesetzt
    Dice_Pot[partner] = value; // Der Betrag wird zwischengespeichert
    SendClientMessage(partner, -1, "Du hast ein Dice-Request bekommen. Nutze /diceaccept oder /dicedecline");
    return 1;
    }


    #define DICE_WAIT
    #define DICE_REQUEST


    new Dice_PartnerID[MAX_PLAYERS];
    new Dice_State[MAX_PLAYERS];
    new Dice_Pot[MAX_PLAYERS];

  • zu allererst du hast in den zeilen 3667 und 3701
    am ende des if Statements eine Klammer zuviel.


    Und dann haben DICE_WAIT und DICE_REQUEST
    keinen Wert


    Die Zeile die du setzt sieht also so aus
    Dice_State[playerid] = ; Dementsprechend haut dir der Compiler auf einen Fehler raus.


    Die Defines werden im Compilevorgang eigentlich nur mit den dahinter angegeben Wert ersetzt.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Hay.


    Ich kann mein Dialog nicht schließen. Egal was ich mache ich muss dann mein GTA neu starten

  • Womit hat das was zutun ?

    Steht da noch mehr im Log? ^^



    Ich kann mein Dialog nicht schließen. Egal was ich mache ich muss dann mein GTA neu starten

    Code von dem Dialog, also unter OnDialogResponse wird dir anscheinend immer wieder der Dialog aufgerufen..



    Kann es sein dass sich der Server Schließt ?

    Nein, dann wäre er weg :D

    ast2ufdyxkb1.png


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

  • Verstehe ich nicht ist doch alles richtig? Dice_State hat doch das hier: Dice_State[playerid] != DICE_REQUEST
    und bei den if abfragen wenn ich da eine Klammer weg mache bekomme ich errors mit den return´s die dahinter sind ?( also kann das ja schon einmal nicht stimmen würde ich jetzt mal sagen :D und wenn ich z.B bei den #define DICE_WAIT 1
    #define DICE_REQUEST 2 die zahlen 1 und 2 hinter mache kommen 4 wanings dazu... das wären diese hier:


    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3666) : warning 215: expression has no effect
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3667) : warning 225: unreachable code
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3700) : warning 215: expression has no effect
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3701) : warning 225: unreachable code
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.



    und halt hier nochmal alle errors&warnings:


    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3666) : error 029: invalid expression, assumed zero
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3666) : warning 215: expression has no effect
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3666) : error 001: expected token: ";", but found "return"
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3667) : warning 225: unreachable code
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3700) : error 029: invalid expression, assumed zero
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3700) : warning 215: expression has no effect
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3700) : error 001: expected token: ";", but found "return"
    C:\Users\Dustin\Desktop\SA-MP Server\gamemodes\Virtual-Reallife.pwn(3701) : warning 225: unreachable code
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.


    und hier die warning zeilen:


    if(Dice_State[playerid] != DICE_REQUEST))return SendClientMessage(playerid, -1, "Du hast keine Dice-Anfrage bekommen"); //3666
    new pID = Dice_PartnerID[playerid] - 1; // PartnerID wird ermittelt //3667
    if(Dice_State[playerid] != DICE_REQUEST))return SendClientMessage(playerid, -1, "Du hast keine Dice-Anfrage bekommen"); //3700
    new pID = Dice_PartnerID[playerid] - 1; // PartnerID wird ermittelt //3701


    MfG.

  • @Kaliber Lol ich check das iwie alles nicht mehr jetzt habe ich grade eine klammer weg gemacht und keine Errors mehr etc. aber als ich es vorhin versucht habe kam das mit den return kram errors/warnings kp :D aber danke :)



    /edit mein MySQL [Error Log] spuckt das hier aus weiß einer was das heißt? bzw. weiß jmd die lösung?


    [18:16:42] [plugins/mysql] error #1064 while executing query "UPDATE users SET level = '12', money = '7250000', kills = '0', deaths = '1',alevel = '7', fraktion = '7', rank = '6', perso = '0', spawnchange = '0', payday = '51', xp = '1', xpmax = '12',carlic = '0', bikelic = '0',flylic = '0',waffenlic = '0',boatlic = '0',drugs = '0',mats = '0',drogendealer = '0',waffendealer = '0',busfahrer = '0',landwirt = '0',hure = '0',straßenfeger = '0',matpacks = '0', startbonus = '0',WHERE id = '1'": You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE id = '1'' at line 1
    [18:16:42] [log-core] exception 0XC0000005 (ACCESS_VIOLATION) from Vectored Exception Handler catched; shutting log-core down



    ich häng mal mein stock SaveUserStats dran ^^
    stock SaveUserStats(playerid)
    {
    if(!PlayerInfo[playerid][pLoggedIn]) return 1;
    new query[650];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d',\
    alevel = '%d', fraktion = '%d', rank = '%d', perso = '%d', spawnchange = '%d', payday = '%d', xp = '%d', xpmax = '%d',\
    carlic = '%d', bikelic = '%d',flylic = '%d',waffenlic = '%d',boatlic = '%d',drugs = '%d',mats = '%d',drogendealer = '%d',\
    waffendealer = '%d',busfahrer = '%d',landwirt = '%d',hure = '%d',straßenfeger = '%d',matpacks = '%d', startbonus = '%d',\
    WHERE id = '%d'",
    PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths],
    PlayerInfo[playerid][pAlevel], PlayerInfo[playerid][pFraktion], PlayerInfo[playerid][pRank], PlayerInfo[playerid][pPerso],PlayerInfo[playerid][pSpawnchange],
    PlayerInfo[playerid][pPayday],PlayerInfo[playerid][pXP],PlayerInfo[playerid][pXPMax],PlayerInfo[playerid][pCarlic],PlayerInfo[playerid][pBikelic],PlayerInfo[playerid][pFlylic],PlayerInfo[playerid][pWaffenlic],PlayerInfo[playerid][pBoatlic],
    PlayerInfo[playerid][pDrugs], PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrogendealer],PlayerInfo[playerid][pWaffendealer],PlayerInfo[playerid][pBusfahrer],
    PlayerInfo[playerid][pLandwirt],PlayerInfo[playerid][pHure],PlayerInfo[playerid][pStrassenfeger],PlayerInfo[playerid][pMatpacks],PlayerInfo[playerid][pStartbonus],
    PlayerInfo[playerid][p_id]);
    mysql_pquery(handle, query);
    return 1;
    }

    Einmal editiert, zuletzt von KinGRaPTiiC ()


  • Code
    forward LSPDTorZu(type, playerid);
    public LSPDTorZu(type, playerid)
    {
    	switch(type)
    	{
    		case 0: MoveDynamicObject(LSPDObj[0], 1584.69629, -1638.06104, 12.53330, 4.0, 0.00000, 0.00000, 0.00000);
    		case 1: MoveDynamicObject(LSPDObj[1], 1544.68457, -1630.62585, 13.13630, 0.075, 0.0, 90.0, 90.0); //Diese Schranke
    	}
    	return 1;
    }

    Hallo,


    Ich habe eine Kurze frage warum geht meine Schranke nicht zu auf geht Sie aber zu nicht mehr warum?


    -> Makiert mit Diese Schranke