Angepinnt [SAMMELTHREAD] Kleine Scripting Fragen

  • Neu

    Wie kann man Marker erstellen die nur innerhalb eines Teams funtkionieren (SetPlayerTeam)?

    Bsp.: Man geht in eine Fratkion und es werden nur Marker von allen Mitgliedern der Fraktion angezeigt.

    Mein bisheriger Ansatz:

    Quellcode

    1. for(new i = 0; i < MAX_PLAYERS; i++){
    2. if(!IsPlayerConnected(i))continue;
    3. if(GetPlayerTeam(playerid) == GetPlayerTeam(i)){
    4. SetPlayerMarkerForPlayer(playerid, i, GetPlayerColor(i) & 0xC2A2DAFF);
    5. SetPlayerMarkerForPlayer(i, playerid, GetPlayerColor(playerid) & 0xC2A2DAFF);
    6. }
    7. }
    Problem: Die Marker werden nicht angezeigt und die Farbe des Namen ändert sich nur bei einem selbst.

    Habe im Script ShowPlayerMarkers(2).

    Bei OnPlayerSpawn hab ich standardmäßig SetPlayerColor(playerid, 0xFFFFFF00) drinne, Marker sollen nur in dieser Arena (Gangfigt) sichtbar sein .
  • Neu

    Hey,

    Habe eine Kurze frage warum wird nicht der Name gesetzt als kennzeichen der das Fahrzeug gespawnt hat?

    Quellcode

    1. ocmd:veh(playerid, params[])
    2. {
    3. new vID, color1, color2, Float:x, Float:y, Float:z, Float:rot, index = 0;
    4. if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid, COLOR_WHITE, ERROR_ADMIN);
    5. if(sscanf(params, "iii", vID, color1, color2))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/veh [Model-ID] [Farbe 1] [Farbe 2]");
    6. if(vID < 400 || vID > 611)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Model ID muss zwischen 400 und 611 liegen.");
    7. if(color1 < 0 || color1 > 255)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Farbe 1 muss zwischen 0 und 255 liegen.");
    8. if(color2 < 0 || color2 > 255)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Farbe 2 muss zwischen 0 und 255 liegen.");
    9. GetPlayerPos(playerid, x, y, z);
    10. new Interior = GetPlayerInterior(playerid);
    11. GetPlayerFacingAngle(playerid, rot);
    12. for(new a=0;a<MAX_ADMINVEHS;a++)
    13. {
    14. if(spawnedVeh[a] != INVALID_VEHICLE_ID)index++;
    15. }
    16. if(index == MAX_ADMINVEHS)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Die maximale Anzahl der erstellbaren Fahrzeuge wurde erreicht.");
    17. for(new a=0;a<MAX_ADMINVEHS;a++)
    18. {
    19. if(spawnedVeh[a] == INVALID_VEHICLE_ID)
    20. {
    21. Meters[spawnedVeh[a]] = 0;
    22. Gas[spawnedVeh[a]] = 100;
    23. new playerName[MAX_PLAYER_NAME+1], nPlate[32];
    24. GetPlayerName(playerid, playerName, sizeof(playerName));
    25. format(nPlate, sizeof(nPlate), "%s", playerName);
    26. SetVehicleNumberPlate(spawnedVeh[a], nPlate);
    27. spawnedVeh[a] = CreateVehicle(vID, x, y, z, rot, color1, color2, -1);
    28. PutPlayerInVehicle(playerid, spawnedVeh[a], 0);
    29. LinkVehicleToInterior(spawnedVeh[a], Interior);
    30. break;
    31. }
    32. }
    33. return 1;
    34. }
    Alles anzeigen
  • Neu

    Jeffry schrieb:

    Dr. Frauenarzt schrieb:

    Habe eine Kurze frage warum wird nicht der Name gesetzt als kennzeichen der das Fahrzeug gespawnt hat?
    Das Kennzeichen wird vor dem Erstellen des Fahrzeugs gesetzt. Es muss danach gesetzt werden, davor existiert das Fahrzeug ja noch nicht.


    Bereits aufgefallen aber dies wird trd nicht gesetzt der rest funktioniert.


    Quellcode

    1. ocmd:veh(playerid, params[])
    2. {
    3. new vID, color1, color2, Float:x, Float:y, Float:z, Float:rot, index = 0;
    4. if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid, COLOR_WHITE, ERROR_ADMIN);
    5. if(sscanf(params, "iii", vID, color1, color2))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/veh [Model-ID] [Farbe 1] [Farbe 2]");
    6. if(vID < 400 || vID > 611)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Model ID muss zwischen 400 und 611 liegen.");
    7. if(color1 < 0 || color1 > 255)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Farbe 1 muss zwischen 0 und 255 liegen.");
    8. if(color2 < 0 || color2 > 255)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Farbe 2 muss zwischen 0 und 255 liegen.");
    9. GetPlayerPos(playerid, x, y, z);
    10. new Interior = GetPlayerInterior(playerid);
    11. GetPlayerFacingAngle(playerid, rot);
    12. for(new a=0;a<MAX_ADMINVEHS;a++)
    13. {
    14. if(spawnedVeh[a] != INVALID_VEHICLE_ID)index++;
    15. }
    16. if(index == MAX_ADMINVEHS)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Die maximale Anzahl der erstellbaren Fahrzeuge wurde erreicht.");
    17. for(new a=0;a<MAX_ADMINVEHS;a++)
    18. {
    19. if(spawnedVeh[a] == INVALID_VEHICLE_ID)
    20. {
    21. spawnedVeh[a] = CreateVehicle(vID, x, y, z, rot, color1, color2, -1);
    22. PutPlayerInVehicle(playerid, spawnedVeh[a], 0);
    23. LinkVehicleToInterior(spawnedVeh[a], Interior);
    24. Meters[spawnedVeh[a]] = 0;
    25. Gas[spawnedVeh[a]] = 100;
    26. new playerName[MAX_PLAYER_NAME+1], nPlate[32];
    27. GetPlayerName(playerid, playerName, sizeof(playerName));
    28. format(nPlate, sizeof(nPlate), "%s", playerName);
    29. SetVehicleNumberPlate(spawnedVeh[a], nPlate);
    30. break;
    31. }
    32. }
    33. return 1;
    34. }
    Alles anzeigen
  • Neu

    Dr. Frauenarzt schrieb:

    Jeffry schrieb:

    Dr. Frauenarzt schrieb:

    Habe eine Kurze frage warum wird nicht der Name gesetzt als kennzeichen der das Fahrzeug gespawnt hat?
    Das Kennzeichen wird vor dem Erstellen des Fahrzeugs gesetzt. Es muss danach gesetzt werden, davor existiert das Fahrzeug ja noch nicht.
    Bereits aufgefallen aber dies wird trd nicht gesetzt der rest funktioniert.


    Quellcode

    1. ocmd:veh(playerid, params[])
    2. {
    3. new vID, color1, color2, Float:x, Float:y, Float:z, Float:rot, index = 0;
    4. if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid, COLOR_WHITE, ERROR_ADMIN);
    5. if(sscanf(params, "iii", vID, color1, color2))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/veh [Model-ID] [Farbe 1] [Farbe 2]");
    6. if(vID < 400 || vID > 611)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Model ID muss zwischen 400 und 611 liegen.");
    7. if(color1 < 0 || color1 > 255)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Farbe 1 muss zwischen 0 und 255 liegen.");
    8. if(color2 < 0 || color2 > 255)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Farbe 2 muss zwischen 0 und 255 liegen.");
    9. GetPlayerPos(playerid, x, y, z);
    10. new Interior = GetPlayerInterior(playerid);
    11. GetPlayerFacingAngle(playerid, rot);
    12. for(new a=0;a<MAX_ADMINVEHS;a++)
    13. {
    14. if(spawnedVeh[a] != INVALID_VEHICLE_ID)index++;
    15. }
    16. if(index == MAX_ADMINVEHS)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Die maximale Anzahl der erstellbaren Fahrzeuge wurde erreicht.");
    17. for(new a=0;a<MAX_ADMINVEHS;a++)
    18. {
    19. if(spawnedVeh[a] == INVALID_VEHICLE_ID)
    20. {
    21. spawnedVeh[a] = CreateVehicle(vID, x, y, z, rot, color1, color2, -1);
    22. PutPlayerInVehicle(playerid, spawnedVeh[a], 0);
    23. LinkVehicleToInterior(spawnedVeh[a], Interior);
    24. Meters[spawnedVeh[a]] = 0;
    25. Gas[spawnedVeh[a]] = 100;
    26. new playerName[MAX_PLAYER_NAME+1], nPlate[32];
    27. GetPlayerName(playerid, playerName, sizeof(playerName));
    28. format(nPlate, sizeof(nPlate), "%s", playerName);
    29. SetVehicleNumberPlate(spawnedVeh[a], nPlate);
    30. break;
    31. }
    32. }
    33. return 1;
    34. }
    Alles anzeigen
    SetVehicleNumberPlate


    SA-MP Wiki schrieb:


    • The vehicle must be re-spawned or re-streamed for the changes to take effect.



    Probier es mal so:

    Quellcode

    1. ocmd:veh(playerid, params[])
    2. {
    3. new vID, color1, color2, Float:x, Float:y, Float:z, Float:rot, index = 0;
    4. if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid, COLOR_WHITE, ERROR_ADMIN);
    5. if(sscanf(params, "iii", vID, color1, color2))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/veh [Model-ID] [Farbe 1] [Farbe 2]");
    6. if(vID < 400 || vID > 611)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Model ID muss zwischen 400 und 611 liegen.");
    7. if(color1 < 0 || color1 > 255)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Farbe 1 muss zwischen 0 und 255 liegen.");
    8. if(color2 < 0 || color2 > 255)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Farbe 2 muss zwischen 0 und 255 liegen.");
    9. GetPlayerPos(playerid, x, y, z);
    10. new Interior = GetPlayerInterior(playerid);
    11. GetPlayerFacingAngle(playerid, rot);
    12. for(new a=0;a<MAX_ADMINVEHS;a++)
    13. {
    14. if(spawnedVeh[a] != INVALID_VEHICLE_ID)index++;
    15. }
    16. if(index == MAX_ADMINVEHS)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Die maximale Anzahl der erstellbaren Fahrzeuge wurde erreicht.");
    17. for(new a=0;a<MAX_ADMINVEHS;a++)
    18. {
    19. if(spawnedVeh[a] == INVALID_VEHICLE_ID)
    20. {
    21. spawnedVeh[a] = CreateVehicle(vID, x, y, z, rot, color1, color2, -1);
    22. new playerName[MAX_PLAYER_NAME+1], nPlate[32];
    23. GetPlayerName(playerid, playerName, sizeof(playerName));
    24. format(nPlate, sizeof(nPlate), "%s", playerName);
    25. SetVehicleNumberPlate(spawnedVeh[a], nPlate);
    26. SetVehicleToRespawn(spawnedVeh[a]);
    27. LinkVehicleToInterior(spawnedVeh[a], Interior);
    28. PutPlayerInVehicle(playerid, spawnedVeh[a], 0);
    29. Meters[spawnedVeh[a]] = 0;
    30. Gas[spawnedVeh[a]] = 100;
    31. break;
    32. }
    33. }
    34. return 1;
    35. }
    Alles anzeigen
  • Neu

    PAWN-Quellcode

    1. CreateVehicle(FcarInfo[i][fCarid], FcarInfo[i][fPos_x], FcarInfo[i][fPos_y], FcarInfo[i][fPos_z], FcarInfo[i][fPos_r], FcarInfo[i][fColor1], FcarInfo[i][fColor2], -1, FcarInfo[i][fSirene]);

    Der Code wird mir 4 Mal Tag Misstag aus. Ich habe die Positionen als Float definiert. Habt ihr eine Idee?

    PAWN-Quellcode

    1. public Load_Fraktionscars()
    2. {
    3. new rows;
    4. cache_get_row_count(rows);
    5. if(rows){
    6. for(new i=0; i<rows; i++)
    7. {
    8. cache_get_value_name_int(0, "f_id", FcarInfo[i][f_id]);
    9. cache_get_value_name_int(0, "c_id", FcarInfo[i][fCarid]);
    10. cache_get_value_name_int(0, "pos_x", FcarInfo[i][fPos_x]);
    11. cache_get_value_name_int(0, "pos_y", FcarInfo[i][fPos_y]);
    12. cache_get_value_name_int(0, "pos_z", FcarInfo[i][fPos_z]);
    13. cache_get_value_name_int(0, "pos_r", FcarInfo[i][fPos_r]);
    14. cache_get_value_name_int(0, "color1", FcarInfo[i][fColor1]);
    15. cache_get_value_name_int(0, "color2", FcarInfo[i][fColor2]);
    16. cache_get_value_name_int(0, "sirene", FcarInfo[i][fSirene]);
    17. print("Fraktionsfahrzeug geladen");
    18. CreateVehicle(FcarInfo[i][fCarid], FcarInfo[i][fPos_x], FcarInfo[i][fPos_y], FcarInfo[i][fPos_z], FcarInfo[i][fPos_r], FcarInfo[i][fColor1], FcarInfo[i][fColor2], -1, FcarInfo[i][fSirene]);
    19. }
    20. }else{ print("Keine Fraktionsfahrzeuge geladen."); }
    21. }
    Alles anzeigen


    PAWN-Quellcode

    1. enum fDataEnum
    2. {
    3. f_id,
    4. fCarid,
    5. float:fPos_x,
    6. float:fPos_y,
    7. float:fPos_z,
    8. float:fPos_r,
    9. fColor1,
    10. fColor2,
    11. fSirene
    12. }
    Alles anzeigen
    Mit freundlichen Grüßen


    Beitrag von Dr. Frauenarzt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Fehler gefunden ().
  • Neu

    Ich habe kurz eine Frage hab ein klein fehler warum auch immer.


    Also wen ich das Haus zu schließe und auschließe steht immer bei beiden das es abgeschlossen ist warum?

    Quellcode

    1. if(listitem == 2) // Tür
    2. {
    3. if(Haus[haus][hLock] == 1)
    4. {
    5. Haus[haus][hLock] = 0;
    6. GameTextForPlayer(playerid, "~w~Haus ~g~aufgeschlossen", 3000, 6);
    7. UpdateHouseLabel(haus, Haus[haus][hOwned]);
    8. }
    9. if(Haus[haus][hLock] == 0)
    10. {
    11. Haus[haus][hLock] = 1;
    12. GameTextForPlayer(playerid, "~w~Haus ~r~abgeschlossen", 3000, 6);
    13. UpdateHouseLabel(haus, Haus[haus][hOwned]);
    14. }
    15. }
    Alles anzeigen
  • Neu

    Geht direkt wieder zu ?

    PAWN-Quellcode

    1. Haustür -> AufHaustür -> Zu


    Quellcode

    1. if(listitem == 2) // Tür
    2. {
    3. if(Haus[haus][hLock] == 1)
    4. {
    5. Haus[haus][hLock] = 0;
    6. printf("Haustür -> Auf", Haus[haus][hLock]);
    7. GameTextForPlayer(playerid, "~w~Haus ~g~aufgeschlossen", 3000, 6);
    8. UpdateHouseLabel(haus, Haus[haus][hOwned]);
    9. }
    10. if(Haus[haus][hLock] == 0)
    11. {
    12. Haus[haus][hLock] = 1;
    13. printf("Haustür -> Zu", Haus[haus][hLock]);
    14. GameTextForPlayer(playerid, "~w~Haus ~r~abgeschlossen", 3000, 6);
    15. UpdateHouseLabel(haus, Haus[haus][hOwned]);
    16. }
    17. }
    Alles anzeigen
    //E:

    & Wie lasse ich Name und eine Beschreibung auslesen aus der DB?

    Habe es so versucht:

    PAWN-Quellcode

    1. cache_get_value_name(i, "Besitzer", Haus[houseID][hBesitzer]);
    2. cache_get_value_name(i, "Name", Haus[houseID][hName]);


    Und so versucht:


    PAWN-Quellcode

    1. cache_get_value_name_int(i, "Besitzer", Haus[houseID][hBesitzer]);
    2. cache_get_value_name_int(i, "Name", Haus[houseID][hName]);

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dr. Frauenarzt ()

  • Neu

    Sehr schön verstanden.


    PAWN-Quellcode

    1. cache_get_value_name(i, "Besitzer", Haus[houseID][hBesitzer]);
    2. cache_get_value_name(i, "Name", Haus[houseID][hName]);


    PAWN-Quellcode

    1. cache_get_value_name_int(i, "Besitzer", Haus[houseID][hBesitzer]);
    2. cache_get_value_name_int(i, "Name", Haus[houseID][hName]);


    Wie lasse ich am besten die 2 auslesen einmal den Besitzername
    und einmal die Beschreibung des Hauses.

    Beim Erstellen wird soweit alles richtig angezeigt nur das Problem ist wen ich den Server neu starte klappt es nicht.


    //E:

    Habe die Lösung gefunden.

    PAWN-Quellcode

    1. cache_get_value_name(i, "Besitzer", Haus[houseID][hBesitzer], MAX_PLAYER_NAME);
    2. cache_get_value_name(i, "Name", Haus[houseID][hName], 64);

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dr. Frauenarzt ()

  • Neu

    PAWN-Quellcode

    1. public Load_Fraktionscars()
    2. {
    3. new rows;
    4. cache_get_row_count(rows);
    5. if(rows){
    6. for(new i=0; i<rows; i++)
    7. {
    8. cache_get_value_name_int(0, "f_id", FcarInfo[i][f_id]);
    9. cache_get_value_name_int(0, "c_id", FcarInfo[i][fCarid]);
    10. cache_get_value_name_float(0, "pos_x", FcarInfo[i][fPos_x]);
    11. cache_get_value_name_float(0, "pos_y", FcarInfo[i][fPos_y]);
    12. cache_get_value_name_float(0, "pos_z", FcarInfo[i][fPos_z]);
    13. cache_get_value_name_float(0, "pos_r", FcarInfo[i][fPos_r]);
    14. cache_get_value_name_int(0, "color1", FcarInfo[i][fColor1]);
    15. cache_get_value_name_int(0, "color2", FcarInfo[i][fColor2]);
    16. cache_get_value_name_int(0, "sirene", FcarInfo[i][fSirene]);
    17. print("Fraktionsfahrzeug geladen");
    18. CreateVehicle(FcarInfo[i][fCarid], FcarInfo[i][fPos_x], FcarInfo[i][fPos_y], FcarInfo[i][fPos_z], FcarInfo[i][fPos_r], FcarInfo[i][fColor1], FcarInfo[i][fColor2], -1, FcarInfo[i][fSirene]);
    19. continue;
    20. }
    21. }else{ print("Keine Fraktionsfahrzeuge geladen."); }
    22. }
    Alles anzeigen
    Es wird nur ein Auto erstellt, aber alle geladen?
    Mit freundlichen Grüßen

  • Neu

    The Sensei schrieb:

    Es wird nur ein Auto erstellt, aber alle geladen?
    Also das continue; in der Schleife macht da keinen Sinn :)


    The Sensei schrieb:

    cache_get_value_name_int(0,
    und das muss cache_get_value_name_int(i, heißen, weil du sonst doch immer auf den selben Index zugreifen würdest :)


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