Wo liegt denn das Problem ?
Ich schreib mal kurz auf,wie Ich das machen würde:
Für jede MODELID eine Variable erstellen und dort festlegen,welcher Typ,was tanken muss.
enum ( += 1)
{
e_Sprit_Diesel = 1,
e_Sprit_Super,
e_Sprit_SuperPlus,
e_Sprit_VPower,
}
new const VehicleNames[212] = {
e_Sprit_Diesel, // Landstalker
e_Sprit_Super, // Bravura
e_Sprit_Diesel, // Buffalo
// usw...
};
Dann könntest du per:
new
vehicleid,
modelid,
sprittyp;
vehicleid = GetPlayerVehicleID(playerid);
modelid = GetVehicleModel(vehicleid);
sprittyp = VehicleSpritTyp[modelid - 400 ];
heraussfinden, welchen Sprit ein Fahrzeugmodell tanken muss.Das musst du natürlich erweitern mit dem Tankstellen System.
Beiträge von Goldkiller
-
-
in der server.cfg
stream_distance 300.0
stream_rate 1000
Die Stream_Distance / Rate hat nichts mit den Objekten zu tun.
Wobei eine stream_rate von 1000 ziemlich bescheuert ist,denn:Zitatstream_distance - The distance on the X,Y plane which server entities will stream in for connected players.
stream_rate - The number of milliseconds that must elapse before server entities stream distance is retested for each player.Kannst mal ein Bild von den Objekten machen ? Eigentlich sind die nur blass, wenn die gerade eingestream werden von GTA und du hart an der Grenze bist,ab wann das überhaupt sichtbar in GTA ist ( unabhängig von SA:MP ). Und welchen Streamer nutzt du zzT ?
-
Kannst du doch ganz leicht selber nachprüfen.
FS werden vor dem GM geladen.Da du sowieso dynamisch SetPVar verwenden kannst,kannst du sowieso jederzeit einen neuen Wert festlegen. Ist also egal ob es vor oder nach dem GM geladen wird. Loggt der Spieler sich ein, setzt du die PVar auf true ( Eingeloggt oder wie du es hast ) , kannst dann zu jedem Zeitpunkt im GM abfragen ob dieser PVar Wert true ist.
-
// Per-player variable system (PVars)
native SetPVarInt(playerid, varname[], int_value);
native GetPVarInt(playerid, varname[]);
native SetPVarString(playerid, varname[], string_value[]);
native GetPVarString(playerid, varname[], string_return[], len);
native SetPVarFloat(playerid, varname[], Float:float_value);
native Float:GetPVarFloat(playerid, varname[]);
native DeletePVar(playerid, varname[]);
Auf PVars kannst du von jedem Script auf zugreifen.Gibt zu PVars auch irgendwo ein Tutorial im Forum.Zitat//Edit:
Außerdem würde ich gerne wissen, wie man Define's also z.B. Farben im GM verwenden kann, wenn diese im Filterscript definiert wurden. Oder lässt sich sowas nur per Include realisieren?
Nee,das geht nicht.Das liegt allein schon daran, wie defines verarbeitet werden beim kompilieren.// -- bla.pwn
#define DEFINE_TEST 5
// code
new var = DEFINE_TEST;
// -- bla.amx
// code
new var = 5;
Der Compiler fügt an jede Stelle im Code wo DEFINE_TEST steht eine 5 ein.
Es passiert ja nichts anderes mit den ganzen COLOR Codes die du wahrscheinlich auch hast.
http://wiki.sa-mp.com/wiki/Keywords:Directives#.23define -
Es hat schon seinen Grund wieso dort:
ZitatGermanReallife 3.0
steht.Könnte wetten,als du das Script gedownloadet hast stand da irgendwo was von "Copyright darf nicht entfernt werden".
Aber das hast du gerade vor :/- -
Zitat
sorry falls der Thread überflüssig ist
Schau doch bei denen im Forum nach oder überzeug dich selber auf deren Server. -
Hast wohl das dcmd - Macro an der falschen Stelle definiert ( denke ich einem #if #endif Block ) .
Verschieb mal das dcmd Macro direkt unter die Anweisung:
#include <a_samp>DCMD_Macro:
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 -
if(pInfo[i][Wanteds] == 0)
{
format(str,sizeof(str),"Name: %s | Wanteds: %d",SpielerName[i],pInfo[i][Wanteds]);
SendClientMessage(playerid,0xFFE600FF,str);
}
Relativ sinnlos.Die If() Abfrage schaut ob der Spieler keine Wanteds hat ( 0 ) und falls das stimmt, wird angezeigt, dass er 0 hat.
if(pInfo[i][Wanteds] > 0 )
{
format(str,sizeof(str),"Name: %s | Wanteds: %d",SpielerName[i],pInfo[i][Wanteds]);
SendClientMessage(playerid,0xFFE600FF,str);
}else return SendClientMessage(playerid,0xC8C8C8FF,"Derzeit keine Straftäter unterwegs!");
Ist dort auch an der falschen Stelle. Erstell eine Variable ( zB bool:bTreffer = false; ) und sobald mindestens 1 Spieler mit Wanted gefunden wurde, änder den Wert ( bTreffer = true ).
Zum Schluss überprüfst du ob die Variable sich nicht verändert hat ( if ( bTreffer == false ) ) und sendest dann die Nachricht, dass es keine Gesuchten Spieler gibt. -
http://wiki.sa-mp.com/wiki/Create3DTextLabel
Zitattext[], color, Float:X, Float:Y, Float:Z, Float:DrawDistance, virtualworld, testLOS
testLOS - 0/1 Test the line-of-sight so this text can't be seen through objects.
Du hast bei dir aber keinen Wert für testLOS angegeben ( plateid = Create3DTextLabel(plate,COLOR_NS,0.0,0.0,0.0,40.0,0); ). testLOS ist ein optionaler Parameter.Standartmäßig 0, du willst ihn aber als 1.
Also:
plateid = Create3DTextLabel(plate,COLOR_NS,0.0,0.0,0.0,40.0,0,1); -
Ich denke mal,du weisst wie man zufällige Nachrichten vom Server versenden lässt.
Um den Server Namen zu ändern,kannst du folgendes machen:
SendRconCommand("hostname einneuerhostename");
http://wiki.sa-mp.com/wiki/SendRconCommandAnstatt einneuerhostename wird einfach irgendein Zufallstext gewählt.
-
Wird hier gezeigt.
-
Soll es denn Insgesamt nur 1x nutzbar sein oder nur 1x nutzbar pro Spieler ?
Für ersteres, kannst du ja dann einfach das Pickup zerstören. -
Zitat
/edit: IstAdmin habe ich nun definiert.. aber wie die anderen 3?
Hast du die 3 Anderen ( sind eigentlich 2 ) denn definiert?Sieht eher so aus,als hast du dir da etwas zusammenkopiert.
Sieht nämlich nach strtok + sscanf aus, hab Ich bisher so noch nie gesehen. -
Der Pastebin Link funktioniert nicht ( http://pastebin.com/RUvQzzBS ).
Änder das -
http://wiki.sa-mp.com/wiki/GetPlayerWantedLevel
Die Funktion erwartet nur einen Parameter, nicht zwei.
SpielerInfo[playerid][Wanteds] = GetPlayerWantedLevel(playerid);Das Gleiche gilt auch für GetPlayerMoney.
-
Zitat
Lieber die Variante mit Switch & Case, dies Spart ressourcen [...]
Wo haste denn die Information her ?Dafür haben wir aber einen extra Thread > Klick
-
new GroveStreetSkins[284] = {3,
105,106,107};
Wie kommst denn dort alleine schon auf 284 ?Da du schon die for() Schleife falsch machst,schau dir doch nochmal die Grundlagen an.
for(new i = 1; i < sizeof(GroveStreetSkins); i++)
Sicher,dass ihr bei i = 1 anfangen wollt? Dann würdet ihr nämlich den ersten Eintrag des Arrays immer überspringen.Von daher, i = 0. -
Natürlich hast du dort playerid, aber woher weiss die Funktion TimerBsn was playerid sein soll ?
http://wiki.sa-mp.com/wiki/SetTimerEx
SetTimerEx("TimerBsn",10000,0,"d",playerid); // Anstatt deine Timer Funktion
forwardTimerBsn(playerid);
public TimerBsn(playerid)
{
PlayerGiveMoney(playerid, -25);
SetPlayerHealth(playerid, 100);
SendClientMessage(playerid,COLOR_SWAT,"Vielen Dank, besuchen Sie uns wieder!")
}Falls du es nicht verstehst,schau dir SetTimerEx an und die Grundlagen.
-
Wo haste denn auch playerid her ? Kein Paramter,keine Variable ...
-
Und woher,soll RFT oder Ich wissen was accFormat ist ?
Weisst du denn zB was bei mir WalkOfFame ist?