Tausch mal Zeile 31 und 32 ![]()
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
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
-
-
Code
if(weaponid == 34 && bodypart == 9) { if(Spieler[playerid][pTot] == 0) Headshot(playerid, issuerid); }Code
Alles anzeigenstock Headshot(hitid, playerid) { new Float:x, Float:y, Float:z, Float:FrontX, Float:FrontY, Float:FrontZ, Float:CamX, Float:CamY, Float:CamZ; GetPlayerCameraFrontVector(playerid, FrontX, FrontY, FrontZ); GetPlayerCameraPos(playerid, CamX, CamY, CamZ); for(new Float:i=0.0;i<100;i=i+0.5) { x = FrontX * i + CamX; y = FrontY * i + CamY; z = FrontZ * i + CamZ; if(hitid != playerid)return 1; if(GetPlayerSpecialAction(hitid) == SPECIAL_ACTION_DUCK) { if(IsPlayerInRangeOfPoint(hitid, 0.4, x, y, z)) { GameTextForPlayer(playerid,"~r~~h~~h~] Headshot! ]", 5000, 5); SetPlayerHealth(hitid, 0.0); } } else { if(IsPlayerInRangeOfPoint(hitid, 0.4, x, y, z-0.7)) { GameTextForPlayer(playerid,"~r~~h~~h~] Headshot! ]", 5000, 5); SetPlayerHealth(hitid, 0.0); } } } return 1; }Kurze frage kann mir mal einer sagen warum der Headshot nicht funktioniert schieße auf den Kopf mit der WaffenID 34
-
Spieler[playerid][pTot] == 0
Ist diese Variable denn 0?
-
Positiv steht auf 0 ja wird resettet beim spawnen wen er aus den Krankenhaus kommt auch alles habe ich schon überprüft
-
Was soll der Code denn da genau bezwecken?
if(hitid != playerid)return 1;
Das hier z.B. macht keinen Sinn, mach das mal raus.
In diesem Fall kan hitid niemals playerid sein

-
Trotzdem geht das Headshot System irgendwie nicht und er ist nicht tot
-
-
Entschuldigung Meister habe ich überlesen tut mir leid ich bedanke mich vielmals für deine Hilfe!
-> Wen ich den Spieler Wanteds gebe ist es schlau mit ein Timer OnPlayerStreamIn Updaten zu lassen? Weil wen ich jemand Wanteds gebe bekommt er nicht sofort den Label sondern erst wen ich weiter weg war...
-
-> Wen ich den Spieler Wanteds gebe ist es schlau mit ein Timer OnPlayerStreamIn Updaten zu lassen? Weil wen ich jemand Wanteds gebe bekommt er nicht sofort den Label sondern erst wen ich weiter weg war...
Du nutzt wahrscheinlich n Streamer für das Label...
Kannst manuell einfach 1x für die Spieler updaten: https://github.com/samp-incogn…(Updates)#Streamer_Update
Dann brauchst du keinen Timer und es sollte sofort zu sehen sein

-
Merke: Timers sind Bad (vor allem in SAMP)
Wenn zu verhindern, dann verhindere die Nutzung.
-
-
muss ich bei OnPlayerStreamIn erst die Position auslesen also so:
Da musst du gar nix machen.
Da wo du das Label setzt, einfach die Funktion aufrufen:
C
Alles anzeigenUpdateStreamer(playerid, STREAMER_TYPE_3D_TEXT_LABEL); //Und dann die Funktion: stock UpdateStreamer(playerid, _type) { new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); for(new i=GetPlayerPoolSize(); i!=-1; i--) { if(IsPlayerConnected(i) && !IsPlayerNPC(i) && IsPlayerInRangeOfPoint(i,50.0,x,y,z)) { Streamer_UpdateEx(i, x,y,z, .type = _type, .freezeplayer=0) } } }So sollte das klappen.
Natürlich musst du für alle den Streamer Updaten, die sich da in der Nähe befinden.
-
Code
Alles anzeigenocmd:gebieteinfo(playerid) { new belstr1[16], belstr2[16]; if(!IsGang(Spieler[playerid][pFraktion]))return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION); for(new i=1;i<sizeof(GangFight);i++) { switch(GangFight[i][warBelohnungType]) { case 0: { format(belstr1,16, "Geld"); format(belstr2, 16, "%d$", GangFight[i][warBelohnungVar]); } case 1: { format(belstr1, 16, "Materialien"); format(belstr2, 16, "%d", GangFight[i][warBelohnungVar]); } } strdel(DialogString, 0, sizeof(DialogString)); format(DialogString, sizeof(DialogString), "Gebiet: %s, Besitzer: %s, Belohnung: %s [%s]\n", GangFight[i][warZoneName], GetFraktionName(GangFight[i][warOwner]), belstr1, belstr2); ShowPlayerDialog(playerid, DIALOG_4ALL_SONSTIGES, DIALOG_STYLE_MSGBOX, ""#SERVER_FARBE""SERVER_HOST" {FFFFFF}| GANGFIGHT", DialogString, "OK",""); } return 1; }Wen ich das eingebe kommt nur ein GF gebiet obwohl ich mehrere im script definiert habe?
-
Nutze keinen globalen Dialog-String.
Das nicht gut.
C
Alles anzeigenocmd:gebieteinfo(playerid) { if(!IsGang(Spieler[playerid][pFraktion]))return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION); new const type[][] = {"Geld","Materialien"}, v[][] = {"$]","]"}; new string[64*sizeof(GangFight)]; for(new i; i<sizeof(GangFight); i++) { format(string,sizeof(string),"%sGebiet: %s, Besitzer: %s, Belohnung: %s [%d%s\n", string,GangFight[i][warZoneName], GetFraktionName(GangFight[i][warOwner]), type[GangFight[i][warBelohnungType]], GangFight[i][warBelohnungVar], v[GangFight[i][warBelohnungType]); } ShowPlayerDialog(playerid, DIALOG_4ALL_SONSTIGES, DIALOG_STYLE_MSGBOX, ""#SERVER_FARBE""SERVER_HOST" {FFFFFF}| GANGFIGHT", string, "OK",""); return 1; } -
Code
Alles anzeigenif(Spieler[forplayerid][pFraktion] == 2 || Spieler[forplayerid][pFraktion] == 3 || Spieler[forplayerid][pFraktion] == 4) { if(Spieler[playerid][pWanteds] > 0){ for(new a=0;a<MAX_WANTEDLABEL;a++) { if(Spieler[forplayerid][pWantedLabelCreated][a] == 0){ format(string, sizeof(string), "{FFFF00}%s (ID: %d)\nWanteds: %d\nGrund: %s", GetName(playerid), playerid, Spieler[playerid][pWanteds], Spieler[playerid][pWantedReason]); Spieler[forplayerid][pWantedLabel][a] = CreateDynamic3DTextLabel(string, COLOR_YELLOW, 0.0, 0.0, 0.0, 10.0, playerid, INVALID_VEHICLE_ID, 0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), forplayerid); Spieler[forplayerid][pWantedLabelID][a] = playerid; Spieler[forplayerid][pWantedLabelCreated][a] = 1; Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, Spieler[forplayerid][pWantedLabel][a], E_STREAMER_ATTACH_OFFSET_Z, 0.7); UpdateStreamer(playerid, STREAMER_TYPE_3D_TEXT_LABEL); return 1; } } } }So ist das richtig korrekt oder soll ich den vorher updaten lassen?
-
So ist das richtig korrekt oder soll ich den vorher updaten lassen?
Sollte, probiers halt einfach mal aus

-
Habs eben Probiert mit ein kollegen klappt leider nicht muss in ein Interior und dann wieder raus das der Label da ist
etwas komisch habe mir überlegt das ganze einfach nicht dynamic zu machen -
Könntest noch versuchen es so zu machen:
UpdateStreamer(forplayerid, STREAMER_TYPE_3D_TEXT_LABEL);
Und eventuell in der Funktion bei der InRange abfrage, das von 50.0 auf 100.0 zu setzen

-
Beitrag von Dr. Frauenarzt ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: DELTE (). -
Code
Alles anzeigenpublic OnVehicleSirenStateChange(playerid, vehicleid, newstate) { new VehicleID = GetPlayerVehicleID(playerid); new fV = IsAFraktionsVeh(vehicleid); if(IsAFraktionsVeh(vehicleid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { if(GetVehicleModel(VehicleID) == 560 || fVehicle[fV][vehSiren] == 1 && fVehicle[fV][vehFraktion] == 5) { if(newstate) { FlashTime[vehicleid] = SetTimerEx("OnLightFlash", flashtime, true, "d", vehicleid); fVehicle[fV][vehUCL] = CreateDynamicObject(19419,0,0,-1000,0,0,0,100); AttachDynamicObjectToVehicle(fVehicle[fV][vehUCL], fVehicle[fV][vehID], 0.015000,0.000000,0.820000,0.000000,0.000000,0.000000); GameTextForPlayer(playerid, "~w~Sirene ~g~an", 3000, 1); } if(!newstate) { new panels, tuer, licht, reifen; KillTimer(FlashTime[vehicleid]); GetVehicleDamageStatus(vehicleid, panels, tuer, licht, reifen); UpdateVehicleDamageStatus(vehicleid, panels, tuer, 0, reifen); DestroyDynamicObject(fVehicle[fV][vehUCL]); GameTextForPlayer(playerid, "~w~Sirene ~r~aus", 3000, 1); } } else if(GetVehicleModel(VehicleID) == 560 || fVehicle[fV][vehSiren] == 1 || fVehicle[fV][vehFraktion] == 2 || fVehicle[fV][vehFraktion] == 3 || fVehicle[fV][vehFraktion] == 4) { if(newstate) { FlashTime[vehicleid] = SetTimerEx("OnLightFlash", flashtime, true, "d", vehicleid); SireneObject[VehicleID][0] = CreateDynamicObject(18646, 0, 0, -1000, 0, 0, 0, 100); SireneObject[VehicleID][1] = CreateDynamicObject(19797, 0, 0, -1000, 0, 0, 0, 100); SireneObject[VehicleID][2] = CreateDynamicObject(19797, 0, 0, -1000, 0, 0, 0, 100); AttachDynamicObjectToVehicle(SireneObject[VehicleID][0], VehicleID, -0.544999,0.200000,0.859999,1.620000,-0.179999,0.000000); AttachDynamicObjectToVehicle(SireneObject[VehicleID][1], VehicleID, 0.554999,-0.924999,0.665000,0.540000,-0.179999,0.000000); AttachDynamicObjectToVehicle(SireneObject[VehicleID][2], VehicleID, -0.535000,-0.924999,0.665000,0.540000,-0.179999,0.000000); GameTextForPlayer(playerid, "~w~Sirene ~g~an", 3000, 1); } if(!newstate) { new panels, tuer, licht, reifen; KillTimer(FlashTime[vehicleid]); GetVehicleDamageStatus(vehicleid, panels, tuer, licht, reifen); UpdateVehicleDamageStatus(vehicleid, panels, tuer, 0, reifen); DestroyDynamicObject(SireneObject[VehicleID][0]); DestroyDynamicObject(SireneObject[VehicleID][1]); DestroyDynamicObject(SireneObject[VehicleID][2]); GameTextForPlayer(playerid, "~w~Sirene ~r~aus", 3000, 1); } } } return 1; }Mal eine Kurze frage,
Warum kann ich die Sirene für LSPD nicht nutzen geschweige für SAMD?
vehSirene stimmt über ein das Fahrzeug und das es ein Fraktions Fahrzeug ist.
