Beiträge von Jeffry
-
-
Dann erstelle das Objekt mal nicht als Stream-Objekt und teste ob das geht:
sirene[vid] = CreateObject(18646,x,y,z,0,0,0,100); -
Schreibe es auf jeden Fall mal so:
Spoiler anzeigen public OnPlayerDeath(playerid, killerid, reason)
{
//________________ Definierungen ______________________
new string[128];
SpielerInfo[playerid][pTode] +=1;
SpielerInfo[playerid][pDuty] = 0;
//________________ Wanted-System ______________________
if(killerid != INVALID_PLAYER_ID)
{
SpielerInfo[killerid][pKills] +=1;
if(SpielerInfo[playerid][pTeam] == 1 && SpielerInfo[killerid][pTeam] != 1)
{
SpielerInfo[killerid][pWanteds] += 5;
SetPlayerWantedLevel(killerid, (SpielerInfo[killerid][pWanteds]/5) + 1);
SpielerInfo[killerid][pSterne] = SpielerInfo[killerid][pWanteds]/5 + 1;
SpielerInfo[killerid][pVerbrechen] += 5;
format(string,sizeof(string),"%s hat ein Verbrechen begangen: Polizeimord. Anzahl: 5 | Zeuge: %s.",SpielerName(killerid),SpielerName(playerid));
SendFraktionMessage(1, cop, string);
format(string,sizeof(string),"Du hast ein Verbrechen begangen: Polizeimord. Anzahl: 5 | Zeuge: %s.",SpielerName(playerid));
SendClientMessage(killerid,info,string);
format(string,sizeof(string), "Aktuelles Wanted: %i",SpielerInfo[killerid][pWanteds]);
SendClientMessage(killerid,info,string);
}
else if(SpielerInfo[playerid][pTeam] != 1 && SpielerInfo[killerid][pTeam] != 1)
{
SpielerInfo[killerid][pWanteds] += 3;
SetPlayerWantedLevel(killerid, (SpielerInfo[killerid][pWanteds]/5) + 1);
SpielerInfo[killerid][pSterne] = SpielerInfo[killerid][pWanteds]/5 + 1;
SpielerInfo[killerid][pVerbrechen] += 3;
format(string,sizeof(string),"%s hat ein Verbrechen begangen: Zivimord. Anzahl: 3 | Zeuge: %s.",SpielerName(killerid),SpielerName(playerid));
SendFraktionMessage(1, cop, string);
format(string,sizeof(string),"Du hast ein Verbrechen begangen: Zivimord. Anzahl: 3 | Zeuge: %s.",SpielerName(playerid));
SendClientMessage(killerid,info,string);
format(string,sizeof(string), "Aktuelles Wanted: %i",SpielerInfo[killerid][pWanteds]);
SendClientMessage(killerid,info,string);
}
}
//________________ Tot_System ______________________
if(SpielerInfo[playerid][pWanteds] > 0 && teaminrangeofpoint(playerid, 1))
{
new wstring[128];
format(wstring, sizeof(wstring), "%s wurde Verhaftet! Grund: Tot.",SpielerName(playerid));
SendClientMessageToAll(info, wstring);
print(wstring);
new time = SpielerInfo[playerid][pWanteds] * 120;
SpielerInfo[playerid][pKnastzeitBis] = gettime() + time;
SpielerInfo[playerid][pKnastzeit] = time;
SpielerInfo[playerid][pKnast] = 1;
SpielerInfo[playerid][wTot] += 1;
SpielerInfo[playerid][pInhaftiert] += 1;
SpielerInfo[playerid][pWanteds] = 0;
SpielerInfo[playerid][pSterne] = 0;
SpielerInfo[playerid][kSkin] = 62;
SetPlayerWantedLevel(playerid, 0);
}
else if(SpielerInfo[playerid][pTot] == 0)
{
SpielerInfo[playerid][pTot] = 1;
tzeit[playerid] = 120;
GetPlayerPos(playerid,tx[playerid],ty[playerid],tz[playerid]);
toticon[playerid] = CreatePickup(1254,1,tx[playerid],ty[playerid],tz[playerid],-1);
format(string, sizeof(string), "%s", SpielerName(playerid));
totlabel = Create3DTextLabel(string,0xFF0000FF, tx[playerid], ty[playerid], tz[playerid], 32.0, 0);
format(string,sizeof(string),"%s ist gestorben! Er braucht dringend einen Arzt.",SpielerName(playerid));
SendFraktionMessage(2, medic, string);
SpielerInfo[playerid][pTotskin] = 162;
}
//________________ Tot-Ende ______________________
TextDrawHideForPlayer(playerid,txtTimeDisp);
return 1;
}
Dann: Bekommst du die Nachrichten (welche?) die kommen sollen?
-
Ist dein Streamer Plugin aktuell?
http://forum.sa-mp.com/showthread.php?t=102865 -
Nutze AttachDynamicObjectToVehicle.
-
Du setzt nirgends den string für das Zustands Textdraw.
-
Plugins laufen nicht auf 100% aller Maschinen ohne Probleme. Dass es bei dir läuft heißt nicht, dass es auch auf allen anderen Maschinen läuft.
Außerdem funktioniert sscanf nicht immer gleich, und variiert von Version zu Version. Strtok ist immer gleich und funktioniert immer.Sscanf darf ja gerne verwendet werden, wer will kann es ja entsprechend ändern, ist ja nicht verboten. Deshalb weise ich ja darauf hin.
-
Bekommst du irgendeine Meldung im Chat, wenn du den Befehl eingibst?
Wenn nein, poste dein ganzes OnPlayerCommandText.
Wenn ja, welche Meldung? Falls Unknown command, poste dein ganzes OnPlayerCommandText. -
Du musst aber bedenken, dass die Höhe der Box immer dieselbe ist, egal welchen Y-Wert du eingibst. Daher muss der geschätzt werden, da man ihn nicht sieht. Auch bei 0.0 wird dir die Box angezeigt und sie ist gleich groß wenn du 100.0 eingibst. Es verändert sich nur der selektierbare Bereich.
Daher bringt es nur bedingt etwas, das mit dem Editor einzustellen.
-
TextDrawTextSize musst du verwenden, das stimmt schon.
Allerdings musst du sowohl einen korrekten X Wert als auch einen korrekten (geschätzten) Y Wert angeben:
TextDrawTextSize(News[playerid], 585.000000, 0.000000);
zu:
TextDrawTextSize(News[playerid], 585.000000, 15.000000);
(Je nach dem wie hoch dein Textdraw ist die 15 eben ändern.)So natürlich auch für die anderen Textdraws. Die Höhe abschätzen.
-
Du musst eine Schleife durch die Datei Pfade machen. Ich kann dir zwar ein Beispiel geben, aber das wird dir nicht helfen, wenn dein System komplett anders aufgebaut ist.
Versuche dich mal daran, eine Schleife durch die Dateien hinzubekommen. Wenn da oder danach Fragen aufkommen, dann erstelle bitte einen neuen Thread und erkläre woran du hängst, das gehört dann nicht mehr hier rein.
-
Ja, nur inwiefern das ressourcentechnisch gesehen gut ist, ist eine andere Frage. Machbar ist es auf jeden Fall.
-
Hier, die habe ich mal in den Code Schnipseln gepostet.
stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
{
new l_name[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(!strcmp(l_name,l_PlayerName, true)) return i;
}
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(strfind(l_name,l_PlayerName,true)!=-1) return i;
}
}
return INVALID_PLAYER_ID;
}Wenn du nur nach dem ganzen Name suchen willst, mache die zweite Schleife weg.
-
if(sscanf(params,"ui",pID,a_level,))return SendClientMessage(playerid,ROT,"Dein Admin Rank reicht nicht aus!");
zu:
if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,ROT,"Dein Admin Rank reicht nicht aus!");Markiere nächstes mal bitte die Fehlerzeile.
Spoiler anzeigen ocmd:giveadmin(playerid,params[])
{
if(!isAdmin(playerid,2000))return SendClientMessage(playerid,ROT,"Du bist kein Projektleiter!");
new pID,a_level,anlevel[128],aanlevel[128];
if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,ROT,"Dein Admin Rank reicht nicht aus!");
format(anlevel,sizeof(anlevel),"Dein Adminrank wurde in %s geändert.",a_level);
format(anlevel,sizeof(aanlevel),"Du hast den Adminrank von %i in %s geändert.",playerid,a_level);
sInfo[pID][alevel]=a_level;
savePlayer(pID);
SendClientMessage(pID,GELB,anlevel);
SendClientMessage(playerid,AFARBE,aanlevel);
return 1;
} -
@Kontrax:
Das kommt darauf an, wo du es setzen willst. Die Variable kannst du eigentlich überall setzen, wenn du SetPlayerInterior nur dann bei OnPlayerSpawn hast. Am besten du probierst es mal aus wie du es dir vorstellst und fragst bei Problemen nochmal nach, mit Code.@_iPit_: Dieser Thread ist für kleine Fragen, nicht für ewige Codes, das macht keinen Sinn die hier zu lösen, da ständig was dazwischen steht. Mache bitte einen Thread auf.
Haze1730: Lade dir das herunter:
http://www.microsoft.com/en-us…oad/details.aspx?id=40784 -
Dann mach es mit einer Variable. Gleich wie bei den Fahrrädern, nur ohne Timer.

-
http://wiki.sa-mp.com/wiki/Function:SetPlayerInterior
Verwenden? Oder willst du es erst woanders setzen?
Dann setze eine Spielervariable auf die Interior ID und setze das Interior dann dort mit der Variable, wo du es setzen willst. -
Problem 1: Du musst die ID des Spielers in SetPlayerHealth verwenden, nicht der Name.
Problem 2: inputtext muss zu einem Float konvertiert werden und so auch angezeigt werden.if(dialogid == DIALOG_ALEBEN)
{
if(response)
{
new string[145],namee[MAX_PLAYER_NAME], Float:health;
GetPlayerName(clickid[playerid], namee, sizeof(namee));
health = floatstr(inputtext);
format(string,sizeof(string),"Administrator {FFFFFF}%s{FF7777} hat dein Leben auf {FFFFFF}%0.2f{FF7777} gesetzt!",sName(playerid),health);
SendClientMessage(clickid[playerid],C_MELDUNG,string);
format(string,sizeof(string),"** Du hast das Leben von {FFFFFF}%s{FF7777} auf {FFFFFF}%0.2f{FF7777} gesetzt!",namee,health);
SendClientMessage(playerid, C_**,string);
SetPlayerHealth(clickid[playerid], health);
}
return 1;
}EDIT: (Post unten)
@morshly: Gerne! Da dein Problem behoben ist, wäre es super, wenn du den Thread als erledigt markierst. Danke! -
Du killst ja den Timer, daher muss das Callback direkt aufgerufen werden, sonst bleibt das Fahrzeug ja da.
Ja, das kannst du ansonsten so lassen. Zur Sicherheit kannst du beim public noch das hinzufügen, dann passiert da nichts:
leihbmxtimer[playerid]=-1; -