Einige Fragen!!!

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
  • Hallo Breadfish,
    Ich habe enige Fragen, wie was gescriptet wird.
    Undzwar ist es bei meinen Selfmade jetzt so das wenn man was schriebt es jeder lesen kann...
    Nen anderer Scripter meinte zu mir ich sollte das bei OnPlayerText einfügen


    new Float:pX,Float:pY,Float:pZ;
    new pName[MAX_PLAYER_NAME];
    new pString[256];
    GetPlayerPos(playerid,pX,pY,pZ);
    GetPlayerName(playerid, pName, sizeof(pName));
    format(pString,sizeof(pString),"%s sagt: %s",pName,text);
    SendClientMessageToAll(WEIß,pString); //
    return 1;
    So das habe ich auch gemacht nur jetzt kommt die schrfit zwei mal wenn ich z.B hallo schriebe einmal hallo mit weißem namen
    und der andere mit farbe also z.B Geld oder so.


    Jetzt wollte ich wissen wie ein /giveweapon befehl geht, ich habe zwar schon ein gemacht aber der ist buggy
    Immer wenn ich /giveweapon ID WAFFENID MUNI benutze sagt er jedes mal /giveweapon [ID] [WaffenID] [MUNITION]
    hier ist der Code:


    ocmd:giveweapon(playerid,params[])
    {
    new pID, waffenid, munition, string[128];
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,Rot,"Du bist kein Admin");
    if(sscanf(params,"udd",pID))return SendClientMessage(playerid,Rot,"Benutze /giveweapon [ID] [waffenid] [munition]");
    if(waffenid < 0 && waffenid > 54)return SendClientMessage(playerid,Rot,"Bitte gebe eine Gültige Waffenid an (0-54)");
    if(munition < 1 || munition > 9999)return SendClientMessage(playerid,Rot,"Du kannst nur von 1 - 9999 Munition nehmen");
    GivePlayerWeapon(pID, waffenid, munition);
    format(string,sizeof(string),"Du hast %s eine Waffe gegeben mit der ID %d",SpielerName(pID),waffenid);
    SendClientMessage(playerid,Hellblau,string);
    format(string,sizeof(string),"Du hast von Admin %s eine Waffe bekommen mit der ID %d",SpielerName(playerid),waffenid);
    SendClientMessage(playerid,Hellblau,string);
    return 1;
    }


    So, dann habe ich ein Admin Befehl der /v heißt damit kann ich ein Auto spawnen lassen getestet hab ich es noch nicht aber ich habe da ein Warning
    WARNING:(668) : warning 202: number of arguments does not match definition
    Zeile:CreateVehicle(veh,x,y,z,a,co1,co2);


    Ich habe mir ein Bank-System gemacht, es klappt auch ganz gut ich kann Geld einzahlen abheben Kontostand sehen, aber ich kann mit mein Konto ins minus gehen...
    Wenn ich jetzt z.B auf Einzahlen klicke und dann - vor der zahl setze also z.B -2000 dann kriege ich den Betrag 2000 auf meiner Hand obwohl ich es Einzahlen will
    andersrum ist es beim Auszahlen wenn ich da -2000 vormache kann ich es einzahlen! wenn ich aber -50.000.000 (ohne punkte) und nicht so viel Geld aufm Konto habe
    wird es trotzdem abgebucht! Wie kann ich das beheben ?


    Ich hoffe ihr könnt mir dabei helfen wie ich die sachen Scripte und bugfrei mache :D
    p.s ich habe alles in ocmd geschreiben, wenn dort extra befehle kommen sollten dann bitte via ocmd posten... ist leichter für mich ;) Wenn nicht ist auch net schlimm hehe


    MFG
    DeRoX

  • Zum ersten Problem:
    Musst du bei OnPlayerText aus dem return 1; ein return 0; machen.


    Zweite Problem :
    ocmd:giveweapon(playerid,params[])
    {
    new pID, waffenid, munition, string[128];
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,Rot,"Du bist kein Admin");
    if(sscanf(params,"udd",pID,waffenid,munition))return SendClientMessage(playerid,Rot,"Benutze /giveweapon [ID] [waffenid] [munition]");
    if(waffenid < 0 && waffenid > 54)return SendClientMessage(playerid,Rot,"Bitte gebe eine Gültige Waffenid an (0-54)");
    if(munition < 1 || munition > 9999)return SendClientMessage(playerid,Rot,"Du kannst nur von 1 - 9999 Munition nehmen");
    GivePlayerWeapon(pID, waffenid, munition);
    format(string,sizeof(string),"Du hast %s eine Waffe gegeben mit der ID %d",SpielerName(pID),waffenid);
    SendClientMessage(playerid,Hellblau,string);
    format(string,sizeof(string),"Du hast von Admin %s eine Waffe bekommen mit der ID %d",SpielerName(playerid),waffenid);
    SendClientMessage(playerid,Hellblau,string);
    return 1;
    }


    Zum 3 Problem mit dem CreateVehicle(veh,x,y,z,a,co1,co2);
    brauche ich denn Stock.


    Zum 4 Problem bräuchte ich das Stück vom OnPlayerDialog



    MFG GamerXIOS.

  • Danke fürs Anworten ;)
    Das bei OnPlayerText ist mir garnicht aufgefallen hehe
    und mit /giveweapon auch nicht :D war so einfach, danke


    So jetzt kommen wir zum /v befehl und zur Bank



    /v befehl, ganzer befehl


    ocmd:v(playerid,params[])
    {
    new veh, co1, co2;
    new Float:x, Float:y, Float:z, Float:a;
    new string[128];
    new nam[MAX_PLAYER_NAME];
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,Rot,"Du bist kein Admin oder dein Rank ist zuniedrig");
    if(sscanf(params, "ddd",veh,co1,co2)) {
    return SendClientMessage(playerid,Rot,"USAGE: /v [vehicleid][color1][color2]");
    }
    if(veh < 400 || veh > 610) {
    return SendClientMessage(playerid,Rot,"Vehicle ID muss zwischen 400 und 610 sein");
    }
    if(co1 < 0 || co1 > 126 || co2 < 0 || co2 > 126) {
    return SendClientMessage(playerid,Rot,"Color muss zwischen 0 und 126 sein");
    }
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,a);
    CreateVehicle(veh,x,y,z,a,co1,co2); // Hier ist der Warning
    GetPlayerName(playerid,nam,sizeof(nam));
    // format(string,sizeof(string),"** %s hat ein Vehicle erstellt.",nam);
    format(string,sizeof(string),"Du hast das Vehicle %d mit der Farbe 1: %d und Farbe 2: %d erstellt",veh,co1,co2);
    // SendClientMessageToAll(Rot,string);
    SendClientMessage(playerid,Rot,string);
    return 1;
    }


    Die Bank, ich denk mal du meintes "OnDialogResponse" :D#


    if(dialogid == Einzahlung) //Fragt ab, welcher Dialog aufgerufen wurde.
    {
    new str[128]; //Wieder ein neuer string.
    if(!response)return ShowPlayerDialog(playerid,Bank,DIALOG_STYLE_LIST,"Bankkonto","Einzahlung\nAuszahlung\nKontostand","Wählen","Beenden"); //Falls der Dialog nicht beantwortet wird, wird der originale Dialog angezeigt. (!response) Das Ausrufezeichen verneint die Abfrage.
    if(GetPlayerMoney(playerid) < strval(inputtext))return SendClientMessage(playerid,0xC8C8C8FF,"So viel Geld hast du momentan nicht!"); //Wenn das Geld auf der Hand des Spielers nicht ausreicht, erscheint diese Nachricht. Der inputtext dient hierbei als Abfrage dafür. Das Zeichen < müsstest du aus dem Mathematikunterricht kennen.
    GivePlayerMoney(playerid, - strval(inputtext)); //Hier wird dem Spieler das Geld abgezogen, was er einzahlt. Da es kein Befehl zum abziehen von Geld gibt, arbeitet man mit Minus.
    pInfo[playerid][Konto] += strval(inputtext); //Hier wird das Geld dann auf das Bankkonto addiert.
    format(str,sizeof(str),"Sie haben %d$ auf ihr Konto eingezahlt",strval(inputtext)); //Jetzt kommt der string (str) zum Einsatz.
    ShowPlayerDialog(playerid,EinzahlungText,DIALOG_STYLE_MSGBOX,"Bankkonto",str,"Schließen",""); //und als Dialog ausgegeben
    }
    if(dialogid == Auszahlung)
    {
    new str[128];
    if(!response)return ShowPlayerDialog(playerid,Bank,DIALOG_STYLE_LIST,"Bankkonto","Einzahlung\nAuszahlung\nKontostand","Wählen","Beenden");
    if(pInfo[playerid][Konto] < strval(inputtext))return SendClientMessage(playerid,0xC8C8C8FF,"Du hast nicht genug auf dem Konto!"); //Das Selbe wie eben, nur wird das Geld auf der Bank abgefragt.
    GivePlayerMoney(playerid,strval(inputtext)); //Das Geld wird ausgegeben.
    pInfo[playerid][Konto] -= strval(inputtext); //und von der Bank abgezogen.
    format(str,sizeof(str),"Sie haben %d$ von ihrem Konto abgehoben",strval(inputtext));
    ShowPlayerDialog(playerid,AuszahlungText,DIALOG_STYLE_MSGBOX,"Bankkonto",str,"Schließen","");
    }


    Ich bedanke mich schonmal im vorraus :love:


    MFG
    DeRoX

  • Nochmal zu 1.


    Auch wenn du da jetzt return 0; hinmachen würdest könnte das jeder lesen. Weil die Clientmessage zu allen gesendet wird.


    Mein Vorschlag: Bei OnPlayerText wieder return 1; und bei OnGameModeInit folgendes reinschreiben: LimitGlobalChatRadius(Dein Radius in dem man die Nachricht lesen kann. Bsp = 40)



    ---
    Bei /v fehlt ein Parameter bei CreateVehicle. Die Respawnzeit.


    CreateVehicle(veh,x,y,z,a,co1,co2,-1);// Fahrzeug respawnt nicht von alleine (nach einer bestimmten Zeit)


    Zum Bank Problem.


    if(dialogid == Einzahlung) //Fragt ab, welcher Dialog aufgerufen wurde.
    {
    new str[128]; //Wieder ein neuer string.
    if(!response)return ShowPlayerDialog(playerid,Bank,DIALOG_STYLE_LIST,"Bankkonto","Einzahlung\nAuszahlung\nKontostand","Wählen","Beenden"); //Falls der Dialog nicht beantwortet wird, wird der originale Dialog angezeigt. (!response) Das Ausrufezeichen verneint die Abfrage.
    if(GetPlayerMoney(playerid) < strval(inputtext))return SendClientMessage(playerid,0xC8C8C8FF,"So viel Geld hast du momentan nicht!"); //Wenn das Geld auf der Hand des Spielers nicht ausreicht, erscheint diese Nachricht. Der inputtext dient hierbei als Abfrage dafür. Das Zeichen < müsstest du aus dem Mathematikunterricht kennen.
    if(strval(inputtext) < 0)return SendClientMessage(playerid,0xFFFFFF,"Du kannst keine Minus Beiträge einzahlen!");
    GivePlayerMoney(playerid, - strval(inputtext)); //Hier wird dem Spieler das Geld abgezogen, was er einzahlt. Da es kein Befehl zum abziehen von Geld gibt, arbeitet man mit Minus.
    pInfo[playerid][Konto] += strval(inputtext); //Hier wird das Geld dann auf das Bankkonto addiert.
    format(str,sizeof(str),"Sie haben %d$ auf ihr Konto eingezahlt",strval(inputtext)); //Jetzt kommt der string (str) zum Einsatz.
    ShowPlayerDialog(playerid,EinzahlungText,DIALOG_STYLE_MSGBOX,"Bankkonto",str,"Schließen",""); //und als Dialog ausgegeben
    }
    if(dialogid == Auszahlung)
    {
    new str[128];
    if(!response)return ShowPlayerDialog(playerid,Bank,DIALOG_STYLE_LIST,"Bankkonto","Einzahlung\nAuszahlung\nKontostand","Wählen","Beenden");
    if(pInfo[playerid][Konto] < strval(inputtext))return SendClientMessage(playerid,0xC8C8C8FF,"Du hast nicht genug auf dem Konto!"); //Das Selbe wie eben, nur wird das Geld auf der Bank abgefragt.
    if(strval(inputtext) < 0)return SendClientMessage(playerid,0xFFFFFF,"Du kannst keine Minus Beiträge auszahlen!");
    GivePlayerMoney(playerid,strval(inputtext)); //Das Geld wird ausgegeben.
    pInfo[playerid][Konto] -= strval(inputtext); //und von der Bank abgezogen.
    format(str,sizeof(str),"Sie haben %d$ von ihrem Konto abgehoben",strval(inputtext));
    ShowPlayerDialog(playerid,AuszahlungText,DIALOG_STYLE_MSGBOX,"Bankkonto",str,"Schließen","");
    }



    Maddin is my Lord and Master :D
    Musel my one and only b0wm
    Bisafloah is the pokemon that pwns a lot of goddamn ponys.