Zitathi ich brauche für mein selfmade script paar befehle
finde den Fehler in diesem Satz...
Außerdem sollte man wissen, wie dein Fraktionsystem aufgebaut ist, sonst kann dir keiner helfen.
Zitathi ich brauche für mein selfmade script paar befehle
finde den Fehler in diesem Satz...
Außerdem sollte man wissen, wie dein Fraktionsystem aufgebaut ist, sonst kann dir keiner helfen.
Zitatif(isPlayerInFrakt(playerid,5)
siehst du was fehlt?
Wie schaffen die es denn dein Script zu klauen? Ist mir noch nie passiert. Rassismus.. das hat damit doch garnichts zu tun. Denkste die klauen dir dein Script weil du schwarz, weiß , blau oder grün bist?
Und das soll mir jetzt was sagen? Du sollst nur die Zeilen posten damit man dir helfen kann..
Irgendwo im Script muss doch sscanf benutzt werden... genau diese Zeile meine ich
Dann zeig mal die sscanf zeilen.
Dir Fehlen eindeutig die Grundlagen.
Funktion() //nur ein Beispiel
{
//hier dein Code
}
so sieht das eigentlich immer aus.
public OnPlayerCommandText(playerid, cmdtext[])
{
return 1;
}
fällt dir was auf? Dein Befehl ist außerhalb des Callbacks, kein wunder dass er nicht funktioniert.
edit: deine Objekte erstellst du auch außerhalb eines Callbacks. -> Grundlagen lernen
Du musst mein Beispiel nur erweitern. Zu erst solltest du beim Löschen rausfinden, was für ein Fahrzeug es ist, damit du die Variable wieder auf 0 setzten kannst. Wenn es z.b. ein Admincar war bringt es ja nichts PlayerCars[blabl] auf 0 zu setzten.
stock p_DestroyVehicle(carid)
{
if(IsAnAdminCar(carid) != -1)
{
new id = IsAnAdminCar(carid);
DestroyVehicle(Adminauto[id]);
Adminauto[id] = 0;
}
return 1;
}
wenn du das jetzt noch mit allen anderen Fahrzeugen machst, die man löschen kann.. Versuchs einfach mal
stock IsAnAdminCar(carid)
{
for(new i;i<sizeof(Adminauto);i++)if(carid == Adminauto[i])return i;
return -1;
}
stock p_DestroyVehicle(carid)
{
if(IsAnAdminCar(carid) != -1)
{
DestroyVehicle(Adminauto[IsAnAdminCar(carid)]);
}
return 1;
}
so würde ich das versuchen. Nach deiner Methode wird zwar das Auto gelöscht, aber Adminauto[carid] wird immer auf 0 gesetzt auch wenn es kein Admincar war. Außerdem kann es passieren, dass carid größer als der Array Adminauto ist, dann hängt sich die Funktion auf.
Ja hab mich damals vertan. gettime gibt den Abstand in Sekunden zurück also musst du mit Sekunden weiter rechnen. 60 * 1000 = 60000 Sekunden ~ 16 Stunden. Probiers einfach mal mit 60 (später dann mit 60*60 was 1 Stunde ist)
Zeig mal die komplette Funktion. Wie oben erwähnt musst du die möglichen Parameter-Typen angeben.
Also so gehts bei mir:
stock Test({Float,_}:...)
{
new count = numargs();
for(new i;i<count;i++)printf("Arg%d: %f",count,getarg(i));
return 1;
}
du musst halt oben als Parameter Float angeben
edit: pwn tag fail
edit2: bei Strings muss man dann den 2. Parameter von getarg benutzen (index). getarg(0,1); gibt also den 2. Buchstaben vom 1. Parameter zurück:
stock Test(...)
{
new count = numargs();
new t;
for(new i;i<count;i++)
{
t = 0;
new s[32];
while(getarg(i,t) != 0)
{
s[t] = getarg(i,t);
t++;
}
printf("Str%d: %s",count,s);
}
return 1;
}
Denke eher es liegt daran, dass es in Pawn keine dynamischen Arrays gibt. Nach seiner Idee würde sich der Array automatisch anpassen was aber nicht geht. (Verbessert mich wenn ich scheisse laber :D).
ZitatIch glaub die werden dann immernoch erstellt, aber nicht mehr vom Script bzw SA:MP richtig erkannt.
Nimm einfach MAX_VEHICLES
du weißt aber schon das MAX_VEHICLES genau das gleiche wie 2000 ist? Glaube kaum dass er 2000 Fahrzeuge braucht, deshalb würde ich den Array kleiner lassen..
Gib mal eine max. Anzahl an Fahrzeugen an:
new Vehicle[200][vehicle_daten];
das kannst du ja dann im Script ändern wenn nötig.
Und jetzt wiederholste das Zähl-Spiel nochmal für SetPlayerHealth und SetPlayerArmour
//...
new Float:angle;
GetPlayerFacingAngle(playerid,angle);
CreateObject(oID, x, y, z, 0, 0, angle);
//...
edit: kleiner fehler
Du solltest deinen Code nochmal genau angucken. 1. Verwendest du die Variable Score für 2 Textdraws (Kills und Scores). 2. Musst du überlegen welche Textdraws du in die Schleife packst, Textdraws die nur 1 mal erstellt werden müssen gehören da nicht rein.
@cRcKdwN: Halt dich doch bitte etwas zurück wenn du keine Ahnung hast...
killer:
unter welchem Callback hast du das denn? Callbacks wie z.b. OnGameModeInit haben keinen playerid-Parameter. Entweder du setzst das unter OnPlayerConnect oder lässt unter OnGameModeInit eine Schleife für alle Spieler durchlaufen, und erstellst es in dieser:
for(new playerid;playerid<MAX_PLAYERS;playerid++)
{
//hier dein Code
}
das bringt aber nur was, wenn du das Textdraw wirklich für jeden erstellen willst.