Nächstes mal Do-It-Yourself...
Beiträge von Templer
-
-
Füge diesen Stock von dieser folgenden Seite in dein Script oben ein...
http://wiki.sa-mp.com/wiki/SscanfIn OnPlayerCommandText folgende Zeile einfügen:
dcmd(schreien, strlen("schreien"), cmdtext);und ersetzt deinen Befehl hiermit...
dcmd_schreien(playerid, params[])
{
new text[100],string[128];
if(sscanf(params,"s",text)) return SendClientMessage(playerid, 0xFFFFFF00, "Verwendung: /schreien [Text]");
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string,sizeof(string),"%s schreit: %s",name,text);
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
for(new d=0; d<MAX_PLAYERS; d++)
{
if(IsPlayerInRangeOfPoint(d, 10.0, x, y, z)) SendClientMessage(d, farbe, string);
}
return 1;
} -
Du musst vor #else eine #if Abfrage haben, damit dies Funktioniert oder du ersetzt das #else durch eine #if Abfrage
Bei Zeile 244 nütze bitte nicht split, sondern gleich die Funktion strfind, also zB.:
strfind(playername2,"_",false);
Zitat von Wiki Samp wegen strfind:
ZitatReturns Die Zahl ab welchem Charakter der Substring anfänft (Die StartpositionsZahl vom Substring) oder die Zahl -1 wenn nichts gefunden wurde.
Poste bei Zeile 256 auch die Zeile davor
-
Die Formatierung %f gibt die ganze Zahl mit bis zu 5 Kommastellen glaube ich, ändern kannst du es indem du folgendes nützt...
%0.f ... gibt eine Kommastelle von Zahl an
%1.f ... gibt zwei Kommastellen von Zahl an
%2.f ... gibt drei Kommastellen von Zahl anusw..
-
Das kann man in dem Sinne nicht herausfinden, da dem Script kein Include fehlt, sondern in einem vorhanden Include was anders ist, was bei dem von wo du es gekriegt hast geändert wurde.. Sry, also so können wir es dir nicht sagen
-
Hier ein Beispiel was selbsterklärend sein sollte...
public OnPlayerCommandText(playerid, cmdtext[]) //Ausgeführt wenn Spieler im Chat die Nachricht mit / beginnt
{
if(strcmp(cmdtext, "/afk", false) == 0) //Überprüfung ob Spieler /afk geschrieben hat!
{
new spielername[MAX_PLAYER_NAME], string[128];
GetPlayerName(playerid, spielername, sizeof(spielername)); //Filtere Spielernamen heraus
format(string, sizeof(string), "Spieler %s hat sich als AFK gemeldet!", spielername) //Formatiere Text den an alle gesendet wird
SendClientMessageToAll(0xFFFFFF00, string); //Sende den formatierten Text an Alle
return 1;
}
return 0;
} -
Zeile 144 und 149 bedeutet, dass dort die TAB-Verschiebung falsch ist, also die Ausrichtung. Am besten einfach Nachrichten
Zeile 229 bedeutet, dass du diese Farbe definieren sollten am besten oben im Script mit sagen wir
#defne COLOUR_DISCONNECT (0xFFFFFF00) //Für die Farbe weiß ^^Zeile 240 bedeutet, du sollst entweder eine public oder eine stock Funktion erstellen in der das Ausgeführt wird, dass dem Spieler die Daten in eine Daten abgespeichert wird (was ich vom Funktionsnamen so verstehe)
Die restlichen Warning kannst du eigentlich ignorieren und stören auch nicht...
-
Wie gesagt das bringt uns gar nix.. Lies den oberen Post von mir
-
Ja, es ist aber ganz einfach, ganz oben im Script erstellst du eine globale Definition zB.:
new gCountDeleteCreatedVehicles = 0;
new gDeleteCreatedVehicles[50]; //Die Zahl ändern, wenn mehr als 50 Autos damit definiert wurden bzw weniger als 50 Autos ^^danach fügst du folgendes dort ein wo die Autos dafür erstellt werden, zB bei deinem Beispiel sieht es dann so aus:
gDeleteCreatedVehicles[gCountDeleteCreatedVehicles] = AddStaticVehicleEx (411,player_pos[0],player_pos[1],player_pos[2],player_pos[3],-1,-1,-1);
gCountDeleteCreatedVehicles++;und dann einfach eine billige Abfrage unter OnVehicleDeath
public OnVehicleDeath(vehicleid, killerid)
{
new vehid;
for(; vehid < gCountDeleteCreatedVehicles; vehid++)
{
if(vehicleid == gDeleteCreatedVehicles[vehid])
{
DestroyVehicle(gDeleteCreatedVehicles[vehid]);
break;
}
}
return 1;
}Hoffe ich hab dir damit geholfen
-
Das bedeutet einfach, dass in diesem Script etwas fehlt oder in einem include ist, was bei denen anders modifiziert wurde. Entweder du fragst bei demjenegen nach ob er seine Includes dir schickt oder du hast einfach Pech
-
Ja ins Auto, damit die Waffen die Weggenommen werden, also die SMG, wieder benutzbar sind. Natürlich kannst du oben in den defines die Option, dass die Waffen abgenommen werden in der DM Zone abstellen
-
Nun ja, ich habe eigentlich ein Ass im Ärmel, was besser ist als mein "Sekundenzähler" im OnPlayerUpdate und besser als ein Timer der bei OnGameModeInit oder bei OnPlayerConnect gestartet wird. Wenn ich dir jetzt damit deine "gedachte" Möglichkeit erfasst habe, dann bin ich zufrieden. Wenn Nicht, dann beantworte mir folgende Frage "Wäre bei deiner Möglichkeit OnPlayerUpdate in benützung oder würdest du diesen Callback bei deiner Möglichkeit ganz weglassen?"
-
@ creck : Vielen dank für diesen wichtigen BugReport, habe sofort neue Version hochgeladen. Entschuldige, hab jedoch gerade Probleme mit dem PC gehabt und ich jetzt den Fix später releasen müsste...
-
Ehm nein sry, hab es bissl falsch aufgebaut, mom:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
new pVeh = GetPlayerVehicleID(playerid);
if (oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
{
if(pVeh == hhvehicles[9])
{
if(happyhour == 1) SendClientMessage(playerid,COLOR_LIGHTBLUE,"Viel Spass in der HappyHour mit diesem Fahrzeug.");
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,COLOR_LIGHTRED,"Das Fahrzeug ist nur in der HappyHour verfügbar.");
}
}
}
return 1;
} -
Guck mal wie dein Code aufgebaut ist und wie meiner hier unten
if (strcmp(cmdtext, "/verkaufen", true) ==0 )
{
if(Spieler[playerid][Job] != 1) return SendClientMessage(playerid,rot,"Du bist kein Auto Dieb");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,rot,"Du sitzt in keinem Fahrzeug!");
if(!IsPlayerInRangeOfPoint(playerid,7, -2323.0105,-1624.4343,483.8835)) return SendClientMessage(playerid,rot,"Du bist nicht an der Richtigen Stelle.");
SendClientMessage(playerid, gelb,"Du hast dieses Auto erfolgreich verkauft und erhälst 1.000");
GivePlayerMoney(playerid, 1000);
return 1;
}INFO: Deine Abfrage mit if(vehicle > 0) ist sehr sinnlos, denn wenn ein Fahrzeug die ID 0 hat, hat er wohl pech oder? Deswegen nütze lieber IsPlayerInAnyVehicle nebenbei hattest du ein bis zwei Klammern zuviel die eine fehlerhafte Abfrage ermöglichten. Ansonsten passt alles
-
So muss es aussehen
public OnPlayerStateChange(playerid, newstate, oldstate)
{
new pVeh = GetPlayerVehicleID(playerid);
if (oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
{
if(pVeh == hhvehicles[9] && happyhour == 1)
{
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Viel Spass in der HappyHour mit diesem Fahrzeug.");
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,COLOR_LIGHTRED,"Das Fahrzeug ist nur in der HappyHour verfügbar.");
}
}
return 1;
} -
Kann nicht sein, da die Fahrzeuge bei meiner Include erstellt werden, kann es sein das du irgendandere Includes nützt wie zB AntICheat JunkBuster und Co
-
-
Jo dein Code da oben würde gehen..
-
Nein du verwendest es richtig, aber lol. Du hast es in einer for Schleife und wiederholst es 500mal, also dem Spieler wird 500mal 1 Zigarette abgezogen xD Ka wie du auf die Schnappsidee kamst und dann auch noch, wenn ein Spieler raucht, soll jeder rauchen?
Hier der gefixxte Code
dcmd_smoke(playerid,params[])
{
#pragma unused params
if(SpielerInfo[playerid][Zigaretten] == 0)
{
return SendClientMessage(playerid,Rot,"[Server]Du hast keine Zigaretten mehr!Kaufe dir welche im 24/7!");
}
else
{
AmRauchen[playerid] = 1;
SpielerInfo[playerid][Zigaretten] -= 1;
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_SMOKE_CIGGY);
}
return 1;
}