[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
  • new name[MAX_PLAYER_NAME];
    for(new i;i<MAX_PLAYERS;i++)
    {
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    if(strfind(inputtext,name,true) != -1)
    {
    "name" ist nun der Name
    return 1;
    }
    }

  • Werde 2 mal im /members angezeigt, sprich mein Name überschreibt den Namen des anderen.
    Woran liegt es?
    CMD:members(playerid,params[])
    {
    if(!IsLoggedIn(playerid))return 1;
    if(Spieler[playerid][pFraktion] == 0)return SendClientMessage(playerid,COLOR_GREY,"** Du bist in keiner Fraktion.");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(Spieler[i][pFraktion] == Spieler[playerid][pFraktion])
    {
    format(DialogString,sizeof(DialogString),"%s (Rang: %s - %d)\n",GetName(i),GetRankName(Spieler[i][pFraktion],Spieler[i][pRank]),Spieler[i][pRank]);
    strcat(DialogString,DialogString);
    }
    }
    }
    ShowPlayerDialog(playerid,DIALOG_MEMBERS,DIALOG_STYLE_LIST,""COLOR_HEX_BLUE""#SERVER_NAME": "COLOR_HEX_WHITE"Member Verwaltung",DialogString,"Auswählen","Abbrechen");
    return 1;
    }

  • hab das nun gelöst folgendes Problem:
    error 021: symbol already defined: "AC_GivePlayerHealthEx"
    #define GivePlayerHealth AC_GivePlayerHealthEx
    forward AC_GivePlayerHealthEx(playerid,Float:health);
    public AC_GivePlayerHealthEx(playerid,Float:health){
    ACNewHealth[playerid] = health;
    stopAC[playerid] = 15;
    return SetPlayerHealth(playerid,ACNewHealth[playerid]);
    }

  • Cheevy.Shakur:
    CMD:members(playerid,params[])
    {
    if(!IsLoggedIn(playerid))return 1;
    if(Spieler[playerid][pFraktion] == 0)return SendClientMessage(playerid,COLOR_GREY,"** Du bist in keiner Fraktion.");
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(Spieler[i][pFraktion] == Spieler[playerid][pFraktion]))
    {
    format(DialogString,sizeof DialogString,"%s\n%s (Rang: %s - %d)",DialogString,GetName(i),GetRankName(Spieler[i][pFraktion],Spieler[i][pRank]),Spieler[i][pRank]);
    }
    }
    }
    return ShowPlayerDialog(playerid,DIALOG_MEMBERS,DIALOG_STYLE_LIST,""COLOR_HEX_BLUE""#SERVER_NAME": "COLOR_HEX_WHITE"Member Verwaltung",DialogString,"Auswählen","Abbrechen");
    }
    So sollte das klappen.


  • Hab das jetzt so, aber irgendwas buggt hier...
    CMD:lock(playerid)
    {
    if(!IsLoggedIn(playerid))return 1;
    new veh = GetPlayerVehicleID(playerid), Float:pos[3];
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_GREY, "** Du sitzt in keinem Fahrzeug.");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, COLOR_GREY, "** Du bist nicht der Fahrer.");
    if(Spieler[playerid][pAdminDuty] == 1)
    {
    if(IsValidVehicle(veh))
    {
    GetVehiclePos(veh, pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(veh, engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_UNSET || doors == VEHICLE_PARAMS_OFF)
    {
    LockVehicle(veh);
    GameTextForPlayer(playerid, "~w~Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    else if(doors == VEHICLE_PARAMS_ON)
    {
    UnlockVehicle(veh);
    GameTextForPlayer(playerid, "~w~Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    }
    }
    if(!(IsAFraktionsVeh(veh) == INVALID_VEHICLE_ID))
    {
    if(IsValidVehicle(veh))
    {
    new fV = IsAFraktionsVeh(veh);
    if(Spieler[playerid][pFraktion] == fVehicle[fV][vehFraktion])
    {
    GetVehiclePos(veh, pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(fVehicle[fV][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_UNSET || doors == VEHICLE_PARAMS_OFF)
    {
    LockVehicle(fVehicle[fV][vehID]);
    GameTextForPlayer(playerid, "~w~Fraktions-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    else if(doors == VEHICLE_PARAMS_ON)
    {
    UnlockVehicle(fVehicle[fV][vehID]);
    GameTextForPlayer(playerid, "~w~Fraktions-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    }
    else
    {
    return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt keine Schlüssel für dieses Fahrzeug.");
    }
    }
    }
    for(new i=0;i<GetMaxPlayers();i++)
    {
    for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
    {
    if(veh == PrivateVehicle[i][slot][vehID])
    {
    GetVehiclePos(veh, pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(PrivateVehicle[i][slot][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
    {
    LockVehicle(PrivateVehicle[i][slot][vehID]);
    GameTextForPlayer(i, "~w~Privat-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    if(doors == VEHICLE_PARAMS_ON)
    {
    UnlockVehicle(PrivateVehicle[i][slot][vehID]);
    GameTextForPlayer(i, "~w~Privat-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    }
    }
    }
    if(veh == Spieler[playerid][pBusID])
    {
    GetVehiclePos(veh, pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(Spieler[playerid][pBusID], engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
    {
    LockVehicle(Spieler[playerid][pBusID]);
    GameTextForPlayer(playerid, "~w~Job-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    if(doors == VEHICLE_PARAMS_ON)
    {
    UnlockVehicle(Spieler[playerid][pBusID]);
    GameTextForPlayer(playerid, "~w~Job-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    }
    if(veh == Spieler[playerid][pBike])
    {
    if(IsValidVehicle(Spieler[playerid][pBike]))
    {
    GetVehiclePos(Spieler[playerid][pBike], pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(Spieler[playerid][pBike], engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
    {
    LockVehicle(Spieler[playerid][pBike]);
    GameTextForPlayer(playerid, "~w~Fahrrad~n~~r~Abgeschlossen", 3000, 6);
    return 1;
    }
    if(doors == VEHICLE_PARAMS_ON)
    {
    UnlockVehicle(Spieler[playerid][pBike]);
    GameTextForPlayer(playerid, "~w~Fahrrad~n~~g~Aufgeschlossen", 3000, 6);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt keine Schlüssel für dieses Fahrzeug.");
    }

  • Hi, habe gerade ein Problem beim Speichern der Fahrzeugfarben..


    Vorher hatte ich es gespeichert ohne Farben, also nur ID und Koordinaten, jetzt möchte ich die Farben auch speichern.


    ocmd:veh(playerid,params[])
    {
    new mID,pID,color1,color2;
    if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid, ROT, "Du bist kein Admin oder dein Rang ist zu niedrig!");
    if(sscanf(params,"uiii",pID,mID,color1,color2))return SendClientMessage(playerid,ROT,"Befehl: /veh [PLAYERID] [CARID] [FARBE1] [FARBE2]");
    if(mID<400||mID>611)return SendClientMessage(playerid,ROT,"Fahrzeug ID muss zwischen 411 und 611 liegen!");
    if(color1<0||color1>126||color2<0||color2>126) return SendClientMessage(playerid,ROT,"Die Farbe muss zwischen 0 und 126 liegen!");
    new Float:xc,Float:yc,Float:zc,Float:rc;
    GetPlayerPos(pID,xc,yc,zc);
    GetPlayerFacingAngle(pID,rc);
    createCar(pID,mID,xc,yc,zc,rc,color1,color2);
    return 1;
    }



    createCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r,f1,f2)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]!=0)continue;
    GetPlayerName(playerid,cInfo[i][besitzer],24);
    cInfo[i][c_x]=x;
    cInfo[i][c_y]=y;
    cInfo[i][c_z]=z;
    cInfo[i][c_r]=r;
    cInfo[i][farbe1]=f1;
    cInfo[i][farbe2]=f2;
    cInfo[i][model]=modelid;
    cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,f1,f2,-1);
    saveCarToDB(playerid,i);
    return 1;
    }
    return 1;
    }



    saveCarToDB(playerid,carid)
    {
    new query[128];
    format(query,sizeof(query),"INSERT INTO cars (besitzer,model,farbe1,farbe2,x,y,z,r) VALUES ('%i','%i','%i','%i','%f','%f','%f','%f')",sInfo[playerid][id],cInfo[carid][model],cInfo[carid][farbe1],cInfo[carid][farbe2],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
    mysql_function_query(dbverbindung,query,false,"","");
    return 1;
    }







    Problem ist jetzt er speichert gar nichts mehr..
    Ist hier vll ein Fehler, dass ich hier nicht color1,color2 schreiben darf:
    createCar(pID,mID,xc,yc,zc,rc,color1,color2);

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Danke! noch eine kleine Frage dazu warum kann ich hier jetzt
    createCar(pID,mID,xc,yc,zc,rc,color1,color2);
    color1 und color2 direkt eintragen?



    Hier funktioniert das ja so nicht:
    ocmd:test(playerid,params[])
    {
    GetPlayerName(playerid, sendename, 24);
    SendClientMessage(playerid,ORANGE,"sendename");
    return 1;
    }





    da man ja den text formatieren muss:
    ocmd:test(playerid,params[])
    {
    new text1[60];
    GetPlayerName(playerid, sendename, 24);
    format(text1, sizeof(text1), "%s",sendename);
    SendClientMessage(playerid,ORANGE,text1);
    return 1;
    }

  • Beitrag von Apokrate ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Hi, ich hätte eine kleine Frage:
    wenn man bei einem Befehl zum Beispiel 2 Integer braucht,
    wie beim /veh befehl farbe 1 und farbe 2 kann man ja new farbe[2];
    und dann kann man farbe[0] und farbe[1] verwenden
    funktioniert das auch mit strings?
    also wenn ich text1[60] habe und text2[60]
    gibts dann irgendwie sowas oder so: text[2][60]

  • funktioniert das auch mit strings?


    Ja, dafür musst du zweidimensionale Arrays verwenden, ansonsten funktioniert das nicht.


    Beispiel:


    new bla[5][60];


    Damit kannst du 5 Strings mit je maximal 60 Zeichen speichern.


    new bla[5][60];
    format(bla[0], sizeof(bla[]), "Blub");
    print(bla[0]); //Ausgabe: "Blub"


    //E: Kleinigkeit am Code verändert

  • Beitrag von IceWave ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Meine amx war vorher 2.3MB groß


    Sie ist jetzt 130MB groß



    Das einzige großaritge was ich geändert habe, waren die Player und Vehicle schleifen.


    Ich habe eine variabel erstellt die die maximale ID wiedergibt für einen Spieler und ein Fahrzeug, so dass die Schleifen nicht unnötig mehr durchlaufen.

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